1/******/ (function() { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
4/***/ "./cartridges/app_storefront_base/cartridge/client/default/js/util.js": 5/*!****************************************************************************!*\ 6 !*** ./cartridges/app_storefront_base/cartridge/client/default/js/util.js ***! 7 \****************************************************************************/ 8/***/ (function(module) { 9 10"use strict"; 11 12 13function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 14module.exports = function (include) { 15 if (typeof include === 'function') { 16 include(); 17 } else if (_typeof(include) === 'object') { 18 Object.keys(include).forEach(function (key) { 19 if (typeof include[key] === 'function') { 20 include[key](); 21 } 22 }); 23 } 24}; 25 26/***/ }), 27
28/***/ "./cartridges/org_marykay/cartridge/client/default/js/components/deviceDetection.js": 29/*!******************************************************************************************!*\ 30 !*** ./cartridges/org_marykay/cartridge/client/default/js/components/deviceDetection.js ***! 31 \******************************************************************************************/ 32/***/ (function(module) { 33 34/** 35 * Device Detection Utilities 36 * Aligns with Bootstrap 4.6 breakpoints defined in _variables.scss 37 * 38 * Breakpoints: 39 * - Phone: < 768px (xs, sm collapsed to mobile) 40 * - Tablet: 600px - 1199px (custom tablet range + md/lg) 41 * - Desktop: 1200px - 1439px (xl) 42 * - Large Desktop: >= 1440px (xxl) 43 * 44 * Usage: 45 * var device = require('./deviceDetection'); 46 * if (device.isPhone()) { ... } 47 * var deviceType = device.getDeviceType(); // 'phone' | 'tablet' | 'desktop' | 'large-desktop' 48 */ 49 50// Breakpoint constants (aligned with SCSS $grid-breakpoints) 51var BREAKPOINTS = { 52 PHONE_MAX: 767, 53 TABLET_MIN: 600, 54 TABLET_MAX: 1199, 55 DESKTOP_MIN: 1200, 56 LARGE_DESKTOP_MIN: 1440 57}; 58 59/** 60 * Get current device type based on viewport width. 61 * @returns {string} Returns one of: 'phone', 'tablet', 'desktop', or 'large-desktop'. 62 */ 63function getDeviceType() { 64 var width = window.innerWidth; 65 if (width < BREAKPOINTS.PHONE_MAX) { 66 return 'phone'; 67 } 68 if (width >= BREAKPOINTS.TABLET_MIN && width <= BREAKPOINTS.TABLET_MAX) { 69 return 'tablet'; 70 } 71 if (width >= BREAKPOINTS.DESKTOP_MIN && width < BREAKPOINTS.LARGE_DESKTOP_MIN) { 72 return 'desktop'; 73 } 74 return 'large-desktop'; 75} 76 77/** 78 * Check if current device is a phone. 79 * @returns {boolean} True if width < tablet minimum. 80 */ 81function isPhone() { 82 return window.innerWidth < BREAKPOINTS.TABLET_MIN; 83} 84 85/** 86 * Check if current device is a tablet. 87 * @returns {boolean} True if width is between tablet min and tablet max. 88 */ 89function isTablet() { 90 var width = window.innerWidth; 91 return width >= BREAKPOINTS.TABLET_MIN && width <= BREAKPOINTS.TABLET_MAX; 92} 93 94/** 95 * Check if current device is a desktop. 96 * @returns {boolean} True if width is between desktop min and large-desktop min. 97 */ 98function isDesktop() { 99 var width = window.innerWidth; 100 return width >= BREAKPOINTS.DESKTOP_MIN && width < BREAKPOINTS.LARGE_DESKTOP_MIN; 101} 102 103/** 104 * Check if current device is a large desktop. 105 * @returns {boolean} True if width >= large desktop minimum. 106 */ 107function isLargeDesktop() { 108 return window.innerWidth >= BREAKPOINTS.LARGE_DESKTOP_MIN; 109} 110 111/** 112 * Check if current viewport is mobile. 113 * @returns {boolean} True if width <= tablet max. 114 */ 115function isMobile() { 116 return window.innerWidth <= BREAKPOINTS.TABLET_MAX; 117} 118 119/** 120 * Get detailed device information. 121 * @returns {Object} Returns a details object including type, size, and device flags. 122 */ 123function getDeviceInfo() { 124 var width = window.innerWidth; 125 var height = window.innerHeight; 126 var deviceType = getDeviceType(); 127 return { 128 type: deviceType, 129 width: width, 130 height: height, 131 isPhone: isPhone(), 132 isTablet: isTablet(), 133 isDesktop: isDesktop(), 134 isLargeDesktop: isLargeDesktop(), 135 isMobile: isMobile(), 136 isPortrait: height > width, 137 isLandscape: width > height 138 }; 139} 140module.exports = { 141 getDeviceType: getDeviceType, 142 getDeviceInfo: getDeviceInfo, 143 isPhone: isPhone, 144 isTablet: isTablet, 145 isDesktop: isDesktop, 146 isLargeDesktop: isLargeDesktop, 147 isMobile: isMobile, 148 BREAKPOINTS: BREAKPOINTS 149}; 150 151/***/ }), 152
153/***/ "./cartridges/org_marykay/cartridge/client/default/js/components/swiper.js": 154/*!*********************************************************************************!*\ 155 !*** ./cartridges/org_marykay/cartridge/client/default/js/components/swiper.js ***! 156 \*********************************************************************************/ 157/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 158 159"use strict"; 160__webpack_require__.r(__webpack_exports__); 161/* harmony import */ var swiper_bundle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper/bundle */ "./node_modules/swiper/swiper-bundle.mjs"); 162 163var deviceDetection = __webpack_require__(/*! ./deviceDetection */ "./cartridges/org_marykay/cartridge/client/default/js/components/deviceDetection.js"); 164swiper_bundle__WEBPACK_IMPORTED_MODULE_0__["default"].use([swiper_bundle__WEBPACK_IMPORTED_MODULE_0__.Navigation, swiper_bundle__WEBPACK_IMPORTED_MODULE_0__.Pagination]); 165 166/** 167 * Hides Swiper navigation and pagination if there are fewer slides than slidesPerView. 168 * @param {Object} e - The Swiper instance. 169 */ 170function handleSwiperNavigation(e) { 171 var realSlides = e.slides.filter(function (slide) { 172 return !slide.classList.contains('swiper-slide-duplicate'); 173 }); 174 if (e.params.slidesPerView >= realSlides.length) { 175 if (e.navigation && e.navigation.nextEl) { 176 $(e.navigation.nextEl).addClass('swiper-button-hidden'); 177 } 178 if (e.navigation && e.navigation.prevEl) { 179 $(e.navigation.prevEl).addClass('swiper-button-hidden'); 180 } 181 if (e.pagination && e.pagination.el) { 182 $(e.pagination.el).addClass('swiper-pagination-hidden'); 183 } 184 } else { 185 if (e.navigation && e.navigation.nextEl) { 186 $(e.navigation.nextEl).removeClass('swiper-button-hidden'); 187 } 188 if (e.navigation && e.navigation.prevEl) { 189 $(e.navigation.prevEl).removeClass('swiper-button-hidden'); 190 } 191 if (e.pagination && e.pagination.el) { 192 $(e.pagination.el).removeClass('swiper-pagination-hidden'); 193 } 194 } 195} 196 197/** 198 * Updates the Swiper instance and its pagination if available. 199 * 200 * @param {Object} e - The Swiper instance. 201 */ 202function updateSwiperAndPagination(e) { 203 if (typeof e.update === 'function') { 204 e.update(); 205 } 206 if (e.pagination && typeof e.pagination.render === 'function') { 207 e.pagination.render(); 208 if (typeof e.pagination.update === 'function') { 209 e.pagination.update(); 210 } 211 } 212} 213 214/** 215 * Initializes a Swiper carousel for the promotional section. 216 * 217 * This function creates a new Swiper instance targeting the `.swiper-container` element. 218 * It sets up looping, slide spacing, navigation buttons, and clickable pagination. 219 * 220 * Requirements: 221 * - The Swiper library must be included in the project. 222 * - The HTML structure must include: 223 * - A container with class `.swiper-container` 224 * - Navigation buttons with classes `.swiper-button-next` and `.swiper-button-prev` 225 * - A pagination element with class `.swiper-pagination` 226 * 227 * @function 228 * @returns {void} 229 */ 230function initCarousel() { 231 var defaultOptions = { 232 loop: true, 233 slidesPerView: 1, 234 navigation: { 235 nextEl: '.swiper-button-next', 236 prevEl: '.swiper-button-prev' 237 }, 238 pagination: { 239 el: '.swiper-pagination', 240 clickable: true 241 } 242 }; 243 var customSlidersList = { 244 'swiper-promo': { 245 slidesPerView: 1, 246 slidesPerScroll: 1, 247 autoplay: { 248 delay: 5000 249 }, 250 autoHeight: true, 251 on: { 252 slideChange: function slideChange() { 253 if ($('#searchModal').hasClass('show')) { 254 $('body').trigger('header:updateHeaderOffset', [true]); 255 } else { 256 $('body').trigger('header:updateHeaderOffset'); 257 } 258 } 259 } 260 }, 261 'swiper-products': { 262 slidesPerView: 2, 263 slidesPerScroll: 1, 264 spaceBetween: 16, 265 slidesPerGroup: 2, 266 autoHeight: true, 267 loop: false, 268 pagination: { 269 el: '.swiper-pagination', 270 dynamicBullets: true, 271 clickable: true 272 } 273 }, 274 'swiper-cart-recommendations': { 275 slidesPerView: 4, 276 slidesPerScroll: 1, 277 loop: true, 278 breakpoints: { 279 0: { 280 slidesPerView: 2, 281 slidesPerGroup: 2 282 }, 283 768: { 284 slidesPerView: 4, 285 slidesPerGroup: 4 286 } 287 }, 288 on: { 289 // Initial load 290 init: function init(e) { 291 handleSwiperNavigation(e); 292 }, 293 // Optional but recommended for breakpoint changes 294 resize: function resize(e) { 295 handleSwiperNavigation(e); 296 updateSwiperAndPagination(e); 297 }, 298 breakpointChange: function breakpointChange(e) { 299 handleSwiperNavigation(e); 300 updateSwiperAndPagination(e); 301 } 302 } 303 }, 304 'ibc-featured-products-swiper': { 305 slidesPerView: 2, 306 slidesPerScroll: 1, 307 spaceBetween: 16, 308 slidesPerGroup: 2, 309 loop: false, 310 autoHeight: true, 311 pagination: { 312 el: '.swiper-pagination', 313 clickable: true 314 } 315 } 316 }; 317 $('body').find('.swiper-container, .swiper').each(function () { 318 var $el = $(this); 319 var matchedClass = null; 320 $.each(customSlidersList, function (className) { 321 if ($el.hasClass(className)) { 322 matchedClass = className; 323 return false;
324 } 325 return true; 326 }); 327 var options = matchedClass ? $.extend(true, {}, defaultOptions, customSlidersList[matchedClass]) : defaultOptions; 328 329 // Special handling: for the IBC featured-products slider we want 330 // a static grid on desktop and a Swiper carousel on mobile/tablet. 331 // Initialize/destroy Swiper responsively using device detection. 332 if (matchedClass === 'ibc-featured-products-swiper') { 333 var swiperInstance = null; 334 var initOrDestroy = function initOrDestroy() { 335 var isMobileView = deviceDetection.isPhone(); 336 if (isMobileView && !swiperInstance) { 337 // initialize Swiper for mobile/tablet 338 swiperInstance = new swiper_bundle__WEBPACK_IMPORTED_MODULE_0__["default"]($el[0], options); // eslint-disable-line 339 $el.data('swiperInstance', swiperInstance); 340 } else if (!isMobileView && swiperInstance) { 341 // destroy Swiper for desktop so markup becomes a static grid 342 try { 343 swiperInstance.destroy(true, true); 344 } catch (e) { 345 // ignore 346 } 347 swiperInstance = null; 348 $el.removeData('swiperInstance'); 349 } 350 }; 351 352 // Run once to set initial state 353 initOrDestroy(); 354 355 // Debounced resize handler 356 var resizeTimeout = null; 357 var onResize = function onResize() { 358 if (resizeTimeout) { 359 clearTimeout(resizeTimeout); 360 } 361 resizeTimeout = setTimeout(function () { 362 initOrDestroy(); 363 }, 150); 364 }; 365 $(window).on('resize', onResize); 366 } else { 367 new swiper_bundle__WEBPACK_IMPORTED_MODULE_0__["default"]($el[0], options); // eslint-disable-line 368 } 369 }); 370} 371/* harmony default export */ __webpack_exports__["default"] = (initCarousel); 372 373/***/ }), 374
vendor: 14,182 bytes, lines 375-769
375/***/ "./node_modules/swiper/modules/a11y.mjs": 376/*!**********************************************!*\ 377 !*** ./node_modules/swiper/modules/a11y.mjs ***! 378 \**********************************************/ 379/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 380 381"use strict"; 382__webpack_require__.r(__webpack_exports__); 383/* harmony export */ __webpack_require__.d(__webpack_exports__, { 384/* harmony export */ "default": function() { return /* binding */ A11y; } 385/* harmony export */ }); 386/* 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"); 387/* 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"); 388/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 389 390 391 392 393function A11y(_ref) { 394 let { 395 swiper, 396 extendParams, 397 on 398 } = _ref; 399 extendParams({ 400 a11y: { 401 enabled: true, 402 notificationClass: 'swiper-notification', 403 prevSlideMessage: 'Previous slide', 404 nextSlideMessage: 'Next slide', 405 firstSlideMessage: 'This is the first slide', 406 lastSlideMessage: 'This is the last slide', 407 paginationBulletMessage: 'Go to slide {{index}}', 408 slideLabelMessage: '{{index}} / {{slidesLength}}', 409 containerMessage: null, 410 containerRoleDescriptionMessage: null, 411 containerRole: null, 412 itemRoleDescriptionMessage: null, 413 slideRole: 'group', 414 id: null, 415 scrollOnFocus: true 416 } 417 }); 418 swiper.a11y = { 419 clicked: false 420 }; 421 let liveRegion = null; 422 let preventFocusHandler; 423 let focusTargetSlideEl; 424 let visibilityChangedTimestamp = new Date().getTime(); 425 function notify(message) { 426 const notification = liveRegion; 427 if (notification.length === 0) return; 428 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(notification, message); 429 } 430 function getRandomNumber(size) { 431 if (size === void 0) { 432 size = 16; 433 } 434 const randomChar = () => Math.round(16 * Math.random()).toString(16); 435 return 'x'.repeat(size).replace(/x/g, randomChar); 436 } 437 function makeElFocusable(el) { 438 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 439 el.forEach(subEl => { 440 subEl.setAttribute('tabIndex', '0'); 441 }); 442 } 443 function makeElNotFocusable(el) { 444 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 445 el.forEach(subEl => { 446 subEl.setAttribute('tabIndex', '-1'); 447 }); 448 } 449 function addElRole(el, role) { 450 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 451 el.forEach(subEl => { 452 subEl.setAttribute('role', role); 453 }); 454 } 455 function addElRoleDescription(el, description) { 456 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 457 el.forEach(subEl => { 458 subEl.setAttribute('aria-roledescription', description); 459 }); 460 } 461 function addElControls(el, controls) { 462 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 463 el.forEach(subEl => { 464 subEl.setAttribute('aria-controls', controls); 465 }); 466 } 467 function addElLabel(el, label) { 468 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 469 el.forEach(subEl => { 470 subEl.setAttribute('aria-label', label); 471 }); 472 } 473 function addElId(el, id) { 474 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 475 el.forEach(subEl => { 476 subEl.setAttribute('id', id); 477 }); 478 } 479 function addElLive(el, live) { 480 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 481 el.forEach(subEl => { 482 subEl.setAttribute('aria-live', live); 483 }); 484 } 485 function disableEl(el) { 486 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 487 el.forEach(subEl => { 488 subEl.setAttribute('aria-disabled', true); 489 }); 490 } 491 function enableEl(el) { 492 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 493 el.forEach(subEl => { 494 subEl.setAttribute('aria-disabled', false); 495 }); 496 } 497 function onEnterOrSpaceKey(e) { 498 if (e.keyCode !== 13 && e.keyCode !== 32) return; 499 const params = swiper.params.a11y; 500 const targetEl = e.target; 501 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 502 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 503 } 504 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 505 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 506 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 507 if (nextEls.includes(targetEl)) { 508 if (!(swiper.isEnd && !swiper.params.loop)) { 509 swiper.slideNext(); 510 } 511 if (swiper.isEnd) { 512 notify(params.lastSlideMessage); 513 } else { 514 notify(params.nextSlideMessage); 515 } 516 } 517 if (prevEls.includes(targetEl)) { 518 if (!(swiper.isBeginning && !swiper.params.loop)) { 519 swiper.slidePrev(); 520 } 521 if (swiper.isBeginning) { 522 notify(params.firstSlideMessage); 523 } else { 524 notify(params.prevSlideMessage); 525 } 526 } 527 } 528 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 529 targetEl.click(); 530 } 531 } 532 function updateNavigation() { 533 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 534 const { 535 nextEl, 536 prevEl 537 } = swiper.navigation; 538 if (prevEl) { 539 if (swiper.isBeginning) { 540 disableEl(prevEl); 541 makeElNotFocusable(prevEl); 542 } else { 543 enableEl(prevEl); 544 makeElFocusable(prevEl); 545 } 546 } 547 if (nextEl) { 548 if (swiper.isEnd) { 549 disableEl(nextEl); 550 makeElNotFocusable(nextEl); 551 } else { 552 enableEl(nextEl); 553 makeElFocusable(nextEl); 554 } 555 } 556 } 557 function hasPagination() { 558 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 559 } 560 function hasClickablePagination() { 561 return hasPagination() && swiper.params.pagination.clickable; 562 } 563 function updatePagination() { 564 const params = swiper.params.a11y; 565 if (!hasPagination()) return; 566 swiper.pagination.bullets.forEach(bulletEl => { 567 if (swiper.params.pagination.clickable) { 568 makeElFocusable(bulletEl); 569 if (!swiper.params.pagination.renderBullet) { 570 addElRole(bulletEl, 'button'); 571 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) + 1)); 572 } 573 } 574 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 575 bulletEl.setAttribute('aria-current', 'true'); 576 } else { 577 bulletEl.removeAttribute('aria-current'); 578 } 579 }); 580 } 581 const initNavEl = (el, wrapperId, message) => { 582 makeElFocusable(el); 583 if (el.tagName !== 'BUTTON') { 584 addElRole(el, 'button'); 585 el.addEventListener('keydown', onEnterOrSpaceKey); 586 } 587 addElLabel(el, message); 588 addElControls(el, wrapperId); 589 }; 590 const handlePointerDown = e => { 591 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 592 preventFocusHandler = true; 593 } 594 swiper.a11y.clicked = true; 595 }; 596 const handlePointerUp = () => { 597 preventFocusHandler = false; 598 requestAnimationFrame(() => { 599 requestAnimationFrame(() => { 600 if (!swiper.destroyed) { 601 swiper.a11y.clicked = false; 602 } 603 }); 604 }); 605 }; 606 const onVisibilityChange = e => { 607 visibilityChangedTimestamp = new Date().getTime(); 608 }; 609 const handleFocus = e => { 610 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 611 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 612 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 613 if (!slideEl || !swiper.slides.includes(slideEl)) return; 614 focusTargetSlideEl = slideEl; 615 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 616 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 617 if (isActive || isVisible) return; 618 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 619 if (swiper.isHorizontal()) { 620 swiper.el.scrollLeft = 0; 621 } else { 622 swiper.el.scrollTop = 0; 623 } 624 requestAnimationFrame(() => { 625 if (preventFocusHandler) return; 626 if (swiper.params.loop) { 627 swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0); 628 } else { 629 swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0); 630 } 631 preventFocusHandler = false; 632 }); 633 }; 634 const initSlides = () => { 635 const params = swiper.params.a11y; 636 if (params.itemRoleDescriptionMessage) { 637 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 638 } 639 if (params.slideRole) { 640 addElRole(swiper.slides, params.slideRole); 641 } 642 const slidesLength = swiper.slides.length; 643 if (params.slideLabelMessage) { 644 swiper.slides.forEach((slideEl, index) => { 645 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 646 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 647 addElLabel(slideEl, ariaLabelMessage); 648 }); 649 } 650 }; 651 const init = () => { 652 const params = swiper.params.a11y; 653 swiper.el.append(liveRegion); 654 655 // Container 656 const containerEl = swiper.el; 657 if (params.containerRoleDescriptionMessage) { 658 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 659 } 660 if (params.containerMessage) { 661 addElLabel(containerEl, params.containerMessage); 662 } 663 if (params.containerRole) { 664 addElRole(containerEl, params.containerRole); 665 } 666 667 // Wrapper 668 const wrapperEl = swiper.wrapperEl; 669 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 670 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 671 addElId(wrapperEl, wrapperId); 672 addElLive(wrapperEl, live); 673 674 // Slide 675 initSlides(); 676 677 // Navigation 678 let { 679 nextEl, 680 prevEl 681 } = swiper.navigation ? swiper.navigation : {}; 682 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 683 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 684 if (nextEl) { 685 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 686 } 687 if (prevEl) { 688 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 689 } 690 691 // Pagination 692 if (hasClickablePagination()) { 693 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 694 paginationEl.forEach(el => { 695 el.addEventListener('keydown', onEnterOrSpaceKey); 696 }); 697 } 698 699 // Tab focus 700 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 701 document.addEventListener('visibilitychange', onVisibilityChange); 702 swiper.el.addEventListener('focus', handleFocus, true); 703 swiper.el.addEventListener('focus', handleFocus, true); 704 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 705 swiper.el.addEventListener('pointerup', handlePointerUp, true); 706 }; 707 function destroy() { 708 if (liveRegion) liveRegion.remove(); 709 let { 710 nextEl, 711 prevEl 712 } = swiper.navigation ? swiper.navigation : {}; 713 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 714 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 715 if (nextEl) { 716 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 717 } 718 if (prevEl) { 719 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 720 } 721 722 // Pagination 723 if (hasClickablePagination()) { 724 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 725 paginationEl.forEach(el => { 726 el.removeEventListener('keydown', onEnterOrSpaceKey); 727 }); 728 } 729 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 730 document.removeEventListener('visibilitychange', onVisibilityChange); 731 // Tab focus 732 if (swiper.el && typeof swiper.el !== 'string') { 733 swiper.el.removeEventListener('focus', handleFocus, true); 734 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 735 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 736 } 737 } 738 on('beforeInit', () => { 739 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 740 liveRegion.setAttribute('aria-live', 'assertive'); 741 liveRegion.setAttribute('aria-atomic', 'true'); 742 }); 743 on('afterInit', () => { 744 if (!swiper.params.a11y.enabled) return; 745 init(); 746 }); 747 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 748 if (!swiper.params.a11y.enabled) return; 749 initSlides(); 750 }); 751 on('fromEdge toEdge afterInit lock unlock', () => { 752 if (!swiper.params.a11y.enabled) return; 753 updateNavigation(); 754 }); 755 on('paginationUpdate', () => { 756 if (!swiper.params.a11y.enabled) return; 757 updatePagination(); 758 }); 759 on('destroy', () => { 760 if (!swiper.params.a11y.enabled) return; 761 destroy(); 762 }); 763} 764 765 766 767 768/***/ }), 769
vendor: 10,064 bytes, lines 770-1089
770/***/ "./node_modules/swiper/modules/autoplay.mjs": 771/*!**************************************************!*\ 772 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 773 \**************************************************/ 774/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 775 776"use strict"; 777__webpack_require__.r(__webpack_exports__); 778/* harmony export */ __webpack_require__.d(__webpack_exports__, { 779/* harmony export */ "default": function() { return /* binding */ Autoplay; } 780/* harmony export */ }); 781/* 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"); 782 783 784/* eslint no-underscore-dangle: "off" */ 785/* eslint no-use-before-define: "off" */ 786function Autoplay(_ref) { 787 let { 788 swiper, 789 extendParams, 790 on, 791 emit, 792 params 793 } = _ref; 794 swiper.autoplay = { 795 running: false, 796 paused: false, 797 timeLeft: 0 798 }; 799 extendParams({ 800 autoplay: { 801 enabled: false, 802 delay: 3000, 803 waitForTransition: true, 804 disableOnInteraction: false, 805 stopOnLastSlide: false, 806 reverseDirection: false, 807 pauseOnMouseEnter: false 808 } 809 }); 810 let timeout; 811 let raf; 812 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 813 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 814 let autoplayTimeLeft; 815 let autoplayStartTime = new Date().getTime(); 816 let wasPaused; 817 let isTouched; 818 let pausedByTouch; 819 let touchStartTimeout; 820 let slideChanged; 821 let pausedByInteraction; 822 let pausedByPointerEnter; 823 function onTransitionEnd(e) { 824 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 825 if (e.target !== swiper.wrapperEl) return; 826 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 827 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 828 return; 829 } 830 resume(); 831 } 832 const calcTimeLeft = () => { 833 if (swiper.destroyed || !swiper.autoplay.running) return; 834 if (swiper.autoplay.paused) { 835 wasPaused = true; 836 } else if (wasPaused) { 837 autoplayDelayCurrent = autoplayTimeLeft; 838 wasPaused = false; 839 } 840 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 841 swiper.autoplay.timeLeft = timeLeft; 842 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 843 raf = requestAnimationFrame(() => { 844 calcTimeLeft(); 845 }); 846 }; 847 const getSlideDelay = () => { 848 let activeSlideEl; 849 if (swiper.virtual && swiper.params.virtual.enabled) { 850 activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); 851 } else { 852 activeSlideEl = swiper.slides[swiper.activeIndex]; 853 } 854 if (!activeSlideEl) return undefined; 855 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 856 return currentSlideDelay; 857 }; 858 const run = delayForce => { 859 if (swiper.destroyed || !swiper.autoplay.running) return; 860 cancelAnimationFrame(raf); 861 calcTimeLeft(); 862 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 863 autoplayDelayTotal = swiper.params.autoplay.delay; 864 autoplayDelayCurrent = swiper.params.autoplay.delay; 865 const currentSlideDelay = getSlideDelay(); 866 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 867 delay = currentSlideDelay; 868 autoplayDelayTotal = currentSlideDelay; 869 autoplayDelayCurrent = currentSlideDelay; 870 } 871 autoplayTimeLeft = delay; 872 const speed = swiper.params.speed; 873 const proceed = () => { 874 if (!swiper || swiper.destroyed) return; 875 if (swiper.params.autoplay.reverseDirection) { 876 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 877 swiper.slidePrev(speed, true, true); 878 emit('autoplay'); 879 } else if (!swiper.params.autoplay.stopOnLastSlide) { 880 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 881 emit('autoplay'); 882 } 883 } else { 884 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 885 swiper.slideNext(speed, true, true); 886 emit('autoplay'); 887 } else if (!swiper.params.autoplay.stopOnLastSlide) { 888 swiper.slideTo(0, speed, true, true); 889 emit('autoplay'); 890 } 891 } 892 if (swiper.params.cssMode) { 893 autoplayStartTime = new Date().getTime(); 894 requestAnimationFrame(() => { 895 run(); 896 }); 897 } 898 }; 899 if (delay > 0) { 900 clearTimeout(timeout); 901 timeout = setTimeout(() => { 902 proceed(); 903 }, delay); 904 } else { 905 requestAnimationFrame(() => { 906 proceed(); 907 }); 908 } 909 910 // eslint-disable-next-line 911 return delay; 912 }; 913 const start = () => { 914 autoplayStartTime = new Date().getTime(); 915 swiper.autoplay.running = true; 916 run(); 917 emit('autoplayStart'); 918 }; 919 const stop = () => { 920 swiper.autoplay.running = false; 921 clearTimeout(timeout); 922 cancelAnimationFrame(raf); 923 emit('autoplayStop'); 924 }; 925 const pause = (internal, reset) => { 926 if (swiper.destroyed || !swiper.autoplay.running) return; 927 clearTimeout(timeout); 928 if (!internal) { 929 pausedByInteraction = true; 930 } 931 const proceed = () => { 932 emit('autoplayPause'); 933 if (swiper.params.autoplay.waitForTransition) { 934 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 935 } else { 936 resume(); 937 } 938 }; 939 swiper.autoplay.paused = true; 940 if (reset) { 941 if (slideChanged) { 942 autoplayTimeLeft = swiper.params.autoplay.delay; 943 } 944 slideChanged = false; 945 proceed(); 946 return; 947 } 948 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 949 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 950 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 951 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 952 proceed(); 953 }; 954 const resume = () => { 955 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 956 autoplayStartTime = new Date().getTime(); 957 if (pausedByInteraction) { 958 pausedByInteraction = false; 959 run(autoplayTimeLeft); 960 } else { 961 run(); 962 } 963 swiper.autoplay.paused = false; 964 emit('autoplayResume'); 965 }; 966 const onVisibilityChange = () => { 967 if (swiper.destroyed || !swiper.autoplay.running) return; 968 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 969 if (document.visibilityState === 'hidden') { 970 pausedByInteraction = true; 971 pause(true); 972 } 973 if (document.visibilityState === 'visible') { 974 resume(); 975 } 976 }; 977 const onPointerEnter = e => { 978 if (e.pointerType !== 'mouse') return; 979 pausedByInteraction = true; 980 pausedByPointerEnter = true; 981 if (swiper.animating || swiper.autoplay.paused) return; 982 pause(true); 983 }; 984 const onPointerLeave = e => { 985 if (e.pointerType !== 'mouse') return; 986 pausedByPointerEnter = false; 987 if (swiper.autoplay.paused) { 988 resume(); 989 } 990 }; 991 const attachMouseEvents = () => { 992 if (swiper.params.autoplay.pauseOnMouseEnter) { 993 swiper.el.addEventListener('pointerenter', onPointerEnter); 994 swiper.el.addEventListener('pointerleave', onPointerLeave); 995 } 996 }; 997 const detachMouseEvents = () => { 998 if (swiper.el && typeof swiper.el !== 'string') { 999 swiper.el.removeEventListener('pointerenter', onPointerEnter); 1000 swiper.el.removeEventListener('pointerleave', onPointerLeave); 1001 } 1002 }; 1003 const attachDocumentEvents = () => { 1004 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 1005 document.addEventListener('visibilitychange', onVisibilityChange); 1006 }; 1007 const detachDocumentEvents = () => { 1008 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 1009 document.removeEventListener('visibilitychange', onVisibilityChange); 1010 }; 1011 on('init', () => { 1012 if (swiper.params.autoplay.enabled) { 1013 attachMouseEvents(); 1014 attachDocumentEvents(); 1015 start(); 1016 } 1017 }); 1018 on('destroy', () => { 1019 detachMouseEvents(); 1020 detachDocumentEvents(); 1021 if (swiper.autoplay.running) { 1022 stop(); 1023 } 1024 }); 1025 on('_freeModeStaticRelease', () => { 1026 if (pausedByTouch || pausedByInteraction) { 1027 resume(); 1028 } 1029 }); 1030 on('_freeModeNoMomentumRelease', () => { 1031 if (!swiper.params.autoplay.disableOnInteraction) { 1032 pause(true, true); 1033 } else { 1034 stop(); 1035 } 1036 }); 1037 on('beforeTransitionStart', (_s, speed, internal) => { 1038 if (swiper.destroyed || !swiper.autoplay.running) return; 1039 if (internal || !swiper.params.autoplay.disableOnInteraction) { 1040 pause(true, true); 1041 } else { 1042 stop(); 1043 } 1044 }); 1045 on('sliderFirstMove', () => { 1046 if (swiper.destroyed || !swiper.autoplay.running) return; 1047 if (swiper.params.autoplay.disableOnInteraction) { 1048 stop(); 1049 return; 1050 } 1051 isTouched = true; 1052 pausedByTouch = false; 1053 pausedByInteraction = false; 1054 touchStartTimeout = setTimeout(() => { 1055 pausedByInteraction = true; 1056 pausedByTouch = true; 1057 pause(true); 1058 }, 200); 1059 }); 1060 on('touchEnd', () => { 1061 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 1062 clearTimeout(touchStartTimeout); 1063 clearTimeout(timeout); 1064 if (swiper.params.autoplay.disableOnInteraction) { 1065 pausedByTouch = false; 1066 isTouched = false; 1067 return; 1068 } 1069 if (pausedByTouch && swiper.params.cssMode) resume(); 1070 pausedByTouch = false; 1071 isTouched = false; 1072 }); 1073 on('slideChange', () => { 1074 if (swiper.destroyed || !swiper.autoplay.running) return; 1075 slideChanged = true; 1076 }); 1077 Object.assign(swiper.autoplay, { 1078 start, 1079 stop, 1080 pause, 1081 resume 1082 }); 1083} 1084 1085 1086 1087 1088/***/ }), 1089
vendor: 7,533 bytes, lines 1090-1296
1090/***/ "./node_modules/swiper/modules/controller.mjs": 1091/*!****************************************************!*\ 1092 !*** ./node_modules/swiper/modules/controller.mjs ***! 1093 \****************************************************/ 1094/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1095 1096"use strict"; 1097__webpack_require__.r(__webpack_exports__); 1098/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1099/* harmony export */ "default": function() { return /* binding */ Controller; } 1100/* harmony export */ }); 1101/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1102 1103 1104/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 1105function Controller(_ref) { 1106 let { 1107 swiper, 1108 extendParams, 1109 on 1110 } = _ref; 1111 extendParams({ 1112 controller: { 1113 control: undefined, 1114 inverse: false, 1115 by: 'slide' // or 'container' 1116 } 1117 }); 1118 1119 swiper.controller = { 1120 control: undefined 1121 }; 1122 function LinearSpline(x, y) { 1123 const binarySearch = function search() { 1124 let maxIndex; 1125 let minIndex; 1126 let guess; 1127 return (array, val) => { 1128 minIndex = -1; 1129 maxIndex = array.length; 1130 while (maxIndex - minIndex > 1) { 1131 guess = maxIndex + minIndex >> 1; 1132 if (array[guess] <= val) { 1133 minIndex = guess; 1134 } else { 1135 maxIndex = guess; 1136 } 1137 } 1138 return maxIndex; 1139 }; 1140 }(); 1141 this.x = x; 1142 this.y = y; 1143 this.lastIndex = x.length - 1; 1144 // Given an x value (x2), return the expected y2 value: 1145 // (x1,y1) is the known point before given value, 1146 // (x3,y3) is the known point after given value. 1147 let i1; 1148 let i3; 1149 this.interpolate = function interpolate(x2) { 1150 if (!x2) return 0; 1151 1152 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 1153 i3 = binarySearch(this.x, x2); 1154 i1 = i3 - 1; 1155 1156 // We have our indexes i1 & i3, so we can calculate already: 1157 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 1158 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 1159 }; 1160 return this; 1161 } 1162 function getInterpolateFunction(c) { 1163 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 1164 } 1165 function setTranslate(_t, byController) { 1166 const controlled = swiper.controller.control; 1167 let multiplier; 1168 let controlledTranslate; 1169 const Swiper = swiper.constructor; 1170 function setControlledTranslate(c) { 1171 if (c.destroyed) return; 1172 1173 // this will create an Interpolate function based on the snapGrids 1174 // x is the Grid of the scrolled scroller and y will be the controlled scroller 1175 // it makes sense to create this only once and recall it for the interpolation 1176 // the function does a lot of value caching for performance 1177 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 1178 if (swiper.params.controller.by === 'slide') { 1179 getInterpolateFunction(c); 1180 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 1181 // but it did not work out 1182 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 1183 } 1184 if (!controlledTranslate || swiper.params.controller.by === 'container') { 1185 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 1186 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 1187 multiplier = 1; 1188 } 1189 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 1190 } 1191 if (swiper.params.controller.inverse) { 1192 controlledTranslate = c.maxTranslate() - controlledTranslate; 1193 } 1194 c.updateProgress(controlledTranslate); 1195 c.setTranslate(controlledTranslate, swiper); 1196 c.updateActiveIndex(); 1197 c.updateSlidesClasses(); 1198 } 1199 if (Array.isArray(controlled)) { 1200 for (let i = 0; i < controlled.length; i += 1) { 1201 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 1202 setControlledTranslate(controlled[i]); 1203 } 1204 } 1205 } else if (controlled instanceof Swiper && byController !== controlled) { 1206 setControlledTranslate(controlled); 1207 } 1208 } 1209 function setTransition(duration, byController) { 1210 const Swiper = swiper.constructor; 1211 const controlled = swiper.controller.control; 1212 let i; 1213 function setControlledTransition(c) { 1214 if (c.destroyed) return; 1215 c.setTransition(duration, swiper); 1216 if (duration !== 0) { 1217 c.transitionStart(); 1218 if (c.params.autoHeight) { 1219 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 1220 c.updateAutoHeight(); 1221 }); 1222 } 1223 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(c.wrapperEl, () => { 1224 if (!controlled) return; 1225 c.transitionEnd(); 1226 }); 1227 } 1228 } 1229 if (Array.isArray(controlled)) { 1230 for (i = 0; i < controlled.length; i += 1) { 1231 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 1232 setControlledTransition(controlled[i]); 1233 } 1234 } 1235 } else if (controlled instanceof Swiper && byController !== controlled) { 1236 setControlledTransition(controlled); 1237 } 1238 } 1239 function removeSpline() { 1240 if (!swiper.controller.control) return; 1241 if (swiper.controller.spline) { 1242 swiper.controller.spline = undefined; 1243 delete swiper.controller.spline; 1244 } 1245 } 1246 on('beforeInit', () => { 1247 if (typeof window !== 'undefined' && ( 1248 // eslint-disable-line 1249 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 1250 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 1251 controlElements.forEach(controlElement => { 1252 if (!swiper.controller.control) swiper.controller.control = []; 1253 if (controlElement && controlElement.swiper) { 1254 swiper.controller.control.push(controlElement.swiper); 1255 } else if (controlElement) { 1256 const eventName = `${swiper.params.eventsPrefix}init`; 1257 const onControllerSwiper = e => { 1258 swiper.controller.control.push(e.detail[0]); 1259 swiper.update(); 1260 controlElement.removeEventListener(eventName, onControllerSwiper); 1261 }; 1262 controlElement.addEventListener(eventName, onControllerSwiper); 1263 } 1264 }); 1265 return; 1266 } 1267 swiper.controller.control = swiper.params.controller.control; 1268 }); 1269 on('update', () => { 1270 removeSpline(); 1271 }); 1272 on('resize', () => { 1273 removeSpline(); 1274 }); 1275 on('observerUpdate', () => { 1276 removeSpline(); 1277 }); 1278 on('setTranslate', (_s, translate, byController) => { 1279 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 1280 swiper.controller.setTranslate(translate, byController); 1281 }); 1282 on('setTransition', (_s, duration, byController) => { 1283 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 1284 swiper.controller.setTransition(duration, byController); 1285 }); 1286 Object.assign(swiper.controller, { 1287 setTranslate, 1288 setTransition 1289 }); 1290} 1291 1292 1293 1294 1295/***/ }), 1296
vendor: 6,057 bytes, lines 1297-1444
1297/***/ "./node_modules/swiper/modules/effect-cards.mjs": 1298/*!******************************************************!*\ 1299 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 1300 \******************************************************/ 1301/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1302 1303"use strict"; 1304__webpack_require__.r(__webpack_exports__); 1305/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1306/* harmony export */ "default": function() { return /* binding */ EffectCards; } 1307/* harmony export */ }); 1308/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1309/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1310/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1311/* 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"); 1312/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1313 1314 1315 1316 1317 1318 1319function EffectCards(_ref) { 1320 let { 1321 swiper, 1322 extendParams, 1323 on 1324 } = _ref; 1325 extendParams({ 1326 cardsEffect: { 1327 slideShadows: true, 1328 rotate: true, 1329 perSlideRotate: 2, 1330 perSlideOffset: 8 1331 } 1332 }); 1333 const setTranslate = () => { 1334 const { 1335 slides, 1336 activeIndex, 1337 rtlTranslate: rtl 1338 } = swiper; 1339 const params = swiper.params.cardsEffect; 1340 const { 1341 startTranslate, 1342 isTouched 1343 } = swiper.touchEventsData; 1344 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 1345 for (let i = 0; i < slides.length; i += 1) { 1346 const slideEl = slides[i]; 1347 const slideProgress = slideEl.progress; 1348 const progress = Math.min(Math.max(slideProgress, -4), 4); 1349 let offset = slideEl.swiperSlideOffset; 1350 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 1351 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 1352 } 1353 if (swiper.params.centeredSlides && swiper.params.cssMode) { 1354 offset -= slides[0].swiperSlideOffset; 1355 } 1356 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 1357 let tY = 0; 1358 const tZ = -100 * Math.abs(progress); 1359 let scale = 1; 1360 let rotate = -params.perSlideRotate * progress; 1361 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 1362 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 1363 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 1364 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 1365 if (isSwipeToNext || isSwipeToPrev) { 1366 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 1367 rotate += -28 * progress * subProgress; 1368 scale += -0.5 * subProgress; 1369 tXAdd += 96 * subProgress; 1370 tY = `${-25 * subProgress * Math.abs(progress)}%`; 1371 } 1372 if (progress < 0) { 1373 // next 1374 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 1375 } else if (progress > 0) { 1376 // prev 1377 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 1378 } else { 1379 tX = `${tX}px`; 1380 } 1381 if (!swiper.isHorizontal()) { 1382 const prevY = tY; 1383 tY = tX; 1384 tX = prevY; 1385 } 1386 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 1387 1388 /* eslint-disable */ 1389 const transform = ` 1390 translate3d(${tX}, ${tY}, ${tZ}px) 1391 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 1392 scale(${scaleString}) 1393 `; 1394 /* eslint-enable */ 1395 1396 if (params.slideShadows) { 1397 // Set shadows 1398 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1399 if (!shadowEl) { 1400 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 1401 } 1402 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 1403 } 1404 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1405 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1406 targetEl.style.transform = transform; 1407 } 1408 }; 1409 const setTransition = duration => { 1410 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1411 transformElements.forEach(el => { 1412 el.style.transitionDuration = `${duration}ms`; 1413 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1414 shadowEl.style.transitionDuration = `${duration}ms`; 1415 }); 1416 }); 1417 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1418 swiper, 1419 duration, 1420 transformElements 1421 }); 1422 }; 1423 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1424 effect: 'cards', 1425 swiper, 1426 on, 1427 setTranslate, 1428 setTransition, 1429 perspective: () => true, 1430 overwriteParams: () => ({ 1431 _loopSwapReset: false, 1432 watchSlidesProgress: true, 1433 loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, 1434 centeredSlides: true, 1435 virtualTranslate: !swiper.params.cssMode 1436 }) 1437 }); 1438} 1439 1440 1441 1442 1443/***/ }), 1444
vendor: 5,714 bytes, lines 1445-1567
1445/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 1446/*!**********************************************************!*\ 1447 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 1448 \**********************************************************/ 1449/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1450 1451"use strict"; 1452__webpack_require__.r(__webpack_exports__); 1453/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1454/* harmony export */ "default": function() { return /* binding */ EffectCoverflow; } 1455/* harmony export */ }); 1456/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1457/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1458/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1459/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1460 1461 1462 1463 1464 1465function EffectCoverflow(_ref) { 1466 let { 1467 swiper, 1468 extendParams, 1469 on 1470 } = _ref; 1471 extendParams({ 1472 coverflowEffect: { 1473 rotate: 50, 1474 stretch: 0, 1475 depth: 100, 1476 scale: 1, 1477 modifier: 1, 1478 slideShadows: true 1479 } 1480 }); 1481 const setTranslate = () => { 1482 const { 1483 width: swiperWidth, 1484 height: swiperHeight, 1485 slides, 1486 slidesSizesGrid 1487 } = swiper; 1488 const params = swiper.params.coverflowEffect; 1489 const isHorizontal = swiper.isHorizontal(); 1490 const transform = swiper.translate; 1491 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 1492 const rotate = isHorizontal ? params.rotate : -params.rotate; 1493 const translate = params.depth; 1494 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.p)(swiper); 1495 // Each slide offset from center 1496 for (let i = 0, length = slides.length; i < length; i += 1) { 1497 const slideEl = slides[i]; 1498 const slideSize = slidesSizesGrid[i]; 1499 const slideOffset = slideEl.swiperSlideOffset; 1500 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 1501 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 1502 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 1503 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 1504 // var rotateZ = 0 1505 let translateZ = -translate * Math.abs(offsetMultiplier); 1506 let stretch = params.stretch; 1507 // Allow percentage to make a relative stretch for responsive sliders 1508 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 1509 stretch = parseFloat(params.stretch) / 100 * slideSize; 1510 } 1511 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 1512 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 1513 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 1514 1515 // Fix for ultra small values 1516 if (Math.abs(translateX) < 0.001) translateX = 0; 1517 if (Math.abs(translateY) < 0.001) translateY = 0; 1518 if (Math.abs(translateZ) < 0.001) translateZ = 0; 1519 if (Math.abs(rotateY) < 0.001) rotateY = 0; 1520 if (Math.abs(rotateX) < 0.001) rotateX = 0; 1521 if (Math.abs(scale) < 0.001) scale = 0; 1522 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 1523 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1524 targetEl.style.transform = slideTransform; 1525 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 1526 if (params.slideShadows) { 1527 // Set shadows 1528 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1529 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1530 if (!shadowBeforeEl) { 1531 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 1532 } 1533 if (!shadowAfterEl) { 1534 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 1535 } 1536 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 1537 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 1538 } 1539 } 1540 }; 1541 const setTransition = duration => { 1542 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1543 transformElements.forEach(el => { 1544 el.style.transitionDuration = `${duration}ms`; 1545 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1546 shadowEl.style.transitionDuration = `${duration}ms`; 1547 }); 1548 }); 1549 }; 1550 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1551 effect: 'coverflow', 1552 swiper, 1553 on, 1554 setTranslate, 1555 setTransition, 1556 perspective: () => true, 1557 overwriteParams: () => ({ 1558 watchSlidesProgress: true 1559 }) 1560 }); 1561} 1562 1563 1564 1565 1566/***/ }), 1567
vendor: 6,483 bytes, lines 1568-1733
1568/***/ "./node_modules/swiper/modules/effect-creative.mjs": 1569/*!*********************************************************!*\ 1570 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 1571 \*********************************************************/ 1572/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1573 1574"use strict"; 1575__webpack_require__.r(__webpack_exports__); 1576/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1577/* harmony export */ "default": function() { return /* binding */ EffectCreative; } 1578/* harmony export */ }); 1579/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1580/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1581/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1582/* 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"); 1583/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1584 1585 1586 1587 1588 1589 1590function EffectCreative(_ref) { 1591 let { 1592 swiper, 1593 extendParams, 1594 on 1595 } = _ref; 1596 extendParams({ 1597 creativeEffect: { 1598 limitProgress: 1, 1599 shadowPerProgress: false, 1600 progressMultiplier: 1, 1601 perspective: true, 1602 prev: { 1603 translate: [0, 0, 0], 1604 rotate: [0, 0, 0], 1605 opacity: 1, 1606 scale: 1 1607 }, 1608 next: { 1609 translate: [0, 0, 0], 1610 rotate: [0, 0, 0], 1611 opacity: 1, 1612 scale: 1 1613 } 1614 } 1615 }); 1616 const getTranslateValue = value => { 1617 if (typeof value === 'string') return value; 1618 return `${value}px`; 1619 }; 1620 const setTranslate = () => { 1621 const { 1622 slides, 1623 wrapperEl, 1624 slidesSizesGrid 1625 } = swiper; 1626 const params = swiper.params.creativeEffect; 1627 const { 1628 progressMultiplier: multiplier 1629 } = params; 1630 const isCenteredSlides = swiper.params.centeredSlides; 1631 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper); 1632 if (isCenteredSlides) { 1633 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 1634 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 1635 } 1636 for (let i = 0; i < slides.length; i += 1) { 1637 const slideEl = slides[i]; 1638 const slideProgress = slideEl.progress; 1639 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 1640 let originalProgress = progress; 1641 if (!isCenteredSlides) { 1642 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 1643 } 1644 const offset = slideEl.swiperSlideOffset; 1645 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 1646 const r = [0, 0, 0]; 1647 let custom = false; 1648 if (!swiper.isHorizontal()) { 1649 t[1] = t[0]; 1650 t[0] = 0; 1651 } 1652 let data = { 1653 translate: [0, 0, 0], 1654 rotate: [0, 0, 0], 1655 scale: 1, 1656 opacity: 1 1657 }; 1658 if (progress < 0) { 1659 data = params.next; 1660 custom = true; 1661 } else if (progress > 0) { 1662 data = params.prev; 1663 custom = true; 1664 } 1665 // set translate 1666 t.forEach((value, index) => { 1667 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 1668 }); 1669 // set rotates 1670 r.forEach((value, index) => { 1671 let val = data.rotate[index] * Math.abs(progress * multiplier); 1672 r[index] = val; 1673 }); 1674 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1675 const translateString = t.join(', '); 1676 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 1677 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 1678 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 1679 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 1680 1681 // Set shadows 1682 if (custom && data.shadow || !custom) { 1683 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1684 if (!shadowEl && data.shadow) { 1685 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 1686 } 1687 if (shadowEl) { 1688 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 1689 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 1690 } 1691 } 1692 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1693 targetEl.style.transform = transform; 1694 targetEl.style.opacity = opacityString; 1695 if (data.origin) { 1696 targetEl.style.transformOrigin = data.origin; 1697 } 1698 } 1699 }; 1700 const setTransition = duration => { 1701 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1702 transformElements.forEach(el => { 1703 el.style.transitionDuration = `${duration}ms`; 1704 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1705 shadowEl.style.transitionDuration = `${duration}ms`; 1706 }); 1707 }); 1708 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1709 swiper, 1710 duration, 1711 transformElements, 1712 allSlides: true 1713 }); 1714 }; 1715 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1716 effect: 'creative', 1717 swiper, 1718 on, 1719 setTranslate, 1720 setTransition, 1721 perspective: () => swiper.params.creativeEffect.perspective, 1722 overwriteParams: () => ({ 1723 watchSlidesProgress: true, 1724 virtualTranslate: !swiper.params.cssMode 1725 }) 1726 }); 1727} 1728 1729 1730 1731 1732/***/ }), 1733
vendor: 7,636 bytes, lines 1734-1924
1734/***/ "./node_modules/swiper/modules/effect-cube.mjs": 1735/*!*****************************************************!*\ 1736 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 1737 \*****************************************************/ 1738/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1739 1740"use strict"; 1741__webpack_require__.r(__webpack_exports__); 1742/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1743/* harmony export */ "default": function() { return /* binding */ EffectCube; } 1744/* harmony export */ }); 1745/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1746/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1747 1748 1749 1750function EffectCube(_ref) { 1751 let { 1752 swiper, 1753 extendParams, 1754 on 1755 } = _ref; 1756 extendParams({ 1757 cubeEffect: { 1758 slideShadows: true, 1759 shadow: true, 1760 shadowOffset: 20, 1761 shadowScale: 0.94 1762 } 1763 }); 1764 const createSlideShadows = (slideEl, progress, isHorizontal) => { 1765 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1766 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1767 if (!shadowBefore) { 1768 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 1769 slideEl.append(shadowBefore); 1770 } 1771 if (!shadowAfter) { 1772 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 1773 slideEl.append(shadowAfter); 1774 } 1775 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1776 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1777 }; 1778 const recreateShadows = () => { 1779 // create new ones 1780 const isHorizontal = swiper.isHorizontal(); 1781 swiper.slides.forEach(slideEl => { 1782 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1783 createSlideShadows(slideEl, progress, isHorizontal); 1784 }); 1785 }; 1786 const setTranslate = () => { 1787 const { 1788 el, 1789 wrapperEl, 1790 slides, 1791 width: swiperWidth, 1792 height: swiperHeight, 1793 rtlTranslate: rtl, 1794 size: swiperSize, 1795 browser 1796 } = swiper; 1797 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(swiper); 1798 const params = swiper.params.cubeEffect; 1799 const isHorizontal = swiper.isHorizontal(); 1800 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 1801 let wrapperRotate = 0; 1802 let cubeShadowEl; 1803 if (params.shadow) { 1804 if (isHorizontal) { 1805 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 1806 if (!cubeShadowEl) { 1807 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1808 swiper.wrapperEl.append(cubeShadowEl); 1809 } 1810 cubeShadowEl.style.height = `${swiperWidth}px`; 1811 } else { 1812 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 1813 if (!cubeShadowEl) { 1814 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1815 el.append(cubeShadowEl); 1816 } 1817 } 1818 } 1819 for (let i = 0; i < slides.length; i += 1) { 1820 const slideEl = slides[i]; 1821 let slideIndex = i; 1822 if (isVirtual) { 1823 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 1824 } 1825 let slideAngle = slideIndex * 90; 1826 let round = Math.floor(slideAngle / 360); 1827 if (rtl) { 1828 slideAngle = -slideAngle; 1829 round = Math.floor(-slideAngle / 360); 1830 } 1831 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1832 let tx = 0; 1833 let ty = 0; 1834 let tz = 0; 1835 if (slideIndex % 4 === 0) { 1836 tx = -round * 4 * swiperSize; 1837 tz = 0; 1838 } else if ((slideIndex - 1) % 4 === 0) { 1839 tx = 0; 1840 tz = -round * 4 * swiperSize; 1841 } else if ((slideIndex - 2) % 4 === 0) { 1842 tx = swiperSize + round * 4 * swiperSize; 1843 tz = swiperSize; 1844 } else if ((slideIndex - 3) % 4 === 0) { 1845 tx = -swiperSize; 1846 tz = 3 * swiperSize + swiperSize * 4 * round; 1847 } 1848 if (rtl) { 1849 tx = -tx; 1850 } 1851 if (!isHorizontal) { 1852 ty = tx; 1853 tx = 0; 1854 } 1855 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 1856 if (progress <= 1 && progress > -1) { 1857 wrapperRotate = slideIndex * 90 + progress * 90; 1858 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 1859 } 1860 slideEl.style.transform = transform; 1861 if (params.slideShadows) { 1862 createSlideShadows(slideEl, progress, isHorizontal); 1863 } 1864 } 1865 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 1866 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 1867 if (params.shadow) { 1868 if (isHorizontal) { 1869 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 1870 } else { 1871 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 1872 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 1873 const scale1 = params.shadowScale; 1874 const scale2 = params.shadowScale / multiplier; 1875 const offset = params.shadowOffset; 1876 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 1877 } 1878 } 1879 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 1880 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 1881 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 1882 }; 1883 const setTransition = duration => { 1884 const { 1885 el, 1886 slides 1887 } = swiper; 1888 slides.forEach(slideEl => { 1889 slideEl.style.transitionDuration = `${duration}ms`; 1890 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 1891 subEl.style.transitionDuration = `${duration}ms`; 1892 }); 1893 }); 1894 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 1895 const shadowEl = el.querySelector('.swiper-cube-shadow'); 1896 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 1897 } 1898 }; 1899 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1900 effect: 'cube', 1901 swiper, 1902 on, 1903 setTranslate, 1904 setTransition, 1905 recreateShadows, 1906 getEffectParams: () => swiper.params.cubeEffect, 1907 perspective: () => true, 1908 overwriteParams: () => ({ 1909 slidesPerView: 1, 1910 slidesPerGroup: 1, 1911 watchSlidesProgress: true, 1912 resistanceRatio: 0, 1913 spaceBetween: 0, 1914 centeredSlides: false, 1915 virtualTranslate: true 1916 }) 1917 }); 1918} 1919 1920 1921 1922 1923/***/ }), 1924
vendor: 3,103 bytes, lines 1925-2009
1925/***/ "./node_modules/swiper/modules/effect-fade.mjs": 1926/*!*****************************************************!*\ 1927 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 1928 \*****************************************************/ 1929/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 1930 1931"use strict"; 1932__webpack_require__.r(__webpack_exports__); 1933/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1934/* harmony export */ "default": function() { return /* binding */ EffectFade; } 1935/* harmony export */ }); 1936/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1937/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1938/* 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"); 1939/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1940 1941 1942 1943 1944 1945function EffectFade(_ref) { 1946 let { 1947 swiper, 1948 extendParams, 1949 on 1950 } = _ref; 1951 extendParams({ 1952 fadeEffect: { 1953 crossFade: false 1954 } 1955 }); 1956 const setTranslate = () => { 1957 const { 1958 slides 1959 } = swiper; 1960 const params = swiper.params.fadeEffect; 1961 for (let i = 0; i < slides.length; i += 1) { 1962 const slideEl = swiper.slides[i]; 1963 const offset = slideEl.swiperSlideOffset; 1964 let tx = -offset; 1965 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 1966 let ty = 0; 1967 if (!swiper.isHorizontal()) { 1968 ty = tx; 1969 tx = 0; 1970 } 1971 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 1972 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 1973 targetEl.style.opacity = slideOpacity; 1974 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 1975 } 1976 }; 1977 const setTransition = duration => { 1978 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1979 transformElements.forEach(el => { 1980 el.style.transitionDuration = `${duration}ms`; 1981 }); 1982 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 1983 swiper, 1984 duration, 1985 transformElements, 1986 allSlides: true 1987 }); 1988 }; 1989 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1990 effect: 'fade', 1991 swiper, 1992 on, 1993 setTranslate, 1994 setTransition, 1995 overwriteParams: () => ({ 1996 slidesPerView: 1, 1997 slidesPerGroup: 1, 1998 watchSlidesProgress: true, 1999 spaceBetween: 0, 2000 virtualTranslate: !swiper.params.cssMode 2001 }) 2002 }); 2003} 2004 2005 2006 2007 2008/***/ }), 2009
vendor: 5,336 bytes, lines 2010-2140
2010/***/ "./node_modules/swiper/modules/effect-flip.mjs": 2011/*!*****************************************************!*\ 2012 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 2013 \*****************************************************/ 2014/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2015 2016"use strict"; 2017__webpack_require__.r(__webpack_exports__); 2018/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2019/* harmony export */ "default": function() { return /* binding */ EffectFlip; } 2020/* harmony export */ }); 2021/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 2022/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 2023/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 2024/* 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"); 2025/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2026 2027 2028 2029 2030 2031 2032function EffectFlip(_ref) { 2033 let { 2034 swiper, 2035 extendParams, 2036 on 2037 } = _ref; 2038 extendParams({ 2039 flipEffect: { 2040 slideShadows: true, 2041 limitRotation: true 2042 } 2043 }); 2044 const createSlideShadows = (slideEl, progress) => { 2045 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 2046 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 2047 if (!shadowBefore) { 2048 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 2049 } 2050 if (!shadowAfter) { 2051 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 2052 } 2053 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 2054 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 2055 }; 2056 const recreateShadows = () => { 2057 // Set shadows 2058 swiper.params.flipEffect; 2059 swiper.slides.forEach(slideEl => { 2060 let progress = slideEl.progress; 2061 if (swiper.params.flipEffect.limitRotation) { 2062 progress = Math.max(Math.min(slideEl.progress, 1), -1); 2063 } 2064 createSlideShadows(slideEl, progress); 2065 }); 2066 }; 2067 const setTranslate = () => { 2068 const { 2069 slides, 2070 rtlTranslate: rtl 2071 } = swiper; 2072 const params = swiper.params.flipEffect; 2073 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper); 2074 for (let i = 0; i < slides.length; i += 1) { 2075 const slideEl = slides[i]; 2076 let progress = slideEl.progress; 2077 if (swiper.params.flipEffect.limitRotation) { 2078 progress = Math.max(Math.min(slideEl.progress, 1), -1); 2079 } 2080 const offset = slideEl.swiperSlideOffset; 2081 const rotate = -180 * progress; 2082 let rotateY = rotate; 2083 let rotateX = 0; 2084 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 2085 let ty = 0; 2086 if (!swiper.isHorizontal()) { 2087 ty = tx; 2088 tx = 0; 2089 rotateX = -rotateY; 2090 rotateY = 0; 2091 } else if (rtl) { 2092 rotateY = -rotateY; 2093 } 2094 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 2095 if (params.slideShadows) { 2096 createSlideShadows(slideEl, progress); 2097 } 2098 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 2099 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 2100 targetEl.style.transform = transform; 2101 } 2102 }; 2103 const setTransition = duration => { 2104 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 2105 transformElements.forEach(el => { 2106 el.style.transitionDuration = `${duration}ms`; 2107 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 2108 shadowEl.style.transitionDuration = `${duration}ms`; 2109 }); 2110 }); 2111 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 2112 swiper, 2113 duration, 2114 transformElements 2115 }); 2116 }; 2117 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 2118 effect: 'flip', 2119 swiper, 2120 on, 2121 setTranslate, 2122 setTransition, 2123 recreateShadows, 2124 getEffectParams: () => swiper.params.flipEffect, 2125 perspective: () => true, 2126 overwriteParams: () => ({ 2127 slidesPerView: 1, 2128 slidesPerGroup: 1, 2129 watchSlidesProgress: true, 2130 spaceBetween: 0, 2131 virtualTranslate: !swiper.params.cssMode 2132 }) 2133 }); 2134} 2135 2136 2137 2138 2139/***/ }), 2140
vendor: 9,261 bytes, lines 2141-2393
2141/***/ "./node_modules/swiper/modules/free-mode.mjs": 2142/*!***************************************************!*\ 2143 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 2144 \***************************************************/ 2145/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2146 2147"use strict"; 2148__webpack_require__.r(__webpack_exports__); 2149/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2150/* harmony export */ "default": function() { return /* binding */ freeMode; } 2151/* harmony export */ }); 2152/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2153 2154 2155function freeMode(_ref) { 2156 let { 2157 swiper, 2158 extendParams, 2159 emit, 2160 once 2161 } = _ref; 2162 extendParams({ 2163 freeMode: { 2164 enabled: false, 2165 momentum: true, 2166 momentumRatio: 1, 2167 momentumBounce: true, 2168 momentumBounceRatio: 1, 2169 momentumVelocityRatio: 1, 2170 sticky: false, 2171 minimumVelocity: 0.02 2172 } 2173 }); 2174 function onTouchStart() { 2175 if (swiper.params.cssMode) return; 2176 const translate = swiper.getTranslate(); 2177 swiper.setTranslate(translate); 2178 swiper.setTransition(0); 2179 swiper.touchEventsData.velocities.length = 0; 2180 swiper.freeMode.onTouchEnd({ 2181 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 2182 }); 2183 } 2184 function onTouchMove() { 2185 if (swiper.params.cssMode) return; 2186 const { 2187 touchEventsData: data, 2188 touches 2189 } = swiper; 2190 // Velocity 2191 if (data.velocities.length === 0) { 2192 data.velocities.push({ 2193 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 2194 time: data.touchStartTime 2195 }); 2196 } 2197 data.velocities.push({ 2198 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 2199 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)() 2200 }); 2201 } 2202 function onTouchEnd(_ref2) { 2203 let { 2204 currentPos 2205 } = _ref2; 2206 if (swiper.params.cssMode) return; 2207 const { 2208 params, 2209 wrapperEl, 2210 rtlTranslate: rtl, 2211 snapGrid, 2212 touchEventsData: data 2213 } = swiper; 2214 // Time diff 2215 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(); 2216 const timeDiff = touchEndTime - data.touchStartTime; 2217 if (currentPos < -swiper.minTranslate()) { 2218 swiper.slideTo(swiper.activeIndex); 2219 return; 2220 } 2221 if (currentPos > -swiper.maxTranslate()) { 2222 if (swiper.slides.length < snapGrid.length) { 2223 swiper.slideTo(snapGrid.length - 1); 2224 } else { 2225 swiper.slideTo(swiper.slides.length - 1); 2226 } 2227 return; 2228 } 2229 if (params.freeMode.momentum) { 2230 if (data.velocities.length > 1) { 2231 const lastMoveEvent = data.velocities.pop(); 2232 const velocityEvent = data.velocities.pop(); 2233 const distance = lastMoveEvent.position - velocityEvent.position; 2234 const time = lastMoveEvent.time - velocityEvent.time; 2235 swiper.velocity = distance / time; 2236 swiper.velocity /= 2; 2237 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 2238 swiper.velocity = 0; 2239 } 2240 // this implies that the user stopped moving a finger then released. 2241 // There would be no events with distance zero, so the last event is stale. 2242 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)() - lastMoveEvent.time > 300) { 2243 swiper.velocity = 0; 2244 } 2245 } else { 2246 swiper.velocity = 0; 2247 } 2248 swiper.velocity *= params.freeMode.momentumVelocityRatio; 2249 data.velocities.length = 0; 2250 let momentumDuration = 1000 * params.freeMode.momentumRatio; 2251 const momentumDistance = swiper.velocity * momentumDuration; 2252 let newPosition = swiper.translate + momentumDistance; 2253 if (rtl) newPosition = -newPosition; 2254 let doBounce = false; 2255 let afterBouncePosition; 2256 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 2257 let needsLoopFix; 2258 if (newPosition < swiper.maxTranslate()) { 2259 if (params.freeMode.momentumBounce) { 2260 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 2261 newPosition = swiper.maxTranslate() - bounceAmount; 2262 } 2263 afterBouncePosition = swiper.maxTranslate(); 2264 doBounce = true; 2265 data.allowMomentumBounce = true; 2266 } else { 2267 newPosition = swiper.maxTranslate(); 2268 } 2269 if (params.loop && params.centeredSlides) needsLoopFix = true; 2270 } else if (newPosition > swiper.minTranslate()) { 2271 if (params.freeMode.momentumBounce) { 2272 if (newPosition - swiper.minTranslate() > bounceAmount) { 2273 newPosition = swiper.minTranslate() + bounceAmount; 2274 } 2275 afterBouncePosition = swiper.minTranslate(); 2276 doBounce = true; 2277 data.allowMomentumBounce = true; 2278 } else { 2279 newPosition = swiper.minTranslate(); 2280 } 2281 if (params.loop && params.centeredSlides) needsLoopFix = true; 2282 } else if (params.freeMode.sticky) { 2283 let nextSlide; 2284 for (let j = 0; j < snapGrid.length; j += 1) { 2285 if (snapGrid[j] > -newPosition) { 2286 nextSlide = j; 2287 break; 2288 } 2289 } 2290 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 2291 newPosition = snapGrid[nextSlide]; 2292 } else { 2293 newPosition = snapGrid[nextSlide - 1]; 2294 } 2295 newPosition = -newPosition; 2296 } 2297 if (needsLoopFix) { 2298 once('transitionEnd', () => { 2299 swiper.loopFix(); 2300 }); 2301 } 2302 // Fix duration 2303 if (swiper.velocity !== 0) { 2304 if (rtl) { 2305 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 2306 } else { 2307 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 2308 } 2309 if (params.freeMode.sticky) { 2310 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 2311 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 2312 // It's easy to see this when simulating touch with mouse events. To fix this, 2313 // limit single-slide swipes to the default slide duration. This also has the 2314 // nice side effect of matching slide speed if the user stopped moving before 2315 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 2316 // For faster swipes, also apply limits (albeit higher ones). 2317 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 2318 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 2319 if (moveDistance < currentSlideSize) { 2320 momentumDuration = params.speed; 2321 } else if (moveDistance < 2 * currentSlideSize) { 2322 momentumDuration = params.speed * 1.5; 2323 } else { 2324 momentumDuration = params.speed * 2.5; 2325 } 2326 } 2327 } else if (params.freeMode.sticky) { 2328 swiper.slideToClosest(); 2329 return; 2330 } 2331 if (params.freeMode.momentumBounce && doBounce) { 2332 swiper.updateProgress(afterBouncePosition); 2333 swiper.setTransition(momentumDuration); 2334 swiper.setTranslate(newPosition); 2335 swiper.transitionStart(true, swiper.swipeDirection); 2336 swiper.animating = true; 2337 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2338 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 2339 emit('momentumBounce'); 2340 swiper.setTransition(params.speed); 2341 setTimeout(() => { 2342 swiper.setTranslate(afterBouncePosition); 2343 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2344 if (!swiper || swiper.destroyed) return; 2345 swiper.transitionEnd(); 2346 }); 2347 }, 0); 2348 }); 2349 } else if (swiper.velocity) { 2350 emit('_freeModeNoMomentumRelease'); 2351 swiper.updateProgress(newPosition); 2352 swiper.setTransition(momentumDuration); 2353 swiper.setTranslate(newPosition); 2354 swiper.transitionStart(true, swiper.swipeDirection); 2355 if (!swiper.animating) { 2356 swiper.animating = true; 2357 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2358 if (!swiper || swiper.destroyed) return; 2359 swiper.transitionEnd(); 2360 }); 2361 } 2362 } else { 2363 swiper.updateProgress(newPosition); 2364 } 2365 swiper.updateActiveIndex(); 2366 swiper.updateSlidesClasses(); 2367 } else if (params.freeMode.sticky) { 2368 swiper.slideToClosest(); 2369 return; 2370 } else if (params.freeMode) { 2371 emit('_freeModeNoMomentumRelease'); 2372 } 2373 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 2374 emit('_freeModeStaticRelease'); 2375 swiper.updateProgress(); 2376 swiper.updateActiveIndex(); 2377 swiper.updateSlidesClasses(); 2378 } 2379 } 2380 Object.assign(swiper, { 2381 freeMode: { 2382 onTouchStart, 2383 onTouchMove, 2384 onTouchEnd 2385 } 2386 }); 2387} 2388 2389 2390 2391 2392/***/ }), 2393
vendor: 5,731 bytes, lines 2394-2563
2394/***/ "./node_modules/swiper/modules/grid.mjs": 2395/*!**********************************************!*\ 2396 !*** ./node_modules/swiper/modules/grid.mjs ***! 2397 \**********************************************/ 2398/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2399 2400"use strict"; 2401__webpack_require__.r(__webpack_exports__); 2402/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2403/* harmony export */ "default": function() { return /* binding */ Grid; } 2404/* harmony export */ }); 2405function Grid(_ref) { 2406 let { 2407 swiper, 2408 extendParams, 2409 on 2410 } = _ref; 2411 extendParams({ 2412 grid: { 2413 rows: 1, 2414 fill: 'column' 2415 } 2416 }); 2417 let slidesNumberEvenToRows; 2418 let slidesPerRow; 2419 let numFullColumns; 2420 let wasMultiRow; 2421 const getSpaceBetween = () => { 2422 let spaceBetween = swiper.params.spaceBetween; 2423 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 2424 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 2425 } else if (typeof spaceBetween === 'string') { 2426 spaceBetween = parseFloat(spaceBetween); 2427 } 2428 return spaceBetween; 2429 }; 2430 const initSlides = slides => { 2431 const { 2432 slidesPerView 2433 } = swiper.params; 2434 const { 2435 rows, 2436 fill 2437 } = swiper.params.grid; 2438 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2439 numFullColumns = Math.floor(slidesLength / rows); 2440 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 2441 slidesNumberEvenToRows = slidesLength; 2442 } else { 2443 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 2444 } 2445 if (slidesPerView !== 'auto' && fill === 'row') { 2446 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 2447 } 2448 slidesPerRow = slidesNumberEvenToRows / rows; 2449 }; 2450 const unsetSlides = () => { 2451 if (swiper.slides) { 2452 swiper.slides.forEach(slide => { 2453 if (slide.swiperSlideGridSet) { 2454 slide.style.height = ''; 2455 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 2456 } 2457 }); 2458 } 2459 }; 2460 const updateSlide = (i, slide, slides) => { 2461 const { 2462 slidesPerGroup 2463 } = swiper.params; 2464 const spaceBetween = getSpaceBetween(); 2465 const { 2466 rows, 2467 fill 2468 } = swiper.params.grid; 2469 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2470 // Set slides order 2471 let newSlideOrderIndex; 2472 let column; 2473 let row; 2474 if (fill === 'row' && slidesPerGroup > 1) { 2475 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 2476 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 2477 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 2478 row = Math.floor(slideIndexInGroup / columnsInGroup); 2479 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 2480 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 2481 slide.style.order = newSlideOrderIndex; 2482 } else if (fill === 'column') { 2483 column = Math.floor(i / rows); 2484 row = i - column * rows; 2485 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 2486 row += 1; 2487 if (row >= rows) { 2488 row = 0; 2489 column += 1; 2490 } 2491 } 2492 } else { 2493 row = Math.floor(i / slidesPerRow); 2494 column = i - row * slidesPerRow; 2495 } 2496 slide.row = row; 2497 slide.column = column; 2498 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 2499 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 2500 slide.swiperSlideGridSet = true; 2501 }; 2502 const updateWrapperSize = (slideSize, snapGrid) => { 2503 const { 2504 centeredSlides, 2505 roundLengths 2506 } = swiper.params; 2507 const spaceBetween = getSpaceBetween(); 2508 const { 2509 rows 2510 } = swiper.params.grid; 2511 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 2512 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 2513 if (!swiper.params.cssMode) { 2514 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 2515 } 2516 if (centeredSlides) { 2517 const newSlidesGrid = []; 2518 for (let i = 0; i < snapGrid.length; i += 1) { 2519 let slidesGridItem = snapGrid[i]; 2520 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 2521 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 2522 } 2523 snapGrid.splice(0, snapGrid.length); 2524 snapGrid.push(...newSlidesGrid); 2525 } 2526 }; 2527 const onInit = () => { 2528 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 2529 }; 2530 const onUpdate = () => { 2531 const { 2532 params, 2533 el 2534 } = swiper; 2535 const isMultiRow = params.grid && params.grid.rows > 1; 2536 if (wasMultiRow && !isMultiRow) { 2537 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 2538 numFullColumns = 1; 2539 swiper.emitContainerClasses(); 2540 } else if (!wasMultiRow && isMultiRow) { 2541 el.classList.add(`${params.containerModifierClass}grid`); 2542 if (params.grid.fill === 'column') { 2543 el.classList.add(`${params.containerModifierClass}grid-column`); 2544 } 2545 swiper.emitContainerClasses(); 2546 } 2547 wasMultiRow = isMultiRow; 2548 }; 2549 on('init', onInit); 2550 on('update', onUpdate); 2551 swiper.grid = { 2552 initSlides, 2553 unsetSlides, 2554 updateSlide, 2555 updateWrapperSize 2556 }; 2557} 2558 2559 2560 2561 2562/***/ }), 2563
vendor: 4,427 bytes, lines 2564-2673
2564/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 2565/*!*********************************************************!*\ 2566 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 2567 \*********************************************************/ 2568/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2569 2570"use strict"; 2571__webpack_require__.r(__webpack_exports__); 2572/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2573/* harmony export */ "default": function() { return /* binding */ HashNavigation; } 2574/* harmony export */ }); 2575/* 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"); 2576/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2577 2578 2579 2580function HashNavigation(_ref) { 2581 let { 2582 swiper, 2583 extendParams, 2584 emit, 2585 on 2586 } = _ref; 2587 let initialized = false; 2588 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2589 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2590 extendParams({ 2591 hashNavigation: { 2592 enabled: false, 2593 replaceState: false, 2594 watchState: false, 2595 getSlideIndex(_s, hash) { 2596 if (swiper.virtual && swiper.params.virtual.enabled) { 2597 const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); 2598 if (!slideWithHash) return 0; 2599 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 2600 return index; 2601 } 2602 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]); 2603 } 2604 } 2605 }); 2606 const onHashChange = () => { 2607 emit('hashChange'); 2608 const newHash = document.location.hash.replace('#', ''); 2609 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2610 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 2611 if (newHash !== activeSlideHash) { 2612 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 2613 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 2614 swiper.slideTo(newIndex); 2615 } 2616 }; 2617 const setHash = () => { 2618 if (!initialized || !swiper.params.hashNavigation.enabled) return; 2619 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2620 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 2621 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 2622 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 2623 emit('hashSet'); 2624 } else { 2625 document.location.hash = activeSlideHash || ''; 2626 emit('hashSet'); 2627 } 2628 }; 2629 const init = () => { 2630 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 2631 initialized = true; 2632 const hash = document.location.hash.replace('#', ''); 2633 if (hash) { 2634 const speed = 0; 2635 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 2636 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 2637 } 2638 if (swiper.params.hashNavigation.watchState) { 2639 window.addEventListener('hashchange', onHashChange); 2640 } 2641 }; 2642 const destroy = () => { 2643 if (swiper.params.hashNavigation.watchState) { 2644 window.removeEventListener('hashchange', onHashChange); 2645 } 2646 }; 2647 on('init', () => { 2648 if (swiper.params.hashNavigation.enabled) { 2649 init(); 2650 } 2651 }); 2652 on('destroy', () => { 2653 if (swiper.params.hashNavigation.enabled) { 2654 destroy(); 2655 } 2656 }); 2657 on('transitionEnd _freeModeNoMomentumRelease', () => { 2658 if (initialized) { 2659 setHash(); 2660 } 2661 }); 2662 on('slideChange', () => { 2663 if (initialized && swiper.params.cssMode) { 2664 setHash(); 2665 } 2666 }); 2667} 2668 2669 2670 2671 2672/***/ }), 2673
vendor: 5,144 bytes, lines 2674-2831
2674/***/ "./node_modules/swiper/modules/history.mjs": 2675/*!*************************************************!*\ 2676 !*** ./node_modules/swiper/modules/history.mjs ***! 2677 \*************************************************/ 2678/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2679 2680"use strict"; 2681__webpack_require__.r(__webpack_exports__); 2682/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2683/* harmony export */ "default": function() { return /* binding */ History; } 2684/* harmony export */ }); 2685/* 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"); 2686 2687 2688function History(_ref) { 2689 let { 2690 swiper, 2691 extendParams, 2692 on 2693 } = _ref; 2694 extendParams({ 2695 history: { 2696 enabled: false, 2697 root: '', 2698 replaceState: false, 2699 key: 'slides', 2700 keepQuery: false 2701 } 2702 }); 2703 let initialized = false; 2704 let paths = {}; 2705 const slugify = text => { 2706 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 2707 }; 2708 const getPathValues = urlOverride => { 2709 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2710 let location; 2711 if (urlOverride) { 2712 location = new URL(urlOverride); 2713 } else { 2714 location = window.location; 2715 } 2716 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 2717 const total = pathArray.length; 2718 const key = pathArray[total - 2]; 2719 const value = pathArray[total - 1]; 2720 return { 2721 key, 2722 value 2723 }; 2724 }; 2725 const setHistory = (key, index) => { 2726 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2727 if (!initialized || !swiper.params.history.enabled) return; 2728 let location; 2729 if (swiper.params.url) { 2730 location = new URL(swiper.params.url); 2731 } else { 2732 location = window.location; 2733 } 2734 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 2735 let value = slugify(slide.getAttribute('data-history')); 2736 if (swiper.params.history.root.length > 0) { 2737 let root = swiper.params.history.root; 2738 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 2739 value = `${root}/${key ? `${key}/` : ''}${value}`; 2740 } else if (!location.pathname.includes(key)) { 2741 value = `${key ? `${key}/` : ''}${value}`; 2742 } 2743 if (swiper.params.history.keepQuery) { 2744 value += location.search; 2745 } 2746 const currentState = window.history.state; 2747 if (currentState && currentState.value === value) { 2748 return; 2749 } 2750 if (swiper.params.history.replaceState) { 2751 window.history.replaceState({ 2752 value 2753 }, null, value); 2754 } else { 2755 window.history.pushState({ 2756 value 2757 }, null, value); 2758 } 2759 }; 2760 const scrollToSlide = (speed, value, runCallbacks) => { 2761 if (value) { 2762 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 2763 const slide = swiper.slides[i]; 2764 const slideHistory = slugify(slide.getAttribute('data-history')); 2765 if (slideHistory === value) { 2766 const index = swiper.getSlideIndex(slide); 2767 swiper.slideTo(index, speed, runCallbacks); 2768 } 2769 } 2770 } else { 2771 swiper.slideTo(0, speed, runCallbacks); 2772 } 2773 }; 2774 const setHistoryPopState = () => { 2775 paths = getPathValues(swiper.params.url); 2776 scrollToSlide(swiper.params.speed, paths.value, false); 2777 }; 2778 const init = () => { 2779 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2780 if (!swiper.params.history) return; 2781 if (!window.history || !window.history.pushState) { 2782 swiper.params.history.enabled = false; 2783 swiper.params.hashNavigation.enabled = true; 2784 return; 2785 } 2786 initialized = true; 2787 paths = getPathValues(swiper.params.url); 2788 if (!paths.key && !paths.value) { 2789 if (!swiper.params.history.replaceState) { 2790 window.addEventListener('popstate', setHistoryPopState); 2791 } 2792 return; 2793 } 2794 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 2795 if (!swiper.params.history.replaceState) { 2796 window.addEventListener('popstate', setHistoryPopState); 2797 } 2798 }; 2799 const destroy = () => { 2800 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2801 if (!swiper.params.history.replaceState) { 2802 window.removeEventListener('popstate', setHistoryPopState); 2803 } 2804 }; 2805 on('init', () => { 2806 if (swiper.params.history.enabled) { 2807 init(); 2808 } 2809 }); 2810 on('destroy', () => { 2811 if (swiper.params.history.enabled) { 2812 destroy(); 2813 } 2814 }); 2815 on('transitionEnd _freeModeNoMomentumRelease', () => { 2816 if (initialized) { 2817 setHistory(swiper.params.history.key, swiper.activeIndex); 2818 } 2819 }); 2820 on('slideChange', () => { 2821 if (initialized && swiper.params.cssMode) { 2822 setHistory(swiper.params.history.key, swiper.activeIndex); 2823 } 2824 }); 2825} 2826 2827 2828 2829 2830/***/ }), 2831
vendor: 5,339 bytes, lines 2832-2965
2832/***/ "./node_modules/swiper/modules/keyboard.mjs": 2833/*!**************************************************!*\ 2834 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 2835 \**************************************************/ 2836/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2837 2838"use strict"; 2839__webpack_require__.r(__webpack_exports__); 2840/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2841/* harmony export */ "default": function() { return /* binding */ Keyboard; } 2842/* harmony export */ }); 2843/* 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"); 2844/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2845 2846 2847 2848/* eslint-disable consistent-return */ 2849function Keyboard(_ref) { 2850 let { 2851 swiper, 2852 extendParams, 2853 on, 2854 emit 2855 } = _ref; 2856 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2857 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2858 swiper.keyboard = { 2859 enabled: false 2860 }; 2861 extendParams({ 2862 keyboard: { 2863 enabled: false, 2864 onlyInViewport: true, 2865 pageUpDown: true 2866 } 2867 }); 2868 function handle(event) { 2869 if (!swiper.enabled) return; 2870 const { 2871 rtlTranslate: rtl 2872 } = swiper; 2873 let e = event; 2874 if (e.originalEvent) e = e.originalEvent; // jquery fix 2875 const kc = e.keyCode || e.charCode; 2876 const pageUpDown = swiper.params.keyboard.pageUpDown; 2877 const isPageUp = pageUpDown && kc === 33; 2878 const isPageDown = pageUpDown && kc === 34; 2879 const isArrowLeft = kc === 37; 2880 const isArrowRight = kc === 39; 2881 const isArrowUp = kc === 38; 2882 const isArrowDown = kc === 40; 2883 // Directions locks 2884 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 2885 return false; 2886 } 2887 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 2888 return false; 2889 } 2890 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 2891 return undefined; 2892 } 2893 if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) { 2894 return undefined; 2895 } 2896 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 2897 let inView = false; 2898 // Check that swiper should be inside of visible area of window 2899 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { 2900 return undefined; 2901 } 2902 const el = swiper.el; 2903 const swiperWidth = el.clientWidth; 2904 const swiperHeight = el.clientHeight; 2905 const windowWidth = window.innerWidth; 2906 const windowHeight = window.innerHeight; 2907 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el); 2908 if (rtl) swiperOffset.left -= el.scrollLeft; 2909 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 2910 for (let i = 0; i < swiperCoord.length; i += 1) { 2911 const point = swiperCoord[i]; 2912 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 2913 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 2914 inView = true; 2915 } 2916 } 2917 if (!inView) return undefined; 2918 } 2919 if (swiper.isHorizontal()) { 2920 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 2921 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2922 } 2923 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 2924 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 2925 } else { 2926 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 2927 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2928 } 2929 if (isPageDown || isArrowDown) swiper.slideNext(); 2930 if (isPageUp || isArrowUp) swiper.slidePrev(); 2931 } 2932 emit('keyPress', kc); 2933 return undefined; 2934 } 2935 function enable() { 2936 if (swiper.keyboard.enabled) return; 2937 document.addEventListener('keydown', handle); 2938 swiper.keyboard.enabled = true; 2939 } 2940 function disable() { 2941 if (!swiper.keyboard.enabled) return; 2942 document.removeEventListener('keydown', handle); 2943 swiper.keyboard.enabled = false; 2944 } 2945 on('init', () => { 2946 if (swiper.params.keyboard.enabled) { 2947 enable(); 2948 } 2949 }); 2950 on('destroy', () => { 2951 if (swiper.keyboard.enabled) { 2952 disable(); 2953 } 2954 }); 2955 Object.assign(swiper.keyboard, { 2956 enable, 2957 disable 2958 }); 2959} 2960 2961 2962 2963 2964/***/ }), 2965
vendor: 5,875 bytes, lines 2966-3174
2966/***/ "./node_modules/swiper/modules/manipulation.mjs": 2967/*!******************************************************!*\ 2968 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 2969 \******************************************************/ 2970/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2971 2972"use strict"; 2973__webpack_require__.r(__webpack_exports__); 2974/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2975/* harmony export */ "default": function() { return /* binding */ Manipulation; } 2976/* harmony export */ }); 2977/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2978 2979 2980function appendSlide(slides) { 2981 const swiper = this; 2982 const { 2983 params, 2984 slidesEl 2985 } = swiper; 2986 if (params.loop) { 2987 swiper.loopDestroy(); 2988 } 2989 const appendElement = slideEl => { 2990 if (typeof slideEl === 'string') { 2991 const tempDOM = document.createElement('div'); 2992 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl); 2993 slidesEl.append(tempDOM.children[0]); 2994 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, ''); 2995 } else { 2996 slidesEl.append(slideEl); 2997 } 2998 }; 2999 if (typeof slides === 'object' && 'length' in slides) { 3000 for (let i = 0; i < slides.length; i += 1) { 3001 if (slides[i]) appendElement(slides[i]); 3002 } 3003 } else { 3004 appendElement(slides); 3005 } 3006 swiper.recalcSlides(); 3007 if (params.loop) { 3008 swiper.loopCreate(); 3009 } 3010 if (!params.observer || swiper.isElement) { 3011 swiper.update(); 3012 } 3013} 3014 3015function prependSlide(slides) { 3016 const swiper = this; 3017 const { 3018 params, 3019 activeIndex, 3020 slidesEl 3021 } = swiper; 3022 if (params.loop) { 3023 swiper.loopDestroy(); 3024 } 3025 let newActiveIndex = activeIndex + 1; 3026 const prependElement = slideEl => { 3027 if (typeof slideEl === 'string') { 3028 const tempDOM = document.createElement('div'); 3029 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl); 3030 slidesEl.prepend(tempDOM.children[0]); 3031 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, ''); 3032 } else { 3033 slidesEl.prepend(slideEl); 3034 } 3035 }; 3036 if (typeof slides === 'object' && 'length' in slides) { 3037 for (let i = 0; i < slides.length; i += 1) { 3038 if (slides[i]) prependElement(slides[i]); 3039 } 3040 newActiveIndex = activeIndex + slides.length; 3041 } else { 3042 prependElement(slides); 3043 } 3044 swiper.recalcSlides(); 3045 if (params.loop) { 3046 swiper.loopCreate(); 3047 } 3048 if (!params.observer || swiper.isElement) { 3049 swiper.update(); 3050 } 3051 swiper.slideTo(newActiveIndex, 0, false); 3052} 3053 3054function addSlide(index, slides) { 3055 const swiper = this; 3056 const { 3057 params, 3058 activeIndex, 3059 slidesEl 3060 } = swiper; 3061 let activeIndexBuffer = activeIndex; 3062 if (params.loop) { 3063 activeIndexBuffer -= swiper.loopedSlides; 3064 swiper.loopDestroy(); 3065 swiper.recalcSlides(); 3066 } 3067 const baseLength = swiper.slides.length; 3068 if (index <= 0) { 3069 swiper.prependSlide(slides); 3070 return; 3071 } 3072 if (index >= baseLength) { 3073 swiper.appendSlide(slides); 3074 return; 3075 } 3076 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 3077 const slidesBuffer = []; 3078 for (let i = baseLength - 1; i >= index; i -= 1) { 3079 const currentSlide = swiper.slides[i]; 3080 currentSlide.remove(); 3081 slidesBuffer.unshift(currentSlide); 3082 } 3083 if (typeof slides === 'object' && 'length' in slides) { 3084 for (let i = 0; i < slides.length; i += 1) { 3085 if (slides[i]) slidesEl.append(slides[i]); 3086 } 3087 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 3088 } else { 3089 slidesEl.append(slides); 3090 } 3091 for (let i = 0; i < slidesBuffer.length; i += 1) { 3092 slidesEl.append(slidesBuffer[i]); 3093 } 3094 swiper.recalcSlides(); 3095 if (params.loop) { 3096 swiper.loopCreate(); 3097 } 3098 if (!params.observer || swiper.isElement) { 3099 swiper.update(); 3100 } 3101 if (params.loop) { 3102 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 3103 } else { 3104 swiper.slideTo(newActiveIndex, 0, false); 3105 } 3106} 3107 3108function removeSlide(slidesIndexes) { 3109 const swiper = this; 3110 const { 3111 params, 3112 activeIndex 3113 } = swiper; 3114 let activeIndexBuffer = activeIndex; 3115 if (params.loop) { 3116 activeIndexBuffer -= swiper.loopedSlides; 3117 swiper.loopDestroy(); 3118 } 3119 let newActiveIndex = activeIndexBuffer; 3120 let indexToRemove; 3121 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 3122 for (let i = 0; i < slidesIndexes.length; i += 1) { 3123 indexToRemove = slidesIndexes[i]; 3124 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 3125 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 3126 } 3127 newActiveIndex = Math.max(newActiveIndex, 0); 3128 } else { 3129 indexToRemove = slidesIndexes; 3130 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 3131 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 3132 newActiveIndex = Math.max(newActiveIndex, 0); 3133 } 3134 swiper.recalcSlides(); 3135 if (params.loop) { 3136 swiper.loopCreate(); 3137 } 3138 if (!params.observer || swiper.isElement) { 3139 swiper.update(); 3140 } 3141 if (params.loop) { 3142 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 3143 } else { 3144 swiper.slideTo(newActiveIndex, 0, false); 3145 } 3146} 3147 3148function removeAllSlides() { 3149 const swiper = this; 3150 const slidesIndexes = []; 3151 for (let i = 0; i < swiper.slides.length; i += 1) { 3152 slidesIndexes.push(i); 3153 } 3154 swiper.removeSlide(slidesIndexes); 3155} 3156 3157function Manipulation(_ref) { 3158 let { 3159 swiper 3160 } = _ref; 3161 Object.assign(swiper, { 3162 appendSlide: appendSlide.bind(swiper), 3163 prependSlide: prependSlide.bind(swiper), 3164 addSlide: addSlide.bind(swiper), 3165 removeSlide: removeSlide.bind(swiper), 3166 removeAllSlides: removeAllSlides.bind(swiper) 3167 }); 3168} 3169 3170 3171 3172 3173/***/ }), 3174
vendor: 16,029 bytes, lines 3175-3586
3175/***/ "./node_modules/swiper/modules/mousewheel.mjs": 3176/*!****************************************************!*\ 3177 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 3178 \****************************************************/ 3179/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3180 3181"use strict"; 3182__webpack_require__.r(__webpack_exports__); 3183/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3184/* harmony export */ "default": function() { return /* binding */ Mousewheel; } 3185/* harmony export */ }); 3186/* 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"); 3187/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3188 3189 3190 3191/* eslint-disable consistent-return */ 3192function Mousewheel(_ref) { 3193 let { 3194 swiper, 3195 extendParams, 3196 on, 3197 emit 3198 } = _ref; 3199 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 3200 extendParams({ 3201 mousewheel: { 3202 enabled: false, 3203 releaseOnEdges: false, 3204 invert: false, 3205 forceToAxis: false, 3206 sensitivity: 1, 3207 eventsTarget: 'container', 3208 thresholdDelta: null, 3209 thresholdTime: null, 3210 noMousewheelClass: 'swiper-no-mousewheel' 3211 } 3212 }); 3213 swiper.mousewheel = { 3214 enabled: false 3215 }; 3216 let timeout; 3217 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 3218 let lastEventBeforeSnap; 3219 const recentWheelEvents = []; 3220 function normalize(e) { 3221 // Reasonable defaults 3222 const PIXEL_STEP = 10; 3223 const LINE_HEIGHT = 40; 3224 const PAGE_HEIGHT = 800; 3225 let sX = 0; 3226 let sY = 0; // spinX, spinY 3227 let pX = 0; 3228 let pY = 0; // pixelX, pixelY 3229 3230 // Legacy 3231 if ('detail' in e) { 3232 sY = e.detail; 3233 } 3234 if ('wheelDelta' in e) { 3235 sY = -e.wheelDelta / 120; 3236 } 3237 if ('wheelDeltaY' in e) { 3238 sY = -e.wheelDeltaY / 120; 3239 } 3240 if ('wheelDeltaX' in e) { 3241 sX = -e.wheelDeltaX / 120; 3242 } 3243 3244 // side scrolling on FF with DOMMouseScroll 3245 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 3246 sX = sY; 3247 sY = 0; 3248 } 3249 pX = sX * PIXEL_STEP; 3250 pY = sY * PIXEL_STEP; 3251 if ('deltaY' in e) { 3252 pY = e.deltaY; 3253 } 3254 if ('deltaX' in e) { 3255 pX = e.deltaX; 3256 } 3257 if (e.shiftKey && !pX) { 3258 // if user scrolls with shift he wants horizontal scroll 3259 pX = pY; 3260 pY = 0; 3261 } 3262 if ((pX || pY) && e.deltaMode) { 3263 if (e.deltaMode === 1) { 3264 // delta in LINE units 3265 pX *= LINE_HEIGHT; 3266 pY *= LINE_HEIGHT; 3267 } else { 3268 // delta in PAGE units 3269 pX *= PAGE_HEIGHT; 3270 pY *= PAGE_HEIGHT; 3271 } 3272 } 3273 3274 // Fall-back if spin cannot be determined 3275 if (pX && !sX) { 3276 sX = pX < 1 ? -1 : 1; 3277 } 3278 if (pY && !sY) { 3279 sY = pY < 1 ? -1 : 1; 3280 } 3281 return { 3282 spinX: sX, 3283 spinY: sY, 3284 pixelX: pX, 3285 pixelY: pY 3286 }; 3287 } 3288 function handleMouseEnter() { 3289 if (!swiper.enabled) return; 3290 swiper.mouseEntered = true; 3291 } 3292 function handleMouseLeave() { 3293 if (!swiper.enabled) return; 3294 swiper.mouseEntered = false; 3295 } 3296 function animateSlider(newEvent) { 3297 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 3298 // Prevent if delta of wheel scroll delta is below configured threshold 3299 return false; 3300 } 3301 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 3302 // Prevent if time between scrolls is below configured threshold 3303 return false; 3304 } 3305 3306 // If the movement is NOT big enough and 3307 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 3308 // Don't go any further (avoid insignificant scroll movement). 3309 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < 60) { 3310 // Return false as a default 3311 return true; 3312 } 3313 // If user is scrolling towards the end: 3314 // If the slider hasn't hit the latest slide or 3315 // if the slider is a loop and 3316 // if the slider isn't moving right now: 3317 // Go to next slide and 3318 // emit a scroll event. 3319 // Else (the user is scrolling towards the beginning) and 3320 // if the slider hasn't hit the first slide or 3321 // if the slider is a loop and 3322 // if the slider isn't moving right now: 3323 // Go to prev slide and 3324 // emit a scroll event. 3325 if (newEvent.direction < 0) { 3326 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 3327 swiper.slideNext(); 3328 emit('scroll', newEvent.raw); 3329 } 3330 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 3331 swiper.slidePrev(); 3332 emit('scroll', newEvent.raw); 3333 } 3334 // If you got here is because an animation has been triggered so store the current time 3335 lastScrollTime = new window.Date().getTime(); 3336 // Return false as a default 3337 return false; 3338 } 3339 function releaseScroll(newEvent) { 3340 const params = swiper.params.mousewheel; 3341 if (newEvent.direction < 0) { 3342 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 3343 // Return true to animate scroll on edges 3344 return true; 3345 } 3346 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 3347 // Return true to animate scroll on edges 3348 return true; 3349 } 3350 return false; 3351 } 3352 function handle(event) { 3353 let e = event; 3354 let disableParentSwiper = true; 3355 if (!swiper.enabled) return; 3356 3357 // Ignore event if the target or its parents have the swiper-no-mousewheel class 3358 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 3359 const params = swiper.params.mousewheel; 3360 if (swiper.params.cssMode) { 3361 e.preventDefault(); 3362 } 3363 let targetEl = swiper.el; 3364 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3365 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3366 } 3367 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 3368 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 3369 if (e.originalEvent) e = e.originalEvent; // jquery fix 3370 let delta = 0; 3371 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 3372 const data = normalize(e); 3373 if (params.forceToAxis) { 3374 if (swiper.isHorizontal()) { 3375 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 3376 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 3377 } else { 3378 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 3379 } 3380 if (delta === 0) return true; 3381 if (params.invert) delta = -delta; 3382 3383 // Get the scroll positions 3384 let positions = swiper.getTranslate() + delta * params.sensitivity; 3385 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 3386 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 3387 3388 // When loop is true: 3389 // the disableParentSwiper will be true. 3390 // When loop is false: 3391 // if the scroll positions is not on edge, 3392 // then the disableParentSwiper will be true. 3393 // if the scroll on edge positions, 3394 // then the disableParentSwiper will be false. 3395 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 3396 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 3397 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 3398 // Register the new event in a variable which stores the relevant data 3399 const newEvent = { 3400 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(), 3401 delta: Math.abs(delta), 3402 direction: Math.sign(delta), 3403 raw: event 3404 }; 3405 3406 // Keep the most recent events 3407 if (recentWheelEvents.length >= 2) { 3408 recentWheelEvents.shift(); // only store the last N events 3409 } 3410 3411 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3412 recentWheelEvents.push(newEvent); 3413 3414 // If there is at least one previous recorded event: 3415 // If direction has changed or 3416 // if the scroll is quicker than the previous one: 3417 // Animate the slider. 3418 // Else (this is the first time the wheel is moved): 3419 // Animate the slider. 3420 if (prevEvent) { 3421 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 3422 animateSlider(newEvent); 3423 } 3424 } else { 3425 animateSlider(newEvent); 3426 } 3427 3428 // If it's time to release the scroll: 3429 // Return now so you don't hit the preventDefault. 3430 if (releaseScroll(newEvent)) { 3431 return true; 3432 } 3433 } else { 3434 // Freemode or scrollContainer: 3435 3436 // If we recently snapped after a momentum scroll, then ignore wheel events 3437 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 3438 // or if it's a new scroll (larger delta or inverse sign as last event before 3439 // an end-of-momentum snap). 3440 const newEvent = { 3441 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(), 3442 delta: Math.abs(delta), 3443 direction: Math.sign(delta) 3444 }; 3445 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 3446 if (!ignoreWheelEvents) { 3447 lastEventBeforeSnap = undefined; 3448 let position = swiper.getTranslate() + delta * params.sensitivity; 3449 const wasBeginning = swiper.isBeginning; 3450 const wasEnd = swiper.isEnd; 3451 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 3452 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 3453 swiper.setTransition(0); 3454 swiper.setTranslate(position); 3455 swiper.updateProgress(); 3456 swiper.updateActiveIndex(); 3457 swiper.updateSlidesClasses(); 3458 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 3459 swiper.updateSlidesClasses(); 3460 } 3461 if (swiper.params.loop) { 3462 swiper.loopFix({ 3463 direction: newEvent.direction < 0 ? 'next' : 'prev', 3464 byMousewheel: true 3465 }); 3466 } 3467 if (swiper.params.freeMode.sticky) { 3468 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 3469 // the end of a momentum scroll by storing recent (N=15?) wheel events. 3470 // 1. do all N events have decreasing or same (absolute value) delta? 3471 // 2. did all N events arrive in the last M (M=500?) msecs? 3472 // 3. does the earliest event have an (absolute value) delta that's 3473 // at least P (P=1?) larger than the most recent event's delta? 3474 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 3475 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 3476 // Snap immediately and ignore remaining wheel events in this scroll. 3477 // See comment above for "remaining wheel events in this scroll" determination. 3478 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 3479 clearTimeout(timeout); 3480 timeout = undefined; 3481 if (recentWheelEvents.length >= 15) { 3482 recentWheelEvents.shift(); // only store the last N events 3483 } 3484 3485 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3486 const firstEvent = recentWheelEvents[0]; 3487 recentWheelEvents.push(newEvent); 3488 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 3489 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 3490 recentWheelEvents.splice(0); 3491 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 3492 // We're at the end of the deceleration of a momentum scroll, so there's no need 3493 // to wait for more events. Snap ASAP on the next tick. 3494 // Also, because there's some remaining momentum we'll bias the snap in the 3495 // direction of the ongoing scroll because it's better UX for the scroll to snap 3496 // in the same direction as the scroll instead of reversing to snap. Therefore, 3497 // if it's already scrolled more than 20% in the current direction, keep going. 3498 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 3499 lastEventBeforeSnap = newEvent; 3500 recentWheelEvents.splice(0); 3501 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3502 if (swiper.destroyed || !swiper.params) return; 3503 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3504 }, 0); // no delay; move on next tick 3505 } 3506 3507 if (!timeout) { 3508 // if we get here, then we haven't detected the end of a momentum scroll, so 3509 // we'll consider a scroll "complete" when there haven't been any wheel events 3510 // for 500ms. 3511 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3512 if (swiper.destroyed || !swiper.params) return; 3513 const snapToThreshold = 0.5; 3514 lastEventBeforeSnap = newEvent; 3515 recentWheelEvents.splice(0); 3516 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3517 }, 500); 3518 } 3519 } 3520 3521 // Emit event 3522 if (!ignoreWheelEvents) emit('scroll', e); 3523 3524 // Stop autoplay 3525 if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); 3526 // Return page scroll on edge positions 3527 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 3528 return true; 3529 } 3530 } 3531 } 3532 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 3533 return false; 3534 } 3535 function events(method) { 3536 let targetEl = swiper.el; 3537 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3538 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3539 } 3540 targetEl[method]('mouseenter', handleMouseEnter); 3541 targetEl[method]('mouseleave', handleMouseLeave); 3542 targetEl[method]('wheel', handle); 3543 } 3544 function enable() { 3545 if (swiper.params.cssMode) { 3546 swiper.wrapperEl.removeEventListener('wheel', handle); 3547 return true; 3548 } 3549 if (swiper.mousewheel.enabled) return false; 3550 events('addEventListener'); 3551 swiper.mousewheel.enabled = true; 3552 return true; 3553 } 3554 function disable() { 3555 if (swiper.params.cssMode) { 3556 swiper.wrapperEl.addEventListener(event, handle); 3557 return true; 3558 } 3559 if (!swiper.mousewheel.enabled) return false; 3560 events('removeEventListener'); 3561 swiper.mousewheel.enabled = false; 3562 return true; 3563 } 3564 on('init', () => { 3565 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 3566 disable(); 3567 } 3568 if (swiper.params.mousewheel.enabled) enable(); 3569 }); 3570 on('destroy', () => { 3571 if (swiper.params.cssMode) { 3572 enable(); 3573 } 3574 if (swiper.mousewheel.enabled) disable(); 3575 }); 3576 Object.assign(swiper.mousewheel, { 3577 enable, 3578 disable 3579 }); 3580} 3581 3582 3583 3584 3585/***/ }), 3586
vendor: 7,442 bytes, lines 3587-3803
3587/***/ "./node_modules/swiper/modules/navigation.mjs": 3588/*!****************************************************!*\ 3589 !*** ./node_modules/swiper/modules/navigation.mjs ***! 3590 \****************************************************/ 3591/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3592 3593"use strict"; 3594__webpack_require__.r(__webpack_exports__); 3595/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3596/* harmony export */ "default": function() { return /* binding */ Navigation; } 3597/* harmony export */ }); 3598/* 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"); 3599/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3600 3601 3602 3603function Navigation(_ref) { 3604 let { 3605 swiper, 3606 extendParams, 3607 on, 3608 emit 3609 } = _ref; 3610 extendParams({ 3611 navigation: { 3612 nextEl: null, 3613 prevEl: null, 3614 hideOnClick: false, 3615 disabledClass: 'swiper-button-disabled', 3616 hiddenClass: 'swiper-button-hidden', 3617 lockClass: 'swiper-button-lock', 3618 navigationDisabledClass: 'swiper-navigation-disabled' 3619 } 3620 }); 3621 swiper.navigation = { 3622 nextEl: null, 3623 prevEl: null 3624 }; 3625 function getEl(el) { 3626 let res; 3627 if (el && typeof el === 'string' && swiper.isElement) { 3628 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 3629 if (res) return res; 3630 } 3631 if (el) { 3632 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 3633 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 3634 res = swiper.el.querySelector(el); 3635 } else if (res && res.length === 1) { 3636 res = res[0]; 3637 } 3638 } 3639 if (el && !res) return el; 3640 // if (Array.isArray(res) && res.length === 1) res = res[0]; 3641 return res; 3642 } 3643 function toggleEl(el, disabled) { 3644 const params = swiper.params.navigation; 3645 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 3646 el.forEach(subEl => { 3647 if (subEl) { 3648 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 3649 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 3650 if (swiper.params.watchOverflow && swiper.enabled) { 3651 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3652 } 3653 } 3654 }); 3655 } 3656 function update() { 3657 // Update Navigation Buttons 3658 const { 3659 nextEl, 3660 prevEl 3661 } = swiper.navigation; 3662 if (swiper.params.loop) { 3663 toggleEl(prevEl, false); 3664 toggleEl(nextEl, false); 3665 return; 3666 } 3667 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 3668 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 3669 } 3670 function onPrevClick(e) { 3671 e.preventDefault(); 3672 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 3673 swiper.slidePrev(); 3674 emit('navigationPrev'); 3675 } 3676 function onNextClick(e) { 3677 e.preventDefault(); 3678 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 3679 swiper.slideNext(); 3680 emit('navigationNext'); 3681 } 3682 function init() { 3683 const params = swiper.params.navigation; 3684 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 3685 nextEl: 'swiper-button-next', 3686 prevEl: 'swiper-button-prev' 3687 }); 3688 if (!(params.nextEl || params.prevEl)) return; 3689 let nextEl = getEl(params.nextEl); 3690 let prevEl = getEl(params.prevEl); 3691 Object.assign(swiper.navigation, { 3692 nextEl, 3693 prevEl 3694 }); 3695 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3696 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3697 const initButton = (el, dir) => { 3698 if (el) { 3699 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3700 } 3701 if (!swiper.enabled && el) { 3702 el.classList.add(...params.lockClass.split(' ')); 3703 } 3704 }; 3705 nextEl.forEach(el => initButton(el, 'next')); 3706 prevEl.forEach(el => initButton(el, 'prev')); 3707 } 3708 function destroy() { 3709 let { 3710 nextEl, 3711 prevEl 3712 } = swiper.navigation; 3713 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3714 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3715 const destroyButton = (el, dir) => { 3716 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3717 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 3718 }; 3719 nextEl.forEach(el => destroyButton(el, 'next')); 3720 prevEl.forEach(el => destroyButton(el, 'prev')); 3721 } 3722 on('init', () => { 3723 if (swiper.params.navigation.enabled === false) { 3724 // eslint-disable-next-line 3725 disable(); 3726 } else { 3727 init(); 3728 update(); 3729 } 3730 }); 3731 on('toEdge fromEdge lock unlock', () => { 3732 update(); 3733 }); 3734 on('destroy', () => { 3735 destroy(); 3736 }); 3737 on('enable disable', () => { 3738 let { 3739 nextEl, 3740 prevEl 3741 } = swiper.navigation; 3742 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3743 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3744 if (swiper.enabled) { 3745 update(); 3746 return; 3747 } 3748 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 3749 }); 3750 on('click', (_s, e) => { 3751 let { 3752 nextEl, 3753 prevEl 3754 } = swiper.navigation; 3755 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3756 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3757 const targetEl = e.target; 3758 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 3759 if (swiper.isElement && !targetIsButton) { 3760 const path = e.path || e.composedPath && e.composedPath(); 3761 if (path) { 3762 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 3763 } 3764 } 3765 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 3766 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 3767 let isHidden; 3768 if (nextEl.length) { 3769 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3770 } else if (prevEl.length) { 3771 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3772 } 3773 if (isHidden === true) { 3774 emit('navigationShow'); 3775 } else { 3776 emit('navigationHide'); 3777 } 3778 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 3779 } 3780 }); 3781 const enable = () => { 3782 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3783 init(); 3784 update(); 3785 }; 3786 const disable = () => { 3787 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3788 destroy(); 3789 }; 3790 Object.assign(swiper.navigation, { 3791 enable, 3792 disable, 3793 update, 3794 init, 3795 destroy 3796 }); 3797} 3798 3799 3800 3801 3802/***/ }), 3803
vendor: 19,155 bytes, lines 3804-4281
3804/***/ "./node_modules/swiper/modules/pagination.mjs": 3805/*!****************************************************!*\ 3806 !*** ./node_modules/swiper/modules/pagination.mjs ***! 3807 \****************************************************/ 3808/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3809 3810"use strict"; 3811__webpack_require__.r(__webpack_exports__); 3812/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3813/* harmony export */ "default": function() { return /* binding */ Pagination; } 3814/* harmony export */ }); 3815/* 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"); 3816/* 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"); 3817/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3818 3819 3820 3821 3822function Pagination(_ref) { 3823 let { 3824 swiper, 3825 extendParams, 3826 on, 3827 emit 3828 } = _ref; 3829 const pfx = 'swiper-pagination'; 3830 extendParams({ 3831 pagination: { 3832 el: null, 3833 bulletElement: 'span', 3834 clickable: false, 3835 hideOnClick: false, 3836 renderBullet: null, 3837 renderProgressbar: null, 3838 renderFraction: null, 3839 renderCustom: null, 3840 progressbarOpposite: false, 3841 type: 'bullets', 3842 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 3843 dynamicBullets: false, 3844 dynamicMainBullets: 1, 3845 formatFractionCurrent: number => number, 3846 formatFractionTotal: number => number, 3847 bulletClass: `${pfx}-bullet`, 3848 bulletActiveClass: `${pfx}-bullet-active`, 3849 modifierClass: `${pfx}-`, 3850 currentClass: `${pfx}-current`, 3851 totalClass: `${pfx}-total`, 3852 hiddenClass: `${pfx}-hidden`, 3853 progressbarFillClass: `${pfx}-progressbar-fill`, 3854 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 3855 clickableClass: `${pfx}-clickable`, 3856 lockClass: `${pfx}-lock`, 3857 horizontalClass: `${pfx}-horizontal`, 3858 verticalClass: `${pfx}-vertical`, 3859 paginationDisabledClass: `${pfx}-disabled` 3860 } 3861 }); 3862 swiper.pagination = { 3863 el: null, 3864 bullets: [] 3865 }; 3866 let bulletSize; 3867 let dynamicBulletIndex = 0; 3868 function isPaginationDisabled() { 3869 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 3870 } 3871 function setSideBullets(bulletEl, position) { 3872 const { 3873 bulletActiveClass 3874 } = swiper.params.pagination; 3875 if (!bulletEl) return; 3876 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3877 if (bulletEl) { 3878 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 3879 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3880 if (bulletEl) { 3881 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 3882 } 3883 } 3884 } 3885 function getMoveDirection(prevIndex, nextIndex, length) { 3886 prevIndex = prevIndex % length; 3887 nextIndex = nextIndex % length; 3888 if (nextIndex === prevIndex + 1) { 3889 return 'next'; 3890 } else if (nextIndex === prevIndex - 1) { 3891 return 'previous'; 3892 } 3893 return; 3894 } 3895 function onBulletClick(e) { 3896 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 3897 if (!bulletEl) { 3898 return; 3899 } 3900 e.preventDefault(); 3901 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) * swiper.params.slidesPerGroup; 3902 if (swiper.params.loop) { 3903 if (swiper.realIndex === index) return; 3904 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); 3905 if (moveDirection === 'next') { 3906 swiper.slideNext(); 3907 } else if (moveDirection === 'previous') { 3908 swiper.slidePrev(); 3909 } else { 3910 swiper.slideToLoop(index); 3911 } 3912 } else { 3913 swiper.slideTo(index); 3914 } 3915 } 3916 function update() { 3917 // Render || Update Pagination bullets/items 3918 const rtl = swiper.rtl; 3919 const params = swiper.params.pagination; 3920 if (isPaginationDisabled()) return; 3921 let el = swiper.pagination.el; 3922 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3923 // Current/Total 3924 let current; 3925 let previousIndex; 3926 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 3927 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3928 if (swiper.params.loop) { 3929 previousIndex = swiper.previousRealIndex || 0; 3930 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 3931 } else if (typeof swiper.snapIndex !== 'undefined') { 3932 current = swiper.snapIndex; 3933 previousIndex = swiper.previousSnapIndex; 3934 } else { 3935 previousIndex = swiper.previousIndex || 0; 3936 current = swiper.activeIndex || 0; 3937 } 3938 // Types 3939 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 3940 const bullets = swiper.pagination.bullets; 3941 let firstIndex; 3942 let lastIndex; 3943 let midIndex; 3944 if (params.dynamicBullets) { 3945 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 3946 el.forEach(subEl => { 3947 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 3948 }); 3949 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 3950 dynamicBulletIndex += current - (previousIndex || 0); 3951 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 3952 dynamicBulletIndex = params.dynamicMainBullets - 1; 3953 } else if (dynamicBulletIndex < 0) { 3954 dynamicBulletIndex = 0; 3955 } 3956 } 3957 firstIndex = Math.max(current - dynamicBulletIndex, 0); 3958 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 3959 midIndex = (lastIndex + firstIndex) / 2; 3960 } 3961 bullets.forEach(bulletEl => { 3962 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(); 3963 bulletEl.classList.remove(...classesToRemove); 3964 }); 3965 if (el.length > 1) { 3966 bullets.forEach(bullet => { 3967 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bullet); 3968 if (bulletIndex === current) { 3969 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3970 } else if (swiper.isElement) { 3971 bullet.setAttribute('part', 'bullet'); 3972 } 3973 if (params.dynamicBullets) { 3974 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 3975 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3976 } 3977 if (bulletIndex === firstIndex) { 3978 setSideBullets(bullet, 'prev'); 3979 } 3980 if (bulletIndex === lastIndex) { 3981 setSideBullets(bullet, 'next'); 3982 } 3983 } 3984 }); 3985 } else { 3986 const bullet = bullets[current]; 3987 if (bullet) { 3988 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3989 } 3990 if (swiper.isElement) { 3991 bullets.forEach((bulletEl, bulletIndex) => { 3992 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 3993 }); 3994 } 3995 if (params.dynamicBullets) { 3996 const firstDisplayedBullet = bullets[firstIndex]; 3997 const lastDisplayedBullet = bullets[lastIndex]; 3998 for (let i = firstIndex; i <= lastIndex; i += 1) { 3999 if (bullets[i]) { 4000 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 4001 } 4002 } 4003 setSideBullets(firstDisplayedBullet, 'prev'); 4004 setSideBullets(lastDisplayedBullet, 'next'); 4005 } 4006 } 4007 if (params.dynamicBullets) { 4008 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 4009 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 4010 const offsetProp = rtl ? 'right' : 'left'; 4011 bullets.forEach(bullet => { 4012 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 4013 }); 4014 } 4015 } 4016 el.forEach((subEl, subElIndex) => { 4017 if (params.type === 'fraction') { 4018 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 4019 fractionEl.textContent = params.formatFractionCurrent(current + 1); 4020 }); 4021 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 4022 totalEl.textContent = params.formatFractionTotal(total); 4023 }); 4024 } 4025 if (params.type === 'progressbar') { 4026 let progressbarDirection; 4027 if (params.progressbarOpposite) { 4028 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 4029 } else { 4030 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 4031 } 4032 const scale = (current + 1) / total; 4033 let scaleX = 1; 4034 let scaleY = 1; 4035 if (progressbarDirection === 'horizontal') { 4036 scaleX = scale; 4037 } else { 4038 scaleY = scale; 4039 } 4040 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 4041 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 4042 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 4043 }); 4044 } 4045 if (params.type === 'custom' && params.renderCustom) { 4046 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, params.renderCustom(swiper, current + 1, total)); 4047 if (subElIndex === 0) emit('paginationRender', subEl); 4048 } else { 4049 if (subElIndex === 0) emit('paginationRender', subEl); 4050 emit('paginationUpdate', subEl); 4051 } 4052 if (swiper.params.watchOverflow && swiper.enabled) { 4053 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 4054 } 4055 }); 4056 } 4057 function render() { 4058 // Render Container 4059 const params = swiper.params.pagination; 4060 if (isPaginationDisabled()) return; 4061 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; 4062 let el = swiper.pagination.el; 4063 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4064 let paginationHTML = ''; 4065 if (params.type === 'bullets') { 4066 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 4067 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 4068 numberOfBullets = slidesLength; 4069 } 4070 for (let i = 0; i < numberOfBullets; i += 1) { 4071 if (params.renderBullet) { 4072 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 4073 } else { 4074 // prettier-ignore 4075 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 4076 } 4077 } 4078 } 4079 if (params.type === 'fraction') { 4080 if (params.renderFraction) { 4081 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 4082 } else { 4083 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 4084 } 4085 } 4086 if (params.type === 'progressbar') { 4087 if (params.renderProgressbar) { 4088 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 4089 } else { 4090 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 4091 } 4092 } 4093 swiper.pagination.bullets = []; 4094 el.forEach(subEl => { 4095 if (params.type !== 'custom') { 4096 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, paginationHTML || ''); 4097 } 4098 if (params.type === 'bullets') { 4099 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 4100 } 4101 }); 4102 if (params.type !== 'custom') { 4103 emit('paginationRender', el[0]); 4104 } 4105 } 4106 function init() { 4107 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 4108 el: 'swiper-pagination' 4109 }); 4110 const params = swiper.params.pagination; 4111 if (!params.el) return; 4112 let el; 4113 if (typeof params.el === 'string' && swiper.isElement) { 4114 el = swiper.el.querySelector(params.el); 4115 } 4116 if (!el && typeof params.el === 'string') { 4117 el = [...document.querySelectorAll(params.el)]; 4118 } 4119 if (!el) { 4120 el = params.el; 4121 } 4122 if (!el || el.length === 0) return; 4123 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 4124 el = [...swiper.el.querySelectorAll(params.el)]; 4125 // check if it belongs to another nested Swiper 4126 if (el.length > 1) { 4127 el = el.find(subEl => { 4128 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.b)(subEl, '.swiper')[0] !== swiper.el) return false; 4129 return true; 4130 }); 4131 } 4132 } 4133 if (Array.isArray(el) && el.length === 1) el = el[0]; 4134 Object.assign(swiper.pagination, { 4135 el 4136 }); 4137 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4138 el.forEach(subEl => { 4139 if (params.type === 'bullets' && params.clickable) { 4140 subEl.classList.add(...(params.clickableClass || '').split(' ')); 4141 } 4142 subEl.classList.add(params.modifierClass + params.type); 4143 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4144 if (params.type === 'bullets' && params.dynamicBullets) { 4145 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 4146 dynamicBulletIndex = 0; 4147 if (params.dynamicMainBullets < 1) { 4148 params.dynamicMainBullets = 1; 4149 } 4150 } 4151 if (params.type === 'progressbar' && params.progressbarOpposite) { 4152 subEl.classList.add(params.progressbarOppositeClass); 4153 } 4154 if (params.clickable) { 4155 subEl.addEventListener('click', onBulletClick); 4156 } 4157 if (!swiper.enabled) { 4158 subEl.classList.add(params.lockClass); 4159 } 4160 }); 4161 } 4162 function destroy() { 4163 const params = swiper.params.pagination; 4164 if (isPaginationDisabled()) return; 4165 let el = swiper.pagination.el; 4166 if (el) { 4167 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4168 el.forEach(subEl => { 4169 subEl.classList.remove(params.hiddenClass); 4170 subEl.classList.remove(params.modifierClass + params.type); 4171 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4172 if (params.clickable) { 4173 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 4174 subEl.removeEventListener('click', onBulletClick); 4175 } 4176 }); 4177 } 4178 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 4179 } 4180 on('changeDirection', () => { 4181 if (!swiper.pagination || !swiper.pagination.el) return; 4182 const params = swiper.params.pagination; 4183 let { 4184 el 4185 } = swiper.pagination; 4186 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4187 el.forEach(subEl => { 4188 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4189 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4190 }); 4191 }); 4192 on('init', () => { 4193 if (swiper.params.pagination.enabled === false) { 4194 // eslint-disable-next-line 4195 disable(); 4196 } else { 4197 init(); 4198 render(); 4199 update(); 4200 } 4201 }); 4202 on('activeIndexChange', () => { 4203 if (typeof swiper.snapIndex === 'undefined') { 4204 update(); 4205 } 4206 }); 4207 on('snapIndexChange', () => { 4208 update(); 4209 }); 4210 on('snapGridLengthChange', () => { 4211 render(); 4212 update(); 4213 }); 4214 on('destroy', () => { 4215 destroy(); 4216 }); 4217 on('enable disable', () => { 4218 let { 4219 el 4220 } = swiper.pagination; 4221 if (el) { 4222 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4223 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 4224 } 4225 }); 4226 on('lock unlock', () => { 4227 update(); 4228 }); 4229 on('click', (_s, e) => { 4230 const targetEl = e.target; 4231 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 4232 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 4233 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 4234 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 4235 if (isHidden === true) { 4236 emit('paginationShow'); 4237 } else { 4238 emit('paginationHide'); 4239 } 4240 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 4241 } 4242 }); 4243 const enable = () => { 4244 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 4245 let { 4246 el 4247 } = swiper.pagination; 4248 if (el) { 4249 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4250 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 4251 } 4252 init(); 4253 render(); 4254 update(); 4255 }; 4256 const disable = () => { 4257 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 4258 let { 4259 el 4260 } = swiper.pagination; 4261 if (el) { 4262 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4263 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 4264 } 4265 destroy(); 4266 }; 4267 Object.assign(swiper.pagination, { 4268 enable, 4269 disable, 4270 render, 4271 update, 4272 init, 4273 destroy 4274 }); 4275} 4276 4277 4278 4279 4280/***/ }), 4281
vendor: 4,718 bytes, lines 4282-4421
4282/***/ "./node_modules/swiper/modules/parallax.mjs": 4283/*!**************************************************!*\ 4284 !*** ./node_modules/swiper/modules/parallax.mjs ***! 4285 \**************************************************/ 4286/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4287 4288"use strict"; 4289__webpack_require__.r(__webpack_exports__); 4290/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4291/* harmony export */ "default": function() { return /* binding */ Parallax; } 4292/* harmony export */ }); 4293/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4294 4295 4296function Parallax(_ref) { 4297 let { 4298 swiper, 4299 extendParams, 4300 on 4301 } = _ref; 4302 extendParams({ 4303 parallax: { 4304 enabled: false 4305 } 4306 }); 4307 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 4308 const setTransform = (el, progress) => { 4309 const { 4310 rtl 4311 } = swiper; 4312 const rtlFactor = rtl ? -1 : 1; 4313 const p = el.getAttribute('data-swiper-parallax') || '0'; 4314 let x = el.getAttribute('data-swiper-parallax-x'); 4315 let y = el.getAttribute('data-swiper-parallax-y'); 4316 const scale = el.getAttribute('data-swiper-parallax-scale'); 4317 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 4318 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 4319 if (x || y) { 4320 x = x || '0'; 4321 y = y || '0'; 4322 } else if (swiper.isHorizontal()) { 4323 x = p; 4324 y = '0'; 4325 } else { 4326 y = p; 4327 x = '0'; 4328 } 4329 if (x.indexOf('%') >= 0) { 4330 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 4331 } else { 4332 x = `${x * progress * rtlFactor}px`; 4333 } 4334 if (y.indexOf('%') >= 0) { 4335 y = `${parseInt(y, 10) * progress}%`; 4336 } else { 4337 y = `${y * progress}px`; 4338 } 4339 if (typeof opacity !== 'undefined' && opacity !== null) { 4340 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 4341 el.style.opacity = currentOpacity; 4342 } 4343 let transform = `translate3d(${x}, ${y}, 0px)`; 4344 if (typeof scale !== 'undefined' && scale !== null) { 4345 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 4346 transform += ` scale(${currentScale})`; 4347 } 4348 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 4349 const currentRotate = rotate * progress * -1; 4350 transform += ` rotate(${currentRotate}deg)`; 4351 } 4352 el.style.transform = transform; 4353 }; 4354 const setTranslate = () => { 4355 const { 4356 el, 4357 slides, 4358 progress, 4359 snapGrid, 4360 isElement 4361 } = swiper; 4362 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 4363 if (swiper.isElement) { 4364 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 4365 } 4366 elements.forEach(subEl => { 4367 setTransform(subEl, progress); 4368 }); 4369 slides.forEach((slideEl, slideIndex) => { 4370 let slideProgress = slideEl.progress; 4371 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 4372 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 4373 } 4374 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 4375 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 4376 setTransform(subEl, slideProgress); 4377 }); 4378 }); 4379 }; 4380 const setTransition = function (duration) { 4381 if (duration === void 0) { 4382 duration = swiper.params.speed; 4383 } 4384 const { 4385 el, 4386 hostEl 4387 } = swiper; 4388 const elements = [...el.querySelectorAll(elementsSelector)]; 4389 if (swiper.isElement) { 4390 elements.push(...hostEl.querySelectorAll(elementsSelector)); 4391 } 4392 elements.forEach(parallaxEl => { 4393 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 4394 if (duration === 0) parallaxDuration = 0; 4395 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 4396 }); 4397 }; 4398 on('beforeInit', () => { 4399 if (!swiper.params.parallax.enabled) return; 4400 swiper.params.watchSlidesProgress = true; 4401 swiper.originalParams.watchSlidesProgress = true; 4402 }); 4403 on('init', () => { 4404 if (!swiper.params.parallax.enabled) return; 4405 setTranslate(); 4406 }); 4407 on('setTranslate', () => { 4408 if (!swiper.params.parallax.enabled) return; 4409 setTranslate(); 4410 }); 4411 on('setTransition', (_swiper, duration) => { 4412 if (!swiper.params.parallax.enabled) return; 4413 setTransition(duration); 4414 }); 4415} 4416 4417 4418 4419 4420/***/ }), 4421
vendor: 12,551 bytes, lines 4422-4806
4422/***/ "./node_modules/swiper/modules/scrollbar.mjs": 4423/*!***************************************************!*\ 4424 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 4425 \***************************************************/ 4426/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4427 4428"use strict"; 4429__webpack_require__.r(__webpack_exports__); 4430/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4431/* harmony export */ "default": function() { return /* binding */ Scrollbar; } 4432/* harmony export */ }); 4433/* 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"); 4434/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4435/* 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"); 4436/* 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"); 4437 4438 4439 4440 4441 4442function Scrollbar(_ref) { 4443 let { 4444 swiper, 4445 extendParams, 4446 on, 4447 emit 4448 } = _ref; 4449 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4450 let isTouched = false; 4451 let timeout = null; 4452 let dragTimeout = null; 4453 let dragStartPos; 4454 let dragSize; 4455 let trackSize; 4456 let divider; 4457 extendParams({ 4458 scrollbar: { 4459 el: null, 4460 dragSize: 'auto', 4461 hide: false, 4462 draggable: false, 4463 snapOnRelease: true, 4464 lockClass: 'swiper-scrollbar-lock', 4465 dragClass: 'swiper-scrollbar-drag', 4466 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 4467 horizontalClass: `swiper-scrollbar-horizontal`, 4468 verticalClass: `swiper-scrollbar-vertical` 4469 } 4470 }); 4471 swiper.scrollbar = { 4472 el: null, 4473 dragEl: null 4474 }; 4475 function setTranslate() { 4476 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4477 const { 4478 scrollbar, 4479 rtlTranslate: rtl 4480 } = swiper; 4481 const { 4482 dragEl, 4483 el 4484 } = scrollbar; 4485 const params = swiper.params.scrollbar; 4486 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 4487 let newSize = dragSize; 4488 let newPos = (trackSize - dragSize) * progress; 4489 if (rtl) { 4490 newPos = -newPos; 4491 if (newPos > 0) { 4492 newSize = dragSize - newPos; 4493 newPos = 0; 4494 } else if (-newPos + dragSize > trackSize) { 4495 newSize = trackSize + newPos; 4496 } 4497 } else if (newPos < 0) { 4498 newSize = dragSize + newPos; 4499 newPos = 0; 4500 } else if (newPos + dragSize > trackSize) { 4501 newSize = trackSize - newPos; 4502 } 4503 if (swiper.isHorizontal()) { 4504 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 4505 dragEl.style.width = `${newSize}px`; 4506 } else { 4507 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 4508 dragEl.style.height = `${newSize}px`; 4509 } 4510 if (params.hide) { 4511 clearTimeout(timeout); 4512 el.style.opacity = 1; 4513 timeout = setTimeout(() => { 4514 el.style.opacity = 0; 4515 el.style.transitionDuration = '400ms'; 4516 }, 1000); 4517 } 4518 } 4519 function setTransition(duration) { 4520 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4521 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 4522 } 4523 function updateSize() { 4524 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4525 const { 4526 scrollbar 4527 } = swiper; 4528 const { 4529 dragEl, 4530 el 4531 } = scrollbar; 4532 dragEl.style.width = ''; 4533 dragEl.style.height = ''; 4534 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 4535 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 4536 if (swiper.params.scrollbar.dragSize === 'auto') { 4537 dragSize = trackSize * divider; 4538 } else { 4539 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 4540 } 4541 if (swiper.isHorizontal()) { 4542 dragEl.style.width = `${dragSize}px`; 4543 } else { 4544 dragEl.style.height = `${dragSize}px`; 4545 } 4546 if (divider >= 1) { 4547 el.style.display = 'none'; 4548 } else { 4549 el.style.display = ''; 4550 } 4551 if (swiper.params.scrollbar.hide) { 4552 el.style.opacity = 0; 4553 } 4554 if (swiper.params.watchOverflow && swiper.enabled) { 4555 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 4556 } 4557 } 4558 function getPointerPosition(e) { 4559 return swiper.isHorizontal() ? e.clientX : e.clientY; 4560 } 4561 function setDragPosition(e) { 4562 const { 4563 scrollbar, 4564 rtlTranslate: rtl 4565 } = swiper; 4566 const { 4567 el 4568 } = scrollbar; 4569 let positionRatio; 4570 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 4571 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 4572 if (rtl) { 4573 positionRatio = 1 - positionRatio; 4574 } 4575 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 4576 swiper.updateProgress(position); 4577 swiper.setTranslate(position); 4578 swiper.updateActiveIndex(); 4579 swiper.updateSlidesClasses(); 4580 } 4581 function onDragStart(e) { 4582 const params = swiper.params.scrollbar; 4583 const { 4584 scrollbar, 4585 wrapperEl 4586 } = swiper; 4587 const { 4588 el, 4589 dragEl 4590 } = scrollbar; 4591 isTouched = true; 4592 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 4593 e.preventDefault(); 4594 e.stopPropagation(); 4595 wrapperEl.style.transitionDuration = '100ms'; 4596 dragEl.style.transitionDuration = '100ms'; 4597 setDragPosition(e); 4598 clearTimeout(dragTimeout); 4599 el.style.transitionDuration = '0ms'; 4600 if (params.hide) { 4601 el.style.opacity = 1; 4602 } 4603 if (swiper.params.cssMode) { 4604 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 4605 } 4606 emit('scrollbarDragStart', e); 4607 } 4608 function onDragMove(e) { 4609 const { 4610 scrollbar, 4611 wrapperEl 4612 } = swiper; 4613 const { 4614 el, 4615 dragEl 4616 } = scrollbar; 4617 if (!isTouched) return; 4618 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 4619 setDragPosition(e); 4620 wrapperEl.style.transitionDuration = '0ms'; 4621 el.style.transitionDuration = '0ms'; 4622 dragEl.style.transitionDuration = '0ms'; 4623 emit('scrollbarDragMove', e); 4624 } 4625 function onDragEnd(e) { 4626 const params = swiper.params.scrollbar; 4627 const { 4628 scrollbar, 4629 wrapperEl 4630 } = swiper; 4631 const { 4632 el 4633 } = scrollbar; 4634 if (!isTouched) return; 4635 isTouched = false; 4636 if (swiper.params.cssMode) { 4637 swiper.wrapperEl.style['scroll-snap-type'] = ''; 4638 wrapperEl.style.transitionDuration = ''; 4639 } 4640 if (params.hide) { 4641 clearTimeout(dragTimeout); 4642 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 4643 el.style.opacity = 0; 4644 el.style.transitionDuration = '400ms'; 4645 }, 1000); 4646 } 4647 emit('scrollbarDragEnd', e); 4648 if (params.snapOnRelease) { 4649 swiper.slideToClosest(); 4650 } 4651 } 4652 function events(method) { 4653 const { 4654 scrollbar, 4655 params 4656 } = swiper; 4657 const el = scrollbar.el; 4658 if (!el) return; 4659 const target = el; 4660 const activeListener = params.passiveListeners ? { 4661 passive: false, 4662 capture: false 4663 } : false; 4664 const passiveListener = params.passiveListeners ? { 4665 passive: true, 4666 capture: false 4667 } : false; 4668 if (!target) return; 4669 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 4670 target[eventMethod]('pointerdown', onDragStart, activeListener); 4671 document[eventMethod]('pointermove', onDragMove, activeListener); 4672 document[eventMethod]('pointerup', onDragEnd, passiveListener); 4673 } 4674 function enableDraggable() { 4675 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4676 events('on'); 4677 } 4678 function disableDraggable() { 4679 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4680 events('off'); 4681 } 4682 function init() { 4683 const { 4684 scrollbar, 4685 el: swiperEl 4686 } = swiper; 4687 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 4688 el: 'swiper-scrollbar' 4689 }); 4690 const params = swiper.params.scrollbar; 4691 if (!params.el) return; 4692 let el; 4693 if (typeof params.el === 'string' && swiper.isElement) { 4694 el = swiper.el.querySelector(params.el); 4695 } 4696 if (!el && typeof params.el === 'string') { 4697 el = document.querySelectorAll(params.el); 4698 if (!el.length) return; 4699 } else if (!el) { 4700 el = params.el; 4701 } 4702 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 4703 el = swiperEl.querySelector(params.el); 4704 } 4705 if (el.length > 0) el = el[0]; 4706 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4707 let dragEl; 4708 if (el) { 4709 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 4710 if (!dragEl) { 4711 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 4712 el.append(dragEl); 4713 } 4714 } 4715 Object.assign(scrollbar, { 4716 el, 4717 dragEl 4718 }); 4719 if (params.draggable) { 4720 enableDraggable(); 4721 } 4722 if (el) { 4723 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass)); 4724 } 4725 } 4726 function destroy() { 4727 const params = swiper.params.scrollbar; 4728 const el = swiper.scrollbar.el; 4729 if (el) { 4730 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 4731 } 4732 disableDraggable(); 4733 } 4734 on('changeDirection', () => { 4735 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 4736 const params = swiper.params.scrollbar; 4737 let { 4738 el 4739 } = swiper.scrollbar; 4740 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 4741 el.forEach(subEl => { 4742 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4743 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4744 }); 4745 }); 4746 on('init', () => { 4747 if (swiper.params.scrollbar.enabled === false) { 4748 // eslint-disable-next-line 4749 disable(); 4750 } else { 4751 init(); 4752 updateSize(); 4753 setTranslate(); 4754 } 4755 }); 4756 on('update resize observerUpdate lock unlock changeDirection', () => { 4757 updateSize(); 4758 }); 4759 on('setTranslate', () => { 4760 setTranslate(); 4761 }); 4762 on('setTransition', (_s, duration) => { 4763 setTransition(duration); 4764 }); 4765 on('enable disable', () => { 4766 const { 4767 el 4768 } = swiper.scrollbar; 4769 if (el) { 4770 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass)); 4771 } 4772 }); 4773 on('destroy', () => { 4774 destroy(); 4775 }); 4776 const enable = () => { 4777 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4778 if (swiper.scrollbar.el) { 4779 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4780 } 4781 init(); 4782 updateSize(); 4783 setTranslate(); 4784 }; 4785 const disable = () => { 4786 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4787 if (swiper.scrollbar.el) { 4788 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4789 } 4790 destroy(); 4791 }; 4792 Object.assign(swiper.scrollbar, { 4793 enable, 4794 disable, 4795 updateSize, 4796 setTranslate, 4797 init, 4798 destroy 4799 }); 4800} 4801 4802 4803 4804 4805/***/ }), 4806
vendor: 8,213 bytes, lines 4807-5020
4807/***/ "./node_modules/swiper/modules/thumbs.mjs": 4808/*!************************************************!*\ 4809 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 4810 \************************************************/ 4811/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4812 4813"use strict"; 4814__webpack_require__.r(__webpack_exports__); 4815/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4816/* harmony export */ "default": function() { return /* binding */ Thumb; } 4817/* harmony export */ }); 4818/* 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"); 4819/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4820 4821 4822 4823function Thumb(_ref) { 4824 let { 4825 swiper, 4826 extendParams, 4827 on 4828 } = _ref; 4829 extendParams({ 4830 thumbs: { 4831 swiper: null, 4832 multipleActiveThumbs: true, 4833 autoScrollOffset: 0, 4834 slideThumbActiveClass: 'swiper-slide-thumb-active', 4835 thumbsContainerClass: 'swiper-thumbs' 4836 } 4837 }); 4838 let initialized = false; 4839 let swiperCreated = false; 4840 swiper.thumbs = { 4841 swiper: null 4842 }; 4843 function onThumbClick() { 4844 const thumbsSwiper = swiper.thumbs.swiper; 4845 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4846 const clickedIndex = thumbsSwiper.clickedIndex; 4847 const clickedSlide = thumbsSwiper.clickedSlide; 4848 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 4849 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 4850 let slideToIndex; 4851 if (thumbsSwiper.params.loop) { 4852 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 4853 } else { 4854 slideToIndex = clickedIndex; 4855 } 4856 if (swiper.params.loop) { 4857 swiper.slideToLoop(slideToIndex); 4858 } else { 4859 swiper.slideTo(slideToIndex); 4860 } 4861 } 4862 function init() { 4863 const { 4864 thumbs: thumbsParams 4865 } = swiper.params; 4866 if (initialized) return false; 4867 initialized = true; 4868 const SwiperClass = swiper.constructor; 4869 if (thumbsParams.swiper instanceof SwiperClass) { 4870 if (thumbsParams.swiper.destroyed) { 4871 initialized = false; 4872 return false; 4873 } 4874 swiper.thumbs.swiper = thumbsParams.swiper; 4875 Object.assign(swiper.thumbs.swiper.originalParams, { 4876 watchSlidesProgress: true, 4877 slideToClickedSlide: false 4878 }); 4879 Object.assign(swiper.thumbs.swiper.params, { 4880 watchSlidesProgress: true, 4881 slideToClickedSlide: false 4882 }); 4883 swiper.thumbs.swiper.update(); 4884 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(thumbsParams.swiper)) { 4885 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 4886 Object.assign(thumbsSwiperParams, { 4887 watchSlidesProgress: true, 4888 slideToClickedSlide: false 4889 }); 4890 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 4891 swiperCreated = true; 4892 } 4893 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 4894 swiper.thumbs.swiper.on('tap', onThumbClick); 4895 return true; 4896 } 4897 function update(initial) { 4898 const thumbsSwiper = swiper.thumbs.swiper; 4899 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4900 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 4901 4902 // Activate thumbs 4903 let thumbsToActivate = 1; 4904 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 4905 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 4906 thumbsToActivate = swiper.params.slidesPerView; 4907 } 4908 if (!swiper.params.thumbs.multipleActiveThumbs) { 4909 thumbsToActivate = 1; 4910 } 4911 thumbsToActivate = Math.floor(thumbsToActivate); 4912 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 4913 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 4914 for (let i = 0; i < thumbsToActivate; i += 1) { 4915 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 4916 slideEl.classList.add(thumbActiveClass); 4917 }); 4918 } 4919 } else { 4920 for (let i = 0; i < thumbsToActivate; i += 1) { 4921 if (thumbsSwiper.slides[swiper.realIndex + i]) { 4922 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 4923 } 4924 } 4925 } 4926 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 4927 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 4928 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 4929 const currentThumbsIndex = thumbsSwiper.activeIndex; 4930 let newThumbsIndex; 4931 let direction; 4932 if (thumbsSwiper.params.loop) { 4933 const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); 4934 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 4935 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 4936 } else { 4937 newThumbsIndex = swiper.realIndex; 4938 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 4939 } 4940 if (useOffset) { 4941 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 4942 } 4943 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 4944 if (thumbsSwiper.params.centeredSlides) { 4945 if (newThumbsIndex > currentThumbsIndex) { 4946 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 4947 } else { 4948 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 4949 } 4950 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 4951 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 4952 } 4953 } 4954 } 4955 on('beforeInit', () => { 4956 const { 4957 thumbs 4958 } = swiper.params; 4959 if (!thumbs || !thumbs.swiper) return; 4960 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 4961 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4962 const getThumbsElementAndInit = () => { 4963 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 4964 if (thumbsElement && thumbsElement.swiper) { 4965 thumbs.swiper = thumbsElement.swiper; 4966 init(); 4967 update(true); 4968 } else if (thumbsElement) { 4969 const eventName = `${swiper.params.eventsPrefix}init`; 4970 const onThumbsSwiper = e => { 4971 thumbs.swiper = e.detail[0]; 4972 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 4973 init(); 4974 update(true); 4975 thumbs.swiper.update(); 4976 swiper.update(); 4977 }; 4978 thumbsElement.addEventListener(eventName, onThumbsSwiper); 4979 } 4980 return thumbsElement; 4981 }; 4982 const watchForThumbsToAppear = () => { 4983 if (swiper.destroyed) return; 4984 const thumbsElement = getThumbsElementAndInit(); 4985 if (!thumbsElement) { 4986 requestAnimationFrame(watchForThumbsToAppear); 4987 } 4988 }; 4989 requestAnimationFrame(watchForThumbsToAppear); 4990 } else { 4991 init(); 4992 update(true); 4993 } 4994 }); 4995 on('slideChange update resize observerUpdate', () => { 4996 update(); 4997 }); 4998 on('setTransition', (_s, duration) => { 4999 const thumbsSwiper = swiper.thumbs.swiper; 5000 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 5001 thumbsSwiper.setTransition(duration); 5002 }); 5003 on('beforeDestroy', () => { 5004 const thumbsSwiper = swiper.thumbs.swiper; 5005 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 5006 if (swiperCreated) { 5007 thumbsSwiper.destroy(); 5008 } 5009 }); 5010 Object.assign(swiper.thumbs, { 5011 init, 5012 update 5013 }); 5014} 5015 5016 5017 5018 5019/***/ }), 5020
vendor: 12,588 bytes, lines 5021-5386
5021/***/ "./node_modules/swiper/modules/virtual.mjs": 5022/*!*************************************************!*\ 5023 !*** ./node_modules/swiper/modules/virtual.mjs ***! 5024 \*************************************************/ 5025/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5026 5027"use strict"; 5028__webpack_require__.r(__webpack_exports__); 5029/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5030/* harmony export */ "default": function() { return /* binding */ Virtual; } 5031/* harmony export */ }); 5032/* 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"); 5033/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5034 5035 5036 5037function Virtual(_ref) { 5038 let { 5039 swiper, 5040 extendParams, 5041 on, 5042 emit 5043 } = _ref; 5044 extendParams({ 5045 virtual: { 5046 enabled: false, 5047 slides: [], 5048 cache: true, 5049 renderSlide: null, 5050 renderExternal: null, 5051 renderExternalUpdate: true, 5052 addSlidesBefore: 0, 5053 addSlidesAfter: 0 5054 } 5055 }); 5056 let cssModeTimeout; 5057 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 5058 swiper.virtual = { 5059 cache: {}, 5060 from: undefined, 5061 to: undefined, 5062 slides: [], 5063 offset: 0, 5064 slidesGrid: [] 5065 }; 5066 const tempDOM = document.createElement('div'); 5067 function renderSlide(slide, index) { 5068 const params = swiper.params.virtual; 5069 if (params.cache && swiper.virtual.cache[index]) { 5070 return swiper.virtual.cache[index]; 5071 } 5072 // eslint-disable-next-line 5073 let slideEl; 5074 if (params.renderSlide) { 5075 slideEl = params.renderSlide.call(swiper, slide, index); 5076 if (typeof slideEl === 'string') { 5077 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(tempDOM, slideEl); 5078 slideEl = tempDOM.children[0]; 5079 } 5080 } else if (swiper.isElement) { 5081 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 5082 } else { 5083 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 5084 } 5085 slideEl.setAttribute('data-swiper-slide-index', index); 5086 if (!params.renderSlide) { 5087 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(slideEl, slide); 5088 } 5089 if (params.cache) { 5090 swiper.virtual.cache[index] = slideEl; 5091 } 5092 return slideEl; 5093 } 5094 function update(force, beforeInit, forceActiveIndex) { 5095 const { 5096 slidesPerView, 5097 slidesPerGroup, 5098 centeredSlides, 5099 loop: isLoop, 5100 initialSlide 5101 } = swiper.params; 5102 if (beforeInit && !isLoop && initialSlide > 0) { 5103 return; 5104 } 5105 const { 5106 addSlidesBefore, 5107 addSlidesAfter 5108 } = swiper.params.virtual; 5109 const { 5110 from: previousFrom, 5111 to: previousTo, 5112 slides, 5113 slidesGrid: previousSlidesGrid, 5114 offset: previousOffset 5115 } = swiper.virtual; 5116 if (!swiper.params.cssMode) { 5117 swiper.updateActiveIndex(); 5118 } 5119 const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; 5120 let offsetProp; 5121 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 5122 let slidesAfter; 5123 let slidesBefore; 5124 if (centeredSlides) { 5125 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 5126 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 5127 } else { 5128 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 5129 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 5130 } 5131 let from = activeIndex - slidesBefore; 5132 let to = activeIndex + slidesAfter; 5133 if (!isLoop) { 5134 from = Math.max(from, 0); 5135 to = Math.min(to, slides.length - 1); 5136 } 5137 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 5138 if (isLoop && activeIndex >= slidesBefore) { 5139 from -= slidesBefore; 5140 if (!centeredSlides) offset += swiper.slidesGrid[0]; 5141 } else if (isLoop && activeIndex < slidesBefore) { 5142 from = -slidesBefore; 5143 if (centeredSlides) offset += swiper.slidesGrid[0]; 5144 } 5145 Object.assign(swiper.virtual, { 5146 from, 5147 to, 5148 offset, 5149 slidesGrid: swiper.slidesGrid, 5150 slidesBefore, 5151 slidesAfter 5152 }); 5153 function onRendered() { 5154 swiper.updateSlides(); 5155 swiper.updateProgress(); 5156 swiper.updateSlidesClasses(); 5157 emit('virtualUpdate'); 5158 } 5159 if (previousFrom === from && previousTo === to && !force) { 5160 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 5161 swiper.slides.forEach(slideEl => { 5162 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 5163 }); 5164 } 5165 swiper.updateProgress(); 5166 emit('virtualUpdate'); 5167 return; 5168 } 5169 if (swiper.params.virtual.renderExternal) { 5170 swiper.params.virtual.renderExternal.call(swiper, { 5171 offset, 5172 from, 5173 to, 5174 slides: function getSlides() { 5175 const slidesToRender = []; 5176 for (let i = from; i <= to; i += 1) { 5177 slidesToRender.push(slides[i]); 5178 } 5179 return slidesToRender; 5180 }() 5181 }); 5182 if (swiper.params.virtual.renderExternalUpdate) { 5183 onRendered(); 5184 } else { 5185 emit('virtualUpdate'); 5186 } 5187 return; 5188 } 5189 const prependIndexes = []; 5190 const appendIndexes = []; 5191 const getSlideIndex = index => { 5192 let slideIndex = index; 5193 if (index < 0) { 5194 slideIndex = slides.length + index; 5195 } else if (slideIndex >= slides.length) { 5196 // eslint-disable-next-line 5197 slideIndex = slideIndex - slides.length; 5198 } 5199 return slideIndex; 5200 }; 5201 if (force) { 5202 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 5203 slideEl.remove(); 5204 }); 5205 } else { 5206 for (let i = previousFrom; i <= previousTo; i += 1) { 5207 if (i < from || i > to) { 5208 const slideIndex = getSlideIndex(i); 5209 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 5210 slideEl.remove(); 5211 }); 5212 } 5213 } 5214 } 5215 const loopFrom = isLoop ? -slides.length : 0; 5216 const loopTo = isLoop ? slides.length * 2 : slides.length; 5217 for (let i = loopFrom; i < loopTo; i += 1) { 5218 if (i >= from && i <= to) { 5219 const slideIndex = getSlideIndex(i); 5220 if (typeof previousTo === 'undefined' || force) { 5221 appendIndexes.push(slideIndex); 5222 } else { 5223 if (i > previousTo) appendIndexes.push(slideIndex); 5224 if (i < previousFrom) prependIndexes.push(slideIndex); 5225 } 5226 } 5227 } 5228 appendIndexes.forEach(index => { 5229 swiper.slidesEl.append(renderSlide(slides[index], index)); 5230 }); 5231 if (isLoop) { 5232 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 5233 const index = prependIndexes[i]; 5234 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 5235 } 5236 } else { 5237 prependIndexes.sort((a, b) => b - a); 5238 prependIndexes.forEach(index => { 5239 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 5240 }); 5241 } 5242 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 5243 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 5244 }); 5245 onRendered(); 5246 } 5247 function appendSlide(slides) { 5248 if (typeof slides === 'object' && 'length' in slides) { 5249 for (let i = 0; i < slides.length; i += 1) { 5250 if (slides[i]) swiper.virtual.slides.push(slides[i]); 5251 } 5252 } else { 5253 swiper.virtual.slides.push(slides); 5254 } 5255 update(true); 5256 } 5257 function prependSlide(slides) { 5258 const activeIndex = swiper.activeIndex; 5259 let newActiveIndex = activeIndex + 1; 5260 let numberOfNewSlides = 1; 5261 if (Array.isArray(slides)) { 5262 for (let i = 0; i < slides.length; i += 1) { 5263 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 5264 } 5265 newActiveIndex = activeIndex + slides.length; 5266 numberOfNewSlides = slides.length; 5267 } else { 5268 swiper.virtual.slides.unshift(slides); 5269 } 5270 if (swiper.params.virtual.cache) { 5271 const cache = swiper.virtual.cache; 5272 const newCache = {}; 5273 Object.keys(cache).forEach(cachedIndex => { 5274 const cachedEl = cache[cachedIndex]; 5275 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 5276 if (cachedElIndex) { 5277 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 5278 } 5279 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 5280 }); 5281 swiper.virtual.cache = newCache; 5282 } 5283 update(true); 5284 swiper.slideTo(newActiveIndex, 0); 5285 } 5286 function removeSlide(slidesIndexes) { 5287 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 5288 let activeIndex = swiper.activeIndex; 5289 if (Array.isArray(slidesIndexes)) { 5290 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 5291 if (swiper.params.virtual.cache) { 5292 delete swiper.virtual.cache[slidesIndexes[i]]; 5293 // shift cache indexes 5294 Object.keys(swiper.virtual.cache).forEach(key => { 5295 if (key > slidesIndexes) { 5296 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5297 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5298 delete swiper.virtual.cache[key]; 5299 } 5300 }); 5301 } 5302 swiper.virtual.slides.splice(slidesIndexes[i], 1); 5303 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 5304 activeIndex = Math.max(activeIndex, 0); 5305 } 5306 } else { 5307 if (swiper.params.virtual.cache) { 5308 delete swiper.virtual.cache[slidesIndexes]; 5309 // shift cache indexes 5310 Object.keys(swiper.virtual.cache).forEach(key => { 5311 if (key > slidesIndexes) { 5312 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5313 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5314 delete swiper.virtual.cache[key]; 5315 } 5316 }); 5317 } 5318 swiper.virtual.slides.splice(slidesIndexes, 1); 5319 if (slidesIndexes < activeIndex) activeIndex -= 1; 5320 activeIndex = Math.max(activeIndex, 0); 5321 } 5322 update(true); 5323 swiper.slideTo(activeIndex, 0); 5324 } 5325 function removeAllSlides() { 5326 swiper.virtual.slides = []; 5327 if (swiper.params.virtual.cache) { 5328 swiper.virtual.cache = {}; 5329 } 5330 update(true); 5331 swiper.slideTo(0, 0); 5332 } 5333 on('beforeInit', () => { 5334 if (!swiper.params.virtual.enabled) return; 5335 let domSlidesAssigned; 5336 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 5337 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 5338 if (slides && slides.length) { 5339 swiper.virtual.slides = [...slides]; 5340 domSlidesAssigned = true; 5341 slides.forEach((slideEl, slideIndex) => { 5342 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 5343 swiper.virtual.cache[slideIndex] = slideEl; 5344 slideEl.remove(); 5345 }); 5346 } 5347 } 5348 if (!domSlidesAssigned) { 5349 swiper.virtual.slides = swiper.params.virtual.slides; 5350 } 5351 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 5352 swiper.params.watchSlidesProgress = true; 5353 swiper.originalParams.watchSlidesProgress = true; 5354 update(false, true); 5355 }); 5356 on('setTranslate', () => { 5357 if (!swiper.params.virtual.enabled) return; 5358 if (swiper.params.cssMode && !swiper._immediateVirtual) { 5359 clearTimeout(cssModeTimeout); 5360 cssModeTimeout = setTimeout(() => { 5361 update(); 5362 }, 100); 5363 } else { 5364 update(); 5365 } 5366 }); 5367 on('init update resize', () => { 5368 if (!swiper.params.virtual.enabled) return; 5369 if (swiper.params.cssMode) { 5370 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 5371 } 5372 }); 5373 Object.assign(swiper.virtual, { 5374 appendSlide, 5375 prependSlide, 5376 removeSlide, 5377 removeAllSlides, 5378 update 5379 }); 5380} 5381 5382 5383 5384 5385/***/ }), 5386
vendor: 26,521 bytes, lines 5387-6104
5387/***/ "./node_modules/swiper/modules/zoom.mjs": 5388/*!**********************************************!*\ 5389 !*** ./node_modules/swiper/modules/zoom.mjs ***! 5390 \**********************************************/ 5391/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5392 5393"use strict"; 5394__webpack_require__.r(__webpack_exports__); 5395/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5396/* harmony export */ "default": function() { return /* binding */ Zoom; } 5397/* harmony export */ }); 5398/* 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"); 5399/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5400 5401 5402 5403function Zoom(_ref) { 5404 let { 5405 swiper, 5406 extendParams, 5407 on, 5408 emit 5409 } = _ref; 5410 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5411 extendParams({ 5412 zoom: { 5413 enabled: false, 5414 limitToOriginalSize: false, 5415 maxRatio: 3, 5416 minRatio: 1, 5417 panOnMouseMove: false, 5418 toggle: true, 5419 containerClass: 'swiper-zoom-container', 5420 zoomedSlideClass: 'swiper-slide-zoomed' 5421 } 5422 }); 5423 swiper.zoom = { 5424 enabled: false 5425 }; 5426 let currentScale = 1; 5427 let isScaling = false; 5428 let isPanningWithMouse = false; 5429 let mousePanStart = { 5430 x: 0, 5431 y: 0 5432 }; 5433 const mousePanSensitivity = -3; // Negative to invert pan direction 5434 let fakeGestureTouched; 5435 let fakeGestureMoved; 5436 const evCache = []; 5437 const gesture = { 5438 originX: 0, 5439 originY: 0, 5440 slideEl: undefined, 5441 slideWidth: undefined, 5442 slideHeight: undefined, 5443 imageEl: undefined, 5444 imageWrapEl: undefined, 5445 maxRatio: 3 5446 }; 5447 const image = { 5448 isTouched: undefined, 5449 isMoved: undefined, 5450 currentX: undefined, 5451 currentY: undefined, 5452 minX: undefined, 5453 minY: undefined, 5454 maxX: undefined, 5455 maxY: undefined, 5456 width: undefined, 5457 height: undefined, 5458 startX: undefined, 5459 startY: undefined, 5460 touchesStart: {}, 5461 touchesCurrent: {} 5462 }; 5463 const velocity = { 5464 x: undefined, 5465 y: undefined, 5466 prevPositionX: undefined, 5467 prevPositionY: undefined, 5468 prevTime: undefined 5469 }; 5470 let scale = 1; 5471 Object.defineProperty(swiper.zoom, 'scale', { 5472 get() { 5473 return scale; 5474 }, 5475 set(value) { 5476 if (scale !== value) { 5477 const imageEl = gesture.imageEl; 5478 const slideEl = gesture.slideEl; 5479 emit('zoomChange', value, imageEl, slideEl); 5480 } 5481 scale = value; 5482 } 5483 }); 5484 function getDistanceBetweenTouches() { 5485 if (evCache.length < 2) return 1; 5486 const x1 = evCache[0].pageX; 5487 const y1 = evCache[0].pageY; 5488 const x2 = evCache[1].pageX; 5489 const y2 = evCache[1].pageY; 5490 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 5491 return distance; 5492 } 5493 function getMaxRatio() { 5494 const params = swiper.params.zoom; 5495 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 5496 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 5497 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 5498 return Math.min(imageMaxRatio, maxRatio); 5499 } 5500 return maxRatio; 5501 } 5502 function getScaleOrigin() { 5503 if (evCache.length < 2) return { 5504 x: null, 5505 y: null 5506 }; 5507 const box = gesture.imageEl.getBoundingClientRect(); 5508 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]; 5509 } 5510 function getSlideSelector() { 5511 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 5512 } 5513 function eventWithinSlide(e) { 5514 const slideSelector = getSlideSelector(); 5515 if (e.target.matches(slideSelector)) return true; 5516 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 5517 return false; 5518 } 5519 function eventWithinZoomContainer(e) { 5520 const selector = `.${swiper.params.zoom.containerClass}`; 5521 if (e.target.matches(selector)) return true; 5522 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 5523 return false; 5524 } 5525 5526 // Events 5527 function onGestureStart(e) { 5528 if (e.pointerType === 'mouse') { 5529 evCache.splice(0, evCache.length); 5530 } 5531 if (!eventWithinSlide(e)) return; 5532 const params = swiper.params.zoom; 5533 fakeGestureTouched = false; 5534 fakeGestureMoved = false; 5535 evCache.push(e); 5536 if (evCache.length < 2) { 5537 return; 5538 } 5539 fakeGestureTouched = true; 5540 gesture.scaleStart = getDistanceBetweenTouches(); 5541 if (!gesture.slideEl) { 5542 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5543 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 5544 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5545 if (imageEl) { 5546 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5547 } 5548 gesture.imageEl = imageEl; 5549 if (imageEl) { 5550 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5551 } else { 5552 gesture.imageWrapEl = undefined; 5553 } 5554 if (!gesture.imageWrapEl) { 5555 gesture.imageEl = undefined; 5556 return; 5557 } 5558 gesture.maxRatio = getMaxRatio(); 5559 } 5560 if (gesture.imageEl) { 5561 const [originX, originY] = getScaleOrigin(); 5562 gesture.originX = originX; 5563 gesture.originY = originY; 5564 gesture.imageEl.style.transitionDuration = '0ms'; 5565 } 5566 isScaling = true; 5567 } 5568 function onGestureChange(e) { 5569 if (!eventWithinSlide(e)) return; 5570 const params = swiper.params.zoom; 5571 const zoom = swiper.zoom; 5572 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5573 if (pointerIndex >= 0) evCache[pointerIndex] = e; 5574 if (evCache.length < 2) { 5575 return; 5576 } 5577 fakeGestureMoved = true; 5578 gesture.scaleMove = getDistanceBetweenTouches(); 5579 if (!gesture.imageEl) { 5580 return; 5581 } 5582 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 5583 if (zoom.scale > gesture.maxRatio) { 5584 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 5585 } 5586 if (zoom.scale < params.minRatio) { 5587 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 5588 } 5589 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5590 } 5591 function onGestureEnd(e) { 5592 if (!eventWithinSlide(e)) return; 5593 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 5594 const params = swiper.params.zoom; 5595 const zoom = swiper.zoom; 5596 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5597 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 5598 if (!fakeGestureTouched || !fakeGestureMoved) { 5599 return; 5600 } 5601 fakeGestureTouched = false; 5602 fakeGestureMoved = false; 5603 if (!gesture.imageEl) return; 5604 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 5605 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 5606 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5607 currentScale = zoom.scale; 5608 isScaling = false; 5609 if (zoom.scale > 1 && gesture.slideEl) { 5610 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5611 } else if (zoom.scale <= 1 && gesture.slideEl) { 5612 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5613 } 5614 if (zoom.scale === 1) { 5615 gesture.originX = 0; 5616 gesture.originY = 0; 5617 gesture.slideEl = undefined; 5618 } 5619 } 5620 let allowTouchMoveTimeout; 5621 function allowTouchMove() { 5622 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 5623 } 5624 function preventTouchMove() { 5625 clearTimeout(allowTouchMoveTimeout); 5626 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 5627 allowTouchMoveTimeout = setTimeout(() => { 5628 if (swiper.destroyed) return; 5629 allowTouchMove(); 5630 }); 5631 } 5632 function onTouchStart(e) { 5633 const device = swiper.device; 5634 if (!gesture.imageEl) return; 5635 if (image.isTouched) return; 5636 if (device.android && e.cancelable) e.preventDefault(); 5637 image.isTouched = true; 5638 const event = evCache.length > 0 ? evCache[0] : e; 5639 image.touchesStart.x = event.pageX; 5640 image.touchesStart.y = event.pageY; 5641 } 5642 function onTouchMove(e) { 5643 const isMouseEvent = e.pointerType === 'mouse'; 5644 const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; 5645 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 5646 return; 5647 } 5648 const zoom = swiper.zoom; 5649 if (!gesture.imageEl) { 5650 return; 5651 } 5652 if (!image.isTouched || !gesture.slideEl) { 5653 if (isMousePan) onMouseMove(e); 5654 return; 5655 } 5656 if (isMousePan) { 5657 onMouseMove(e); 5658 return; 5659 } 5660 if (!image.isMoved) { 5661 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5662 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5663 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'x') || 0; 5664 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'y') || 0; 5665 gesture.slideWidth = gesture.slideEl.offsetWidth; 5666 gesture.slideHeight = gesture.slideEl.offsetHeight; 5667 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5668 } 5669 // Define if we need image drag 5670 const scaledWidth = image.width * zoom.scale; 5671 const scaledHeight = image.height * zoom.scale; 5672 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5673 image.maxX = -image.minX; 5674 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5675 image.maxY = -image.minY; 5676 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 5677 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 5678 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 5679 if (touchesDiff > 5) { 5680 swiper.allowClick = false; 5681 } 5682 if (!image.isMoved && !isScaling) { 5683 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)) { 5684 image.isTouched = false; 5685 allowTouchMove(); 5686 return; 5687 } 5688 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)) { 5689 image.isTouched = false; 5690 allowTouchMove(); 5691 return; 5692 } 5693 } 5694 if (e.cancelable) { 5695 e.preventDefault(); 5696 } 5697 e.stopPropagation(); 5698 preventTouchMove(); 5699 image.isMoved = true; 5700 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 5701 const { 5702 originX, 5703 originY 5704 } = gesture; 5705 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 5706 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 5707 if (image.currentX < image.minX) { 5708 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 5709 } 5710 if (image.currentX > image.maxX) { 5711 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 5712 } 5713 if (image.currentY < image.minY) { 5714 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 5715 } 5716 if (image.currentY > image.maxY) { 5717 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 5718 } 5719 5720 // Velocity 5721 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 5722 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 5723 if (!velocity.prevTime) velocity.prevTime = Date.now(); 5724 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 5725 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 5726 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 5727 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 5728 velocity.prevPositionX = image.touchesCurrent.x; 5729 velocity.prevPositionY = image.touchesCurrent.y; 5730 velocity.prevTime = Date.now(); 5731 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5732 } 5733 function onTouchEnd() { 5734 const zoom = swiper.zoom; 5735 evCache.length = 0; 5736 if (!gesture.imageEl) return; 5737 if (!image.isTouched || !image.isMoved) { 5738 image.isTouched = false; 5739 image.isMoved = false; 5740 return; 5741 } 5742 image.isTouched = false; 5743 image.isMoved = false; 5744 let momentumDurationX = 300; 5745 let momentumDurationY = 300; 5746 const momentumDistanceX = velocity.x * momentumDurationX; 5747 const newPositionX = image.currentX + momentumDistanceX; 5748 const momentumDistanceY = velocity.y * momentumDurationY; 5749 const newPositionY = image.currentY + momentumDistanceY; 5750 5751 // Fix duration 5752 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 5753 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 5754 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 5755 image.currentX = newPositionX; 5756 image.currentY = newPositionY; 5757 // Define if we need image drag 5758 const scaledWidth = image.width * zoom.scale; 5759 const scaledHeight = image.height * zoom.scale; 5760 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5761 image.maxX = -image.minX; 5762 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5763 image.maxY = -image.minY; 5764 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 5765 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 5766 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 5767 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5768 } 5769 function onTransitionEnd() { 5770 const zoom = swiper.zoom; 5771 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 5772 if (gesture.imageEl) { 5773 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5774 } 5775 if (gesture.imageWrapEl) { 5776 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5777 } 5778 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 5779 zoom.scale = 1; 5780 currentScale = 1; 5781 gesture.slideEl = undefined; 5782 gesture.imageEl = undefined; 5783 gesture.imageWrapEl = undefined; 5784 gesture.originX = 0; 5785 gesture.originY = 0; 5786 } 5787 } 5788 function onMouseMove(e) { 5789 // Only pan if zoomed in and mouse panning is enabled 5790 if (currentScale <= 1 || !gesture.imageWrapEl) return; 5791 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; 5792 const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; 5793 const matrix = new window.DOMMatrix(currentTransform); 5794 if (!isPanningWithMouse) { 5795 isPanningWithMouse = true; 5796 mousePanStart.x = e.clientX; 5797 mousePanStart.y = e.clientY; 5798 image.startX = matrix.e; 5799 image.startY = matrix.f; 5800 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5801 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5802 gesture.slideWidth = gesture.slideEl.offsetWidth; 5803 gesture.slideHeight = gesture.slideEl.offsetHeight; 5804 return; 5805 } 5806 const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; 5807 const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; 5808 const scaledWidth = image.width * currentScale; 5809 const scaledHeight = image.height * currentScale; 5810 const slideWidth = gesture.slideWidth; 5811 const slideHeight = gesture.slideHeight; 5812 const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5813 const maxX = -minX; 5814 const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5815 const maxY = -minY; 5816 const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); 5817 const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); 5818 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5819 gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; 5820 mousePanStart.x = e.clientX; 5821 mousePanStart.y = e.clientY; 5822 image.startX = newX; 5823 image.startY = newY; 5824 image.currentX = newX; 5825 image.currentY = newY; 5826 } 5827 function zoomIn(e) { 5828 const zoom = swiper.zoom; 5829 const params = swiper.params.zoom; 5830 if (!gesture.slideEl) { 5831 if (e && e.target) { 5832 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5833 } 5834 if (!gesture.slideEl) { 5835 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5836 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5837 } else { 5838 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5839 } 5840 } 5841 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5842 if (imageEl) { 5843 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5844 } 5845 gesture.imageEl = imageEl; 5846 if (imageEl) { 5847 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5848 } else { 5849 gesture.imageWrapEl = undefined; 5850 } 5851 } 5852 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5853 if (swiper.params.cssMode) { 5854 swiper.wrapperEl.style.overflow = 'hidden'; 5855 swiper.wrapperEl.style.touchAction = 'none'; 5856 } 5857 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5858 let touchX; 5859 let touchY; 5860 let offsetX; 5861 let offsetY; 5862 let diffX; 5863 let diffY; 5864 let translateX; 5865 let translateY; 5866 let imageWidth; 5867 let imageHeight; 5868 let scaledWidth; 5869 let scaledHeight; 5870 let translateMinX; 5871 let translateMinY; 5872 let translateMaxX; 5873 let translateMaxY; 5874 let slideWidth; 5875 let slideHeight; 5876 if (typeof image.touchesStart.x === 'undefined' && e) { 5877 touchX = e.pageX; 5878 touchY = e.pageY; 5879 } else { 5880 touchX = image.touchesStart.x; 5881 touchY = image.touchesStart.y; 5882 } 5883 const prevScale = currentScale; 5884 const forceZoomRatio = typeof e === 'number' ? e : null; 5885 if (currentScale === 1 && forceZoomRatio) { 5886 touchX = undefined; 5887 touchY = undefined; 5888 image.touchesStart.x = undefined; 5889 image.touchesStart.y = undefined; 5890 } 5891 const maxRatio = getMaxRatio(); 5892 zoom.scale = forceZoomRatio || maxRatio; 5893 currentScale = forceZoomRatio || maxRatio; 5894 if (e && !(currentScale === 1 && forceZoomRatio)) { 5895 slideWidth = gesture.slideEl.offsetWidth; 5896 slideHeight = gesture.slideEl.offsetHeight; 5897 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).left + window.scrollX; 5898 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).top + window.scrollY; 5899 diffX = offsetX + slideWidth / 2 - touchX; 5900 diffY = offsetY + slideHeight / 2 - touchY; 5901 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5902 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5903 scaledWidth = imageWidth * zoom.scale; 5904 scaledHeight = imageHeight * zoom.scale; 5905 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5906 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5907 translateMaxX = -translateMinX; 5908 translateMaxY = -translateMinY; 5909 if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { 5910 translateX = image.currentX * zoom.scale / prevScale; 5911 translateY = image.currentY * zoom.scale / prevScale; 5912 } else { 5913 translateX = diffX * zoom.scale; 5914 translateY = diffY * zoom.scale; 5915 } 5916 if (translateX < translateMinX) { 5917 translateX = translateMinX; 5918 } 5919 if (translateX > translateMaxX) { 5920 translateX = translateMaxX; 5921 } 5922 if (translateY < translateMinY) { 5923 translateY = translateMinY; 5924 } 5925 if (translateY > translateMaxY) { 5926 translateY = translateMaxY; 5927 } 5928 } else { 5929 translateX = 0; 5930 translateY = 0; 5931 } 5932 if (forceZoomRatio && zoom.scale === 1) { 5933 gesture.originX = 0; 5934 gesture.originY = 0; 5935 } 5936 image.currentX = translateX; 5937 image.currentY = translateY; 5938 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5939 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 5940 gesture.imageEl.style.transitionDuration = '300ms'; 5941 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5942 } 5943 function zoomOut() { 5944 const zoom = swiper.zoom; 5945 const params = swiper.params.zoom; 5946 if (!gesture.slideEl) { 5947 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5948 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5949 } else { 5950 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5951 } 5952 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5953 if (imageEl) { 5954 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5955 } 5956 gesture.imageEl = imageEl; 5957 if (imageEl) { 5958 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5959 } else { 5960 gesture.imageWrapEl = undefined; 5961 } 5962 } 5963 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5964 if (swiper.params.cssMode) { 5965 swiper.wrapperEl.style.overflow = ''; 5966 swiper.wrapperEl.style.touchAction = ''; 5967 } 5968 zoom.scale = 1; 5969 currentScale = 1; 5970 image.currentX = undefined; 5971 image.currentY = undefined; 5972 image.touchesStart.x = undefined; 5973 image.touchesStart.y = undefined; 5974 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5975 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5976 gesture.imageEl.style.transitionDuration = '300ms'; 5977 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5978 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5979 gesture.slideEl = undefined; 5980 gesture.originX = 0; 5981 gesture.originY = 0; 5982 if (swiper.params.zoom.panOnMouseMove) { 5983 mousePanStart = { 5984 x: 0, 5985 y: 0 5986 }; 5987 if (isPanningWithMouse) { 5988 isPanningWithMouse = false; 5989 image.startX = 0; 5990 image.startY = 0; 5991 } 5992 } 5993 } 5994 5995 // Toggle Zoom 5996 function zoomToggle(e) { 5997 const zoom = swiper.zoom; 5998 if (zoom.scale && zoom.scale !== 1) { 5999 // Zoom Out 6000 zoomOut(); 6001 } else { 6002 // Zoom In 6003 zoomIn(e); 6004 } 6005 } 6006 function getListeners() { 6007 const passiveListener = swiper.params.passiveListeners ? { 6008 passive: true, 6009 capture: false 6010 } : false; 6011 const activeListenerWithCapture = swiper.params.passiveListeners ? { 6012 passive: false, 6013 capture: true 6014 } : true; 6015 return { 6016 passiveListener, 6017 activeListenerWithCapture 6018 }; 6019 } 6020 6021 // Attach/Detach Events 6022 function enable() { 6023 const zoom = swiper.zoom; 6024 if (zoom.enabled) return; 6025 zoom.enabled = true; 6026 const { 6027 passiveListener, 6028 activeListenerWithCapture 6029 } = getListeners(); 6030 6031 // Scale image 6032 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 6033 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 6034 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 6035 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 6036 }); 6037 6038 // Move image 6039 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 6040 } 6041 function disable() { 6042 const zoom = swiper.zoom; 6043 if (!zoom.enabled) return; 6044 zoom.enabled = false; 6045 const { 6046 passiveListener, 6047 activeListenerWithCapture 6048 } = getListeners(); 6049 6050 // Scale image 6051 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 6052 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 6053 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 6054 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 6055 }); 6056 6057 // Move image 6058 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 6059 } 6060 on('init', () => { 6061 if (swiper.params.zoom.enabled) { 6062 enable(); 6063 } 6064 }); 6065 on('destroy', () => { 6066 disable(); 6067 }); 6068 on('touchStart', (_s, e) => { 6069 if (!swiper.zoom.enabled) return; 6070 onTouchStart(e); 6071 }); 6072 on('touchEnd', (_s, e) => { 6073 if (!swiper.zoom.enabled) return; 6074 onTouchEnd(); 6075 }); 6076 on('doubleTap', (_s, e) => { 6077 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 6078 zoomToggle(e); 6079 } 6080 }); 6081 on('transitionEnd', () => { 6082 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 6083 onTransitionEnd(); 6084 } 6085 }); 6086 on('slideChange', () => { 6087 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 6088 onTransitionEnd(); 6089 } 6090 }); 6091 Object.assign(swiper.zoom, { 6092 enable, 6093 disable, 6094 in: zoomIn, 6095 out: zoomOut, 6096 toggle: zoomToggle 6097 }); 6098} 6099 6100 6101 6102 6103/***/ }), 6104
vendor: 805 bytes, lines 6105-6128
6105/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 6106/*!************************************************************!*\ 6107 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 6108 \************************************************************/ 6109/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6110 6111"use strict"; 6112__webpack_require__.r(__webpack_exports__); 6113/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6114/* harmony export */ c: function() { return /* binding */ classesToSelector; } 6115/* harmony export */ }); 6116function classesToSelector(classes) { 6117 if (classes === void 0) { 6118 classes = ''; 6119 } 6120 return `.${classes.trim().replace(/([\.:!+\/()[\]])/g, '\\$1') // eslint-disable-line 6121 .replace(/ /g, '.')}`; 6122} 6123 6124 6125 6126 6127/***/ }), 6128
vendor: 1,439 bytes, lines 6129-6165
6129/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 6130/*!**********************************************************************!*\ 6131 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 6132 \**********************************************************************/ 6133/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6134 6135"use strict"; 6136__webpack_require__.r(__webpack_exports__); 6137/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6138/* harmony export */ c: function() { return /* binding */ createElementIfNotDefined; } 6139/* harmony export */ }); 6140/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6141 6142 6143function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 6144 if (swiper.params.createElements) { 6145 Object.keys(checkProps).forEach(key => { 6146 if (!params[key] && params.auto === true) { 6147 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 6148 if (!element) { 6149 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 6150 element.className = checkProps[key]; 6151 swiper.el.append(element); 6152 } 6153 params[key] = element; 6154 originalParams[key] = element; 6155 } 6156 }); 6157 } 6158 return params; 6159} 6160 6161 6162 6163 6164/***/ }), 6165
vendor: 1,235 bytes, lines 6166-6195
6166/***/ "./node_modules/swiper/shared/create-shadow.mjs": 6167/*!******************************************************!*\ 6168 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 6169 \******************************************************/ 6170/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6171 6172"use strict"; 6173__webpack_require__.r(__webpack_exports__); 6174/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6175/* harmony export */ c: function() { return /* binding */ createShadow; } 6176/* harmony export */ }); 6177/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6178 6179 6180function createShadow(suffix, slideEl, side) { 6181 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 6182 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 6183 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 6184 if (!shadowEl) { 6185 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 6186 shadowContainer.append(shadowEl); 6187 } 6188 return shadowEl; 6189} 6190 6191 6192 6193 6194/***/ }), 6195
vendor: 2,374 bytes, lines 6196-6268
6196/***/ "./node_modules/swiper/shared/effect-init.mjs": 6197/*!****************************************************!*\ 6198 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 6199 \****************************************************/ 6200/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6201 6202"use strict"; 6203__webpack_require__.r(__webpack_exports__); 6204/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6205/* harmony export */ e: function() { return /* binding */ effectInit; } 6206/* harmony export */ }); 6207function effectInit(params) { 6208 const { 6209 effect, 6210 swiper, 6211 on, 6212 setTranslate, 6213 setTransition, 6214 overwriteParams, 6215 perspective, 6216 recreateShadows, 6217 getEffectParams 6218 } = params; 6219 on('beforeInit', () => { 6220 if (swiper.params.effect !== effect) return; 6221 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 6222 if (perspective && perspective()) { 6223 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 6224 } 6225 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 6226 Object.assign(swiper.params, overwriteParamsResult); 6227 Object.assign(swiper.originalParams, overwriteParamsResult); 6228 }); 6229 on('setTranslate _virtualUpdated', () => { 6230 if (swiper.params.effect !== effect) return; 6231 setTranslate(); 6232 }); 6233 on('setTransition', (_s, duration) => { 6234 if (swiper.params.effect !== effect) return; 6235 setTransition(duration); 6236 }); 6237 on('transitionEnd', () => { 6238 if (swiper.params.effect !== effect) return; 6239 if (recreateShadows) { 6240 if (!getEffectParams || !getEffectParams().slideShadows) return; 6241 // remove shadows 6242 swiper.slides.forEach(slideEl => { 6243 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 6244 }); 6245 // create new one 6246 recreateShadows(); 6247 } 6248 }); 6249 let requireUpdateOnVirtual; 6250 on('virtualUpdate', () => { 6251 if (swiper.params.effect !== effect) return; 6252 if (!swiper.slides.length) { 6253 requireUpdateOnVirtual = true; 6254 } 6255 requestAnimationFrame(() => { 6256 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 6257 setTranslate(); 6258 requireUpdateOnVirtual = false; 6259 } 6260 }); 6261 }); 6262} 6263 6264 6265 6266 6267/***/ }), 6268
vendor: 1,028 bytes, lines 6269-6296
6269/***/ "./node_modules/swiper/shared/effect-target.mjs": 6270/*!******************************************************!*\ 6271 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 6272 \******************************************************/ 6273/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6274 6275"use strict"; 6276__webpack_require__.r(__webpack_exports__); 6277/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6278/* harmony export */ e: function() { return /* binding */ effectTarget; } 6279/* harmony export */ }); 6280/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6281 6282 6283function effectTarget(effectParams, slideEl) { 6284 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 6285 if (transformEl !== slideEl) { 6286 transformEl.style.backfaceVisibility = 'hidden'; 6287 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 6288 } 6289 return transformEl; 6290} 6291 6292 6293 6294 6295/***/ }), 6296
vendor: 2,131 bytes, lines 6297-6360
6297/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 6298/*!**********************************************************************!*\ 6299 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 6300 \**********************************************************************/ 6301/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6302 6303"use strict"; 6304__webpack_require__.r(__webpack_exports__); 6305/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6306/* harmony export */ e: function() { return /* binding */ effectVirtualTransitionEnd; } 6307/* harmony export */ }); 6308/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6309 6310 6311function effectVirtualTransitionEnd(_ref) { 6312 let { 6313 swiper, 6314 duration, 6315 transformElements, 6316 allSlides 6317 } = _ref; 6318 const { 6319 activeIndex 6320 } = swiper; 6321 const getSlide = el => { 6322 if (!el.parentElement) { 6323 // assume shadow root 6324 const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); 6325 return slide; 6326 } 6327 return el.parentElement; 6328 }; 6329 if (swiper.params.virtualTranslate && duration !== 0) { 6330 let eventTriggered = false; 6331 let transitionEndTarget; 6332 if (allSlides) { 6333 transitionEndTarget = transformElements; 6334 } else { 6335 transitionEndTarget = transformElements.filter(transformEl => { 6336 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 6337 return swiper.getSlideIndex(el) === activeIndex; 6338 }); 6339 } 6340 transitionEndTarget.forEach(el => { 6341 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(el, () => { 6342 if (eventTriggered) return; 6343 if (!swiper || swiper.destroyed) return; 6344 eventTriggered = true; 6345 swiper.animating = false; 6346 const evt = new window.CustomEvent('transitionend', { 6347 bubbles: true, 6348 cancelable: true 6349 }); 6350 swiper.wrapperEl.dispatchEvent(evt); 6351 }); 6352 }); 6353 } 6354} 6355 6356 6357 6358 6359/***/ }), 6360
vendor: 3,468 bytes, lines 6361-6522
6361/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 6362/*!*******************************************************!*\ 6363 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 6364 \*******************************************************/ 6365/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6366 6367"use strict"; 6368__webpack_require__.r(__webpack_exports__); 6369/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6370/* harmony export */ a: function() { return /* binding */ getWindow; }, 6371/* harmony export */ g: function() { return /* binding */ getDocument; } 6372/* harmony export */ }); 6373/** 6374 * SSR Window 5.0.1 6375 * Better handling for window object in SSR environment 6376 * https://github.com/nolimits4web/ssr-window 6377 * 6378 * Copyright 2025, Vladimir Kharlampidi 6379 * 6380 * Licensed under MIT 6381 * 6382 * Released on: June 27, 2025 6383 */ 6384/* eslint-disable no-param-reassign */ 6385function isObject(obj) { 6386 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 6387} 6388function extend(target, src) { 6389 if (target === void 0) { 6390 target = {}; 6391 } 6392 if (src === void 0) { 6393 src = {}; 6394 } 6395 const noExtend = ['__proto__', 'constructor', 'prototype']; 6396 Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { 6397 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 6398 extend(target[key], src[key]); 6399 } 6400 }); 6401} 6402const ssrDocument = { 6403 body: {}, 6404 addEventListener() {}, 6405 removeEventListener() {}, 6406 activeElement: { 6407 blur() {}, 6408 nodeName: '' 6409 }, 6410 querySelector() { 6411 return null; 6412 }, 6413 querySelectorAll() { 6414 return []; 6415 }, 6416 getElementById() { 6417 return null; 6418 }, 6419 createEvent() { 6420 return { 6421 initEvent() {} 6422 }; 6423 }, 6424 createElement() { 6425 return { 6426 children: [], 6427 childNodes: [], 6428 style: {}, 6429 setAttribute() {}, 6430 getElementsByTagName() { 6431 return []; 6432 } 6433 }; 6434 }, 6435 createElementNS() { 6436 return {}; 6437 }, 6438 importNode() { 6439 return null; 6440 }, 6441 location: { 6442 hash: '', 6443 host: '', 6444 hostname: '', 6445 href: '', 6446 origin: '', 6447 pathname: '', 6448 protocol: '', 6449 search: '' 6450 } 6451}; 6452function getDocument() { 6453 const doc = typeof document !== 'undefined' ? document : {}; 6454 extend(doc, ssrDocument); 6455 return doc; 6456} 6457const ssrWindow = { 6458 document: ssrDocument, 6459 navigator: { 6460 userAgent: '' 6461 }, 6462 location: { 6463 hash: '', 6464 host: '', 6465 hostname: '', 6466 href: '', 6467 origin: '', 6468 pathname: '', 6469 protocol: '', 6470 search: '' 6471 }, 6472 history: { 6473 replaceState() {}, 6474 pushState() {}, 6475 go() {}, 6476 back() {} 6477 }, 6478 CustomEvent: function CustomEvent() { 6479 return this; 6480 }, 6481 addEventListener() {}, 6482 removeEventListener() {}, 6483 getComputedStyle() { 6484 return { 6485 getPropertyValue() { 6486 return ''; 6487 } 6488 }; 6489 }, 6490 Image() {}, 6491 Date() {}, 6492 screen: {}, 6493 setTimeout() {}, 6494 clearTimeout() {}, 6495 matchMedia() { 6496 return {}; 6497 }, 6498 requestAnimationFrame(callback) { 6499 if (typeof setTimeout === 'undefined') { 6500 callback(); 6501 return null; 6502 } 6503 return setTimeout(callback, 0); 6504 }, 6505 cancelAnimationFrame(id) { 6506 if (typeof setTimeout === 'undefined') { 6507 return; 6508 } 6509 clearTimeout(id); 6510 } 6511}; 6512function getWindow() { 6513 const win = typeof window !== 'undefined' ? window : {}; 6514 extend(win, ssrWindow); 6515 return win; 6516} 6517 6518 6519 6520 6521/***/ }), 6522
vendor: 135,087 bytes, lines 6523-10492
6523/***/ "./node_modules/swiper/shared/swiper-core.mjs": 6524/*!****************************************************!*\ 6525 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 6526 \****************************************************/ 6527/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6528 6529"use strict"; 6530__webpack_require__.r(__webpack_exports__); 6531/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6532/* harmony export */ S: function() { return /* binding */ Swiper; }, 6533/* harmony export */ d: function() { return /* binding */ defaults; } 6534/* harmony export */ }); 6535/* 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"); 6536/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6537 6538 6539 6540let support; 6541function calcSupport() { 6542 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6543 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 6544 return { 6545 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 6546 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 6547 }; 6548} 6549function getSupport() { 6550 if (!support) { 6551 support = calcSupport(); 6552 } 6553 return support; 6554} 6555 6556let deviceCached; 6557function calcDevice(_temp) { 6558 let { 6559 userAgent 6560 } = _temp === void 0 ? {} : _temp; 6561 const support = getSupport(); 6562 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6563 const platform = window.navigator.platform; 6564 const ua = userAgent || window.navigator.userAgent; 6565 const device = { 6566 ios: false, 6567 android: false 6568 }; 6569 const screenWidth = window.screen.width; 6570 const screenHeight = window.screen.height; 6571 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 6572 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 6573 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 6574 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 6575 const windows = platform === 'Win32'; 6576 let macos = platform === 'MacIntel'; 6577 6578 // iPadOs 13 fix 6579 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 6580 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 6581 ipad = ua.match(/(Version)\/([\d.]+)/); 6582 if (!ipad) ipad = [0, 1, '13_0_0']; 6583 macos = false; 6584 } 6585 6586 // Android 6587 if (android && !windows) { 6588 device.os = 'android'; 6589 device.android = true; 6590 } 6591 if (ipad || iphone || ipod) { 6592 device.os = 'ios'; 6593 device.ios = true; 6594 } 6595 6596 // Export object 6597 return device; 6598} 6599function getDevice(overrides) { 6600 if (overrides === void 0) { 6601 overrides = {}; 6602 } 6603 if (!deviceCached) { 6604 deviceCached = calcDevice(overrides); 6605 } 6606 return deviceCached; 6607} 6608 6609let browser; 6610function calcBrowser() { 6611 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6612 const device = getDevice(); 6613 let needPerspectiveFix = false; 6614 function isSafari() { 6615 const ua = window.navigator.userAgent.toLowerCase(); 6616 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 6617 } 6618 if (isSafari()) { 6619 const ua = String(window.navigator.userAgent); 6620 if (ua.includes('Version/')) { 6621 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 6622 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 6623 } 6624 } 6625 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 6626 const isSafariBrowser = isSafari(); 6627 const need3dFix = isSafariBrowser || isWebView && device.ios; 6628 return { 6629 isSafari: needPerspectiveFix || isSafariBrowser, 6630 needPerspectiveFix, 6631 need3dFix, 6632 isWebView 6633 }; 6634} 6635function getBrowser() { 6636 if (!browser) { 6637 browser = calcBrowser(); 6638 } 6639 return browser; 6640} 6641 6642function Resize(_ref) { 6643 let { 6644 swiper, 6645 on, 6646 emit 6647 } = _ref; 6648 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6649 let observer = null; 6650 let animationFrame = null; 6651 const resizeHandler = () => { 6652 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6653 emit('beforeResize'); 6654 emit('resize'); 6655 }; 6656 const createObserver = () => { 6657 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6658 observer = new ResizeObserver(entries => { 6659 animationFrame = window.requestAnimationFrame(() => { 6660 const { 6661 width, 6662 height 6663 } = swiper; 6664 let newWidth = width; 6665 let newHeight = height; 6666 entries.forEach(_ref2 => { 6667 let { 6668 contentBoxSize, 6669 contentRect, 6670 target 6671 } = _ref2; 6672 if (target && target !== swiper.el) return; 6673 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 6674 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 6675 }); 6676 if (newWidth !== width || newHeight !== height) { 6677 resizeHandler(); 6678 } 6679 }); 6680 }); 6681 observer.observe(swiper.el); 6682 }; 6683 const removeObserver = () => { 6684 if (animationFrame) { 6685 window.cancelAnimationFrame(animationFrame); 6686 } 6687 if (observer && observer.unobserve && swiper.el) { 6688 observer.unobserve(swiper.el); 6689 observer = null; 6690 } 6691 }; 6692 const orientationChangeHandler = () => { 6693 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6694 emit('orientationchange'); 6695 }; 6696 on('init', () => { 6697 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 6698 createObserver(); 6699 return; 6700 } 6701 window.addEventListener('resize', resizeHandler); 6702 window.addEventListener('orientationchange', orientationChangeHandler); 6703 }); 6704 on('destroy', () => { 6705 removeObserver(); 6706 window.removeEventListener('resize', resizeHandler); 6707 window.removeEventListener('orientationchange', orientationChangeHandler); 6708 }); 6709} 6710 6711function Observer(_ref) { 6712 let { 6713 swiper, 6714 extendParams, 6715 on, 6716 emit 6717 } = _ref; 6718 const observers = []; 6719 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6720 const attach = function (target, options) { 6721 if (options === void 0) { 6722 options = {}; 6723 } 6724 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 6725 const observer = new ObserverFunc(mutations => { 6726 // The observerUpdate event should only be triggered 6727 // once despite the number of mutations. Additional 6728 // triggers are redundant and are very costly 6729 if (swiper.__preventObserver__) return; 6730 if (mutations.length === 1) { 6731 emit('observerUpdate', mutations[0]); 6732 return; 6733 } 6734 const observerUpdate = function observerUpdate() { 6735 emit('observerUpdate', mutations[0]); 6736 }; 6737 if (window.requestAnimationFrame) { 6738 window.requestAnimationFrame(observerUpdate); 6739 } else { 6740 window.setTimeout(observerUpdate, 0); 6741 } 6742 }); 6743 observer.observe(target, { 6744 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 6745 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 6746 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 6747 }); 6748 observers.push(observer); 6749 }; 6750 const init = () => { 6751 if (!swiper.params.observer) return; 6752 if (swiper.params.observeParents) { 6753 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.hostEl); 6754 for (let i = 0; i < containerParents.length; i += 1) { 6755 attach(containerParents[i]); 6756 } 6757 } 6758 // Observe container 6759 attach(swiper.hostEl, { 6760 childList: swiper.params.observeSlideChildren 6761 }); 6762 6763 // Observe wrapper 6764 attach(swiper.wrapperEl, { 6765 attributes: false 6766 }); 6767 }; 6768 const destroy = () => { 6769 observers.forEach(observer => { 6770 observer.disconnect(); 6771 }); 6772 observers.splice(0, observers.length); 6773 }; 6774 extendParams({ 6775 observer: false, 6776 observeParents: false, 6777 observeSlideChildren: false 6778 }); 6779 on('init', init); 6780 on('destroy', destroy); 6781} 6782 6783/* eslint-disable no-underscore-dangle */ 6784 6785var eventsEmitter = { 6786 on(events, handler, priority) { 6787 const self = this; 6788 if (!self.eventsListeners || self.destroyed) return self; 6789 if (typeof handler !== 'function') return self; 6790 const method = priority ? 'unshift' : 'push'; 6791 events.split(' ').forEach(event => { 6792 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 6793 self.eventsListeners[event][method](handler); 6794 }); 6795 return self; 6796 }, 6797 once(events, handler, priority) { 6798 const self = this; 6799 if (!self.eventsListeners || self.destroyed) return self; 6800 if (typeof handler !== 'function') return self; 6801 function onceHandler() { 6802 self.off(events, onceHandler); 6803 if (onceHandler.__emitterProxy) { 6804 delete onceHandler.__emitterProxy; 6805 } 6806 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6807 args[_key] = arguments[_key]; 6808 } 6809 handler.apply(self, args); 6810 } 6811 onceHandler.__emitterProxy = handler; 6812 return self.on(events, onceHandler, priority); 6813 }, 6814 onAny(handler, priority) { 6815 const self = this; 6816 if (!self.eventsListeners || self.destroyed) return self; 6817 if (typeof handler !== 'function') return self; 6818 const method = priority ? 'unshift' : 'push'; 6819 if (self.eventsAnyListeners.indexOf(handler) < 0) { 6820 self.eventsAnyListeners[method](handler); 6821 } 6822 return self; 6823 }, 6824 offAny(handler) { 6825 const self = this; 6826 if (!self.eventsListeners || self.destroyed) return self; 6827 if (!self.eventsAnyListeners) return self; 6828 const index = self.eventsAnyListeners.indexOf(handler); 6829 if (index >= 0) { 6830 self.eventsAnyListeners.splice(index, 1); 6831 } 6832 return self; 6833 }, 6834 off(events, handler) { 6835 const self = this; 6836 if (!self.eventsListeners || self.destroyed) return self; 6837 if (!self.eventsListeners) return self; 6838 events.split(' ').forEach(event => { 6839 if (typeof handler === 'undefined') { 6840 self.eventsListeners[event] = []; 6841 } else if (self.eventsListeners[event]) { 6842 self.eventsListeners[event].forEach((eventHandler, index) => { 6843 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 6844 self.eventsListeners[event].splice(index, 1); 6845 } 6846 }); 6847 } 6848 }); 6849 return self; 6850 }, 6851 emit() { 6852 const self = this; 6853 if (!self.eventsListeners || self.destroyed) return self; 6854 if (!self.eventsListeners) return self; 6855 let events; 6856 let data; 6857 let context; 6858 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 6859 args[_key2] = arguments[_key2]; 6860 } 6861 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 6862 events = args[0]; 6863 data = args.slice(1, args.length); 6864 context = self; 6865 } else { 6866 events = args[0].events; 6867 data = args[0].data; 6868 context = args[0].context || self; 6869 } 6870 data.unshift(context); 6871 const eventsArray = Array.isArray(events) ? events : events.split(' '); 6872 eventsArray.forEach(event => { 6873 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 6874 self.eventsAnyListeners.forEach(eventHandler => { 6875 eventHandler.apply(context, [event, ...data]); 6876 }); 6877 } 6878 if (self.eventsListeners && self.eventsListeners[event]) { 6879 self.eventsListeners[event].forEach(eventHandler => { 6880 eventHandler.apply(context, data); 6881 }); 6882 } 6883 }); 6884 return self; 6885 } 6886}; 6887 6888function updateSize() { 6889 const swiper = this; 6890 let width; 6891 let height; 6892 const el = swiper.el; 6893 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 6894 width = swiper.params.width; 6895 } else { 6896 width = el.clientWidth; 6897 } 6898 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 6899 height = swiper.params.height; 6900 } else { 6901 height = el.clientHeight; 6902 } 6903 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 6904 return; 6905 } 6906 6907 // Subtract paddings 6908 width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-right') || 0, 10); 6909 height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-bottom') || 0, 10); 6910 if (Number.isNaN(width)) width = 0; 6911 if (Number.isNaN(height)) height = 0; 6912 Object.assign(swiper, { 6913 width, 6914 height, 6915 size: swiper.isHorizontal() ? width : height 6916 }); 6917} 6918 6919function updateSlides() { 6920 const swiper = this; 6921 function getDirectionPropertyValue(node, label) { 6922 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 6923 } 6924 const params = swiper.params; 6925 const { 6926 wrapperEl, 6927 slidesEl, 6928 size: swiperSize, 6929 rtlTranslate: rtl, 6930 wrongRTL 6931 } = swiper; 6932 const isVirtual = swiper.virtual && params.virtual.enabled; 6933 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 6934 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 6935 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 6936 let snapGrid = []; 6937 const slidesGrid = []; 6938 const slidesSizesGrid = []; 6939 let offsetBefore = params.slidesOffsetBefore; 6940 if (typeof offsetBefore === 'function') { 6941 offsetBefore = params.slidesOffsetBefore.call(swiper); 6942 } 6943 let offsetAfter = params.slidesOffsetAfter; 6944 if (typeof offsetAfter === 'function') { 6945 offsetAfter = params.slidesOffsetAfter.call(swiper); 6946 } 6947 const previousSnapGridLength = swiper.snapGrid.length; 6948 const previousSlidesGridLength = swiper.slidesGrid.length; 6949 let spaceBetween = params.spaceBetween; 6950 let slidePosition = -offsetBefore; 6951 let prevSlideSize = 0; 6952 let index = 0; 6953 if (typeof swiperSize === 'undefined') { 6954 return; 6955 } 6956 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6957 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 6958 } else if (typeof spaceBetween === 'string') { 6959 spaceBetween = parseFloat(spaceBetween); 6960 } 6961 swiper.virtualSize = -spaceBetween; 6962 6963 // reset margins 6964 slides.forEach(slideEl => { 6965 if (rtl) { 6966 slideEl.style.marginLeft = ''; 6967 } else { 6968 slideEl.style.marginRight = ''; 6969 } 6970 slideEl.style.marginBottom = ''; 6971 slideEl.style.marginTop = ''; 6972 }); 6973 6974 // reset cssMode offsets 6975 if (params.centeredSlides && params.cssMode) { 6976 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', ''); 6977 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', ''); 6978 } 6979 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 6980 if (gridEnabled) { 6981 swiper.grid.initSlides(slides); 6982 } else if (swiper.grid) { 6983 swiper.grid.unsetSlides(); 6984 } 6985 6986 // Calc slides 6987 let slideSize; 6988 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 6989 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 6990 }).length > 0; 6991 for (let i = 0; i < slidesLength; i += 1) { 6992 slideSize = 0; 6993 let slide; 6994 if (slides[i]) slide = slides[i]; 6995 if (gridEnabled) { 6996 swiper.grid.updateSlide(i, slide, slides); 6997 } 6998 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(slide, 'display') === 'none') continue; // eslint-disable-line 6999 7000 if (params.slidesPerView === 'auto') { 7001 if (shouldResetSlideSize) { 7002 slides[i].style[swiper.getDirectionLabel('width')] = ``; 7003 } 7004 const slideStyles = getComputedStyle(slide); 7005 const currentTransform = slide.style.transform; 7006 const currentWebKitTransform = slide.style.webkitTransform; 7007 if (currentTransform) { 7008 slide.style.transform = 'none'; 7009 } 7010 if (currentWebKitTransform) { 7011 slide.style.webkitTransform = 'none'; 7012 } 7013 if (params.roundLengths) { 7014 slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'height', true); 7015 } else { 7016 // eslint-disable-next-line 7017 const width = getDirectionPropertyValue(slideStyles, 'width'); 7018 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 7019 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 7020 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 7021 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 7022 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 7023 if (boxSizing && boxSizing === 'border-box') { 7024 slideSize = width + marginLeft + marginRight; 7025 } else { 7026 const { 7027 clientWidth, 7028 offsetWidth 7029 } = slide; 7030 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 7031 } 7032 } 7033 if (currentTransform) { 7034 slide.style.transform = currentTransform; 7035 } 7036 if (currentWebKitTransform) { 7037 slide.style.webkitTransform = currentWebKitTransform; 7038 } 7039 if (params.roundLengths) slideSize = Math.floor(slideSize); 7040 } else { 7041 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 7042 if (params.roundLengths) slideSize = Math.floor(slideSize); 7043 if (slides[i]) { 7044 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 7045 } 7046 } 7047 if (slides[i]) { 7048 slides[i].swiperSlideSize = slideSize; 7049 } 7050 slidesSizesGrid.push(slideSize); 7051 if (params.centeredSlides) { 7052 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 7053 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 7054 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 7055 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 7056 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 7057 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 7058 slidesGrid.push(slidePosition); 7059 } else { 7060 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 7061 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 7062 slidesGrid.push(slidePosition); 7063 slidePosition = slidePosition + slideSize + spaceBetween; 7064 } 7065 swiper.virtualSize += slideSize + spaceBetween; 7066 prevSlideSize = slideSize; 7067 index += 1; 7068 } 7069 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 7070 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 7071 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 7072 } 7073 if (params.setWrapperSize) { 7074 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 7075 } 7076 if (gridEnabled) { 7077 swiper.grid.updateWrapperSize(slideSize, snapGrid); 7078 } 7079 7080 // Remove last grid elements depending on width 7081 if (!params.centeredSlides) { 7082 const newSlidesGrid = []; 7083 for (let i = 0; i < snapGrid.length; i += 1) { 7084 let slidesGridItem = snapGrid[i]; 7085 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 7086 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 7087 newSlidesGrid.push(slidesGridItem); 7088 } 7089 } 7090 snapGrid = newSlidesGrid; 7091 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 7092 snapGrid.push(swiper.virtualSize - swiperSize); 7093 } 7094 } 7095 if (isVirtual && params.loop) { 7096 const size = slidesSizesGrid[0] + spaceBetween; 7097 if (params.slidesPerGroup > 1) { 7098 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 7099 const groupSize = size * params.slidesPerGroup; 7100 for (let i = 0; i < groups; i += 1) { 7101 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 7102 } 7103 } 7104 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 7105 if (params.slidesPerGroup === 1) { 7106 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 7107 } 7108 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 7109 swiper.virtualSize += size; 7110 } 7111 } 7112 if (snapGrid.length === 0) snapGrid = [0]; 7113 if (spaceBetween !== 0) { 7114 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 7115 slides.filter((_, slideIndex) => { 7116 if (!params.cssMode || params.loop) return true; 7117 if (slideIndex === slides.length - 1) { 7118 return false; 7119 } 7120 return true; 7121 }).forEach(slideEl => { 7122 slideEl.style[key] = `${spaceBetween}px`; 7123 }); 7124 } 7125 if (params.centeredSlides && params.centeredSlidesBounds) { 7126 let allSlidesSize = 0; 7127 slidesSizesGrid.forEach(slideSizeValue => { 7128 allSlidesSize += slideSizeValue + (spaceBetween || 0); 7129 }); 7130 allSlidesSize -= spaceBetween; 7131 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 7132 snapGrid = snapGrid.map(snap => { 7133 if (snap <= 0) return -offsetBefore; 7134 if (snap > maxSnap) return maxSnap + offsetAfter; 7135 return snap; 7136 }); 7137 } 7138 if (params.centerInsufficientSlides) { 7139 let allSlidesSize = 0; 7140 slidesSizesGrid.forEach(slideSizeValue => { 7141 allSlidesSize += slideSizeValue + (spaceBetween || 0); 7142 }); 7143 allSlidesSize -= spaceBetween; 7144 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 7145 if (allSlidesSize + offsetSize < swiperSize) { 7146 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 7147 snapGrid.forEach((snap, snapIndex) => { 7148 snapGrid[snapIndex] = snap - allSlidesOffset; 7149 }); 7150 slidesGrid.forEach((snap, snapIndex) => { 7151 slidesGrid[snapIndex] = snap + allSlidesOffset; 7152 }); 7153 } 7154 } 7155 Object.assign(swiper, { 7156 slides, 7157 snapGrid, 7158 slidesGrid, 7159 slidesSizesGrid 7160 }); 7161 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 7162 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 7163 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 7164 const addToSnapGrid = -swiper.snapGrid[0]; 7165 const addToSlidesGrid = -swiper.slidesGrid[0]; 7166 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 7167 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 7168 } 7169 if (slidesLength !== previousSlidesLength) { 7170 swiper.emit('slidesLengthChange'); 7171 } 7172 if (snapGrid.length !== previousSnapGridLength) { 7173 if (swiper.params.watchOverflow) swiper.checkOverflow(); 7174 swiper.emit('snapGridLengthChange'); 7175 } 7176 if (slidesGrid.length !== previousSlidesGridLength) { 7177 swiper.emit('slidesGridLengthChange'); 7178 } 7179 if (params.watchSlidesProgress) { 7180 swiper.updateSlidesOffset(); 7181 } 7182 swiper.emit('slidesUpdated'); 7183 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 7184 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 7185 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 7186 if (slidesLength <= params.maxBackfaceHiddenSlides) { 7187 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 7188 } else if (hasClassBackfaceClassAdded) { 7189 swiper.el.classList.remove(backFaceHiddenClass); 7190 } 7191 } 7192} 7193 7194function updateAutoHeight(speed) { 7195 const swiper = this; 7196 const activeSlides = []; 7197 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7198 let newHeight = 0; 7199 let i; 7200 if (typeof speed === 'number') { 7201 swiper.setTransition(speed); 7202 } else if (speed === true) { 7203 swiper.setTransition(swiper.params.speed); 7204 } 7205 const getSlideByIndex = index => { 7206 if (isVirtual) { 7207 return swiper.slides[swiper.getSlideIndexByData(index)]; 7208 } 7209 return swiper.slides[index]; 7210 }; 7211 // Find slides currently in view 7212 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 7213 if (swiper.params.centeredSlides) { 7214 (swiper.visibleSlides || []).forEach(slide => { 7215 activeSlides.push(slide); 7216 }); 7217 } else { 7218 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 7219 const index = swiper.activeIndex + i; 7220 if (index > swiper.slides.length && !isVirtual) break; 7221 activeSlides.push(getSlideByIndex(index)); 7222 } 7223 } 7224 } else { 7225 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 7226 } 7227 7228 // Find new height from highest slide in view 7229 for (i = 0; i < activeSlides.length; i += 1) { 7230 if (typeof activeSlides[i] !== 'undefined') { 7231 const height = activeSlides[i].offsetHeight; 7232 newHeight = height > newHeight ? height : newHeight; 7233 } 7234 } 7235 7236 // Update Height 7237 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 7238} 7239 7240function updateSlidesOffset() { 7241 const swiper = this; 7242 const slides = swiper.slides; 7243 // eslint-disable-next-line 7244 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 7245 for (let i = 0; i < slides.length; i += 1) { 7246 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 7247 } 7248} 7249 7250const toggleSlideClasses$1 = (slideEl, condition, className) => { 7251 if (condition && !slideEl.classList.contains(className)) { 7252 slideEl.classList.add(className); 7253 } else if (!condition && slideEl.classList.contains(className)) { 7254 slideEl.classList.remove(className); 7255 } 7256}; 7257function updateSlidesProgress(translate) { 7258 if (translate === void 0) { 7259 translate = this && this.translate || 0; 7260 } 7261 const swiper = this; 7262 const params = swiper.params; 7263 const { 7264 slides, 7265 rtlTranslate: rtl, 7266 snapGrid 7267 } = swiper; 7268 if (slides.length === 0) return; 7269 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 7270 let offsetCenter = -translate; 7271 if (rtl) offsetCenter = translate; 7272 swiper.visibleSlidesIndexes = []; 7273 swiper.visibleSlides = []; 7274 let spaceBetween = params.spaceBetween; 7275 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 7276 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 7277 } else if (typeof spaceBetween === 'string') { 7278 spaceBetween = parseFloat(spaceBetween); 7279 } 7280 for (let i = 0; i < slides.length; i += 1) { 7281 const slide = slides[i]; 7282 let slideOffset = slide.swiperSlideOffset; 7283 if (params.cssMode && params.centeredSlides) { 7284 slideOffset -= slides[0].swiperSlideOffset; 7285 } 7286 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 7287 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 7288 const slideBefore = -(offsetCenter - slideOffset); 7289 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 7290 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 7291 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 7292 if (isVisible) { 7293 swiper.visibleSlides.push(slide); 7294 swiper.visibleSlidesIndexes.push(i); 7295 } 7296 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 7297 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 7298 slide.progress = rtl ? -slideProgress : slideProgress; 7299 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 7300 } 7301} 7302 7303function updateProgress(translate) { 7304 const swiper = this; 7305 if (typeof translate === 'undefined') { 7306 const multiplier = swiper.rtlTranslate ? -1 : 1; 7307 // eslint-disable-next-line 7308 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 7309 } 7310 const params = swiper.params; 7311 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7312 let { 7313 progress, 7314 isBeginning, 7315 isEnd, 7316 progressLoop 7317 } = swiper; 7318 const wasBeginning = isBeginning; 7319 const wasEnd = isEnd; 7320 if (translatesDiff === 0) { 7321 progress = 0; 7322 isBeginning = true; 7323 isEnd = true; 7324 } else { 7325 progress = (translate - swiper.minTranslate()) / translatesDiff; 7326 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 7327 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 7328 isBeginning = isBeginningRounded || progress <= 0; 7329 isEnd = isEndRounded || progress >= 1; 7330 if (isBeginningRounded) progress = 0; 7331 if (isEndRounded) progress = 1; 7332 } 7333 if (params.loop) { 7334 const firstSlideIndex = swiper.getSlideIndexByData(0); 7335 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 7336 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 7337 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 7338 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 7339 const translateAbs = Math.abs(translate); 7340 if (translateAbs >= firstSlideTranslate) { 7341 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 7342 } else { 7343 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 7344 } 7345 if (progressLoop > 1) progressLoop -= 1; 7346 } 7347 Object.assign(swiper, { 7348 progress, 7349 progressLoop, 7350 isBeginning, 7351 isEnd 7352 }); 7353 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 7354 if (isBeginning && !wasBeginning) { 7355 swiper.emit('reachBeginning toEdge'); 7356 } 7357 if (isEnd && !wasEnd) { 7358 swiper.emit('reachEnd toEdge'); 7359 } 7360 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 7361 swiper.emit('fromEdge'); 7362 } 7363 swiper.emit('progress', progress); 7364} 7365 7366const toggleSlideClasses = (slideEl, condition, className) => { 7367 if (condition && !slideEl.classList.contains(className)) { 7368 slideEl.classList.add(className); 7369 } else if (!condition && slideEl.classList.contains(className)) { 7370 slideEl.classList.remove(className); 7371 } 7372}; 7373function updateSlidesClasses() { 7374 const swiper = this; 7375 const { 7376 slides, 7377 params, 7378 slidesEl, 7379 activeIndex 7380 } = swiper; 7381 const isVirtual = swiper.virtual && params.virtual.enabled; 7382 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7383 const getFilteredSlide = selector => { 7384 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 7385 }; 7386 let activeSlide; 7387 let prevSlide; 7388 let nextSlide; 7389 if (isVirtual) { 7390 if (params.loop) { 7391 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 7392 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 7393 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 7394 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 7395 } else { 7396 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 7397 } 7398 } else { 7399 if (gridEnabled) { 7400 activeSlide = slides.find(slideEl => slideEl.column === activeIndex); 7401 nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); 7402 prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); 7403 } else { 7404 activeSlide = slides[activeIndex]; 7405 } 7406 } 7407 if (activeSlide) { 7408 if (!gridEnabled) { 7409 // Next Slide 7410 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7411 if (params.loop && !nextSlide) { 7412 nextSlide = slides[0]; 7413 } 7414 7415 // Prev Slide 7416 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7417 if (params.loop && !prevSlide === 0) { 7418 prevSlide = slides[slides.length - 1]; 7419 } 7420 } 7421 } 7422 slides.forEach(slideEl => { 7423 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 7424 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 7425 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 7426 }); 7427 swiper.emitSlidesClasses(); 7428} 7429 7430const processLazyPreloader = (swiper, imageEl) => { 7431 if (!swiper || swiper.destroyed || !swiper.params) return; 7432 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 7433 const slideEl = imageEl.closest(slideSelector()); 7434 if (slideEl) { 7435 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7436 if (!lazyEl && swiper.isElement) { 7437 if (slideEl.shadowRoot) { 7438 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7439 } else { 7440 // init later 7441 requestAnimationFrame(() => { 7442 if (slideEl.shadowRoot) { 7443 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7444 if (lazyEl) lazyEl.remove(); 7445 } 7446 }); 7447 } 7448 } 7449 if (lazyEl) lazyEl.remove(); 7450 } 7451}; 7452const unlazy = (swiper, index) => { 7453 if (!swiper.slides[index]) return; 7454 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 7455 if (imageEl) imageEl.removeAttribute('loading'); 7456}; 7457const preload = swiper => { 7458 if (!swiper || swiper.destroyed || !swiper.params) return; 7459 let amount = swiper.params.lazyPreloadPrevNext; 7460 const len = swiper.slides.length; 7461 if (!len || !amount || amount < 0) return; 7462 amount = Math.min(amount, len); 7463 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 7464 const activeIndex = swiper.activeIndex; 7465 if (swiper.params.grid && swiper.params.grid.rows > 1) { 7466 const activeColumn = activeIndex; 7467 const preloadColumns = [activeColumn - amount]; 7468 preloadColumns.push(...Array.from({ 7469 length: amount 7470 }).map((_, i) => { 7471 return activeColumn + slidesPerView + i; 7472 })); 7473 swiper.slides.forEach((slideEl, i) => { 7474 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 7475 }); 7476 return; 7477 } 7478 const slideIndexLastInView = activeIndex + slidesPerView - 1; 7479 if (swiper.params.rewind || swiper.params.loop) { 7480 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 7481 const realIndex = (i % len + len) % len; 7482 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 7483 } 7484 } else { 7485 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 7486 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 7487 unlazy(swiper, i); 7488 } 7489 } 7490 } 7491}; 7492 7493function getActiveIndexByTranslate(swiper) { 7494 const { 7495 slidesGrid, 7496 params 7497 } = swiper; 7498 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7499 let activeIndex; 7500 for (let i = 0; i < slidesGrid.length; i += 1) { 7501 if (typeof slidesGrid[i + 1] !== 'undefined') { 7502 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 7503 activeIndex = i; 7504 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 7505 activeIndex = i + 1; 7506 } 7507 } else if (translate >= slidesGrid[i]) { 7508 activeIndex = i; 7509 } 7510 } 7511 // Normalize slideIndex 7512 if (params.normalizeSlideIndex) { 7513 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 7514 } 7515 return activeIndex; 7516} 7517function updateActiveIndex(newActiveIndex) { 7518 const swiper = this; 7519 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7520 const { 7521 snapGrid, 7522 params, 7523 activeIndex: previousIndex, 7524 realIndex: previousRealIndex, 7525 snapIndex: previousSnapIndex 7526 } = swiper; 7527 let activeIndex = newActiveIndex; 7528 let snapIndex; 7529 const getVirtualRealIndex = aIndex => { 7530 let realIndex = aIndex - swiper.virtual.slidesBefore; 7531 if (realIndex < 0) { 7532 realIndex = swiper.virtual.slides.length + realIndex; 7533 } 7534 if (realIndex >= swiper.virtual.slides.length) { 7535 realIndex -= swiper.virtual.slides.length; 7536 } 7537 return realIndex; 7538 }; 7539 if (typeof activeIndex === 'undefined') { 7540 activeIndex = getActiveIndexByTranslate(swiper); 7541 } 7542 if (snapGrid.indexOf(translate) >= 0) { 7543 snapIndex = snapGrid.indexOf(translate); 7544 } else { 7545 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 7546 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 7547 } 7548 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7549 if (activeIndex === previousIndex && !swiper.params.loop) { 7550 if (snapIndex !== previousSnapIndex) { 7551 swiper.snapIndex = snapIndex; 7552 swiper.emit('snapIndexChange'); 7553 } 7554 return; 7555 } 7556 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 7557 swiper.realIndex = getVirtualRealIndex(activeIndex); 7558 return; 7559 } 7560 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7561 7562 // Get real index 7563 let realIndex; 7564 if (swiper.virtual && params.virtual.enabled && params.loop) { 7565 realIndex = getVirtualRealIndex(activeIndex); 7566 } else if (gridEnabled) { 7567 const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); 7568 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 7569 if (Number.isNaN(activeSlideIndex)) { 7570 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 7571 } 7572 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 7573 } else if (swiper.slides[activeIndex]) { 7574 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 7575 if (slideIndex) { 7576 realIndex = parseInt(slideIndex, 10); 7577 } else { 7578 realIndex = activeIndex; 7579 } 7580 } else { 7581 realIndex = activeIndex; 7582 } 7583 Object.assign(swiper, { 7584 previousSnapIndex, 7585 snapIndex, 7586 previousRealIndex, 7587 realIndex, 7588 previousIndex, 7589 activeIndex 7590 }); 7591 if (swiper.initialized) { 7592 preload(swiper); 7593 } 7594 swiper.emit('activeIndexChange'); 7595 swiper.emit('snapIndexChange'); 7596 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 7597 if (previousRealIndex !== realIndex) { 7598 swiper.emit('realIndexChange'); 7599 } 7600 swiper.emit('slideChange'); 7601 } 7602} 7603 7604function updateClickedSlide(el, path) { 7605 const swiper = this; 7606 const params = swiper.params; 7607 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 7608 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 7609 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 7610 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 7611 slide = pathEl; 7612 } 7613 }); 7614 } 7615 let slideFound = false; 7616 let slideIndex; 7617 if (slide) { 7618 for (let i = 0; i < swiper.slides.length; i += 1) { 7619 if (swiper.slides[i] === slide) { 7620 slideFound = true; 7621 slideIndex = i; 7622 break; 7623 } 7624 } 7625 } 7626 if (slide && slideFound) { 7627 swiper.clickedSlide = slide; 7628 if (swiper.virtual && swiper.params.virtual.enabled) { 7629 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 7630 } else { 7631 swiper.clickedIndex = slideIndex; 7632 } 7633 } else { 7634 swiper.clickedSlide = undefined; 7635 swiper.clickedIndex = undefined; 7636 return; 7637 } 7638 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 7639 swiper.slideToClickedSlide(); 7640 } 7641} 7642 7643var update = { 7644 updateSize, 7645 updateSlides, 7646 updateAutoHeight, 7647 updateSlidesOffset, 7648 updateSlidesProgress, 7649 updateProgress, 7650 updateSlidesClasses, 7651 updateActiveIndex, 7652 updateClickedSlide 7653}; 7654 7655function getSwiperTranslate(axis) { 7656 if (axis === void 0) { 7657 axis = this.isHorizontal() ? 'x' : 'y'; 7658 } 7659 const swiper = this; 7660 const { 7661 params, 7662 rtlTranslate: rtl, 7663 translate, 7664 wrapperEl 7665 } = swiper; 7666 if (params.virtualTranslate) { 7667 return rtl ? -translate : translate; 7668 } 7669 if (params.cssMode) { 7670 return translate; 7671 } 7672 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(wrapperEl, axis); 7673 currentTranslate += swiper.cssOverflowAdjustment(); 7674 if (rtl) currentTranslate = -currentTranslate; 7675 return currentTranslate || 0; 7676} 7677 7678function setTranslate(translate, byController) { 7679 const swiper = this; 7680 const { 7681 rtlTranslate: rtl, 7682 params, 7683 wrapperEl, 7684 progress 7685 } = swiper; 7686 let x = 0; 7687 let y = 0; 7688 const z = 0; 7689 if (swiper.isHorizontal()) { 7690 x = rtl ? -translate : translate; 7691 } else { 7692 y = translate; 7693 } 7694 if (params.roundLengths) { 7695 x = Math.floor(x); 7696 y = Math.floor(y); 7697 } 7698 swiper.previousTranslate = swiper.translate; 7699 swiper.translate = swiper.isHorizontal() ? x : y; 7700 if (params.cssMode) { 7701 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 7702 } else if (!params.virtualTranslate) { 7703 if (swiper.isHorizontal()) { 7704 x -= swiper.cssOverflowAdjustment(); 7705 } else { 7706 y -= swiper.cssOverflowAdjustment(); 7707 } 7708 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 7709 } 7710 7711 // Check if we need to update progress 7712 let newProgress; 7713 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7714 if (translatesDiff === 0) { 7715 newProgress = 0; 7716 } else { 7717 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 7718 } 7719 if (newProgress !== progress) { 7720 swiper.updateProgress(translate); 7721 } 7722 swiper.emit('setTranslate', swiper.translate, byController); 7723} 7724 7725function minTranslate() { 7726 return -this.snapGrid[0]; 7727} 7728 7729function maxTranslate() { 7730 return -this.snapGrid[this.snapGrid.length - 1]; 7731} 7732 7733function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 7734 if (translate === void 0) { 7735 translate = 0; 7736 } 7737 if (speed === void 0) { 7738 speed = this.params.speed; 7739 } 7740 if (runCallbacks === void 0) { 7741 runCallbacks = true; 7742 } 7743 if (translateBounds === void 0) { 7744 translateBounds = true; 7745 } 7746 const swiper = this; 7747 const { 7748 params, 7749 wrapperEl 7750 } = swiper; 7751 if (swiper.animating && params.preventInteractionOnTransition) { 7752 return false; 7753 } 7754 const minTranslate = swiper.minTranslate(); 7755 const maxTranslate = swiper.maxTranslate(); 7756 let newTranslate; 7757 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 7758 7759 // Update progress 7760 swiper.updateProgress(newTranslate); 7761 if (params.cssMode) { 7762 const isH = swiper.isHorizontal(); 7763 if (speed === 0) { 7764 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 7765 } else { 7766 if (!swiper.support.smoothScroll) { 7767 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)({ 7768 swiper, 7769 targetPosition: -newTranslate, 7770 side: isH ? 'left' : 'top' 7771 }); 7772 return true; 7773 } 7774 wrapperEl.scrollTo({ 7775 [isH ? 'left' : 'top']: -newTranslate, 7776 behavior: 'smooth' 7777 }); 7778 } 7779 return true; 7780 } 7781 if (speed === 0) { 7782 swiper.setTransition(0); 7783 swiper.setTranslate(newTranslate); 7784 if (runCallbacks) { 7785 swiper.emit('beforeTransitionStart', speed, internal); 7786 swiper.emit('transitionEnd'); 7787 } 7788 } else { 7789 swiper.setTransition(speed); 7790 swiper.setTranslate(newTranslate); 7791 if (runCallbacks) { 7792 swiper.emit('beforeTransitionStart', speed, internal); 7793 swiper.emit('transitionStart'); 7794 } 7795 if (!swiper.animating) { 7796 swiper.animating = true; 7797 if (!swiper.onTranslateToWrapperTransitionEnd) { 7798 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 7799 if (!swiper || swiper.destroyed) return; 7800 if (e.target !== this) return; 7801 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7802 swiper.onTranslateToWrapperTransitionEnd = null; 7803 delete swiper.onTranslateToWrapperTransitionEnd; 7804 swiper.animating = false; 7805 if (runCallbacks) { 7806 swiper.emit('transitionEnd'); 7807 } 7808 }; 7809 } 7810 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7811 } 7812 } 7813 return true; 7814} 7815 7816var translate = { 7817 getTranslate: getSwiperTranslate, 7818 setTranslate, 7819 minTranslate, 7820 maxTranslate, 7821 translateTo 7822}; 7823 7824function setTransition(duration, byController) { 7825 const swiper = this; 7826 if (!swiper.params.cssMode) { 7827 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 7828 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 7829 } 7830 swiper.emit('setTransition', duration, byController); 7831} 7832 7833function transitionEmit(_ref) { 7834 let { 7835 swiper, 7836 runCallbacks, 7837 direction, 7838 step 7839 } = _ref; 7840 const { 7841 activeIndex, 7842 previousIndex 7843 } = swiper; 7844 let dir = direction; 7845 if (!dir) { 7846 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 7847 } 7848 swiper.emit(`transition${step}`); 7849 if (runCallbacks && dir === 'reset') { 7850 swiper.emit(`slideResetTransition${step}`); 7851 } else if (runCallbacks && activeIndex !== previousIndex) { 7852 swiper.emit(`slideChangeTransition${step}`); 7853 if (dir === 'next') { 7854 swiper.emit(`slideNextTransition${step}`); 7855 } else { 7856 swiper.emit(`slidePrevTransition${step}`); 7857 } 7858 } 7859} 7860 7861function transitionStart(runCallbacks, direction) { 7862 if (runCallbacks === void 0) { 7863 runCallbacks = true; 7864 } 7865 const swiper = this; 7866 const { 7867 params 7868 } = swiper; 7869 if (params.cssMode) return; 7870 if (params.autoHeight) { 7871 swiper.updateAutoHeight(); 7872 } 7873 transitionEmit({ 7874 swiper, 7875 runCallbacks, 7876 direction, 7877 step: 'Start' 7878 }); 7879} 7880 7881function transitionEnd(runCallbacks, direction) { 7882 if (runCallbacks === void 0) { 7883 runCallbacks = true; 7884 } 7885 const swiper = this; 7886 const { 7887 params 7888 } = swiper; 7889 swiper.animating = false; 7890 if (params.cssMode) return; 7891 swiper.setTransition(0); 7892 transitionEmit({ 7893 swiper, 7894 runCallbacks, 7895 direction, 7896 step: 'End' 7897 }); 7898} 7899 7900var transition = { 7901 setTransition, 7902 transitionStart, 7903 transitionEnd 7904}; 7905 7906function slideTo(index, speed, runCallbacks, internal, initial) { 7907 if (index === void 0) { 7908 index = 0; 7909 } 7910 if (runCallbacks === void 0) { 7911 runCallbacks = true; 7912 } 7913 if (typeof index === 'string') { 7914 index = parseInt(index, 10); 7915 } 7916 const swiper = this; 7917 let slideIndex = index; 7918 if (slideIndex < 0) slideIndex = 0; 7919 const { 7920 params, 7921 snapGrid, 7922 slidesGrid, 7923 previousIndex, 7924 activeIndex, 7925 rtlTranslate: rtl, 7926 wrapperEl, 7927 enabled 7928 } = swiper; 7929 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 7930 return false; 7931 } 7932 if (typeof speed === 'undefined') { 7933 speed = swiper.params.speed; 7934 } 7935 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 7936 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 7937 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7938 const translate = -snapGrid[snapIndex]; 7939 // Normalize slideIndex 7940 if (params.normalizeSlideIndex) { 7941 for (let i = 0; i < slidesGrid.length; i += 1) { 7942 const normalizedTranslate = -Math.floor(translate * 100); 7943 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 7944 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 7945 if (typeof slidesGrid[i + 1] !== 'undefined') { 7946 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 7947 slideIndex = i; 7948 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 7949 slideIndex = i + 1; 7950 } 7951 } else if (normalizedTranslate >= normalizedGrid) { 7952 slideIndex = i; 7953 } 7954 } 7955 } 7956 // Directions locks 7957 if (swiper.initialized && slideIndex !== activeIndex) { 7958 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 7959 return false; 7960 } 7961 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 7962 if ((activeIndex || 0) !== slideIndex) { 7963 return false; 7964 } 7965 } 7966 } 7967 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 7968 swiper.emit('beforeSlideChangeStart'); 7969 } 7970 7971 // Update progress 7972 swiper.updateProgress(translate); 7973 let direction; 7974 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 7975 7976 // initial virtual 7977 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7978 const isInitialVirtual = isVirtual && initial; 7979 // Update Index 7980 if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { 7981 swiper.updateActiveIndex(slideIndex); 7982 // Update Height 7983 if (params.autoHeight) { 7984 swiper.updateAutoHeight(); 7985 } 7986 swiper.updateSlidesClasses(); 7987 if (params.effect !== 'slide') { 7988 swiper.setTranslate(translate); 7989 } 7990 if (direction !== 'reset') { 7991 swiper.transitionStart(runCallbacks, direction); 7992 swiper.transitionEnd(runCallbacks, direction); 7993 } 7994 return false; 7995 } 7996 if (params.cssMode) { 7997 const isH = swiper.isHorizontal(); 7998 const t = rtl ? translate : -translate; 7999 if (speed === 0) { 8000 if (isVirtual) { 8001 swiper.wrapperEl.style.scrollSnapType = 'none'; 8002 swiper._immediateVirtual = true; 8003 } 8004 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 8005 swiper._cssModeVirtualInitialSet = true; 8006 requestAnimationFrame(() => { 8007 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 8008 }); 8009 } else { 8010 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 8011 } 8012 if (isVirtual) { 8013 requestAnimationFrame(() => { 8014 swiper.wrapperEl.style.scrollSnapType = ''; 8015 swiper._immediateVirtual = false; 8016 }); 8017 } 8018 } else { 8019 if (!swiper.support.smoothScroll) { 8020 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)({ 8021 swiper, 8022 targetPosition: t, 8023 side: isH ? 'left' : 'top' 8024 }); 8025 return true; 8026 } 8027 wrapperEl.scrollTo({ 8028 [isH ? 'left' : 'top']: t, 8029 behavior: 'smooth' 8030 }); 8031 } 8032 return true; 8033 } 8034 const browser = getBrowser(); 8035 const isSafari = browser.isSafari; 8036 if (isVirtual && !initial && isSafari && swiper.isElement) { 8037 swiper.virtual.update(false, false, slideIndex); 8038 } 8039 swiper.setTransition(speed); 8040 swiper.setTranslate(translate); 8041 swiper.updateActiveIndex(slideIndex); 8042 swiper.updateSlidesClasses(); 8043 swiper.emit('beforeTransitionStart', speed, internal); 8044 swiper.transitionStart(runCallbacks, direction); 8045 if (speed === 0) { 8046 swiper.transitionEnd(runCallbacks, direction); 8047 } else if (!swiper.animating) { 8048 swiper.animating = true; 8049 if (!swiper.onSlideToWrapperTransitionEnd) { 8050 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 8051 if (!swiper || swiper.destroyed) return; 8052 if (e.target !== this) return; 8053 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 8054 swiper.onSlideToWrapperTransitionEnd = null; 8055 delete swiper.onSlideToWrapperTransitionEnd; 8056 swiper.transitionEnd(runCallbacks, direction); 8057 }; 8058 } 8059 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 8060 } 8061 return true; 8062} 8063 8064function slideToLoop(index, speed, runCallbacks, internal) { 8065 if (index === void 0) { 8066 index = 0; 8067 } 8068 if (runCallbacks === void 0) { 8069 runCallbacks = true; 8070 } 8071 if (typeof index === 'string') { 8072 const indexAsNumber = parseInt(index, 10); 8073 index = indexAsNumber; 8074 } 8075 const swiper = this; 8076 if (swiper.destroyed) return; 8077 if (typeof speed === 'undefined') { 8078 speed = swiper.params.speed; 8079 } 8080 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 8081 let newIndex = index; 8082 if (swiper.params.loop) { 8083 if (swiper.virtual && swiper.params.virtual.enabled) { 8084 // eslint-disable-next-line 8085 newIndex = newIndex + swiper.virtual.slidesBefore; 8086 } else { 8087 let targetSlideIndex; 8088 if (gridEnabled) { 8089 const slideIndex = newIndex * swiper.params.grid.rows; 8090 targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 8091 } else { 8092 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 8093 } 8094 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 8095 const { 8096 centeredSlides 8097 } = swiper.params; 8098 let slidesPerView = swiper.params.slidesPerView; 8099 if (slidesPerView === 'auto') { 8100 slidesPerView = swiper.slidesPerViewDynamic(); 8101 } else { 8102 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 8103 if (centeredSlides && slidesPerView % 2 === 0) { 8104 slidesPerView = slidesPerView + 1; 8105 } 8106 } 8107 let needLoopFix = cols - targetSlideIndex < slidesPerView; 8108 if (centeredSlides) { 8109 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 8110 } 8111 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 8112 needLoopFix = false; 8113 } 8114 if (needLoopFix) { 8115 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 8116 swiper.loopFix({ 8117 direction, 8118 slideTo: true, 8119 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 8120 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 8121 }); 8122 } 8123 if (gridEnabled) { 8124 const slideIndex = newIndex * swiper.params.grid.rows; 8125 newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 8126 } else { 8127 newIndex = swiper.getSlideIndexByData(newIndex); 8128 } 8129 } 8130 } 8131 requestAnimationFrame(() => { 8132 swiper.slideTo(newIndex, speed, runCallbacks, internal); 8133 }); 8134 return swiper; 8135} 8136 8137/* eslint no-unused-vars: "off" */ 8138function slideNext(speed, runCallbacks, internal) { 8139 if (runCallbacks === void 0) { 8140 runCallbacks = true; 8141 } 8142 const swiper = this; 8143 const { 8144 enabled, 8145 params, 8146 animating 8147 } = swiper; 8148 if (!enabled || swiper.destroyed) return swiper; 8149 if (typeof speed === 'undefined') { 8150 speed = swiper.params.speed; 8151 } 8152 let perGroup = params.slidesPerGroup; 8153 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 8154 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 8155 } 8156 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 8157 const isVirtual = swiper.virtual && params.virtual.enabled; 8158 if (params.loop) { 8159 if (animating && !isVirtual && params.loopPreventsSliding) return false; 8160 swiper.loopFix({ 8161 direction: 'next' 8162 }); 8163 // eslint-disable-next-line 8164 swiper._clientLeft = swiper.wrapperEl.clientLeft; 8165 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 8166 requestAnimationFrame(() => { 8167 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 8168 }); 8169 return true; 8170 } 8171 } 8172 if (params.rewind && swiper.isEnd) { 8173 return swiper.slideTo(0, speed, runCallbacks, internal); 8174 } 8175 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 8176} 8177 8178/* eslint no-unused-vars: "off" */ 8179function slidePrev(speed, runCallbacks, internal) { 8180 if (runCallbacks === void 0) { 8181 runCallbacks = true; 8182 } 8183 const swiper = this; 8184 const { 8185 params, 8186 snapGrid, 8187 slidesGrid, 8188 rtlTranslate, 8189 enabled, 8190 animating 8191 } = swiper; 8192 if (!enabled || swiper.destroyed) return swiper; 8193 if (typeof speed === 'undefined') { 8194 speed = swiper.params.speed; 8195 } 8196 const isVirtual = swiper.virtual && params.virtual.enabled; 8197 if (params.loop) { 8198 if (animating && !isVirtual && params.loopPreventsSliding) return false; 8199 swiper.loopFix({ 8200 direction: 'prev' 8201 }); 8202 // eslint-disable-next-line 8203 swiper._clientLeft = swiper.wrapperEl.clientLeft; 8204 } 8205 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 8206 function normalize(val) { 8207 if (val < 0) return -Math.floor(Math.abs(val)); 8208 return Math.floor(val); 8209 } 8210 const normalizedTranslate = normalize(translate); 8211 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 8212 const isFreeMode = params.freeMode && params.freeMode.enabled; 8213 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 8214 if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { 8215 let prevSnapIndex; 8216 snapGrid.forEach((snap, snapIndex) => { 8217 if (normalizedTranslate >= snap) { 8218 // prevSnap = snap; 8219 prevSnapIndex = snapIndex; 8220 } 8221 }); 8222 if (typeof prevSnapIndex !== 'undefined') { 8223 prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 8224 } 8225 } 8226 let prevIndex = 0; 8227 if (typeof prevSnap !== 'undefined') { 8228 prevIndex = slidesGrid.indexOf(prevSnap); 8229 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 8230 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 8231 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 8232 prevIndex = Math.max(prevIndex, 0); 8233 } 8234 } 8235 if (params.rewind && swiper.isBeginning) { 8236 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 8237 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 8238 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 8239 requestAnimationFrame(() => { 8240 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 8241 }); 8242 return true; 8243 } 8244 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 8245} 8246 8247/* eslint no-unused-vars: "off" */ 8248function slideReset(speed, runCallbacks, internal) { 8249 if (runCallbacks === void 0) { 8250 runCallbacks = true; 8251 } 8252 const swiper = this; 8253 if (swiper.destroyed) return; 8254 if (typeof speed === 'undefined') { 8255 speed = swiper.params.speed; 8256 } 8257 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 8258} 8259 8260/* eslint no-unused-vars: "off" */ 8261function slideToClosest(speed, runCallbacks, internal, threshold) { 8262 if (runCallbacks === void 0) { 8263 runCallbacks = true; 8264 } 8265 if (threshold === void 0) { 8266 threshold = 0.5; 8267 } 8268 const swiper = this; 8269 if (swiper.destroyed) return; 8270 if (typeof speed === 'undefined') { 8271 speed = swiper.params.speed; 8272 } 8273 let index = swiper.activeIndex; 8274 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 8275 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 8276 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 8277 if (translate >= swiper.snapGrid[snapIndex]) { 8278 // The current translate is on or after the current snap index, so the choice 8279 // is between the current index and the one after it. 8280 const currentSnap = swiper.snapGrid[snapIndex]; 8281 const nextSnap = swiper.snapGrid[snapIndex + 1]; 8282 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 8283 index += swiper.params.slidesPerGroup; 8284 } 8285 } else { 8286 // The current translate is before the current snap index, so the choice 8287 // is between the current index and the one before it. 8288 const prevSnap = swiper.snapGrid[snapIndex - 1]; 8289 const currentSnap = swiper.snapGrid[snapIndex]; 8290 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 8291 index -= swiper.params.slidesPerGroup; 8292 } 8293 } 8294 index = Math.max(index, 0); 8295 index = Math.min(index, swiper.slidesGrid.length - 1); 8296 return swiper.slideTo(index, speed, runCallbacks, internal); 8297} 8298 8299function slideToClickedSlide() { 8300 const swiper = this; 8301 if (swiper.destroyed) return; 8302 const { 8303 params, 8304 slidesEl 8305 } = swiper; 8306 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 8307 let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); 8308 let realIndex; 8309 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 8310 const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 8311 if (params.loop) { 8312 if (swiper.animating) return; 8313 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 8314 if (params.centeredSlides) { 8315 swiper.slideToLoop(realIndex); 8316 } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { 8317 swiper.loopFix(); 8318 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 8319 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 8320 swiper.slideTo(slideToIndex); 8321 }); 8322 } else { 8323 swiper.slideTo(slideToIndex); 8324 } 8325 } else { 8326 swiper.slideTo(slideToIndex); 8327 } 8328} 8329 8330var slide = { 8331 slideTo, 8332 slideToLoop, 8333 slideNext, 8334 slidePrev, 8335 slideReset, 8336 slideToClosest, 8337 slideToClickedSlide 8338}; 8339 8340function loopCreate(slideRealIndex, initial) { 8341 const swiper = this; 8342 const { 8343 params, 8344 slidesEl 8345 } = swiper; 8346 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 8347 const initSlides = () => { 8348 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 8349 slides.forEach((el, index) => { 8350 el.setAttribute('data-swiper-slide-index', index); 8351 }); 8352 }; 8353 const clearBlankSlides = () => { 8354 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideBlankClass}`); 8355 slides.forEach(el => { 8356 el.remove(); 8357 }); 8358 if (slides.length > 0) { 8359 swiper.recalcSlides(); 8360 swiper.updateSlides(); 8361 } 8362 }; 8363 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8364 if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { 8365 clearBlankSlides(); 8366 } 8367 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 8368 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 8369 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 8370 const addBlankSlides = amountOfSlides => { 8371 for (let i = 0; i < amountOfSlides; i += 1) { 8372 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]); 8373 swiper.slidesEl.append(slideEl); 8374 } 8375 }; 8376 if (shouldFillGroup) { 8377 if (params.loopAddBlankSlides) { 8378 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 8379 addBlankSlides(slidesToAdd); 8380 swiper.recalcSlides(); 8381 swiper.updateSlides(); 8382 } else { 8383 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('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)'); 8384 } 8385 initSlides(); 8386 } else if (shouldFillGrid) { 8387 if (params.loopAddBlankSlides) { 8388 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 8389 addBlankSlides(slidesToAdd); 8390 swiper.recalcSlides(); 8391 swiper.updateSlides(); 8392 } else { 8393 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('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)'); 8394 } 8395 initSlides(); 8396 } else { 8397 initSlides(); 8398 } 8399 swiper.loopFix({ 8400 slideRealIndex, 8401 direction: params.centeredSlides ? undefined : 'next', 8402 initial 8403 }); 8404} 8405 8406function loopFix(_temp) { 8407 let { 8408 slideRealIndex, 8409 slideTo = true, 8410 direction, 8411 setTranslate, 8412 activeSlideIndex, 8413 initial, 8414 byController, 8415 byMousewheel 8416 } = _temp === void 0 ? {} : _temp; 8417 const swiper = this; 8418 if (!swiper.params.loop) return; 8419 swiper.emit('beforeLoopFix'); 8420 const { 8421 slides, 8422 allowSlidePrev, 8423 allowSlideNext, 8424 slidesEl, 8425 params 8426 } = swiper; 8427 const { 8428 centeredSlides, 8429 initialSlide 8430 } = params; 8431 swiper.allowSlidePrev = true; 8432 swiper.allowSlideNext = true; 8433 if (swiper.virtual && params.virtual.enabled) { 8434 if (slideTo) { 8435 if (!params.centeredSlides && swiper.snapIndex === 0) { 8436 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 8437 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 8438 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 8439 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 8440 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 8441 } 8442 } 8443 swiper.allowSlidePrev = allowSlidePrev; 8444 swiper.allowSlideNext = allowSlideNext; 8445 swiper.emit('loopFix'); 8446 return; 8447 } 8448 let slidesPerView = params.slidesPerView; 8449 if (slidesPerView === 'auto') { 8450 slidesPerView = swiper.slidesPerViewDynamic(); 8451 } else { 8452 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 8453 if (centeredSlides && slidesPerView % 2 === 0) { 8454 slidesPerView = slidesPerView + 1; 8455 } 8456 } 8457 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 8458 let loopedSlides = centeredSlides ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; 8459 if (loopedSlides % slidesPerGroup !== 0) { 8460 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 8461 } 8462 loopedSlides += params.loopAdditionalSlides; 8463 swiper.loopedSlides = loopedSlides; 8464 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8465 if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8466 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('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'); 8467 } else if (gridEnabled && params.grid.fill === 'row') { 8468 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 8469 } 8470 const prependSlidesIndexes = []; 8471 const appendSlidesIndexes = []; 8472 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 8473 const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides; 8474 let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; 8475 if (typeof activeSlideIndex === 'undefined') { 8476 activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); 8477 } else { 8478 activeIndex = activeSlideIndex; 8479 } 8480 const isNext = direction === 'next' || !direction; 8481 const isPrev = direction === 'prev' || !direction; 8482 let slidesPrepended = 0; 8483 let slidesAppended = 0; 8484 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 8485 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 8486 // prepend last slides before start 8487 if (activeColIndexWithShift < loopedSlides) { 8488 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 8489 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 8490 const index = i - Math.floor(i / cols) * cols; 8491 if (gridEnabled) { 8492 const colIndexToPrepend = cols - index - 1; 8493 for (let i = slides.length - 1; i >= 0; i -= 1) { 8494 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 8495 } 8496 // slides.forEach((slide, slideIndex) => { 8497 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 8498 // }); 8499 } else { 8500 prependSlidesIndexes.push(cols - index - 1); 8501 } 8502 } 8503 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 8504 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 8505 if (isInitialOverflow) { 8506 slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); 8507 } 8508 for (let i = 0; i < slidesAppended; i += 1) { 8509 const index = i - Math.floor(i / cols) * cols; 8510 if (gridEnabled) { 8511 slides.forEach((slide, slideIndex) => { 8512 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 8513 }); 8514 } else { 8515 appendSlidesIndexes.push(index); 8516 } 8517 } 8518 } 8519 swiper.__preventObserver__ = true; 8520 requestAnimationFrame(() => { 8521 swiper.__preventObserver__ = false; 8522 }); 8523 if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8524 if (appendSlidesIndexes.includes(activeSlideIndex)) { 8525 appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); 8526 } 8527 if (prependSlidesIndexes.includes(activeSlideIndex)) { 8528 prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); 8529 } 8530 } 8531 if (isPrev) { 8532 prependSlidesIndexes.forEach(index => { 8533 slides[index].swiperLoopMoveDOM = true; 8534 slidesEl.prepend(slides[index]); 8535 slides[index].swiperLoopMoveDOM = false; 8536 }); 8537 } 8538 if (isNext) { 8539 appendSlidesIndexes.forEach(index => { 8540 slides[index].swiperLoopMoveDOM = true; 8541 slidesEl.append(slides[index]); 8542 slides[index].swiperLoopMoveDOM = false; 8543 }); 8544 } 8545 swiper.recalcSlides(); 8546 if (params.slidesPerView === 'auto') { 8547 swiper.updateSlides(); 8548 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 8549 swiper.slides.forEach((slide, slideIndex) => { 8550 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 8551 }); 8552 } 8553 if (params.watchSlidesProgress) { 8554 swiper.updateSlidesOffset(); 8555 } 8556 if (slideTo) { 8557 if (prependSlidesIndexes.length > 0 && isPrev) { 8558 if (typeof slideRealIndex === 'undefined') { 8559 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8560 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 8561 const diff = newSlideTranslate - currentSlideTranslate; 8562 if (byMousewheel) { 8563 swiper.setTranslate(swiper.translate - diff); 8564 } else { 8565 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 8566 if (setTranslate) { 8567 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8568 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8569 } 8570 } 8571 } else { 8572 if (setTranslate) { 8573 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 8574 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 8575 swiper.touchEventsData.currentTranslate = swiper.translate; 8576 } 8577 } 8578 } else if (appendSlidesIndexes.length > 0 && isNext) { 8579 if (typeof slideRealIndex === 'undefined') { 8580 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8581 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 8582 const diff = newSlideTranslate - currentSlideTranslate; 8583 if (byMousewheel) { 8584 swiper.setTranslate(swiper.translate - diff); 8585 } else { 8586 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 8587 if (setTranslate) { 8588 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8589 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8590 } 8591 } 8592 } else { 8593 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 8594 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 8595 } 8596 } 8597 } 8598 swiper.allowSlidePrev = allowSlidePrev; 8599 swiper.allowSlideNext = allowSlideNext; 8600 if (swiper.controller && swiper.controller.control && !byController) { 8601 const loopParams = { 8602 slideRealIndex, 8603 direction, 8604 setTranslate, 8605 activeSlideIndex, 8606 byController: true 8607 }; 8608 if (Array.isArray(swiper.controller.control)) { 8609 swiper.controller.control.forEach(c => { 8610 if (!c.destroyed && c.params.loop) c.loopFix({ 8611 ...loopParams, 8612 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 8613 }); 8614 }); 8615 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 8616 swiper.controller.control.loopFix({ 8617 ...loopParams, 8618 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 8619 }); 8620 } 8621 } 8622 swiper.emit('loopFix'); 8623} 8624 8625function loopDestroy() { 8626 const swiper = this; 8627 const { 8628 params, 8629 slidesEl 8630 } = swiper; 8631 if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; 8632 swiper.recalcSlides(); 8633 const newSlidesOrder = []; 8634 swiper.slides.forEach(slideEl => { 8635 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 8636 newSlidesOrder[index] = slideEl; 8637 }); 8638 swiper.slides.forEach(slideEl => { 8639 slideEl.removeAttribute('data-swiper-slide-index'); 8640 }); 8641 newSlidesOrder.forEach(slideEl => { 8642 slidesEl.append(slideEl); 8643 }); 8644 swiper.recalcSlides(); 8645 swiper.slideTo(swiper.realIndex, 0); 8646} 8647 8648var loop = { 8649 loopCreate, 8650 loopFix, 8651 loopDestroy 8652}; 8653 8654function setGrabCursor(moving) { 8655 const swiper = this; 8656 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 8657 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 8658 if (swiper.isElement) { 8659 swiper.__preventObserver__ = true; 8660 } 8661 el.style.cursor = 'move'; 8662 el.style.cursor = moving ? 'grabbing' : 'grab'; 8663 if (swiper.isElement) { 8664 requestAnimationFrame(() => { 8665 swiper.__preventObserver__ = false; 8666 }); 8667 } 8668} 8669 8670function unsetGrabCursor() { 8671 const swiper = this; 8672 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 8673 return; 8674 } 8675 if (swiper.isElement) { 8676 swiper.__preventObserver__ = true; 8677 } 8678 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 8679 if (swiper.isElement) { 8680 requestAnimationFrame(() => { 8681 swiper.__preventObserver__ = false; 8682 }); 8683 } 8684} 8685 8686var grabCursor = { 8687 setGrabCursor, 8688 unsetGrabCursor 8689}; 8690 8691// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 8692function closestElement(selector, base) { 8693 if (base === void 0) { 8694 base = this; 8695 } 8696 function __closestFrom(el) { 8697 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; 8698 if (el.assignedSlot) el = el.assignedSlot; 8699 const found = el.closest(selector); 8700 if (!found && !el.getRootNode) { 8701 return null; 8702 } 8703 return found || __closestFrom(el.getRootNode().host); 8704 } 8705 return __closestFrom(base); 8706} 8707function preventEdgeSwipe(swiper, event, startX) { 8708 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8709 const { 8710 params 8711 } = swiper; 8712 const edgeSwipeDetection = params.edgeSwipeDetection; 8713 const edgeSwipeThreshold = params.edgeSwipeThreshold; 8714 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 8715 if (edgeSwipeDetection === 'prevent') { 8716 event.preventDefault(); 8717 return true; 8718 } 8719 return false; 8720 } 8721 return true; 8722} 8723function onTouchStart(event) { 8724 const swiper = this; 8725 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8726 let e = event; 8727 if (e.originalEvent) e = e.originalEvent; 8728 const data = swiper.touchEventsData; 8729 if (e.type === 'pointerdown') { 8730 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 8731 return; 8732 } 8733 data.pointerId = e.pointerId; 8734 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 8735 data.touchId = e.targetTouches[0].identifier; 8736 } 8737 if (e.type === 'touchstart') { 8738 // don't proceed touch event 8739 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 8740 return; 8741 } 8742 const { 8743 params, 8744 touches, 8745 enabled 8746 } = swiper; 8747 if (!enabled) return; 8748 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8749 if (swiper.animating && params.preventInteractionOnTransition) { 8750 return; 8751 } 8752 if (!swiper.animating && params.cssMode && params.loop) { 8753 swiper.loopFix(); 8754 } 8755 let targetEl = e.target; 8756 if (params.touchEventsTarget === 'wrapper') { 8757 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(targetEl, swiper.wrapperEl)) return; 8758 } 8759 if ('which' in e && e.which === 3) return; 8760 if ('button' in e && e.button > 0) return; 8761 if (data.isTouched && data.isMoved) return; 8762 8763 // change target el for shadow root component 8764 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 8765 // eslint-disable-next-line 8766 const eventPath = e.composedPath ? e.composedPath() : e.path; 8767 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 8768 targetEl = eventPath[0]; 8769 } 8770 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 8771 const isTargetShadow = !!(e.target && e.target.shadowRoot); 8772 8773 // use closestElement for shadow root element to get the actual closest for nested shadow root element 8774 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 8775 swiper.allowClick = true; 8776 return; 8777 } 8778 if (params.swipeHandler) { 8779 if (!targetEl.closest(params.swipeHandler)) return; 8780 } 8781 touches.currentX = e.pageX; 8782 touches.currentY = e.pageY; 8783 const startX = touches.currentX; 8784 const startY = touches.currentY; 8785 8786 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 8787 8788 if (!preventEdgeSwipe(swiper, e, startX)) { 8789 return; 8790 } 8791 Object.assign(data, { 8792 isTouched: true, 8793 isMoved: false, 8794 allowTouchCallbacks: true, 8795 isScrolling: undefined, 8796 startMoving: undefined 8797 }); 8798 touches.startX = startX; 8799 touches.startY = startY; 8800 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 8801 swiper.allowClick = true; 8802 swiper.updateSize(); 8803 swiper.swipeDirection = undefined; 8804 if (params.threshold > 0) data.allowThresholdMove = false; 8805 let preventDefault = true; 8806 if (targetEl.matches(data.focusableElements)) { 8807 preventDefault = false; 8808 if (targetEl.nodeName === 'SELECT') { 8809 data.isTouched = false; 8810 } 8811 } 8812 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { 8813 document.activeElement.blur(); 8814 } 8815 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 8816 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 8817 e.preventDefault(); 8818 } 8819 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 8820 swiper.freeMode.onTouchStart(); 8821 } 8822 swiper.emit('touchStart', e); 8823} 8824 8825function onTouchMove(event) { 8826 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8827 const swiper = this; 8828 const data = swiper.touchEventsData; 8829 const { 8830 params, 8831 touches, 8832 rtlTranslate: rtl, 8833 enabled 8834 } = swiper; 8835 if (!enabled) return; 8836 if (!params.simulateTouch && event.pointerType === 'mouse') return; 8837 let e = event; 8838 if (e.originalEvent) e = e.originalEvent; 8839 if (e.type === 'pointermove') { 8840 if (data.touchId !== null) return; // return from pointer if we use touch 8841 const id = e.pointerId; 8842 if (id !== data.pointerId) return; 8843 } 8844 let targetTouch; 8845 if (e.type === 'touchmove') { 8846 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 8847 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8848 } else { 8849 targetTouch = e; 8850 } 8851 if (!data.isTouched) { 8852 if (data.startMoving && data.isScrolling) { 8853 swiper.emit('touchMoveOpposite', e); 8854 } 8855 return; 8856 } 8857 const pageX = targetTouch.pageX; 8858 const pageY = targetTouch.pageY; 8859 if (e.preventedByNestedSwiper) { 8860 touches.startX = pageX; 8861 touches.startY = pageY; 8862 return; 8863 } 8864 if (!swiper.allowTouchMove) { 8865 if (!e.target.matches(data.focusableElements)) { 8866 swiper.allowClick = false; 8867 } 8868 if (data.isTouched) { 8869 Object.assign(touches, { 8870 startX: pageX, 8871 startY: pageY, 8872 currentX: pageX, 8873 currentY: pageY 8874 }); 8875 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 8876 } 8877 return; 8878 } 8879 if (params.touchReleaseOnEdges && !params.loop) { 8880 if (swiper.isVertical()) { 8881 // Vertical 8882 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 8883 data.isTouched = false; 8884 data.isMoved = false; 8885 return; 8886 } 8887 } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { 8888 return; 8889 } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { 8890 return; 8891 } 8892 } 8893 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { 8894 document.activeElement.blur(); 8895 } 8896 if (document.activeElement) { 8897 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 8898 data.isMoved = true; 8899 swiper.allowClick = false; 8900 return; 8901 } 8902 } 8903 if (data.allowTouchCallbacks) { 8904 swiper.emit('touchMove', e); 8905 } 8906 touches.previousX = touches.currentX; 8907 touches.previousY = touches.currentY; 8908 touches.currentX = pageX; 8909 touches.currentY = pageY; 8910 const diffX = touches.currentX - touches.startX; 8911 const diffY = touches.currentY - touches.startY; 8912 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 8913 if (typeof data.isScrolling === 'undefined') { 8914 let touchAngle; 8915 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 8916 data.isScrolling = false; 8917 } else { 8918 // eslint-disable-next-line 8919 if (diffX * diffX + diffY * diffY >= 25) { 8920 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 8921 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 8922 } 8923 } 8924 } 8925 if (data.isScrolling) { 8926 swiper.emit('touchMoveOpposite', e); 8927 } 8928 if (typeof data.startMoving === 'undefined') { 8929 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 8930 data.startMoving = true; 8931 } 8932 } 8933 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 8934 data.isTouched = false; 8935 return; 8936 } 8937 if (!data.startMoving) { 8938 return; 8939 } 8940 swiper.allowClick = false; 8941 if (!params.cssMode && e.cancelable) { 8942 e.preventDefault(); 8943 } 8944 if (params.touchMoveStopPropagation && !params.nested) { 8945 e.stopPropagation(); 8946 } 8947 let diff = swiper.isHorizontal() ? diffX : diffY; 8948 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 8949 if (params.oneWayMovement) { 8950 diff = Math.abs(diff) * (rtl ? 1 : -1); 8951 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 8952 } 8953 touches.diff = diff; 8954 diff *= params.touchRatio; 8955 if (rtl) { 8956 diff = -diff; 8957 touchesDiff = -touchesDiff; 8958 } 8959 const prevTouchesDirection = swiper.touchesDirection; 8960 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 8961 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 8962 const isLoop = swiper.params.loop && !params.cssMode; 8963 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 8964 if (!data.isMoved) { 8965 if (isLoop && allowLoopFix) { 8966 swiper.loopFix({ 8967 direction: swiper.swipeDirection 8968 }); 8969 } 8970 data.startTranslate = swiper.getTranslate(); 8971 swiper.setTransition(0); 8972 if (swiper.animating) { 8973 const evt = new window.CustomEvent('transitionend', { 8974 bubbles: true, 8975 cancelable: true, 8976 detail: { 8977 bySwiperTouchMove: true 8978 } 8979 }); 8980 swiper.wrapperEl.dispatchEvent(evt); 8981 } 8982 data.allowMomentumBounce = false; 8983 // Grab Cursor 8984 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8985 swiper.setGrabCursor(true); 8986 } 8987 swiper.emit('sliderFirstMove', e); 8988 } 8989 let loopFixed; 8990 new Date().getTime(); 8991 if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 8992 Object.assign(touches, { 8993 startX: pageX, 8994 startY: pageY, 8995 currentX: pageX, 8996 currentY: pageY, 8997 startTranslate: data.currentTranslate 8998 }); 8999 data.loopSwapReset = true; 9000 data.startTranslate = data.currentTranslate; 9001 return; 9002 } 9003 swiper.emit('sliderMove', e); 9004 data.isMoved = true; 9005 data.currentTranslate = diff + data.startTranslate; 9006 let disableParentSwiper = true; 9007 let resistanceRatio = params.resistanceRatio; 9008 if (params.touchReleaseOnEdges) { 9009 resistanceRatio = 0; 9010 } 9011 if (diff > 0) { 9012 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())) { 9013 swiper.loopFix({ 9014 direction: 'prev', 9015 setTranslate: true, 9016 activeSlideIndex: 0 9017 }); 9018 } 9019 if (data.currentTranslate > swiper.minTranslate()) { 9020 disableParentSwiper = false; 9021 if (params.resistance) { 9022 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 9023 } 9024 } 9025 } else if (diff < 0) { 9026 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())) { 9027 swiper.loopFix({ 9028 direction: 'next', 9029 setTranslate: true, 9030 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 9031 }); 9032 } 9033 if (data.currentTranslate < swiper.maxTranslate()) { 9034 disableParentSwiper = false; 9035 if (params.resistance) { 9036 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 9037 } 9038 } 9039 } 9040 if (disableParentSwiper) { 9041 e.preventedByNestedSwiper = true; 9042 } 9043 9044 // Directions locks 9045 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 9046 data.currentTranslate = data.startTranslate; 9047 } 9048 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 9049 data.currentTranslate = data.startTranslate; 9050 } 9051 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 9052 data.currentTranslate = data.startTranslate; 9053 } 9054 9055 // Threshold 9056 if (params.threshold > 0) { 9057 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 9058 if (!data.allowThresholdMove) { 9059 data.allowThresholdMove = true; 9060 touches.startX = touches.currentX; 9061 touches.startY = touches.currentY; 9062 data.currentTranslate = data.startTranslate; 9063 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 9064 return; 9065 } 9066 } else { 9067 data.currentTranslate = data.startTranslate; 9068 return; 9069 } 9070 } 9071 if (!params.followFinger || params.cssMode) return; 9072 9073 // Update active index in free mode 9074 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 9075 swiper.updateActiveIndex(); 9076 swiper.updateSlidesClasses(); 9077 } 9078 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 9079 swiper.freeMode.onTouchMove(); 9080 } 9081 // Update progress 9082 swiper.updateProgress(data.currentTranslate); 9083 // Update translate 9084 swiper.setTranslate(data.currentTranslate); 9085} 9086 9087function onTouchEnd(event) { 9088 const swiper = this; 9089 const data = swiper.touchEventsData; 9090 let e = event; 9091 if (e.originalEvent) e = e.originalEvent; 9092 let targetTouch; 9093 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 9094 if (!isTouchEvent) { 9095 if (data.touchId !== null) return; // return from pointer if we use touch 9096 if (e.pointerId !== data.pointerId) return; 9097 targetTouch = e; 9098 } else { 9099 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 9100 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 9101 } 9102 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 9103 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 9104 if (!proceed) { 9105 return; 9106 } 9107 } 9108 data.pointerId = null; 9109 data.touchId = null; 9110 const { 9111 params, 9112 touches, 9113 rtlTranslate: rtl, 9114 slidesGrid, 9115 enabled 9116 } = swiper; 9117 if (!enabled) return; 9118 if (!params.simulateTouch && e.pointerType === 'mouse') return; 9119 if (data.allowTouchCallbacks) { 9120 swiper.emit('touchEnd', e); 9121 } 9122 data.allowTouchCallbacks = false; 9123 if (!data.isTouched) { 9124 if (data.isMoved && params.grabCursor) { 9125 swiper.setGrabCursor(false); 9126 } 9127 data.isMoved = false; 9128 data.startMoving = false; 9129 return; 9130 } 9131 9132 // Return Grab Cursor 9133 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 9134 swiper.setGrabCursor(false); 9135 } 9136 9137 // Time diff 9138 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 9139 const timeDiff = touchEndTime - data.touchStartTime; 9140 9141 // Tap, doubleTap, Click 9142 if (swiper.allowClick) { 9143 const pathTree = e.path || e.composedPath && e.composedPath(); 9144 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 9145 swiper.emit('tap click', e); 9146 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 9147 swiper.emit('doubleTap doubleClick', e); 9148 } 9149 } 9150 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 9151 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 9152 if (!swiper.destroyed) swiper.allowClick = true; 9153 }); 9154 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 9155 data.isTouched = false; 9156 data.isMoved = false; 9157 data.startMoving = false; 9158 return; 9159 } 9160 data.isTouched = false; 9161 data.isMoved = false; 9162 data.startMoving = false; 9163 let currentPos; 9164 if (params.followFinger) { 9165 currentPos = rtl ? swiper.translate : -swiper.translate; 9166 } else { 9167 currentPos = -data.currentTranslate; 9168 } 9169 if (params.cssMode) { 9170 return; 9171 } 9172 if (params.freeMode && params.freeMode.enabled) { 9173 swiper.freeMode.onTouchEnd({ 9174 currentPos 9175 }); 9176 return; 9177 } 9178 9179 // Find current slide 9180 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 9181 let stopIndex = 0; 9182 let groupSize = swiper.slidesSizesGrid[0]; 9183 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 9184 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 9185 if (typeof slidesGrid[i + increment] !== 'undefined') { 9186 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 9187 stopIndex = i; 9188 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 9189 } 9190 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 9191 stopIndex = i; 9192 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 9193 } 9194 } 9195 let rewindFirstIndex = null; 9196 let rewindLastIndex = null; 9197 if (params.rewind) { 9198 if (swiper.isBeginning) { 9199 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 9200 } else if (swiper.isEnd) { 9201 rewindFirstIndex = 0; 9202 } 9203 } 9204 // Find current slide size 9205 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 9206 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 9207 if (timeDiff > params.longSwipesMs) { 9208 // Long touches 9209 if (!params.longSwipes) { 9210 swiper.slideTo(swiper.activeIndex); 9211 return; 9212 } 9213 if (swiper.swipeDirection === 'next') { 9214 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 9215 } 9216 if (swiper.swipeDirection === 'prev') { 9217 if (ratio > 1 - params.longSwipesRatio) { 9218 swiper.slideTo(stopIndex + increment); 9219 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 9220 swiper.slideTo(rewindLastIndex); 9221 } else { 9222 swiper.slideTo(stopIndex); 9223 } 9224 } 9225 } else { 9226 // Short swipes 9227 if (!params.shortSwipes) { 9228 swiper.slideTo(swiper.activeIndex); 9229 return; 9230 } 9231 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 9232 if (!isNavButtonTarget) { 9233 if (swiper.swipeDirection === 'next') { 9234 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 9235 } 9236 if (swiper.swipeDirection === 'prev') { 9237 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 9238 } 9239 } else if (e.target === swiper.navigation.nextEl) { 9240 swiper.slideTo(stopIndex + increment); 9241 } else { 9242 swiper.slideTo(stopIndex); 9243 } 9244 } 9245} 9246 9247function onResize() { 9248 const swiper = this; 9249 const { 9250 params, 9251 el 9252 } = swiper; 9253 if (el && el.offsetWidth === 0) return; 9254 9255 // Breakpoints 9256 if (params.breakpoints) { 9257 swiper.setBreakpoint(); 9258 } 9259 9260 // Save locks 9261 const { 9262 allowSlideNext, 9263 allowSlidePrev, 9264 snapGrid 9265 } = swiper; 9266 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 9267 9268 // Disable locks on resize 9269 swiper.allowSlideNext = true; 9270 swiper.allowSlidePrev = true; 9271 swiper.updateSize(); 9272 swiper.updateSlides(); 9273 swiper.updateSlidesClasses(); 9274 const isVirtualLoop = isVirtual && params.loop; 9275 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 9276 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 9277 } else { 9278 if (swiper.params.loop && !isVirtual) { 9279 swiper.slideToLoop(swiper.realIndex, 0, false, true); 9280 } else { 9281 swiper.slideTo(swiper.activeIndex, 0, false, true); 9282 } 9283 } 9284 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 9285 clearTimeout(swiper.autoplay.resizeTimeout); 9286 swiper.autoplay.resizeTimeout = setTimeout(() => { 9287 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 9288 swiper.autoplay.resume(); 9289 } 9290 }, 500); 9291 } 9292 // Return locks after resize 9293 swiper.allowSlidePrev = allowSlidePrev; 9294 swiper.allowSlideNext = allowSlideNext; 9295 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 9296 swiper.checkOverflow(); 9297 } 9298} 9299 9300function onClick(e) { 9301 const swiper = this; 9302 if (!swiper.enabled) return; 9303 if (!swiper.allowClick) { 9304 if (swiper.params.preventClicks) e.preventDefault(); 9305 if (swiper.params.preventClicksPropagation && swiper.animating) { 9306 e.stopPropagation(); 9307 e.stopImmediatePropagation(); 9308 } 9309 } 9310} 9311 9312function onScroll() { 9313 const swiper = this; 9314 const { 9315 wrapperEl, 9316 rtlTranslate, 9317 enabled 9318 } = swiper; 9319 if (!enabled) return; 9320 swiper.previousTranslate = swiper.translate; 9321 if (swiper.isHorizontal()) { 9322 swiper.translate = -wrapperEl.scrollLeft; 9323 } else { 9324 swiper.translate = -wrapperEl.scrollTop; 9325 } 9326 // eslint-disable-next-line 9327 if (swiper.translate === 0) swiper.translate = 0; 9328 swiper.updateActiveIndex(); 9329 swiper.updateSlidesClasses(); 9330 let newProgress; 9331 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 9332 if (translatesDiff === 0) { 9333 newProgress = 0; 9334 } else { 9335 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 9336 } 9337 if (newProgress !== swiper.progress) { 9338 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 9339 } 9340 swiper.emit('setTranslate', swiper.translate, false); 9341} 9342 9343function onLoad(e) { 9344 const swiper = this; 9345 processLazyPreloader(swiper, e.target); 9346 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 9347 return; 9348 } 9349 swiper.update(); 9350} 9351 9352function onDocumentTouchStart() { 9353 const swiper = this; 9354 if (swiper.documentTouchHandlerProceeded) return; 9355 swiper.documentTouchHandlerProceeded = true; 9356 if (swiper.params.touchReleaseOnEdges) { 9357 swiper.el.style.touchAction = 'auto'; 9358 } 9359} 9360 9361const events = (swiper, method) => { 9362 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9363 const { 9364 params, 9365 el, 9366 wrapperEl, 9367 device 9368 } = swiper; 9369 const capture = !!params.nested; 9370 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 9371 const swiperMethod = method; 9372 if (!el || typeof el === 'string') return; 9373 9374 // Touch Events 9375 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 9376 passive: false, 9377 capture 9378 }); 9379 el[domMethod]('touchstart', swiper.onTouchStart, { 9380 passive: false 9381 }); 9382 el[domMethod]('pointerdown', swiper.onTouchStart, { 9383 passive: false 9384 }); 9385 document[domMethod]('touchmove', swiper.onTouchMove, { 9386 passive: false, 9387 capture 9388 }); 9389 document[domMethod]('pointermove', swiper.onTouchMove, { 9390 passive: false, 9391 capture 9392 }); 9393 document[domMethod]('touchend', swiper.onTouchEnd, { 9394 passive: true 9395 }); 9396 document[domMethod]('pointerup', swiper.onTouchEnd, { 9397 passive: true 9398 }); 9399 document[domMethod]('pointercancel', swiper.onTouchEnd, { 9400 passive: true 9401 }); 9402 document[domMethod]('touchcancel', swiper.onTouchEnd, { 9403 passive: true 9404 }); 9405 document[domMethod]('pointerout', swiper.onTouchEnd, { 9406 passive: true 9407 }); 9408 document[domMethod]('pointerleave', swiper.onTouchEnd, { 9409 passive: true 9410 }); 9411 document[domMethod]('contextmenu', swiper.onTouchEnd, { 9412 passive: true 9413 }); 9414 9415 // Prevent Links Clicks 9416 if (params.preventClicks || params.preventClicksPropagation) { 9417 el[domMethod]('click', swiper.onClick, true); 9418 } 9419 if (params.cssMode) { 9420 wrapperEl[domMethod]('scroll', swiper.onScroll); 9421 } 9422 9423 // Resize handler 9424 if (params.updateOnWindowResize) { 9425 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 9426 } else { 9427 swiper[swiperMethod]('observerUpdate', onResize, true); 9428 } 9429 9430 // Images loader 9431 el[domMethod]('load', swiper.onLoad, { 9432 capture: true 9433 }); 9434}; 9435function attachEvents() { 9436 const swiper = this; 9437 const { 9438 params 9439 } = swiper; 9440 swiper.onTouchStart = onTouchStart.bind(swiper); 9441 swiper.onTouchMove = onTouchMove.bind(swiper); 9442 swiper.onTouchEnd = onTouchEnd.bind(swiper); 9443 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 9444 if (params.cssMode) { 9445 swiper.onScroll = onScroll.bind(swiper); 9446 } 9447 swiper.onClick = onClick.bind(swiper); 9448 swiper.onLoad = onLoad.bind(swiper); 9449 events(swiper, 'on'); 9450} 9451function detachEvents() { 9452 const swiper = this; 9453 events(swiper, 'off'); 9454} 9455var events$1 = { 9456 attachEvents, 9457 detachEvents 9458}; 9459 9460const isGridEnabled = (swiper, params) => { 9461 return swiper.grid && params.grid && params.grid.rows > 1; 9462}; 9463function setBreakpoint() { 9464 const swiper = this; 9465 const { 9466 realIndex, 9467 initialized, 9468 params, 9469 el 9470 } = swiper; 9471 const breakpoints = params.breakpoints; 9472 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 9473 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9474 9475 // Get breakpoint for window/container width and update parameters 9476 const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; 9477 const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); 9478 const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); 9479 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 9480 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 9481 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 9482 const wasMultiRow = isGridEnabled(swiper, params); 9483 const isMultiRow = isGridEnabled(swiper, breakpointParams); 9484 const wasGrabCursor = swiper.params.grabCursor; 9485 const isGrabCursor = breakpointParams.grabCursor; 9486 const wasEnabled = params.enabled; 9487 if (wasMultiRow && !isMultiRow) { 9488 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 9489 swiper.emitContainerClasses(); 9490 } else if (!wasMultiRow && isMultiRow) { 9491 el.classList.add(`${params.containerModifierClass}grid`); 9492 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 9493 el.classList.add(`${params.containerModifierClass}grid-column`); 9494 } 9495 swiper.emitContainerClasses(); 9496 } 9497 if (wasGrabCursor && !isGrabCursor) { 9498 swiper.unsetGrabCursor(); 9499 } else if (!wasGrabCursor && isGrabCursor) { 9500 swiper.setGrabCursor(); 9501 } 9502 9503 // Toggle navigation, pagination, scrollbar 9504 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 9505 if (typeof breakpointParams[prop] === 'undefined') return; 9506 const wasModuleEnabled = params[prop] && params[prop].enabled; 9507 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 9508 if (wasModuleEnabled && !isModuleEnabled) { 9509 swiper[prop].disable(); 9510 } 9511 if (!wasModuleEnabled && isModuleEnabled) { 9512 swiper[prop].enable(); 9513 } 9514 }); 9515 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 9516 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 9517 const wasLoop = params.loop; 9518 if (directionChanged && initialized) { 9519 swiper.changeDirection(); 9520 } 9521 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper.params, breakpointParams); 9522 const isEnabled = swiper.params.enabled; 9523 const hasLoop = swiper.params.loop; 9524 Object.assign(swiper, { 9525 allowTouchMove: swiper.params.allowTouchMove, 9526 allowSlideNext: swiper.params.allowSlideNext, 9527 allowSlidePrev: swiper.params.allowSlidePrev 9528 }); 9529 if (wasEnabled && !isEnabled) { 9530 swiper.disable(); 9531 } else if (!wasEnabled && isEnabled) { 9532 swiper.enable(); 9533 } 9534 swiper.currentBreakpoint = breakpoint; 9535 swiper.emit('_beforeBreakpoint', breakpointParams); 9536 if (initialized) { 9537 if (needsReLoop) { 9538 swiper.loopDestroy(); 9539 swiper.loopCreate(realIndex); 9540 swiper.updateSlides(); 9541 } else if (!wasLoop && hasLoop) { 9542 swiper.loopCreate(realIndex); 9543 swiper.updateSlides(); 9544 } else if (wasLoop && !hasLoop) { 9545 swiper.loopDestroy(); 9546 } 9547 } 9548 swiper.emit('breakpoint', breakpointParams); 9549} 9550 9551function getBreakpoint(breakpoints, base, containerEl) { 9552 if (base === void 0) { 9553 base = 'window'; 9554 } 9555 if (!breakpoints || base === 'container' && !containerEl) return undefined; 9556 let breakpoint = false; 9557 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 9558 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 9559 const points = Object.keys(breakpoints).map(point => { 9560 if (typeof point === 'string' && point.indexOf('@') === 0) { 9561 const minRatio = parseFloat(point.substr(1)); 9562 const value = currentHeight * minRatio; 9563 return { 9564 value, 9565 point 9566 }; 9567 } 9568 return { 9569 value: point, 9570 point 9571 }; 9572 }); 9573 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 9574 for (let i = 0; i < points.length; i += 1) { 9575 const { 9576 point, 9577 value 9578 } = points[i]; 9579 if (base === 'window') { 9580 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 9581 breakpoint = point; 9582 } 9583 } else if (value <= containerEl.clientWidth) { 9584 breakpoint = point; 9585 } 9586 } 9587 return breakpoint || 'max'; 9588} 9589 9590var breakpoints = { 9591 setBreakpoint, 9592 getBreakpoint 9593}; 9594 9595function prepareClasses(entries, prefix) { 9596 const resultClasses = []; 9597 entries.forEach(item => { 9598 if (typeof item === 'object') { 9599 Object.keys(item).forEach(classNames => { 9600 if (item[classNames]) { 9601 resultClasses.push(prefix + classNames); 9602 } 9603 }); 9604 } else if (typeof item === 'string') { 9605 resultClasses.push(prefix + item); 9606 } 9607 }); 9608 return resultClasses; 9609} 9610function addClasses() { 9611 const swiper = this; 9612 const { 9613 classNames, 9614 params, 9615 rtl, 9616 el, 9617 device 9618 } = swiper; 9619 // prettier-ignore 9620 const suffixes = prepareClasses(['initialized', params.direction, { 9621 'free-mode': swiper.params.freeMode && params.freeMode.enabled 9622 }, { 9623 'autoheight': params.autoHeight 9624 }, { 9625 'rtl': rtl 9626 }, { 9627 'grid': params.grid && params.grid.rows > 1 9628 }, { 9629 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 9630 }, { 9631 'android': device.android 9632 }, { 9633 'ios': device.ios 9634 }, { 9635 'css-mode': params.cssMode 9636 }, { 9637 'centered': params.cssMode && params.centeredSlides 9638 }, { 9639 'watch-progress': params.watchSlidesProgress 9640 }], params.containerModifierClass); 9641 classNames.push(...suffixes); 9642 el.classList.add(...classNames); 9643 swiper.emitContainerClasses(); 9644} 9645 9646function removeClasses() { 9647 const swiper = this; 9648 const { 9649 el, 9650 classNames 9651 } = swiper; 9652 if (!el || typeof el === 'string') return; 9653 el.classList.remove(...classNames); 9654 swiper.emitContainerClasses(); 9655} 9656 9657var classes = { 9658 addClasses, 9659 removeClasses 9660}; 9661 9662function checkOverflow() { 9663 const swiper = this; 9664 const { 9665 isLocked: wasLocked, 9666 params 9667 } = swiper; 9668 const { 9669 slidesOffsetBefore 9670 } = params; 9671 if (slidesOffsetBefore) { 9672 const lastSlideIndex = swiper.slides.length - 1; 9673 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 9674 swiper.isLocked = swiper.size > lastSlideRightEdge; 9675 } else { 9676 swiper.isLocked = swiper.snapGrid.length === 1; 9677 } 9678 if (params.allowSlideNext === true) { 9679 swiper.allowSlideNext = !swiper.isLocked; 9680 } 9681 if (params.allowSlidePrev === true) { 9682 swiper.allowSlidePrev = !swiper.isLocked; 9683 } 9684 if (wasLocked && wasLocked !== swiper.isLocked) { 9685 swiper.isEnd = false; 9686 } 9687 if (wasLocked !== swiper.isLocked) { 9688 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 9689 } 9690} 9691var checkOverflow$1 = { 9692 checkOverflow 9693}; 9694 9695var defaults = { 9696 init: true, 9697 direction: 'horizontal', 9698 oneWayMovement: false, 9699 swiperElementNodeName: 'SWIPER-CONTAINER', 9700 touchEventsTarget: 'wrapper', 9701 initialSlide: 0, 9702 speed: 300, 9703 cssMode: false, 9704 updateOnWindowResize: true, 9705 resizeObserver: true, 9706 nested: false, 9707 createElements: false, 9708 eventsPrefix: 'swiper', 9709 enabled: true, 9710 focusableElements: 'input, select, option, textarea, button, video, label', 9711 // Overrides 9712 width: null, 9713 height: null, 9714 // 9715 preventInteractionOnTransition: false, 9716 // ssr 9717 userAgent: null, 9718 url: null, 9719 // To support iOS's swipe-to-go-back gesture (when being used in-app). 9720 edgeSwipeDetection: false, 9721 edgeSwipeThreshold: 20, 9722 // Autoheight 9723 autoHeight: false, 9724 // Set wrapper width 9725 setWrapperSize: false, 9726 // Virtual Translate 9727 virtualTranslate: false, 9728 // Effects 9729 effect: 'slide', 9730 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 9731 9732 // Breakpoints 9733 breakpoints: undefined, 9734 breakpointsBase: 'window', 9735 // Slides grid 9736 spaceBetween: 0, 9737 slidesPerView: 1, 9738 slidesPerGroup: 1, 9739 slidesPerGroupSkip: 0, 9740 slidesPerGroupAuto: false, 9741 centeredSlides: false, 9742 centeredSlidesBounds: false, 9743 slidesOffsetBefore: 0, 9744 // in px 9745 slidesOffsetAfter: 0, 9746 // in px 9747 normalizeSlideIndex: true, 9748 centerInsufficientSlides: false, 9749 // Disable swiper and hide navigation when container not overflow 9750 watchOverflow: true, 9751 // Round length 9752 roundLengths: false, 9753 // Touches 9754 touchRatio: 1, 9755 touchAngle: 45, 9756 simulateTouch: true, 9757 shortSwipes: true, 9758 longSwipes: true, 9759 longSwipesRatio: 0.5, 9760 longSwipesMs: 300, 9761 followFinger: true, 9762 allowTouchMove: true, 9763 threshold: 5, 9764 touchMoveStopPropagation: false, 9765 touchStartPreventDefault: true, 9766 touchStartForcePreventDefault: false, 9767 touchReleaseOnEdges: false, 9768 // Unique Navigation Elements 9769 uniqueNavElements: true, 9770 // Resistance 9771 resistance: true, 9772 resistanceRatio: 0.85, 9773 // Progress 9774 watchSlidesProgress: false, 9775 // Cursor 9776 grabCursor: false, 9777 // Clicks 9778 preventClicks: true, 9779 preventClicksPropagation: true, 9780 slideToClickedSlide: false, 9781 // loop 9782 loop: false, 9783 loopAddBlankSlides: true, 9784 loopAdditionalSlides: 0, 9785 loopPreventsSliding: true, 9786 // rewind 9787 rewind: false, 9788 // Swiping/no swiping 9789 allowSlidePrev: true, 9790 allowSlideNext: true, 9791 swipeHandler: null, 9792 // '.swipe-handler', 9793 noSwiping: true, 9794 noSwipingClass: 'swiper-no-swiping', 9795 noSwipingSelector: null, 9796 // Passive Listeners 9797 passiveListeners: true, 9798 maxBackfaceHiddenSlides: 10, 9799 // NS 9800 containerModifierClass: 'swiper-', 9801 // NEW 9802 slideClass: 'swiper-slide', 9803 slideBlankClass: 'swiper-slide-blank', 9804 slideActiveClass: 'swiper-slide-active', 9805 slideVisibleClass: 'swiper-slide-visible', 9806 slideFullyVisibleClass: 'swiper-slide-fully-visible', 9807 slideNextClass: 'swiper-slide-next', 9808 slidePrevClass: 'swiper-slide-prev', 9809 wrapperClass: 'swiper-wrapper', 9810 lazyPreloaderClass: 'swiper-lazy-preloader', 9811 lazyPreloadPrevNext: 0, 9812 // Callbacks 9813 runCallbacksOnInit: true, 9814 // Internals 9815 _emitClasses: false 9816}; 9817 9818function moduleExtendParams(params, allModulesParams) { 9819 return function extendParams(obj) { 9820 if (obj === void 0) { 9821 obj = {}; 9822 } 9823 const moduleParamName = Object.keys(obj)[0]; 9824 const moduleParams = obj[moduleParamName]; 9825 if (typeof moduleParams !== 'object' || moduleParams === null) { 9826 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9827 return; 9828 } 9829 if (params[moduleParamName] === true) { 9830 params[moduleParamName] = { 9831 enabled: true 9832 }; 9833 } 9834 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 9835 params[moduleParamName].auto = true; 9836 } 9837 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 9838 params[moduleParamName].auto = true; 9839 } 9840 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 9841 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9842 return; 9843 } 9844 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 9845 params[moduleParamName].enabled = true; 9846 } 9847 if (!params[moduleParamName]) params[moduleParamName] = { 9848 enabled: false 9849 }; 9850 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9851 }; 9852} 9853 9854/* eslint no-param-reassign: "off" */ 9855const prototypes = { 9856 eventsEmitter, 9857 update, 9858 translate, 9859 transition, 9860 slide, 9861 loop, 9862 grabCursor, 9863 events: events$1, 9864 breakpoints, 9865 checkOverflow: checkOverflow$1, 9866 classes 9867}; 9868const extendedDefaults = {}; 9869class Swiper { 9870 constructor() { 9871 let el; 9872 let params; 9873 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 9874 args[_key] = arguments[_key]; 9875 } 9876 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 9877 params = args[0]; 9878 } else { 9879 [el, params] = args; 9880 } 9881 if (!params) params = {}; 9882 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params); 9883 if (el && !params.el) params.el = el; 9884 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9885 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 9886 const swipers = []; 9887 document.querySelectorAll(params.el).forEach(containerEl => { 9888 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params, { 9889 el: containerEl 9890 }); 9891 swipers.push(new Swiper(newParams)); 9892 }); 9893 // eslint-disable-next-line no-constructor-return 9894 return swipers; 9895 } 9896 9897 // Swiper Instance 9898 const swiper = this; 9899 swiper.__swiper__ = true; 9900 swiper.support = getSupport(); 9901 swiper.device = getDevice({ 9902 userAgent: params.userAgent 9903 }); 9904 swiper.browser = getBrowser(); 9905 swiper.eventsListeners = {}; 9906 swiper.eventsAnyListeners = []; 9907 swiper.modules = [...swiper.__modules__]; 9908 if (params.modules && Array.isArray(params.modules)) { 9909 swiper.modules.push(...params.modules); 9910 } 9911 const allModulesParams = {}; 9912 swiper.modules.forEach(mod => { 9913 mod({ 9914 params, 9915 swiper, 9916 extendParams: moduleExtendParams(params, allModulesParams), 9917 on: swiper.on.bind(swiper), 9918 once: swiper.once.bind(swiper), 9919 off: swiper.off.bind(swiper), 9920 emit: swiper.emit.bind(swiper) 9921 }); 9922 }); 9923 9924 // Extend defaults with modules params 9925 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, defaults, allModulesParams); 9926 9927 // Extend defaults with passed params 9928 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiperParams, extendedDefaults, params); 9929 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiper.params); 9930 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params); 9931 9932 // add event listeners 9933 if (swiper.params && swiper.params.on) { 9934 Object.keys(swiper.params.on).forEach(eventName => { 9935 swiper.on(eventName, swiper.params.on[eventName]); 9936 }); 9937 } 9938 if (swiper.params && swiper.params.onAny) { 9939 swiper.onAny(swiper.params.onAny); 9940 } 9941 9942 // Extend Swiper 9943 Object.assign(swiper, { 9944 enabled: swiper.params.enabled, 9945 el, 9946 // Classes 9947 classNames: [], 9948 // Slides 9949 slides: [], 9950 slidesGrid: [], 9951 snapGrid: [], 9952 slidesSizesGrid: [], 9953 // isDirection 9954 isHorizontal() { 9955 return swiper.params.direction === 'horizontal'; 9956 }, 9957 isVertical() { 9958 return swiper.params.direction === 'vertical'; 9959 }, 9960 // Indexes 9961 activeIndex: 0, 9962 realIndex: 0, 9963 // 9964 isBeginning: true, 9965 isEnd: false, 9966 // Props 9967 translate: 0, 9968 previousTranslate: 0, 9969 progress: 0, 9970 velocity: 0, 9971 animating: false, 9972 cssOverflowAdjustment() { 9973 // Returns 0 unless `translate` is > 2**23 9974 // Should be subtracted from css values to prevent overflow 9975 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 9976 }, 9977 // Locks 9978 allowSlideNext: swiper.params.allowSlideNext, 9979 allowSlidePrev: swiper.params.allowSlidePrev, 9980 // Touch Events 9981 touchEventsData: { 9982 isTouched: undefined, 9983 isMoved: undefined, 9984 allowTouchCallbacks: undefined, 9985 touchStartTime: undefined, 9986 isScrolling: undefined, 9987 currentTranslate: undefined, 9988 startTranslate: undefined, 9989 allowThresholdMove: undefined, 9990 // Form elements to match 9991 focusableElements: swiper.params.focusableElements, 9992 // Last click time 9993 lastClickTime: 0, 9994 clickTimeout: undefined, 9995 // Velocities 9996 velocities: [], 9997 allowMomentumBounce: undefined, 9998 startMoving: undefined, 9999 pointerId: null, 10000 touchId: null 10001 }, 10002 // Clicks 10003 allowClick: true, 10004 // Touches 10005 allowTouchMove: swiper.params.allowTouchMove, 10006 touches: { 10007 startX: 0, 10008 startY: 0, 10009 currentX: 0, 10010 currentY: 0, 10011 diff: 0 10012 }, 10013 // Images 10014 imagesToLoad: [], 10015 imagesLoaded: 0 10016 }); 10017 swiper.emit('_swiper'); 10018 10019 // Init 10020 if (swiper.params.init) { 10021 swiper.init(); 10022 } 10023 10024 // Return app instance 10025 // eslint-disable-next-line no-constructor-return 10026 return swiper; 10027 } 10028 getDirectionLabel(property) { 10029 if (this.isHorizontal()) { 10030 return property; 10031 } 10032 // prettier-ignore 10033 return { 10034 'width': 'height', 10035 'margin-top': 'margin-left', 10036 'margin-bottom ': 'margin-right', 10037 'margin-left': 'margin-top', 10038 'margin-right': 'margin-bottom', 10039 'padding-left': 'padding-top', 10040 'padding-right': 'padding-bottom', 10041 'marginRight': 'marginBottom' 10042 }[property]; 10043 } 10044 getSlideIndex(slideEl) { 10045 const { 10046 slidesEl, 10047 params 10048 } = this; 10049 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 10050 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slides[0]); 10051 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slideEl) - firstSlideIndex; 10052 } 10053 getSlideIndexByData(index) { 10054 return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); 10055 } 10056 getSlideIndexWhenGrid(index) { 10057 if (this.grid && this.params.grid && this.params.grid.rows > 1) { 10058 if (this.params.grid.fill === 'column') { 10059 index = Math.floor(index / this.params.grid.rows); 10060 } else if (this.params.grid.fill === 'row') { 10061 index = index % Math.ceil(this.slides.length / this.params.grid.rows); 10062 } 10063 } 10064 return index; 10065 } 10066 recalcSlides() { 10067 const swiper = this; 10068 const { 10069 slidesEl, 10070 params 10071 } = swiper; 10072 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 10073 } 10074 enable() { 10075 const swiper = this; 10076 if (swiper.enabled) return; 10077 swiper.enabled = true; 10078 if (swiper.params.grabCursor) { 10079 swiper.setGrabCursor(); 10080 } 10081 swiper.emit('enable'); 10082 } 10083 disable() { 10084 const swiper = this; 10085 if (!swiper.enabled) return; 10086 swiper.enabled = false; 10087 if (swiper.params.grabCursor) { 10088 swiper.unsetGrabCursor(); 10089 } 10090 swiper.emit('disable'); 10091 } 10092 setProgress(progress, speed) { 10093 const swiper = this; 10094 progress = Math.min(Math.max(progress, 0), 1); 10095 const min = swiper.minTranslate(); 10096 const max = swiper.maxTranslate(); 10097 const current = (max - min) * progress + min; 10098 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 10099 swiper.updateActiveIndex(); 10100 swiper.updateSlidesClasses(); 10101 } 10102 emitContainerClasses() { 10103 const swiper = this; 10104 if (!swiper.params._emitClasses || !swiper.el) return; 10105 const cls = swiper.el.className.split(' ').filter(className => { 10106 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 10107 }); 10108 swiper.emit('_containerClasses', cls.join(' ')); 10109 } 10110 getSlideClasses(slideEl) { 10111 const swiper = this; 10112 if (swiper.destroyed) return ''; 10113 return slideEl.className.split(' ').filter(className => { 10114 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 10115 }).join(' '); 10116 } 10117 emitSlidesClasses() { 10118 const swiper = this; 10119 if (!swiper.params._emitClasses || !swiper.el) return; 10120 const updates = []; 10121 swiper.slides.forEach(slideEl => { 10122 const classNames = swiper.getSlideClasses(slideEl); 10123 updates.push({ 10124 slideEl, 10125 classNames 10126 }); 10127 swiper.emit('_slideClass', slideEl, classNames); 10128 }); 10129 swiper.emit('_slideClasses', updates); 10130 } 10131 slidesPerViewDynamic(view, exact) { 10132 if (view === void 0) { 10133 view = 'current'; 10134 } 10135 if (exact === void 0) { 10136 exact = false; 10137 } 10138 const swiper = this; 10139 const { 10140 params, 10141 slides, 10142 slidesGrid, 10143 slidesSizesGrid, 10144 size: swiperSize, 10145 activeIndex 10146 } = swiper; 10147 let spv = 1; 10148 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 10149 if (params.centeredSlides) { 10150 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 10151 let breakLoop; 10152 for (let i = activeIndex + 1; i < slides.length; i += 1) { 10153 if (slides[i] && !breakLoop) { 10154 slideSize += Math.ceil(slides[i].swiperSlideSize); 10155 spv += 1; 10156 if (slideSize > swiperSize) breakLoop = true; 10157 } 10158 } 10159 for (let i = activeIndex - 1; i >= 0; i -= 1) { 10160 if (slides[i] && !breakLoop) { 10161 slideSize += slides[i].swiperSlideSize; 10162 spv += 1; 10163 if (slideSize > swiperSize) breakLoop = true; 10164 } 10165 } 10166 } else { 10167 // eslint-disable-next-line 10168 if (view === 'current') { 10169 for (let i = activeIndex + 1; i < slides.length; i += 1) { 10170 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 10171 if (slideInView) { 10172 spv += 1; 10173 } 10174 } 10175 } else { 10176 // previous 10177 for (let i = activeIndex - 1; i >= 0; i -= 1) { 10178 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 10179 if (slideInView) { 10180 spv += 1; 10181 } 10182 } 10183 } 10184 } 10185 return spv; 10186 } 10187 update() { 10188 const swiper = this; 10189 if (!swiper || swiper.destroyed) return; 10190 const { 10191 snapGrid, 10192 params 10193 } = swiper; 10194 // Breakpoints 10195 if (params.breakpoints) { 10196 swiper.setBreakpoint(); 10197 } 10198 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 10199 if (imageEl.complete) { 10200 processLazyPreloader(swiper, imageEl); 10201 } 10202 }); 10203 swiper.updateSize(); 10204 swiper.updateSlides(); 10205 swiper.updateProgress(); 10206 swiper.updateSlidesClasses(); 10207 function setTranslate() { 10208 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 10209 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 10210 swiper.setTranslate(newTranslate); 10211 swiper.updateActiveIndex(); 10212 swiper.updateSlidesClasses(); 10213 } 10214 let translated; 10215 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 10216 setTranslate(); 10217 if (params.autoHeight) { 10218 swiper.updateAutoHeight(); 10219 } 10220 } else { 10221 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 10222 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 10223 translated = swiper.slideTo(slides.length - 1, 0, false, true); 10224 } else { 10225 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 10226 } 10227 if (!translated) { 10228 setTranslate(); 10229 } 10230 } 10231 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 10232 swiper.checkOverflow(); 10233 } 10234 swiper.emit('update'); 10235 } 10236 changeDirection(newDirection, needUpdate) { 10237 if (needUpdate === void 0) { 10238 needUpdate = true; 10239 } 10240 const swiper = this; 10241 const currentDirection = swiper.params.direction; 10242 if (!newDirection) { 10243 // eslint-disable-next-line 10244 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 10245 } 10246 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 10247 return swiper; 10248 } 10249 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 10250 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 10251 swiper.emitContainerClasses(); 10252 swiper.params.direction = newDirection; 10253 swiper.slides.forEach(slideEl => { 10254 if (newDirection === 'vertical') { 10255 slideEl.style.width = ''; 10256 } else { 10257 slideEl.style.height = ''; 10258 } 10259 }); 10260 swiper.emit('changeDirection'); 10261 if (needUpdate) swiper.update(); 10262 return swiper; 10263 } 10264 changeLanguageDirection(direction) { 10265 const swiper = this; 10266 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 10267 swiper.rtl = direction === 'rtl'; 10268 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 10269 if (swiper.rtl) { 10270 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 10271 swiper.el.dir = 'rtl'; 10272 } else { 10273 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 10274 swiper.el.dir = 'ltr'; 10275 } 10276 swiper.update(); 10277 } 10278 mount(element) { 10279 const swiper = this; 10280 if (swiper.mounted) return true; 10281 10282 // Find el 10283 let el = element || swiper.params.el; 10284 if (typeof el === 'string') { 10285 el = document.querySelector(el); 10286 } 10287 if (!el) { 10288 return false; 10289 } 10290 el.swiper = swiper; 10291 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 10292 swiper.isElement = true; 10293 } 10294 const getWrapperSelector = () => { 10295 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 10296 }; 10297 const getWrapper = () => { 10298 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 10299 const res = el.shadowRoot.querySelector(getWrapperSelector()); 10300 // Children needs to return slot items 10301 return res; 10302 } 10303 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 10304 }; 10305 // Find Wrapper 10306 let wrapperEl = getWrapper(); 10307 if (!wrapperEl && swiper.params.createElements) { 10308 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 10309 el.append(wrapperEl); 10310 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 10311 wrapperEl.append(slideEl); 10312 }); 10313 } 10314 Object.assign(swiper, { 10315 el, 10316 wrapperEl, 10317 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 10318 hostEl: swiper.isElement ? el.parentNode.host : el, 10319 mounted: true, 10320 // RTL 10321 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl', 10322 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl'), 10323 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(wrapperEl, 'display') === '-webkit-box' 10324 }); 10325 return true; 10326 } 10327 init(el) { 10328 const swiper = this; 10329 if (swiper.initialized) return swiper; 10330 const mounted = swiper.mount(el); 10331 if (mounted === false) return swiper; 10332 swiper.emit('beforeInit'); 10333 10334 // Set breakpoint 10335 if (swiper.params.breakpoints) { 10336 swiper.setBreakpoint(); 10337 } 10338 10339 // Add Classes 10340 swiper.addClasses(); 10341 10342 // Update size 10343 swiper.updateSize(); 10344 10345 // Update slides 10346 swiper.updateSlides(); 10347 if (swiper.params.watchOverflow) { 10348 swiper.checkOverflow(); 10349 } 10350 10351 // Set Grab Cursor 10352 if (swiper.params.grabCursor && swiper.enabled) { 10353 swiper.setGrabCursor(); 10354 } 10355 10356 // Slide To Initial Slide 10357 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 10358 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 10359 } else { 10360 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 10361 } 10362 10363 // Create loop 10364 if (swiper.params.loop) { 10365 swiper.loopCreate(undefined, true); 10366 } 10367 10368 // Attach events 10369 swiper.attachEvents(); 10370 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 10371 if (swiper.isElement) { 10372 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 10373 } 10374 lazyElements.forEach(imageEl => { 10375 if (imageEl.complete) { 10376 processLazyPreloader(swiper, imageEl); 10377 } else { 10378 imageEl.addEventListener('load', e => { 10379 processLazyPreloader(swiper, e.target); 10380 }); 10381 } 10382 }); 10383 preload(swiper); 10384 10385 // Init Flag 10386 swiper.initialized = true; 10387 preload(swiper); 10388 10389 // Emit 10390 swiper.emit('init'); 10391 swiper.emit('afterInit'); 10392 return swiper; 10393 } 10394 destroy(deleteInstance, cleanStyles) { 10395 if (deleteInstance === void 0) { 10396 deleteInstance = true; 10397 } 10398 if (cleanStyles === void 0) { 10399 cleanStyles = true; 10400 } 10401 const swiper = this; 10402 const { 10403 params, 10404 el, 10405 wrapperEl, 10406 slides 10407 } = swiper; 10408 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 10409 return null; 10410 } 10411 swiper.emit('beforeDestroy'); 10412 10413 // Init Flag 10414 swiper.initialized = false; 10415 10416 // Detach events 10417 swiper.detachEvents(); 10418 10419 // Destroy loop 10420 if (params.loop) { 10421 swiper.loopDestroy(); 10422 } 10423 10424 // Cleanup styles 10425 if (cleanStyles) { 10426 swiper.removeClasses(); 10427 if (el && typeof el !== 'string') { 10428 el.removeAttribute('style'); 10429 } 10430 if (wrapperEl) { 10431 wrapperEl.removeAttribute('style'); 10432 } 10433 if (slides && slides.length) { 10434 slides.forEach(slideEl => { 10435 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 10436 slideEl.removeAttribute('style'); 10437 slideEl.removeAttribute('data-swiper-slide-index'); 10438 }); 10439 } 10440 } 10441 swiper.emit('destroy'); 10442 10443 // Detach emitter events 10444 Object.keys(swiper.eventsListeners).forEach(eventName => { 10445 swiper.off(eventName); 10446 }); 10447 if (deleteInstance !== false) { 10448 if (swiper.el && typeof swiper.el !== 'string') { 10449 swiper.el.swiper = null; 10450 } 10451 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.y)(swiper); 10452 } 10453 swiper.destroyed = true; 10454 return null; 10455 } 10456 static extendDefaults(newDefaults) { 10457 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(extendedDefaults, newDefaults); 10458 } 10459 static get extendedDefaults() { 10460 return extendedDefaults; 10461 } 10462 static get defaults() { 10463 return defaults; 10464 } 10465 static installModule(mod) { 10466 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 10467 const modules = Swiper.prototype.__modules__; 10468 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 10469 modules.push(mod); 10470 } 10471 } 10472 static use(module) { 10473 if (Array.isArray(module)) { 10474 module.forEach(m => Swiper.installModule(m)); 10475 return Swiper; 10476 } 10477 Swiper.installModule(module); 10478 return Swiper; 10479 } 10480} 10481Object.keys(prototypes).forEach(prototypeGroup => { 10482 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 10483 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 10484 }); 10485}); 10486Swiper.use([Resize, Observer]); 10487 10488 10489 10490 10491/***/ }), 10492
vendor: 13,873 bytes, lines 10493-10875
10493/***/ "./node_modules/swiper/shared/utils.mjs": 10494/*!**********************************************!*\ 10495 !*** ./node_modules/swiper/shared/utils.mjs ***! 10496 \**********************************************/ 10497/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 10498 10499"use strict"; 10500__webpack_require__.r(__webpack_exports__); 10501/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10502/* harmony export */ a: function() { return /* binding */ setCSSProperty; }, 10503/* harmony export */ b: function() { return /* binding */ elementParents; }, 10504/* harmony export */ c: function() { return /* binding */ createElement; }, 10505/* harmony export */ d: function() { return /* binding */ elementOffset; }, 10506/* harmony export */ e: function() { return /* binding */ elementChildren; }, 10507/* harmony export */ f: function() { return /* binding */ now; }, 10508/* harmony export */ g: function() { return /* binding */ getSlideTransformEl; }, 10509/* harmony export */ h: function() { return /* binding */ elementOuterSize; }, 10510/* harmony export */ i: function() { return /* binding */ elementIndex; }, 10511/* harmony export */ j: function() { return /* binding */ classesToTokens; }, 10512/* harmony export */ k: function() { return /* binding */ getTranslate; }, 10513/* harmony export */ l: function() { return /* binding */ elementTransitionEnd; }, 10514/* harmony export */ m: function() { return /* binding */ makeElementsArray; }, 10515/* harmony export */ n: function() { return /* binding */ nextTick; }, 10516/* harmony export */ o: function() { return /* binding */ isObject; }, 10517/* harmony export */ p: function() { return /* binding */ getRotateFix; }, 10518/* harmony export */ q: function() { return /* binding */ elementStyle; }, 10519/* harmony export */ r: function() { return /* binding */ elementNextAll; }, 10520/* harmony export */ s: function() { return /* binding */ setInnerHTML; }, 10521/* harmony export */ t: function() { return /* binding */ elementPrevAll; }, 10522/* harmony export */ u: function() { return /* binding */ animateCSSModeScroll; }, 10523/* harmony export */ v: function() { return /* binding */ showWarning; }, 10524/* harmony export */ w: function() { return /* binding */ elementIsChildOf; }, 10525/* harmony export */ x: function() { return /* binding */ extend; }, 10526/* harmony export */ y: function() { return /* binding */ deleteProps; } 10527/* harmony export */ }); 10528/* 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"); 10529 10530 10531function classesToTokens(classes) { 10532 if (classes === void 0) { 10533 classes = ''; 10534 } 10535 return classes.trim().split(' ').filter(c => !!c.trim()); 10536} 10537 10538function deleteProps(obj) { 10539 const object = obj; 10540 Object.keys(object).forEach(key => { 10541 try { 10542 object[key] = null; 10543 } catch (e) { 10544 // no getter for object 10545 } 10546 try { 10547 delete object[key]; 10548 } catch (e) { 10549 // something got wrong 10550 } 10551 }); 10552} 10553function nextTick(callback, delay) { 10554 if (delay === void 0) { 10555 delay = 0; 10556 } 10557 return setTimeout(callback, delay); 10558} 10559function now() { 10560 return Date.now(); 10561} 10562function getComputedStyle(el) { 10563 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10564 let style; 10565 if (window.getComputedStyle) { 10566 style = window.getComputedStyle(el, null); 10567 } 10568 if (!style && el.currentStyle) { 10569 style = el.currentStyle; 10570 } 10571 if (!style) { 10572 style = el.style; 10573 } 10574 return style; 10575} 10576function getTranslate(el, axis) { 10577 if (axis === void 0) { 10578 axis = 'x'; 10579 } 10580 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10581 let matrix; 10582 let curTransform; 10583 let transformMatrix; 10584 const curStyle = getComputedStyle(el); 10585 if (window.WebKitCSSMatrix) { 10586 curTransform = curStyle.transform || curStyle.webkitTransform; 10587 if (curTransform.split(',').length > 6) { 10588 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 10589 } 10590 // Some old versions of Webkit choke when 'none' is passed; pass 10591 // empty string instead in this case 10592 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 10593 } else { 10594 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 10595 matrix = transformMatrix.toString().split(','); 10596 } 10597 if (axis === 'x') { 10598 // Latest Chrome and webkits Fix 10599 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 10600 // Crazy IE10 Matrix 10601 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 10602 // Normal Browsers 10603 else curTransform = parseFloat(matrix[4]); 10604 } 10605 if (axis === 'y') { 10606 // Latest Chrome and webkits Fix 10607 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 10608 // Crazy IE10 Matrix 10609 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 10610 // Normal Browsers 10611 else curTransform = parseFloat(matrix[5]); 10612 } 10613 return curTransform || 0; 10614} 10615function isObject(o) { 10616 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 10617} 10618function isNode(node) { 10619 // eslint-disable-next-line 10620 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 10621 return node instanceof HTMLElement; 10622 } 10623 return node && (node.nodeType === 1 || node.nodeType === 11); 10624} 10625function extend() { 10626 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 10627 const noExtend = ['__proto__', 'constructor', 'prototype']; 10628 for (let i = 1; i < arguments.length; i += 1) { 10629 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 10630 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 10631 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 10632 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 10633 const nextKey = keysArray[nextIndex]; 10634 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 10635 if (desc !== undefined && desc.enumerable) { 10636 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10637 if (nextSource[nextKey].__swiper__) { 10638 to[nextKey] = nextSource[nextKey]; 10639 } else { 10640 extend(to[nextKey], nextSource[nextKey]); 10641 } 10642 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10643 to[nextKey] = {}; 10644 if (nextSource[nextKey].__swiper__) { 10645 to[nextKey] = nextSource[nextKey]; 10646 } else { 10647 extend(to[nextKey], nextSource[nextKey]); 10648 } 10649 } else { 10650 to[nextKey] = nextSource[nextKey]; 10651 } 10652 } 10653 } 10654 } 10655 } 10656 return to; 10657} 10658function setCSSProperty(el, varName, varValue) { 10659 el.style.setProperty(varName, varValue); 10660} 10661function animateCSSModeScroll(_ref) { 10662 let { 10663 swiper, 10664 targetPosition, 10665 side 10666 } = _ref; 10667 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10668 const startPosition = -swiper.translate; 10669 let startTime = null; 10670 let time; 10671 const duration = swiper.params.speed; 10672 swiper.wrapperEl.style.scrollSnapType = 'none'; 10673 window.cancelAnimationFrame(swiper.cssModeFrameID); 10674 const dir = targetPosition > startPosition ? 'next' : 'prev'; 10675 const isOutOfBound = (current, target) => { 10676 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 10677 }; 10678 const animate = () => { 10679 time = new Date().getTime(); 10680 if (startTime === null) { 10681 startTime = time; 10682 } 10683 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 10684 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 10685 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 10686 if (isOutOfBound(currentPosition, targetPosition)) { 10687 currentPosition = targetPosition; 10688 } 10689 swiper.wrapperEl.scrollTo({ 10690 [side]: currentPosition 10691 }); 10692 if (isOutOfBound(currentPosition, targetPosition)) { 10693 swiper.wrapperEl.style.overflow = 'hidden'; 10694 swiper.wrapperEl.style.scrollSnapType = ''; 10695 setTimeout(() => { 10696 swiper.wrapperEl.style.overflow = ''; 10697 swiper.wrapperEl.scrollTo({ 10698 [side]: currentPosition 10699 }); 10700 }); 10701 window.cancelAnimationFrame(swiper.cssModeFrameID); 10702 return; 10703 } 10704 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 10705 }; 10706 animate(); 10707} 10708function getSlideTransformEl(slideEl) { 10709 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 10710} 10711function elementChildren(element, selector) { 10712 if (selector === void 0) { 10713 selector = ''; 10714 } 10715 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10716 const children = [...element.children]; 10717 if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { 10718 children.push(...element.assignedElements()); 10719 } 10720 if (!selector) { 10721 return children; 10722 } 10723 return children.filter(el => el.matches(selector)); 10724} 10725function elementIsChildOfSlot(el, slot) { 10726 // Breadth-first search through all parent's children and assigned elements 10727 const elementsQueue = [slot]; 10728 while (elementsQueue.length > 0) { 10729 const elementToCheck = elementsQueue.shift(); 10730 if (el === elementToCheck) { 10731 return true; 10732 } 10733 elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); 10734 } 10735} 10736function elementIsChildOf(el, parent) { 10737 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10738 let isChild = parent.contains(el); 10739 if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { 10740 const children = [...parent.assignedElements()]; 10741 isChild = children.includes(el); 10742 if (!isChild) { 10743 isChild = elementIsChildOfSlot(el, parent); 10744 } 10745 } 10746 return isChild; 10747} 10748function showWarning(text) { 10749 try { 10750 console.warn(text); 10751 return; 10752 } catch (err) { 10753 // err 10754 } 10755} 10756function createElement(tag, classes) { 10757 if (classes === void 0) { 10758 classes = []; 10759 } 10760 const el = document.createElement(tag); 10761 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 10762 return el; 10763} 10764function elementOffset(el) { 10765 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10766 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 10767 const box = el.getBoundingClientRect(); 10768 const body = document.body; 10769 const clientTop = el.clientTop || body.clientTop || 0; 10770 const clientLeft = el.clientLeft || body.clientLeft || 0; 10771 const scrollTop = el === window ? window.scrollY : el.scrollTop; 10772 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 10773 return { 10774 top: box.top + scrollTop - clientTop, 10775 left: box.left + scrollLeft - clientLeft 10776 }; 10777} 10778function elementPrevAll(el, selector) { 10779 const prevEls = []; 10780 while (el.previousElementSibling) { 10781 const prev = el.previousElementSibling; // eslint-disable-line 10782 if (selector) { 10783 if (prev.matches(selector)) prevEls.push(prev); 10784 } else prevEls.push(prev); 10785 el = prev; 10786 } 10787 return prevEls; 10788} 10789function elementNextAll(el, selector) { 10790 const nextEls = []; 10791 while (el.nextElementSibling) { 10792 const next = el.nextElementSibling; // eslint-disable-line 10793 if (selector) { 10794 if (next.matches(selector)) nextEls.push(next); 10795 } else nextEls.push(next); 10796 el = next; 10797 } 10798 return nextEls; 10799} 10800function elementStyle(el, prop) { 10801 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10802 return window.getComputedStyle(el, null).getPropertyValue(prop); 10803} 10804function elementIndex(el) { 10805 let child = el; 10806 let i; 10807 if (child) { 10808 i = 0; 10809 // eslint-disable-next-line 10810 while ((child = child.previousSibling) !== null) { 10811 if (child.nodeType === 1) i += 1; 10812 } 10813 return i; 10814 } 10815 return undefined; 10816} 10817function elementParents(el, selector) { 10818 const parents = []; // eslint-disable-line 10819 let parent = el.parentElement; // eslint-disable-line 10820 while (parent) { 10821 if (selector) { 10822 if (parent.matches(selector)) parents.push(parent); 10823 } else { 10824 parents.push(parent); 10825 } 10826 parent = parent.parentElement; 10827 } 10828 return parents; 10829} 10830function elementTransitionEnd(el, callback) { 10831 function fireCallBack(e) { 10832 if (e.target !== el) return; 10833 callback.call(el, e); 10834 el.removeEventListener('transitionend', fireCallBack); 10835 } 10836 if (callback) { 10837 el.addEventListener('transitionend', fireCallBack); 10838 } 10839} 10840function elementOuterSize(el, size, includeMargins) { 10841 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10842 if (includeMargins) { 10843 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')); 10844 } 10845 return el.offsetWidth; 10846} 10847function makeElementsArray(el) { 10848 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 10849} 10850function getRotateFix(swiper) { 10851 return v => { 10852 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 10853 return v + 0.001; 10854 } 10855 return v; 10856 }; 10857} 10858function setInnerHTML(el, html) { 10859 if (html === void 0) { 10860 html = ''; 10861 } 10862 if (typeof trustedTypes !== 'undefined') { 10863 el.innerHTML = trustedTypes.createPolicy('html', { 10864 createHTML: s => s 10865 }).createHTML(html); 10866 } else { 10867 el.innerHTML = html; 10868 } 10869} 10870 10871 10872 10873 10874/***/ }), 10875
vendor: 6,926 bytes, lines 10876-10956
10876/***/ "./node_modules/swiper/swiper-bundle.mjs": 10877/*!***********************************************!*\ 10878 !*** ./node_modules/swiper/swiper-bundle.mjs ***! 10879 \***********************************************/ 10880/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 10881 10882"use strict"; 10883__webpack_require__.r(__webpack_exports__); 10884/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10885/* harmony export */ Swiper: function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; }, 10886/* harmony export */ "default": function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; } 10887/* harmony export */ }); 10888/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 10889/* harmony import */ var _modules_virtual_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 10890/* harmony import */ var _modules_keyboard_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 10891/* harmony import */ var _modules_mousewheel_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 10892/* harmony import */ var _modules_navigation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 10893/* harmony import */ var _modules_pagination_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 10894/* harmony import */ var _modules_scrollbar_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 10895/* harmony import */ var _modules_parallax_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 10896/* harmony import */ var _modules_zoom_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 10897/* harmony import */ var _modules_controller_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 10898/* harmony import */ var _modules_a11y_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 10899/* harmony import */ var _modules_history_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/history.mjs */ "./node_modules/swiper/modules/history.mjs"); 10900/* harmony import */ var _modules_hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 10901/* harmony import */ var _modules_autoplay_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 10902/* harmony import */ var _modules_thumbs_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 10903/* harmony import */ var _modules_free_mode_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 10904/* harmony import */ var _modules_grid_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 10905/* harmony import */ var _modules_manipulation_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 10906/* harmony import */ var _modules_effect_fade_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 10907/* harmony import */ var _modules_effect_cube_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 10908/* harmony import */ var _modules_effect_flip_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 10909/* harmony import */ var _modules_effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 10910/* harmony import */ var _modules_effect_creative_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 10911/* harmony import */ var _modules_effect_cards_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 10912/** 10913 * Swiper 11.2.10 10914 * Most modern mobile touch slider and framework with hardware accelerated transitions 10915 * https://swiperjs.com 10916 * 10917 * Copyright 2014-2025 Vladimir Kharlampidi 10918 * 10919 * Released under the MIT License 10920 * 10921 * Released on: June 28, 2025 10922 */ 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949// Swiper Class 10950const modules = [_modules_virtual_mjs__WEBPACK_IMPORTED_MODULE_1__["default"], _modules_keyboard_mjs__WEBPACK_IMPORTED_MODULE_2__["default"], _modules_mousewheel_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], _modules_navigation_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], _modules_pagination_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], _modules_scrollbar_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_parallax_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], _modules_zoom_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], _modules_controller_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], _modules_a11y_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], _modules_history_mjs__WEBPACK_IMPORTED_MODULE_11__["default"], _modules_hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], _modules_autoplay_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], _modules_thumbs_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], _modules_free_mode_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], _modules_grid_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], _modules_manipulation_mjs__WEBPACK_IMPORTED_MODULE_17__["default"], _modules_effect_fade_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], _modules_effect_cube_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], _modules_effect_flip_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], _modules_effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], _modules_effect_creative_mjs__WEBPACK_IMPORTED_MODULE_22__["default"], _modules_effect_cards_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]]; 10951_shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S.use(modules); 10952 10953 10954 10955 10956/***/ })
vendor: 3,051 bytes, lines 10956-11027
10956 10957 10958/******/ }); 10959/************************************************************************/ 10960/******/ // The module cache 10961/******/ var __webpack_module_cache__ = {}; 10962/******/ 10963/******/ // The require function 10964/******/ function __webpack_require__(moduleId) { 10965/******/ // Check if module is in cache 10966/******/ var cachedModule = __webpack_module_cache__[moduleId]; 10967/******/ if (cachedModule !== undefined) { 10968/******/ return cachedModule.exports; 10969/******/ } 10970/******/ // Create a new module (and put it into the cache) 10971/******/ var module = __webpack_module_cache__[moduleId] = { 10972/******/ // no module.id needed 10973/******/ // no module.loaded needed 10974/******/ exports: {} 10975/******/ }; 10976/******/ 10977/******/ // Execute the module function 10978/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 10979/******/ 10980/******/ // Return the exports of the module 10981/******/ return module.exports; 10982/******/ } 10983/******/ 10984/************************************************************************/ 10985/******/ /* webpack/runtime/define property getters */ 10986/******/ !function() { 10987/******/ // define getter functions for harmony exports 10988/******/ __webpack_require__.d = function(exports, definition) { 10989/******/ for(var key in definition) { 10990/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 10991/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 10992/******/ } 10993/******/ } 10994/******/ }; 10995/******/ }(); 10996/******/ 10997/******/ /* webpack/runtime/hasOwnProperty shorthand */ 10998/******/ !function() { 10999/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 11000/******/ }(); 11001/******/ 11002/******/ /* webpack/runtime/make namespace object */ 11003/******/ !function() { 11004/******/ // define __esModule on exports 11005/******/ __webpack_require__.r = function(exports) { 11006/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 11007/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 11008/******/ } 11009/******/ Object.defineProperty(exports, '__esModule', { value: true }); 11010/******/ }; 11011/******/ }(); 11012/******/ 11013/************************************************************************/ 11014var __webpack_exports__ = {}; 11015// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. 11016!function() { 11017/*!**********************************************************************!*\ 11018 !*** ./cartridges/org_marykay/cartridge/client/default/js/slider.js ***! 11019 \**********************************************************************/ 11020var processInclude = __webpack_require__(/*! base/util */ "./cartridges/app_storefront_base/cartridge/client/default/js/util.js"); 11021$(document).ready(function () { 11022 processInclude(__webpack_require__(/*! ./components/swiper */ "./cartridges/org_marykay/cartridge/client/default/js/components/swiper.js")); 11023}); 11024}(); 11025/******/ })() 11026; 11027//# sourceMappingURL=slider.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.