vendor: 112 bytes, lines 1-5
1/******/ (() => { // webpackBootstrap 2/******/ "use strict"; 3/******/ var __webpack_modules__ = ({ 4 5/***/ "./s
5rc/blocks/banner-hero/view.js": 6/*!****************************************!*\ 7 !*** ./src/blocks/banner-hero/view.js ***! 8 \****************************************/ 9/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10 11__webpack_require__.r(__webpack_exports__); 12/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.mjs"); 13/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "./node_modules/swiper/modules/index.mjs"); 14/* harmony import */ var swiper_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! swiper/css */ "./node_modules/swiper/swiper.css"); 15/* harmony import */ var swiper_css_pagination__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! swiper/css/pagination */ "./node_modules/swiper/modules/pagination.css"); 16/* harmony import */ var _style_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style.css */ "./src/blocks/banner-hero/style.css"); 17 18 19 20 21 22document.addEventListener("DOMContentLoaded", () => { 23 const containers = document.querySelectorAll(".banner-hero-swiper"); 24 containers.forEach(el => { 25 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](el, { 26 modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Autoplay], 27 loop: true, 28 autoplay: { 29 delay: 5000, 30 disableOnInteraction: false 31 }, 32 navigation: { 33 nextEl: el.parentElement.querySelector(".banner-hero-next"), 34 prevEl: el.parentElement.querySelector(".banner-hero-prev") 35 }, 36 pagination: { 37 el: el.parentElement.querySelector(".banner-hero-pagination"), 38 clickable: true, 39 renderBullet: function (index, className) { 40 return '<button class="' + className + ' !w-2 !h-2 !rounded-full !bg-zinc-900 opacity-40 transition-all duration-200 cursor-pointer"></button>'; 41 } 42 } 43 }); 44 }); 45}); 46 47/***/ }), 48
vendor: 405 bytes, lines 49-60
49/***/ "./node_modules/swiper/modules/pagination.css": 50/*!****************************************************!*\ 51 !*** ./node_modules/swiper/modules/pagination.css ***! 52 \****************************************************/ 53/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 54 55__webpack_require__.r(__webpack_exports__); 56// extracted by mini-css-extract-plugin 57 58 59/***/ }), 60
vendor: 357 bytes, lines 61-72
61/***/ "./node_modules/swiper/swiper.css": 62/*!****************************************!*\ 63 !*** ./node_modules/swiper/swiper.css ***! 64 \****************************************/ 65/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 66 67__webpack_require__.r(__webpack_exports__); 68// extracted by mini-css-extract-plugin 69 70 71/***/ }), 72
73/***/ "./src/blocks/banner-hero/style.css": 74/*!******************************************!*\ 75 !*** ./src/blocks/banner-hero/style.css ***! 76 \******************************************/ 77/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 78 79__webpack_require__.r(__webpack_exports__); 80// extracted by mini-css-extract-plugin 81 82 83/***/ }), 84
vendor: 14,078 bytes, lines 85-479
85/***/ "./node_modules/swiper/modules/a11y.mjs": 86/*!**********************************************!*\ 87 !*** ./node_modules/swiper/modules/a11y.mjs ***! 88 \**********************************************/ 89/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 90 91__webpack_require__.r(__webpack_exports__); 92/* harmony export */ __webpack_require__.d(__webpack_exports__, { 93/* harmony export */ "default": () => (/* binding */ A11y) 94/* harmony export */ }); 95/* 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"); 96/* 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"); 97/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 98 99 100 101 102function A11y(_ref) { 103 let { 104 swiper, 105 extendParams, 106 on 107 } = _ref; 108 extendParams({ 109 a11y: { 110 enabled: true, 111 notificationClass: 'swiper-notification', 112 prevSlideMessage: 'Previous slide', 113 nextSlideMessage: 'Next slide', 114 firstSlideMessage: 'This is the first slide', 115 lastSlideMessage: 'This is the last slide', 116 paginationBulletMessage: 'Go to slide {{index}}', 117 slideLabelMessage: '{{index}} / {{slidesLength}}', 118 containerMessage: null, 119 containerRoleDescriptionMessage: null, 120 containerRole: null, 121 itemRoleDescriptionMessage: null, 122 slideRole: 'group', 123 id: null, 124 scrollOnFocus: true 125 } 126 }); 127 swiper.a11y = { 128 clicked: false 129 }; 130 let liveRegion = null; 131 let preventFocusHandler; 132 let focusTargetSlideEl; 133 let visibilityChangedTimestamp = new Date().getTime(); 134 function notify(message) { 135 const notification = liveRegion; 136 if (notification.length === 0) return; 137 notification.innerHTML = ''; 138 notification.innerHTML = message; 139 } 140 function getRandomNumber(size) { 141 if (size === void 0) { 142 size = 16; 143 } 144 const randomChar = () => Math.round(16 * Math.random()).toString(16); 145 return 'x'.repeat(size).replace(/x/g, randomChar); 146 } 147 function makeElFocusable(el) { 148 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 149 el.forEach(subEl => { 150 subEl.setAttribute('tabIndex', '0'); 151 }); 152 } 153 function makeElNotFocusable(el) { 154 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 155 el.forEach(subEl => { 156 subEl.setAttribute('tabIndex', '-1'); 157 }); 158 } 159 function addElRole(el, role) { 160 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 161 el.forEach(subEl => { 162 subEl.setAttribute('role', role); 163 }); 164 } 165 function addElRoleDescription(el, description) { 166 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 167 el.forEach(subEl => { 168 subEl.setAttribute('aria-roledescription', description); 169 }); 170 } 171 function addElControls(el, controls) { 172 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 173 el.forEach(subEl => { 174 subEl.setAttribute('aria-controls', controls); 175 }); 176 } 177 function addElLabel(el, label) { 178 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 179 el.forEach(subEl => { 180 subEl.setAttribute('aria-label', label); 181 }); 182 } 183 function addElId(el, id) { 184 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 185 el.forEach(subEl => { 186 subEl.setAttribute('id', id); 187 }); 188 } 189 function addElLive(el, live) { 190 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 191 el.forEach(subEl => { 192 subEl.setAttribute('aria-live', live); 193 }); 194 } 195 function disableEl(el) { 196 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 197 el.forEach(subEl => { 198 subEl.setAttribute('aria-disabled', true); 199 }); 200 } 201 function enableEl(el) { 202 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 203 el.forEach(subEl => { 204 subEl.setAttribute('aria-disabled', false); 205 }); 206 } 207 function onEnterOrSpaceKey(e) { 208 if (e.keyCode !== 13 && e.keyCode !== 32) return; 209 const params = swiper.params.a11y; 210 const targetEl = e.target; 211 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 212 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 213 } 214 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 215 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 216 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 217 if (nextEls.includes(targetEl)) { 218 if (!(swiper.isEnd && !swiper.params.loop)) { 219 swiper.slideNext(); 220 } 221 if (swiper.isEnd) { 222 notify(params.lastSlideMessage); 223 } else { 224 notify(params.nextSlideMessage); 225 } 226 } 227 if (prevEls.includes(targetEl)) { 228 if (!(swiper.isBeginning && !swiper.params.loop)) { 229 swiper.slidePrev(); 230 } 231 if (swiper.isBeginning) { 232 notify(params.firstSlideMessage); 233 } else { 234 notify(params.prevSlideMessage); 235 } 236 } 237 } 238 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 239 targetEl.click(); 240 } 241 } 242 function updateNavigation() { 243 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 244 const { 245 nextEl, 246 prevEl 247 } = swiper.navigation; 248 if (prevEl) { 249 if (swiper.isBeginning) { 250 disableEl(prevEl); 251 makeElNotFocusable(prevEl); 252 } else { 253 enableEl(prevEl); 254 makeElFocusable(prevEl); 255 } 256 } 257 if (nextEl) { 258 if (swiper.isEnd) { 259 disableEl(nextEl); 260 makeElNotFocusable(nextEl); 261 } else { 262 enableEl(nextEl); 263 makeElFocusable(nextEl); 264 } 265 } 266 } 267 function hasPagination() { 268 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 269 } 270 function hasClickablePagination() { 271 return hasPagination() && swiper.params.pagination.clickable; 272 } 273 function updatePagination() { 274 const params = swiper.params.a11y; 275 if (!hasPagination()) return; 276 swiper.pagination.bullets.forEach(bulletEl => { 277 if (swiper.params.pagination.clickable) { 278 makeElFocusable(bulletEl); 279 if (!swiper.params.pagination.renderBullet) { 280 addElRole(bulletEl, 'button'); 281 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1)); 282 } 283 } 284 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 285 bulletEl.setAttribute('aria-current', 'true'); 286 } else { 287 bulletEl.removeAttribute('aria-current'); 288 } 289 }); 290 } 291 const initNavEl = (el, wrapperId, message) => { 292 makeElFocusable(el); 293 if (el.tagName !== 'BUTTON') { 294 addElRole(el, 'button'); 295 el.addEventListener('keydown', onEnterOrSpaceKey); 296 } 297 addElLabel(el, message); 298 addElControls(el, wrapperId); 299 }; 300 const handlePointerDown = e => { 301 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 302 preventFocusHandler = true; 303 } 304 swiper.a11y.clicked = true; 305 }; 306 const handlePointerUp = () => { 307 preventFocusHandler = false; 308 requestAnimationFrame(() => { 309 requestAnimationFrame(() => { 310 if (!swiper.destroyed) { 311 swiper.a11y.clicked = false; 312 } 313 }); 314 }); 315 }; 316 const onVisibilityChange = e => { 317 visibilityChangedTimestamp = new Date().getTime(); 318 }; 319 const handleFocus = e => { 320 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 321 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 322 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 323 if (!slideEl || !swiper.slides.includes(slideEl)) return; 324 focusTargetSlideEl = slideEl; 325 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 326 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 327 if (isActive || isVisible) return; 328 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 329 if (swiper.isHorizontal()) { 330 swiper.el.scrollLeft = 0; 331 } else { 332 swiper.el.scrollTop = 0; 333 } 334 requestAnimationFrame(() => { 335 if (preventFocusHandler) return; 336 if (swiper.params.loop) { 337 swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); 338 } else { 339 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 340 } 341 preventFocusHandler = false; 342 }); 343 }; 344 const initSlides = () => { 345 const params = swiper.params.a11y; 346 if (params.itemRoleDescriptionMessage) { 347 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 348 } 349 if (params.slideRole) { 350 addElRole(swiper.slides, params.slideRole); 351 } 352 const slidesLength = swiper.slides.length; 353 if (params.slideLabelMessage) { 354 swiper.slides.forEach((slideEl, index) => { 355 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 356 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 357 addElLabel(slideEl, ariaLabelMessage); 358 }); 359 } 360 }; 361 const init = () => { 362 const params = swiper.params.a11y; 363 swiper.el.append(liveRegion); 364 365 // Container 366 const containerEl = swiper.el; 367 if (params.containerRoleDescriptionMessage) { 368 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 369 } 370 if (params.containerMessage) { 371 addElLabel(containerEl, params.containerMessage); 372 } 373 if (params.containerRole) { 374 addElRole(containerEl, params.containerRole); 375 } 376 377 // Wrapper 378 const wrapperEl = swiper.wrapperEl; 379 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 380 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 381 addElId(wrapperEl, wrapperId); 382 addElLive(wrapperEl, live); 383 384 // Slide 385 initSlides(); 386 387 // Navigation 388 let { 389 nextEl, 390 prevEl 391 } = swiper.navigation ? swiper.navigation : {}; 392 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 393 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 394 if (nextEl) { 395 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 396 } 397 if (prevEl) { 398 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 399 } 400 401 // Pagination 402 if (hasClickablePagination()) { 403 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 404 paginationEl.forEach(el => { 405 el.addEventListener('keydown', onEnterOrSpaceKey); 406 }); 407 } 408 409 // Tab focus 410 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 411 document.addEventListener('visibilitychange', onVisibilityChange); 412 swiper.el.addEventListener('focus', handleFocus, true); 413 swiper.el.addEventListener('focus', handleFocus, true); 414 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 415 swiper.el.addEventListener('pointerup', handlePointerUp, true); 416 }; 417 function destroy() { 418 if (liveRegion) liveRegion.remove(); 419 let { 420 nextEl, 421 prevEl 422 } = swiper.navigation ? swiper.navigation : {}; 423 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 424 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 425 if (nextEl) { 426 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 427 } 428 if (prevEl) { 429 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 430 } 431 432 // Pagination 433 if (hasClickablePagination()) { 434 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 435 paginationEl.forEach(el => { 436 el.removeEventListener('keydown', onEnterOrSpaceKey); 437 }); 438 } 439 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 440 document.removeEventListener('visibilitychange', onVisibilityChange); 441 // Tab focus 442 if (swiper.el && typeof swiper.el !== 'string') { 443 swiper.el.removeEventListener('focus', handleFocus, true); 444 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 445 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 446 } 447 } 448 on('beforeInit', () => { 449 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 450 liveRegion.setAttribute('aria-live', 'assertive'); 451 liveRegion.setAttribute('aria-atomic', 'true'); 452 }); 453 on('afterInit', () => { 454 if (!swiper.params.a11y.enabled) return; 455 init(); 456 }); 457 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 458 if (!swiper.params.a11y.enabled) return; 459 initSlides(); 460 }); 461 on('fromEdge toEdge afterInit lock unlock', () => { 462 if (!swiper.params.a11y.enabled) return; 463 updateNavigation(); 464 }); 465 on('paginationUpdate', () => { 466 if (!swiper.params.a11y.enabled) return; 467 updatePagination(); 468 }); 469 on('destroy', () => { 470 if (!swiper.params.a11y.enabled) return; 471 destroy(); 472 }); 473} 474 475 476 477 478/***/ }), 479
vendor: 10,035 bytes, lines 480-798
480/***/ "./node_modules/swiper/modules/autoplay.mjs": 481/*!**************************************************!*\ 482 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 483 \**************************************************/ 484/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 485 486__webpack_require__.r(__webpack_exports__); 487/* harmony export */ __webpack_require__.d(__webpack_exports__, { 488/* harmony export */ "default": () => (/* binding */ Autoplay) 489/* harmony export */ }); 490/* 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"); 491 492 493/* eslint no-underscore-dangle: "off" */ 494/* eslint no-use-before-define: "off" */ 495function Autoplay(_ref) { 496 let { 497 swiper, 498 extendParams, 499 on, 500 emit, 501 params 502 } = _ref; 503 swiper.autoplay = { 504 running: false, 505 paused: false, 506 timeLeft: 0 507 }; 508 extendParams({ 509 autoplay: { 510 enabled: false, 511 delay: 3000, 512 waitForTransition: true, 513 disableOnInteraction: false, 514 stopOnLastSlide: false, 515 reverseDirection: false, 516 pauseOnMouseEnter: false 517 } 518 }); 519 let timeout; 520 let raf; 521 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 522 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 523 let autoplayTimeLeft; 524 let autoplayStartTime = new Date().getTime(); 525 let wasPaused; 526 let isTouched; 527 let pausedByTouch; 528 let touchStartTimeout; 529 let slideChanged; 530 let pausedByInteraction; 531 let pausedByPointerEnter; 532 function onTransitionEnd(e) { 533 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 534 if (e.target !== swiper.wrapperEl) return; 535 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 536 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 537 return; 538 } 539 resume(); 540 } 541 const calcTimeLeft = () => { 542 if (swiper.destroyed || !swiper.autoplay.running) return; 543 if (swiper.autoplay.paused) { 544 wasPaused = true; 545 } else if (wasPaused) { 546 autoplayDelayCurrent = autoplayTimeLeft; 547 wasPaused = false; 548 } 549 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 550 swiper.autoplay.timeLeft = timeLeft; 551 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 552 raf = requestAnimationFrame(() => { 553 calcTimeLeft(); 554 }); 555 }; 556 const getSlideDelay = () => { 557 let activeSlideEl; 558 if (swiper.virtual && swiper.params.virtual.enabled) { 559 activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; 560 } else { 561 activeSlideEl = swiper.slides[swiper.activeIndex]; 562 } 563 if (!activeSlideEl) return undefined; 564 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 565 return currentSlideDelay; 566 }; 567 const run = delayForce => { 568 if (swiper.destroyed || !swiper.autoplay.running) return; 569 cancelAnimationFrame(raf); 570 calcTimeLeft(); 571 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 572 autoplayDelayTotal = swiper.params.autoplay.delay; 573 autoplayDelayCurrent = swiper.params.autoplay.delay; 574 const currentSlideDelay = getSlideDelay(); 575 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 576 delay = currentSlideDelay; 577 autoplayDelayTotal = currentSlideDelay; 578 autoplayDelayCurrent = currentSlideDelay; 579 } 580 autoplayTimeLeft = delay; 581 const speed = swiper.params.speed; 582 const proceed = () => { 583 if (!swiper || swiper.destroyed) return; 584 if (swiper.params.autoplay.reverseDirection) { 585 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 586 swiper.slidePrev(speed, true, true); 587 emit('autoplay'); 588 } else if (!swiper.params.autoplay.stopOnLastSlide) { 589 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 590 emit('autoplay'); 591 } 592 } else { 593 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 594 swiper.slideNext(speed, true, true); 595 emit('autoplay'); 596 } else if (!swiper.params.autoplay.stopOnLastSlide) { 597 swiper.slideTo(0, speed, true, true); 598 emit('autoplay'); 599 } 600 } 601 if (swiper.params.cssMode) { 602 autoplayStartTime = new Date().getTime(); 603 requestAnimationFrame(() => { 604 run(); 605 }); 606 } 607 }; 608 if (delay > 0) { 609 clearTimeout(timeout); 610 timeout = setTimeout(() => { 611 proceed(); 612 }, delay); 613 } else { 614 requestAnimationFrame(() => { 615 proceed(); 616 }); 617 } 618 619 // eslint-disable-next-line 620 return delay; 621 }; 622 const start = () => { 623 autoplayStartTime = new Date().getTime(); 624 swiper.autoplay.running = true; 625 run(); 626 emit('autoplayStart'); 627 }; 628 const stop = () => { 629 swiper.autoplay.running = false; 630 clearTimeout(timeout); 631 cancelAnimationFrame(raf); 632 emit('autoplayStop'); 633 }; 634 const pause = (internal, reset) => { 635 if (swiper.destroyed || !swiper.autoplay.running) return; 636 clearTimeout(timeout); 637 if (!internal) { 638 pausedByInteraction = true; 639 } 640 const proceed = () => { 641 emit('autoplayPause'); 642 if (swiper.params.autoplay.waitForTransition) { 643 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 644 } else { 645 resume(); 646 } 647 }; 648 swiper.autoplay.paused = true; 649 if (reset) { 650 if (slideChanged) { 651 autoplayTimeLeft = swiper.params.autoplay.delay; 652 } 653 slideChanged = false; 654 proceed(); 655 return; 656 } 657 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 658 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 659 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 660 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 661 proceed(); 662 }; 663 const resume = () => { 664 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 665 autoplayStartTime = new Date().getTime(); 666 if (pausedByInteraction) { 667 pausedByInteraction = false; 668 run(autoplayTimeLeft); 669 } else { 670 run(); 671 } 672 swiper.autoplay.paused = false; 673 emit('autoplayResume'); 674 }; 675 const onVisibilityChange = () => { 676 if (swiper.destroyed || !swiper.autoplay.running) return; 677 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 678 if (document.visibilityState === 'hidden') { 679 pausedByInteraction = true; 680 pause(true); 681 } 682 if (document.visibilityState === 'visible') { 683 resume(); 684 } 685 }; 686 const onPointerEnter = e => { 687 if (e.pointerType !== 'mouse') return; 688 pausedByInteraction = true; 689 pausedByPointerEnter = true; 690 if (swiper.animating || swiper.autoplay.paused) return; 691 pause(true); 692 }; 693 const onPointerLeave = e => { 694 if (e.pointerType !== 'mouse') return; 695 pausedByPointerEnter = false; 696 if (swiper.autoplay.paused) { 697 resume(); 698 } 699 }; 700 const attachMouseEvents = () => { 701 if (swiper.params.autoplay.pauseOnMouseEnter) { 702 swiper.el.addEventListener('pointerenter', onPointerEnter); 703 swiper.el.addEventListener('pointerleave', onPointerLeave); 704 } 705 }; 706 const detachMouseEvents = () => { 707 if (swiper.el && typeof swiper.el !== 'string') { 708 swiper.el.removeEventListener('pointerenter', onPointerEnter); 709 swiper.el.removeEventListener('pointerleave', onPointerLeave); 710 } 711 }; 712 const attachDocumentEvents = () => { 713 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 714 document.addEventListener('visibilitychange', onVisibilityChange); 715 }; 716 const detachDocumentEvents = () => { 717 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 718 document.removeEventListener('visibilitychange', onVisibilityChange); 719 }; 720 on('init', () => { 721 if (swiper.params.autoplay.enabled) { 722 attachMouseEvents(); 723 attachDocumentEvents(); 724 start(); 725 } 726 }); 727 on('destroy', () => { 728 detachMouseEvents(); 729 detachDocumentEvents(); 730 if (swiper.autoplay.running) { 731 stop(); 732 } 733 }); 734 on('_freeModeStaticRelease', () => { 735 if (pausedByTouch || pausedByInteraction) { 736 resume(); 737 } 738 }); 739 on('_freeModeNoMomentumRelease', () => { 740 if (!swiper.params.autoplay.disableOnInteraction) { 741 pause(true, true); 742 } else { 743 stop(); 744 } 745 }); 746 on('beforeTransitionStart', (_s, speed, internal) => { 747 if (swiper.destroyed || !swiper.autoplay.running) return; 748 if (internal || !swiper.params.autoplay.disableOnInteraction) { 749 pause(true, true); 750 } else { 751 stop(); 752 } 753 }); 754 on('sliderFirstMove', () => { 755 if (swiper.destroyed || !swiper.autoplay.running) return; 756 if (swiper.params.autoplay.disableOnInteraction) { 757 stop(); 758 return; 759 } 760 isTouched = true; 761 pausedByTouch = false; 762 pausedByInteraction = false; 763 touchStartTimeout = setTimeout(() => { 764 pausedByInteraction = true; 765 pausedByTouch = true; 766 pause(true); 767 }, 200); 768 }); 769 on('touchEnd', () => { 770 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 771 clearTimeout(touchStartTimeout); 772 clearTimeout(timeout); 773 if (swiper.params.autoplay.disableOnInteraction) { 774 pausedByTouch = false; 775 isTouched = false; 776 return; 777 } 778 if (pausedByTouch && swiper.params.cssMode) resume(); 779 pausedByTouch = false; 780 isTouched = false; 781 }); 782 on('slideChange', () => { 783 if (swiper.destroyed || !swiper.autoplay.running) return; 784 slideChanged = true; 785 }); 786 Object.assign(swiper.autoplay, { 787 start, 788 stop, 789 pause, 790 resume 791 }); 792} 793 794 795 796 797/***/ }), 798
vendor: 7,499 bytes, lines 799-1004
799/***/ "./node_modules/swiper/modules/controller.mjs": 800/*!****************************************************!*\ 801 !*** ./node_modules/swiper/modules/controller.mjs ***! 802 \****************************************************/ 803/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 804 805__webpack_require__.r(__webpack_exports__); 806/* harmony export */ __webpack_require__.d(__webpack_exports__, { 807/* harmony export */ "default": () => (/* binding */ Controller) 808/* harmony export */ }); 809/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 810 811 812/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 813function Controller(_ref) { 814 let { 815 swiper, 816 extendParams, 817 on 818 } = _ref; 819 extendParams({ 820 controller: { 821 control: undefined, 822 inverse: false, 823 by: 'slide' // or 'container' 824 } 825 }); 826 827 swiper.controller = { 828 control: undefined 829 }; 830 function LinearSpline(x, y) { 831 const binarySearch = function search() { 832 let maxIndex; 833 let minIndex; 834 let guess; 835 return (array, val) => { 836 minIndex = -1; 837 maxIndex = array.length; 838 while (maxIndex - minIndex > 1) { 839 guess = maxIndex + minIndex >> 1; 840 if (array[guess] <= val) { 841 minIndex = guess; 842 } else { 843 maxIndex = guess; 844 } 845 } 846 return maxIndex; 847 }; 848 }(); 849 this.x = x; 850 this.y = y; 851 this.lastIndex = x.length - 1; 852 // Given an x value (x2), return the expected y2 value: 853 // (x1,y1) is the known point before given value, 854 // (x3,y3) is the known point after given value. 855 let i1; 856 let i3; 857 this.interpolate = function interpolate(x2) { 858 if (!x2) return 0; 859 860 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 861 i3 = binarySearch(this.x, x2); 862 i1 = i3 - 1; 863 864 // We have our indexes i1 & i3, so we can calculate already: 865 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 866 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 867 }; 868 return this; 869 } 870 function getInterpolateFunction(c) { 871 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 872 } 873 function setTranslate(_t, byController) { 874 const controlled = swiper.controller.control; 875 let multiplier; 876 let controlledTranslate; 877 const Swiper = swiper.constructor; 878 function setControlledTranslate(c) { 879 if (c.destroyed) return; 880 881 // this will create an Interpolate function based on the snapGrids 882 // x is the Grid of the scrolled scroller and y will be the controlled scroller 883 // it makes sense to create this only once and recall it for the interpolation 884 // the function does a lot of value caching for performance 885 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 886 if (swiper.params.controller.by === 'slide') { 887 getInterpolateFunction(c); 888 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 889 // but it did not work out 890 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 891 } 892 if (!controlledTranslate || swiper.params.controller.by === 'container') { 893 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 894 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 895 multiplier = 1; 896 } 897 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 898 } 899 if (swiper.params.controller.inverse) { 900 controlledTranslate = c.maxTranslate() - controlledTranslate; 901 } 902 c.updateProgress(controlledTranslate); 903 c.setTranslate(controlledTranslate, swiper); 904 c.updateActiveIndex(); 905 c.updateSlidesClasses(); 906 } 907 if (Array.isArray(controlled)) { 908 for (let i = 0; i < controlled.length; i += 1) { 909 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 910 setControlledTranslate(controlled[i]); 911 } 912 } 913 } else if (controlled instanceof Swiper && byController !== controlled) { 914 setControlledTranslate(controlled); 915 } 916 } 917 function setTransition(duration, byController) { 918 const Swiper = swiper.constructor; 919 const controlled = swiper.controller.control; 920 let i; 921 function setControlledTransition(c) { 922 if (c.destroyed) return; 923 c.setTransition(duration, swiper); 924 if (duration !== 0) { 925 c.transitionStart(); 926 if (c.params.autoHeight) { 927 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 928 c.updateAutoHeight(); 929 }); 930 } 931 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => { 932 if (!controlled) return; 933 c.transitionEnd(); 934 }); 935 } 936 } 937 if (Array.isArray(controlled)) { 938 for (i = 0; i < controlled.length; i += 1) { 939 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 940 setControlledTransition(controlled[i]); 941 } 942 } 943 } else if (controlled instanceof Swiper && byController !== controlled) { 944 setControlledTransition(controlled); 945 } 946 } 947 function removeSpline() { 948 if (!swiper.controller.control) return; 949 if (swiper.controller.spline) { 950 swiper.controller.spline = undefined; 951 delete swiper.controller.spline; 952 } 953 } 954 on('beforeInit', () => { 955 if (typeof window !== 'undefined' && ( 956 // eslint-disable-line 957 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 958 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 959 controlElements.forEach(controlElement => { 960 if (!swiper.controller.control) swiper.controller.control = []; 961 if (controlElement && controlElement.swiper) { 962 swiper.controller.control.push(controlElement.swiper); 963 } else if (controlElement) { 964 const eventName = `${swiper.params.eventsPrefix}init`; 965 const onControllerSwiper = e => { 966 swiper.controller.control.push(e.detail[0]); 967 swiper.update(); 968 controlElement.removeEventListener(eventName, onControllerSwiper); 969 }; 970 controlElement.addEventListener(eventName, onControllerSwiper); 971 } 972 }); 973 return; 974 } 975 swiper.controller.control = swiper.params.controller.control; 976 }); 977 on('update', () => { 978 removeSpline(); 979 }); 980 on('resize', () => { 981 removeSpline(); 982 }); 983 on('observerUpdate', () => { 984 removeSpline(); 985 }); 986 on('setTranslate', (_s, translate, byController) => { 987 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 988 swiper.controller.setTranslate(translate, byController); 989 }); 990 on('setTransition', (_s, duration, byController) => { 991 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 992 swiper.controller.setTransition(duration, byController); 993 }); 994 Object.assign(swiper.controller, { 995 setTranslate, 996 setTransition 997 }); 998} 999 1000 1001 1002 1003/***/ }), 1004
vendor: 5,896 bytes, lines 1005-1148
1005/***/ "./node_modules/swiper/modules/effect-cards.mjs": 1006/*!******************************************************!*\ 1007 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 1008 \******************************************************/ 1009/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1010 1011__webpack_require__.r(__webpack_exports__); 1012/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1013/* harmony export */ "default": () => (/* binding */ EffectCards) 1014/* harmony export */ }); 1015/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1016/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1017/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1018/* 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"); 1019/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1020 1021 1022 1023 1024 1025 1026function EffectCards(_ref) { 1027 let { 1028 swiper, 1029 extendParams, 1030 on 1031 } = _ref; 1032 extendParams({ 1033 cardsEffect: { 1034 slideShadows: true, 1035 rotate: true, 1036 perSlideRotate: 2, 1037 perSlideOffset: 8 1038 } 1039 }); 1040 const setTranslate = () => { 1041 const { 1042 slides, 1043 activeIndex, 1044 rtlTranslate: rtl 1045 } = swiper; 1046 const params = swiper.params.cardsEffect; 1047 const { 1048 startTranslate, 1049 isTouched 1050 } = swiper.touchEventsData; 1051 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 1052 for (let i = 0; i < slides.length; i += 1) { 1053 const slideEl = slides[i]; 1054 const slideProgress = slideEl.progress; 1055 const progress = Math.min(Math.max(slideProgress, -4), 4); 1056 let offset = slideEl.swiperSlideOffset; 1057 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 1058 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 1059 } 1060 if (swiper.params.centeredSlides && swiper.params.cssMode) { 1061 offset -= slides[0].swiperSlideOffset; 1062 } 1063 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 1064 let tY = 0; 1065 const tZ = -100 * Math.abs(progress); 1066 let scale = 1; 1067 let rotate = -params.perSlideRotate * progress; 1068 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 1069 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 1070 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 1071 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 1072 if (isSwipeToNext || isSwipeToPrev) { 1073 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 1074 rotate += -28 * progress * subProgress; 1075 scale += -0.5 * subProgress; 1076 tXAdd += 96 * subProgress; 1077 tY = `${-25 * subProgress * Math.abs(progress)}%`; 1078 } 1079 if (progress < 0) { 1080 // next 1081 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 1082 } else if (progress > 0) { 1083 // prev 1084 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 1085 } else { 1086 tX = `${tX}px`; 1087 } 1088 if (!swiper.isHorizontal()) { 1089 const prevY = tY; 1090 tY = tX; 1091 tX = prevY; 1092 } 1093 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 1094 1095 /* eslint-disable */ 1096 const transform = ` 1097 translate3d(${tX}, ${tY}, ${tZ}px) 1098 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 1099 scale(${scaleString}) 1100 `; 1101 /* eslint-enable */ 1102 1103 if (params.slideShadows) { 1104 // Set shadows 1105 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1106 if (!shadowEl) { 1107 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 1108 } 1109 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 1110 } 1111 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1112 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1113 targetEl.style.transform = transform; 1114 } 1115 }; 1116 const setTransition = duration => { 1117 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1118 transformElements.forEach(el => { 1119 el.style.transitionDuration = `${duration}ms`; 1120 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1121 shadowEl.style.transitionDuration = `${duration}ms`; 1122 }); 1123 }); 1124 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1125 swiper, 1126 duration, 1127 transformElements 1128 }); 1129 }; 1130 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1131 effect: 'cards', 1132 swiper, 1133 on, 1134 setTranslate, 1135 setTransition, 1136 perspective: () => true, 1137 overwriteParams: () => ({ 1138 watchSlidesProgress: true, 1139 virtualTranslate: !swiper.params.cssMode 1140 }) 1141 }); 1142} 1143 1144 1145 1146 1147/***/ }), 1148
vendor: 5,680 bytes, lines 1149-1270
1149/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 1150/*!**********************************************************!*\ 1151 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 1152 \**********************************************************/ 1153/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1154 1155__webpack_require__.r(__webpack_exports__); 1156/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1157/* harmony export */ "default": () => (/* binding */ EffectCoverflow) 1158/* harmony export */ }); 1159/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1160/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1161/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1162/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1163 1164 1165 1166 1167 1168function EffectCoverflow(_ref) { 1169 let { 1170 swiper, 1171 extendParams, 1172 on 1173 } = _ref; 1174 extendParams({ 1175 coverflowEffect: { 1176 rotate: 50, 1177 stretch: 0, 1178 depth: 100, 1179 scale: 1, 1180 modifier: 1, 1181 slideShadows: true 1182 } 1183 }); 1184 const setTranslate = () => { 1185 const { 1186 width: swiperWidth, 1187 height: swiperHeight, 1188 slides, 1189 slidesSizesGrid 1190 } = swiper; 1191 const params = swiper.params.coverflowEffect; 1192 const isHorizontal = swiper.isHorizontal(); 1193 const transform = swiper.translate; 1194 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 1195 const rotate = isHorizontal ? params.rotate : -params.rotate; 1196 const translate = params.depth; 1197 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper); 1198 // Each slide offset from center 1199 for (let i = 0, length = slides.length; i < length; i += 1) { 1200 const slideEl = slides[i]; 1201 const slideSize = slidesSizesGrid[i]; 1202 const slideOffset = slideEl.swiperSlideOffset; 1203 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 1204 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 1205 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 1206 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 1207 // var rotateZ = 0 1208 let translateZ = -translate * Math.abs(offsetMultiplier); 1209 let stretch = params.stretch; 1210 // Allow percentage to make a relative stretch for responsive sliders 1211 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 1212 stretch = parseFloat(params.stretch) / 100 * slideSize; 1213 } 1214 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 1215 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 1216 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 1217 1218 // Fix for ultra small values 1219 if (Math.abs(translateX) < 0.001) translateX = 0; 1220 if (Math.abs(translateY) < 0.001) translateY = 0; 1221 if (Math.abs(translateZ) < 0.001) translateZ = 0; 1222 if (Math.abs(rotateY) < 0.001) rotateY = 0; 1223 if (Math.abs(rotateX) < 0.001) rotateX = 0; 1224 if (Math.abs(scale) < 0.001) scale = 0; 1225 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 1226 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1227 targetEl.style.transform = slideTransform; 1228 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 1229 if (params.slideShadows) { 1230 // Set shadows 1231 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1232 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1233 if (!shadowBeforeEl) { 1234 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 1235 } 1236 if (!shadowAfterEl) { 1237 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 1238 } 1239 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 1240 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 1241 } 1242 } 1243 }; 1244 const setTransition = duration => { 1245 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1246 transformElements.forEach(el => { 1247 el.style.transitionDuration = `${duration}ms`; 1248 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1249 shadowEl.style.transitionDuration = `${duration}ms`; 1250 }); 1251 }); 1252 }; 1253 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1254 effect: 'coverflow', 1255 swiper, 1256 on, 1257 setTranslate, 1258 setTransition, 1259 perspective: () => true, 1260 overwriteParams: () => ({ 1261 watchSlidesProgress: true 1262 }) 1263 }); 1264} 1265 1266 1267 1268 1269/***/ }), 1270
vendor: 6,449 bytes, lines 1271-1435
1271/***/ "./node_modules/swiper/modules/effect-creative.mjs": 1272/*!*********************************************************!*\ 1273 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 1274 \*********************************************************/ 1275/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1276 1277__webpack_require__.r(__webpack_exports__); 1278/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1279/* harmony export */ "default": () => (/* binding */ EffectCreative) 1280/* harmony export */ }); 1281/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1282/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1283/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1284/* 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"); 1285/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1286 1287 1288 1289 1290 1291 1292function EffectCreative(_ref) { 1293 let { 1294 swiper, 1295 extendParams, 1296 on 1297 } = _ref; 1298 extendParams({ 1299 creativeEffect: { 1300 limitProgress: 1, 1301 shadowPerProgress: false, 1302 progressMultiplier: 1, 1303 perspective: true, 1304 prev: { 1305 translate: [0, 0, 0], 1306 rotate: [0, 0, 0], 1307 opacity: 1, 1308 scale: 1 1309 }, 1310 next: { 1311 translate: [0, 0, 0], 1312 rotate: [0, 0, 0], 1313 opacity: 1, 1314 scale: 1 1315 } 1316 } 1317 }); 1318 const getTranslateValue = value => { 1319 if (typeof value === 'string') return value; 1320 return `${value}px`; 1321 }; 1322 const setTranslate = () => { 1323 const { 1324 slides, 1325 wrapperEl, 1326 slidesSizesGrid 1327 } = swiper; 1328 const params = swiper.params.creativeEffect; 1329 const { 1330 progressMultiplier: multiplier 1331 } = params; 1332 const isCenteredSlides = swiper.params.centeredSlides; 1333 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 1334 if (isCenteredSlides) { 1335 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 1336 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 1337 } 1338 for (let i = 0; i < slides.length; i += 1) { 1339 const slideEl = slides[i]; 1340 const slideProgress = slideEl.progress; 1341 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 1342 let originalProgress = progress; 1343 if (!isCenteredSlides) { 1344 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 1345 } 1346 const offset = slideEl.swiperSlideOffset; 1347 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 1348 const r = [0, 0, 0]; 1349 let custom = false; 1350 if (!swiper.isHorizontal()) { 1351 t[1] = t[0]; 1352 t[0] = 0; 1353 } 1354 let data = { 1355 translate: [0, 0, 0], 1356 rotate: [0, 0, 0], 1357 scale: 1, 1358 opacity: 1 1359 }; 1360 if (progress < 0) { 1361 data = params.next; 1362 custom = true; 1363 } else if (progress > 0) { 1364 data = params.prev; 1365 custom = true; 1366 } 1367 // set translate 1368 t.forEach((value, index) => { 1369 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 1370 }); 1371 // set rotates 1372 r.forEach((value, index) => { 1373 let val = data.rotate[index] * Math.abs(progress * multiplier); 1374 r[index] = val; 1375 }); 1376 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1377 const translateString = t.join(', '); 1378 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 1379 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 1380 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 1381 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 1382 1383 // Set shadows 1384 if (custom && data.shadow || !custom) { 1385 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1386 if (!shadowEl && data.shadow) { 1387 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 1388 } 1389 if (shadowEl) { 1390 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 1391 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 1392 } 1393 } 1394 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1395 targetEl.style.transform = transform; 1396 targetEl.style.opacity = opacityString; 1397 if (data.origin) { 1398 targetEl.style.transformOrigin = data.origin; 1399 } 1400 } 1401 }; 1402 const setTransition = duration => { 1403 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1404 transformElements.forEach(el => { 1405 el.style.transitionDuration = `${duration}ms`; 1406 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1407 shadowEl.style.transitionDuration = `${duration}ms`; 1408 }); 1409 }); 1410 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1411 swiper, 1412 duration, 1413 transformElements, 1414 allSlides: true 1415 }); 1416 }; 1417 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1418 effect: 'creative', 1419 swiper, 1420 on, 1421 setTranslate, 1422 setTransition, 1423 perspective: () => swiper.params.creativeEffect.perspective, 1424 overwriteParams: () => ({ 1425 watchSlidesProgress: true, 1426 virtualTranslate: !swiper.params.cssMode 1427 }) 1428 }); 1429} 1430 1431 1432 1433 1434/***/ }), 1435
vendor: 7,602 bytes, lines 1436-1625
1436/***/ "./node_modules/swiper/modules/effect-cube.mjs": 1437/*!*****************************************************!*\ 1438 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 1439 \*****************************************************/ 1440/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1441 1442__webpack_require__.r(__webpack_exports__); 1443/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1444/* harmony export */ "default": () => (/* binding */ EffectCube) 1445/* harmony export */ }); 1446/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1447/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1448 1449 1450 1451function EffectCube(_ref) { 1452 let { 1453 swiper, 1454 extendParams, 1455 on 1456 } = _ref; 1457 extendParams({ 1458 cubeEffect: { 1459 slideShadows: true, 1460 shadow: true, 1461 shadowOffset: 20, 1462 shadowScale: 0.94 1463 } 1464 }); 1465 const createSlideShadows = (slideEl, progress, isHorizontal) => { 1466 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1467 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1468 if (!shadowBefore) { 1469 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 1470 slideEl.append(shadowBefore); 1471 } 1472 if (!shadowAfter) { 1473 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 1474 slideEl.append(shadowAfter); 1475 } 1476 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1477 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1478 }; 1479 const recreateShadows = () => { 1480 // create new ones 1481 const isHorizontal = swiper.isHorizontal(); 1482 swiper.slides.forEach(slideEl => { 1483 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1484 createSlideShadows(slideEl, progress, isHorizontal); 1485 }); 1486 }; 1487 const setTranslate = () => { 1488 const { 1489 el, 1490 wrapperEl, 1491 slides, 1492 width: swiperWidth, 1493 height: swiperHeight, 1494 rtlTranslate: rtl, 1495 size: swiperSize, 1496 browser 1497 } = swiper; 1498 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper); 1499 const params = swiper.params.cubeEffect; 1500 const isHorizontal = swiper.isHorizontal(); 1501 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 1502 let wrapperRotate = 0; 1503 let cubeShadowEl; 1504 if (params.shadow) { 1505 if (isHorizontal) { 1506 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 1507 if (!cubeShadowEl) { 1508 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1509 swiper.wrapperEl.append(cubeShadowEl); 1510 } 1511 cubeShadowEl.style.height = `${swiperWidth}px`; 1512 } else { 1513 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 1514 if (!cubeShadowEl) { 1515 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1516 el.append(cubeShadowEl); 1517 } 1518 } 1519 } 1520 for (let i = 0; i < slides.length; i += 1) { 1521 const slideEl = slides[i]; 1522 let slideIndex = i; 1523 if (isVirtual) { 1524 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 1525 } 1526 let slideAngle = slideIndex * 90; 1527 let round = Math.floor(slideAngle / 360); 1528 if (rtl) { 1529 slideAngle = -slideAngle; 1530 round = Math.floor(-slideAngle / 360); 1531 } 1532 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1533 let tx = 0; 1534 let ty = 0; 1535 let tz = 0; 1536 if (slideIndex % 4 === 0) { 1537 tx = -round * 4 * swiperSize; 1538 tz = 0; 1539 } else if ((slideIndex - 1) % 4 === 0) { 1540 tx = 0; 1541 tz = -round * 4 * swiperSize; 1542 } else if ((slideIndex - 2) % 4 === 0) { 1543 tx = swiperSize + round * 4 * swiperSize; 1544 tz = swiperSize; 1545 } else if ((slideIndex - 3) % 4 === 0) { 1546 tx = -swiperSize; 1547 tz = 3 * swiperSize + swiperSize * 4 * round; 1548 } 1549 if (rtl) { 1550 tx = -tx; 1551 } 1552 if (!isHorizontal) { 1553 ty = tx; 1554 tx = 0; 1555 } 1556 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 1557 if (progress <= 1 && progress > -1) { 1558 wrapperRotate = slideIndex * 90 + progress * 90; 1559 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 1560 } 1561 slideEl.style.transform = transform; 1562 if (params.slideShadows) { 1563 createSlideShadows(slideEl, progress, isHorizontal); 1564 } 1565 } 1566 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 1567 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 1568 if (params.shadow) { 1569 if (isHorizontal) { 1570 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 1571 } else { 1572 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 1573 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 1574 const scale1 = params.shadowScale; 1575 const scale2 = params.shadowScale / multiplier; 1576 const offset = params.shadowOffset; 1577 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 1578 } 1579 } 1580 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 1581 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 1582 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 1583 }; 1584 const setTransition = duration => { 1585 const { 1586 el, 1587 slides 1588 } = swiper; 1589 slides.forEach(slideEl => { 1590 slideEl.style.transitionDuration = `${duration}ms`; 1591 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 1592 subEl.style.transitionDuration = `${duration}ms`; 1593 }); 1594 }); 1595 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 1596 const shadowEl = el.querySelector('.swiper-cube-shadow'); 1597 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 1598 } 1599 }; 1600 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1601 effect: 'cube', 1602 swiper, 1603 on, 1604 setTranslate, 1605 setTransition, 1606 recreateShadows, 1607 getEffectParams: () => swiper.params.cubeEffect, 1608 perspective: () => true, 1609 overwriteParams: () => ({ 1610 slidesPerView: 1, 1611 slidesPerGroup: 1, 1612 watchSlidesProgress: true, 1613 resistanceRatio: 0, 1614 spaceBetween: 0, 1615 centeredSlides: false, 1616 virtualTranslate: true 1617 }) 1618 }); 1619} 1620 1621 1622 1623 1624/***/ }), 1625
vendor: 3,069 bytes, lines 1626-1709
1626/***/ "./node_modules/swiper/modules/effect-fade.mjs": 1627/*!*****************************************************!*\ 1628 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 1629 \*****************************************************/ 1630/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1631 1632__webpack_require__.r(__webpack_exports__); 1633/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1634/* harmony export */ "default": () => (/* binding */ EffectFade) 1635/* harmony export */ }); 1636/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1637/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1638/* 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"); 1639/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1640 1641 1642 1643 1644 1645function EffectFade(_ref) { 1646 let { 1647 swiper, 1648 extendParams, 1649 on 1650 } = _ref; 1651 extendParams({ 1652 fadeEffect: { 1653 crossFade: false 1654 } 1655 }); 1656 const setTranslate = () => { 1657 const { 1658 slides 1659 } = swiper; 1660 const params = swiper.params.fadeEffect; 1661 for (let i = 0; i < slides.length; i += 1) { 1662 const slideEl = swiper.slides[i]; 1663 const offset = slideEl.swiperSlideOffset; 1664 let tx = -offset; 1665 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 1666 let ty = 0; 1667 if (!swiper.isHorizontal()) { 1668 ty = tx; 1669 tx = 0; 1670 } 1671 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 1672 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 1673 targetEl.style.opacity = slideOpacity; 1674 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 1675 } 1676 }; 1677 const setTransition = duration => { 1678 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1679 transformElements.forEach(el => { 1680 el.style.transitionDuration = `${duration}ms`; 1681 }); 1682 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 1683 swiper, 1684 duration, 1685 transformElements, 1686 allSlides: true 1687 }); 1688 }; 1689 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1690 effect: 'fade', 1691 swiper, 1692 on, 1693 setTranslate, 1694 setTransition, 1695 overwriteParams: () => ({ 1696 slidesPerView: 1, 1697 slidesPerGroup: 1, 1698 watchSlidesProgress: true, 1699 spaceBetween: 0, 1700 virtualTranslate: !swiper.params.cssMode 1701 }) 1702 }); 1703} 1704 1705 1706 1707 1708/***/ }), 1709
vendor: 5,302 bytes, lines 1710-1839
1710/***/ "./node_modules/swiper/modules/effect-flip.mjs": 1711/*!*****************************************************!*\ 1712 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 1713 \*****************************************************/ 1714/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1715 1716__webpack_require__.r(__webpack_exports__); 1717/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1718/* harmony export */ "default": () => (/* binding */ EffectFlip) 1719/* harmony export */ }); 1720/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1721/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1722/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1723/* 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"); 1724/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1725 1726 1727 1728 1729 1730 1731function EffectFlip(_ref) { 1732 let { 1733 swiper, 1734 extendParams, 1735 on 1736 } = _ref; 1737 extendParams({ 1738 flipEffect: { 1739 slideShadows: true, 1740 limitRotation: true 1741 } 1742 }); 1743 const createSlideShadows = (slideEl, progress) => { 1744 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1745 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1746 if (!shadowBefore) { 1747 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 1748 } 1749 if (!shadowAfter) { 1750 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 1751 } 1752 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1753 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1754 }; 1755 const recreateShadows = () => { 1756 // Set shadows 1757 swiper.params.flipEffect; 1758 swiper.slides.forEach(slideEl => { 1759 let progress = slideEl.progress; 1760 if (swiper.params.flipEffect.limitRotation) { 1761 progress = Math.max(Math.min(slideEl.progress, 1), -1); 1762 } 1763 createSlideShadows(slideEl, progress); 1764 }); 1765 }; 1766 const setTranslate = () => { 1767 const { 1768 slides, 1769 rtlTranslate: rtl 1770 } = swiper; 1771 const params = swiper.params.flipEffect; 1772 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 1773 for (let i = 0; i < slides.length; i += 1) { 1774 const slideEl = slides[i]; 1775 let progress = slideEl.progress; 1776 if (swiper.params.flipEffect.limitRotation) { 1777 progress = Math.max(Math.min(slideEl.progress, 1), -1); 1778 } 1779 const offset = slideEl.swiperSlideOffset; 1780 const rotate = -180 * progress; 1781 let rotateY = rotate; 1782 let rotateX = 0; 1783 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 1784 let ty = 0; 1785 if (!swiper.isHorizontal()) { 1786 ty = tx; 1787 tx = 0; 1788 rotateX = -rotateY; 1789 rotateY = 0; 1790 } else if (rtl) { 1791 rotateY = -rotateY; 1792 } 1793 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 1794 if (params.slideShadows) { 1795 createSlideShadows(slideEl, progress); 1796 } 1797 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 1798 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1799 targetEl.style.transform = transform; 1800 } 1801 }; 1802 const setTransition = duration => { 1803 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1804 transformElements.forEach(el => { 1805 el.style.transitionDuration = `${duration}ms`; 1806 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1807 shadowEl.style.transitionDuration = `${duration}ms`; 1808 }); 1809 }); 1810 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1811 swiper, 1812 duration, 1813 transformElements 1814 }); 1815 }; 1816 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1817 effect: 'flip', 1818 swiper, 1819 on, 1820 setTranslate, 1821 setTransition, 1822 recreateShadows, 1823 getEffectParams: () => swiper.params.flipEffect, 1824 perspective: () => true, 1825 overwriteParams: () => ({ 1826 slidesPerView: 1, 1827 slidesPerGroup: 1, 1828 watchSlidesProgress: true, 1829 spaceBetween: 0, 1830 virtualTranslate: !swiper.params.cssMode 1831 }) 1832 }); 1833} 1834 1835 1836 1837 1838/***/ }), 1839
vendor: 9,227 bytes, lines 1840-2091
1840/***/ "./node_modules/swiper/modules/free-mode.mjs": 1841/*!***************************************************!*\ 1842 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 1843 \***************************************************/ 1844/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1845 1846__webpack_require__.r(__webpack_exports__); 1847/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1848/* harmony export */ "default": () => (/* binding */ freeMode) 1849/* harmony export */ }); 1850/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1851 1852 1853function freeMode(_ref) { 1854 let { 1855 swiper, 1856 extendParams, 1857 emit, 1858 once 1859 } = _ref; 1860 extendParams({ 1861 freeMode: { 1862 enabled: false, 1863 momentum: true, 1864 momentumRatio: 1, 1865 momentumBounce: true, 1866 momentumBounceRatio: 1, 1867 momentumVelocityRatio: 1, 1868 sticky: false, 1869 minimumVelocity: 0.02 1870 } 1871 }); 1872 function onTouchStart() { 1873 if (swiper.params.cssMode) return; 1874 const translate = swiper.getTranslate(); 1875 swiper.setTranslate(translate); 1876 swiper.setTransition(0); 1877 swiper.touchEventsData.velocities.length = 0; 1878 swiper.freeMode.onTouchEnd({ 1879 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 1880 }); 1881 } 1882 function onTouchMove() { 1883 if (swiper.params.cssMode) return; 1884 const { 1885 touchEventsData: data, 1886 touches 1887 } = swiper; 1888 // Velocity 1889 if (data.velocities.length === 0) { 1890 data.velocities.push({ 1891 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 1892 time: data.touchStartTime 1893 }); 1894 } 1895 data.velocities.push({ 1896 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 1897 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() 1898 }); 1899 } 1900 function onTouchEnd(_ref2) { 1901 let { 1902 currentPos 1903 } = _ref2; 1904 if (swiper.params.cssMode) return; 1905 const { 1906 params, 1907 wrapperEl, 1908 rtlTranslate: rtl, 1909 snapGrid, 1910 touchEventsData: data 1911 } = swiper; 1912 // Time diff 1913 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)(); 1914 const timeDiff = touchEndTime - data.touchStartTime; 1915 if (currentPos < -swiper.minTranslate()) { 1916 swiper.slideTo(swiper.activeIndex); 1917 return; 1918 } 1919 if (currentPos > -swiper.maxTranslate()) { 1920 if (swiper.slides.length < snapGrid.length) { 1921 swiper.slideTo(snapGrid.length - 1); 1922 } else { 1923 swiper.slideTo(swiper.slides.length - 1); 1924 } 1925 return; 1926 } 1927 if (params.freeMode.momentum) { 1928 if (data.velocities.length > 1) { 1929 const lastMoveEvent = data.velocities.pop(); 1930 const velocityEvent = data.velocities.pop(); 1931 const distance = lastMoveEvent.position - velocityEvent.position; 1932 const time = lastMoveEvent.time - velocityEvent.time; 1933 swiper.velocity = distance / time; 1934 swiper.velocity /= 2; 1935 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 1936 swiper.velocity = 0; 1937 } 1938 // this implies that the user stopped moving a finger then released. 1939 // There would be no events with distance zero, so the last event is stale. 1940 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) { 1941 swiper.velocity = 0; 1942 } 1943 } else { 1944 swiper.velocity = 0; 1945 } 1946 swiper.velocity *= params.freeMode.momentumVelocityRatio; 1947 data.velocities.length = 0; 1948 let momentumDuration = 1000 * params.freeMode.momentumRatio; 1949 const momentumDistance = swiper.velocity * momentumDuration; 1950 let newPosition = swiper.translate + momentumDistance; 1951 if (rtl) newPosition = -newPosition; 1952 let doBounce = false; 1953 let afterBouncePosition; 1954 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 1955 let needsLoopFix; 1956 if (newPosition < swiper.maxTranslate()) { 1957 if (params.freeMode.momentumBounce) { 1958 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 1959 newPosition = swiper.maxTranslate() - bounceAmount; 1960 } 1961 afterBouncePosition = swiper.maxTranslate(); 1962 doBounce = true; 1963 data.allowMomentumBounce = true; 1964 } else { 1965 newPosition = swiper.maxTranslate(); 1966 } 1967 if (params.loop && params.centeredSlides) needsLoopFix = true; 1968 } else if (newPosition > swiper.minTranslate()) { 1969 if (params.freeMode.momentumBounce) { 1970 if (newPosition - swiper.minTranslate() > bounceAmount) { 1971 newPosition = swiper.minTranslate() + bounceAmount; 1972 } 1973 afterBouncePosition = swiper.minTranslate(); 1974 doBounce = true; 1975 data.allowMomentumBounce = true; 1976 } else { 1977 newPosition = swiper.minTranslate(); 1978 } 1979 if (params.loop && params.centeredSlides) needsLoopFix = true; 1980 } else if (params.freeMode.sticky) { 1981 let nextSlide; 1982 for (let j = 0; j < snapGrid.length; j += 1) { 1983 if (snapGrid[j] > -newPosition) { 1984 nextSlide = j; 1985 break; 1986 } 1987 } 1988 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 1989 newPosition = snapGrid[nextSlide]; 1990 } else { 1991 newPosition = snapGrid[nextSlide - 1]; 1992 } 1993 newPosition = -newPosition; 1994 } 1995 if (needsLoopFix) { 1996 once('transitionEnd', () => { 1997 swiper.loopFix(); 1998 }); 1999 } 2000 // Fix duration 2001 if (swiper.velocity !== 0) { 2002 if (rtl) { 2003 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 2004 } else { 2005 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 2006 } 2007 if (params.freeMode.sticky) { 2008 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 2009 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 2010 // It's easy to see this when simulating touch with mouse events. To fix this, 2011 // limit single-slide swipes to the default slide duration. This also has the 2012 // nice side effect of matching slide speed if the user stopped moving before 2013 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 2014 // For faster swipes, also apply limits (albeit higher ones). 2015 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 2016 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 2017 if (moveDistance < currentSlideSize) { 2018 momentumDuration = params.speed; 2019 } else if (moveDistance < 2 * currentSlideSize) { 2020 momentumDuration = params.speed * 1.5; 2021 } else { 2022 momentumDuration = params.speed * 2.5; 2023 } 2024 } 2025 } else if (params.freeMode.sticky) { 2026 swiper.slideToClosest(); 2027 return; 2028 } 2029 if (params.freeMode.momentumBounce && doBounce) { 2030 swiper.updateProgress(afterBouncePosition); 2031 swiper.setTransition(momentumDuration); 2032 swiper.setTranslate(newPosition); 2033 swiper.transitionStart(true, swiper.swipeDirection); 2034 swiper.animating = true; 2035 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 2036 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 2037 emit('momentumBounce'); 2038 swiper.setTransition(params.speed); 2039 setTimeout(() => { 2040 swiper.setTranslate(afterBouncePosition); 2041 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 2042 if (!swiper || swiper.destroyed) return; 2043 swiper.transitionEnd(); 2044 }); 2045 }, 0); 2046 }); 2047 } else if (swiper.velocity) { 2048 emit('_freeModeNoMomentumRelease'); 2049 swiper.updateProgress(newPosition); 2050 swiper.setTransition(momentumDuration); 2051 swiper.setTranslate(newPosition); 2052 swiper.transitionStart(true, swiper.swipeDirection); 2053 if (!swiper.animating) { 2054 swiper.animating = true; 2055 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 2056 if (!swiper || swiper.destroyed) return; 2057 swiper.transitionEnd(); 2058 }); 2059 } 2060 } else { 2061 swiper.updateProgress(newPosition); 2062 } 2063 swiper.updateActiveIndex(); 2064 swiper.updateSlidesClasses(); 2065 } else if (params.freeMode.sticky) { 2066 swiper.slideToClosest(); 2067 return; 2068 } else if (params.freeMode) { 2069 emit('_freeModeNoMomentumRelease'); 2070 } 2071 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 2072 emit('_freeModeStaticRelease'); 2073 swiper.updateProgress(); 2074 swiper.updateActiveIndex(); 2075 swiper.updateSlidesClasses(); 2076 } 2077 } 2078 Object.assign(swiper, { 2079 freeMode: { 2080 onTouchStart, 2081 onTouchMove, 2082 onTouchEnd 2083 } 2084 }); 2085} 2086 2087 2088 2089 2090/***/ }), 2091
vendor: 5,697 bytes, lines 2092-2260
2092/***/ "./node_modules/swiper/modules/grid.mjs": 2093/*!**********************************************!*\ 2094 !*** ./node_modules/swiper/modules/grid.mjs ***! 2095 \**********************************************/ 2096/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2097 2098__webpack_require__.r(__webpack_exports__); 2099/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2100/* harmony export */ "default": () => (/* binding */ Grid) 2101/* harmony export */ }); 2102function Grid(_ref) { 2103 let { 2104 swiper, 2105 extendParams, 2106 on 2107 } = _ref; 2108 extendParams({ 2109 grid: { 2110 rows: 1, 2111 fill: 'column' 2112 } 2113 }); 2114 let slidesNumberEvenToRows; 2115 let slidesPerRow; 2116 let numFullColumns; 2117 let wasMultiRow; 2118 const getSpaceBetween = () => { 2119 let spaceBetween = swiper.params.spaceBetween; 2120 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 2121 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 2122 } else if (typeof spaceBetween === 'string') { 2123 spaceBetween = parseFloat(spaceBetween); 2124 } 2125 return spaceBetween; 2126 }; 2127 const initSlides = slides => { 2128 const { 2129 slidesPerView 2130 } = swiper.params; 2131 const { 2132 rows, 2133 fill 2134 } = swiper.params.grid; 2135 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2136 numFullColumns = Math.floor(slidesLength / rows); 2137 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 2138 slidesNumberEvenToRows = slidesLength; 2139 } else { 2140 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 2141 } 2142 if (slidesPerView !== 'auto' && fill === 'row') { 2143 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 2144 } 2145 slidesPerRow = slidesNumberEvenToRows / rows; 2146 }; 2147 const unsetSlides = () => { 2148 if (swiper.slides) { 2149 swiper.slides.forEach(slide => { 2150 if (slide.swiperSlideGridSet) { 2151 slide.style.height = ''; 2152 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 2153 } 2154 }); 2155 } 2156 }; 2157 const updateSlide = (i, slide, slides) => { 2158 const { 2159 slidesPerGroup 2160 } = swiper.params; 2161 const spaceBetween = getSpaceBetween(); 2162 const { 2163 rows, 2164 fill 2165 } = swiper.params.grid; 2166 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2167 // Set slides order 2168 let newSlideOrderIndex; 2169 let column; 2170 let row; 2171 if (fill === 'row' && slidesPerGroup > 1) { 2172 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 2173 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 2174 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 2175 row = Math.floor(slideIndexInGroup / columnsInGroup); 2176 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 2177 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 2178 slide.style.order = newSlideOrderIndex; 2179 } else if (fill === 'column') { 2180 column = Math.floor(i / rows); 2181 row = i - column * rows; 2182 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 2183 row += 1; 2184 if (row >= rows) { 2185 row = 0; 2186 column += 1; 2187 } 2188 } 2189 } else { 2190 row = Math.floor(i / slidesPerRow); 2191 column = i - row * slidesPerRow; 2192 } 2193 slide.row = row; 2194 slide.column = column; 2195 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 2196 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 2197 slide.swiperSlideGridSet = true; 2198 }; 2199 const updateWrapperSize = (slideSize, snapGrid) => { 2200 const { 2201 centeredSlides, 2202 roundLengths 2203 } = swiper.params; 2204 const spaceBetween = getSpaceBetween(); 2205 const { 2206 rows 2207 } = swiper.params.grid; 2208 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 2209 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 2210 if (!swiper.params.cssMode) { 2211 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 2212 } 2213 if (centeredSlides) { 2214 const newSlidesGrid = []; 2215 for (let i = 0; i < snapGrid.length; i += 1) { 2216 let slidesGridItem = snapGrid[i]; 2217 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 2218 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 2219 } 2220 snapGrid.splice(0, snapGrid.length); 2221 snapGrid.push(...newSlidesGrid); 2222 } 2223 }; 2224 const onInit = () => { 2225 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 2226 }; 2227 const onUpdate = () => { 2228 const { 2229 params, 2230 el 2231 } = swiper; 2232 const isMultiRow = params.grid && params.grid.rows > 1; 2233 if (wasMultiRow && !isMultiRow) { 2234 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 2235 numFullColumns = 1; 2236 swiper.emitContainerClasses(); 2237 } else if (!wasMultiRow && isMultiRow) { 2238 el.classList.add(`${params.containerModifierClass}grid`); 2239 if (params.grid.fill === 'column') { 2240 el.classList.add(`${params.containerModifierClass}grid-column`); 2241 } 2242 swiper.emitContainerClasses(); 2243 } 2244 wasMultiRow = isMultiRow; 2245 }; 2246 on('init', onInit); 2247 on('update', onUpdate); 2248 swiper.grid = { 2249 initSlides, 2250 unsetSlides, 2251 updateSlide, 2252 updateWrapperSize 2253 }; 2254} 2255 2256 2257 2258 2259/***/ }), 2260
vendor: 4,398 bytes, lines 2261-2369
2261/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 2262/*!*********************************************************!*\ 2263 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 2264 \*********************************************************/ 2265/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2266 2267__webpack_require__.r(__webpack_exports__); 2268/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2269/* harmony export */ "default": () => (/* binding */ HashNavigation) 2270/* harmony export */ }); 2271/* 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"); 2272/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2273 2274 2275 2276function HashNavigation(_ref) { 2277 let { 2278 swiper, 2279 extendParams, 2280 emit, 2281 on 2282 } = _ref; 2283 let initialized = false; 2284 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2285 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2286 extendParams({ 2287 hashNavigation: { 2288 enabled: false, 2289 replaceState: false, 2290 watchState: false, 2291 getSlideIndex(_s, hash) { 2292 if (swiper.virtual && swiper.params.virtual.enabled) { 2293 const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; 2294 if (!slideWithHash) return 0; 2295 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 2296 return index; 2297 } 2298 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]); 2299 } 2300 } 2301 }); 2302 const onHashChange = () => { 2303 emit('hashChange'); 2304 const newHash = document.location.hash.replace('#', ''); 2305 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2306 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 2307 if (newHash !== activeSlideHash) { 2308 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 2309 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 2310 swiper.slideTo(newIndex); 2311 } 2312 }; 2313 const setHash = () => { 2314 if (!initialized || !swiper.params.hashNavigation.enabled) return; 2315 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2316 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 2317 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 2318 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 2319 emit('hashSet'); 2320 } else { 2321 document.location.hash = activeSlideHash || ''; 2322 emit('hashSet'); 2323 } 2324 }; 2325 const init = () => { 2326 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 2327 initialized = true; 2328 const hash = document.location.hash.replace('#', ''); 2329 if (hash) { 2330 const speed = 0; 2331 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 2332 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 2333 } 2334 if (swiper.params.hashNavigation.watchState) { 2335 window.addEventListener('hashchange', onHashChange); 2336 } 2337 }; 2338 const destroy = () => { 2339 if (swiper.params.hashNavigation.watchState) { 2340 window.removeEventListener('hashchange', onHashChange); 2341 } 2342 }; 2343 on('init', () => { 2344 if (swiper.params.hashNavigation.enabled) { 2345 init(); 2346 } 2347 }); 2348 on('destroy', () => { 2349 if (swiper.params.hashNavigation.enabled) { 2350 destroy(); 2351 } 2352 }); 2353 on('transitionEnd _freeModeNoMomentumRelease', () => { 2354 if (initialized) { 2355 setHash(); 2356 } 2357 }); 2358 on('slideChange', () => { 2359 if (initialized && swiper.params.cssMode) { 2360 setHash(); 2361 } 2362 }); 2363} 2364 2365 2366 2367 2368/***/ }), 2369
vendor: 5,110 bytes, lines 2370-2526
2370/***/ "./node_modules/swiper/modules/history.mjs": 2371/*!*************************************************!*\ 2372 !*** ./node_modules/swiper/modules/history.mjs ***! 2373 \*************************************************/ 2374/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2375 2376__webpack_require__.r(__webpack_exports__); 2377/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2378/* harmony export */ "default": () => (/* binding */ History) 2379/* harmony export */ }); 2380/* 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"); 2381 2382 2383function History(_ref) { 2384 let { 2385 swiper, 2386 extendParams, 2387 on 2388 } = _ref; 2389 extendParams({ 2390 history: { 2391 enabled: false, 2392 root: '', 2393 replaceState: false, 2394 key: 'slides', 2395 keepQuery: false 2396 } 2397 }); 2398 let initialized = false; 2399 let paths = {}; 2400 const slugify = text => { 2401 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 2402 }; 2403 const getPathValues = urlOverride => { 2404 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2405 let location; 2406 if (urlOverride) { 2407 location = new URL(urlOverride); 2408 } else { 2409 location = window.location; 2410 } 2411 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 2412 const total = pathArray.length; 2413 const key = pathArray[total - 2]; 2414 const value = pathArray[total - 1]; 2415 return { 2416 key, 2417 value 2418 }; 2419 }; 2420 const setHistory = (key, index) => { 2421 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2422 if (!initialized || !swiper.params.history.enabled) return; 2423 let location; 2424 if (swiper.params.url) { 2425 location = new URL(swiper.params.url); 2426 } else { 2427 location = window.location; 2428 } 2429 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 2430 let value = slugify(slide.getAttribute('data-history')); 2431 if (swiper.params.history.root.length > 0) { 2432 let root = swiper.params.history.root; 2433 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 2434 value = `${root}/${key ? `${key}/` : ''}${value}`; 2435 } else if (!location.pathname.includes(key)) { 2436 value = `${key ? `${key}/` : ''}${value}`; 2437 } 2438 if (swiper.params.history.keepQuery) { 2439 value += location.search; 2440 } 2441 const currentState = window.history.state; 2442 if (currentState && currentState.value === value) { 2443 return; 2444 } 2445 if (swiper.params.history.replaceState) { 2446 window.history.replaceState({ 2447 value 2448 }, null, value); 2449 } else { 2450 window.history.pushState({ 2451 value 2452 }, null, value); 2453 } 2454 }; 2455 const scrollToSlide = (speed, value, runCallbacks) => { 2456 if (value) { 2457 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 2458 const slide = swiper.slides[i]; 2459 const slideHistory = slugify(slide.getAttribute('data-history')); 2460 if (slideHistory === value) { 2461 const index = swiper.getSlideIndex(slide); 2462 swiper.slideTo(index, speed, runCallbacks); 2463 } 2464 } 2465 } else { 2466 swiper.slideTo(0, speed, runCallbacks); 2467 } 2468 }; 2469 const setHistoryPopState = () => { 2470 paths = getPathValues(swiper.params.url); 2471 scrollToSlide(swiper.params.speed, paths.value, false); 2472 }; 2473 const init = () => { 2474 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2475 if (!swiper.params.history) return; 2476 if (!window.history || !window.history.pushState) { 2477 swiper.params.history.enabled = false; 2478 swiper.params.hashNavigation.enabled = true; 2479 return; 2480 } 2481 initialized = true; 2482 paths = getPathValues(swiper.params.url); 2483 if (!paths.key && !paths.value) { 2484 if (!swiper.params.history.replaceState) { 2485 window.addEventListener('popstate', setHistoryPopState); 2486 } 2487 return; 2488 } 2489 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 2490 if (!swiper.params.history.replaceState) { 2491 window.addEventListener('popstate', setHistoryPopState); 2492 } 2493 }; 2494 const destroy = () => { 2495 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2496 if (!swiper.params.history.replaceState) { 2497 window.removeEventListener('popstate', setHistoryPopState); 2498 } 2499 }; 2500 on('init', () => { 2501 if (swiper.params.history.enabled) { 2502 init(); 2503 } 2504 }); 2505 on('destroy', () => { 2506 if (swiper.params.history.enabled) { 2507 destroy(); 2508 } 2509 }); 2510 on('transitionEnd _freeModeNoMomentumRelease', () => { 2511 if (initialized) { 2512 setHistory(swiper.params.history.key, swiper.activeIndex); 2513 } 2514 }); 2515 on('slideChange', () => { 2516 if (initialized && swiper.params.cssMode) { 2517 setHistory(swiper.params.history.key, swiper.activeIndex); 2518 } 2519 }); 2520} 2521 2522 2523 2524 2525/***/ }), 2526
vendor: 6,977 bytes, lines 2527-2607
2527/***/ "./node_modules/swiper/modules/index.mjs": 2528/*!***********************************************!*\ 2529 !*** ./node_modules/swiper/modules/index.mjs ***! 2530 \***********************************************/ 2531/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2532 2533__webpack_require__.r(__webpack_exports__); 2534/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2535/* harmony export */ A11y: () => (/* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]), 2536/* harmony export */ Autoplay: () => (/* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]), 2537/* harmony export */ Controller: () => (/* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]), 2538/* harmony export */ EffectCards: () => (/* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]), 2539/* harmony export */ EffectCoverflow: () => (/* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]), 2540/* harmony export */ EffectCreative: () => (/* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]), 2541/* harmony export */ EffectCube: () => (/* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]), 2542/* harmony export */ EffectFade: () => (/* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]), 2543/* harmony export */ EffectFlip: () => (/* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]), 2544/* harmony export */ FreeMode: () => (/* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]), 2545/* harmony export */ Grid: () => (/* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]), 2546/* harmony export */ HashNavigation: () => (/* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]), 2547/* harmony export */ History: () => (/* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]), 2548/* harmony export */ Keyboard: () => (/* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]), 2549/* harmony export */ Manipulation: () => (/* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]), 2550/* harmony export */ Mousewheel: () => (/* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]), 2551/* harmony export */ Navigation: () => (/* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]), 2552/* harmony export */ Pagination: () => (/* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]), 2553/* harmony export */ Parallax: () => (/* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]), 2554/* harmony export */ Scrollbar: () => (/* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]), 2555/* harmony export */ Thumbs: () => (/* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]), 2556/* harmony export */ Virtual: () => (/* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]), 2557/* harmony export */ Zoom: () => (/* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) 2558/* harmony export */ }); 2559/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 2560/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 2561/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 2562/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 2563/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 2564/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 2565/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 2566/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 2567/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 2568/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 2569/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs"); 2570/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 2571/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 2572/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 2573/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 2574/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 2575/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 2576/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 2577/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 2578/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 2579/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 2580/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 2581/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606/***/ }), 2607
vendor: 5,259 bytes, lines 2608-2740
2608/***/ "./node_modules/swiper/modules/keyboard.mjs": 2609/*!**************************************************!*\ 2610 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 2611 \**************************************************/ 2612/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2613 2614__webpack_require__.r(__webpack_exports__); 2615/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2616/* harmony export */ "default": () => (/* binding */ Keyboard) 2617/* harmony export */ }); 2618/* 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"); 2619/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2620 2621 2622 2623/* eslint-disable consistent-return */ 2624function Keyboard(_ref) { 2625 let { 2626 swiper, 2627 extendParams, 2628 on, 2629 emit 2630 } = _ref; 2631 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2632 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2633 swiper.keyboard = { 2634 enabled: false 2635 }; 2636 extendParams({ 2637 keyboard: { 2638 enabled: false, 2639 onlyInViewport: true, 2640 pageUpDown: true 2641 } 2642 }); 2643 function handle(event) { 2644 if (!swiper.enabled) return; 2645 const { 2646 rtlTranslate: rtl 2647 } = swiper; 2648 let e = event; 2649 if (e.originalEvent) e = e.originalEvent; // jquery fix 2650 const kc = e.keyCode || e.charCode; 2651 const pageUpDown = swiper.params.keyboard.pageUpDown; 2652 const isPageUp = pageUpDown && kc === 33; 2653 const isPageDown = pageUpDown && kc === 34; 2654 const isArrowLeft = kc === 37; 2655 const isArrowRight = kc === 39; 2656 const isArrowUp = kc === 38; 2657 const isArrowDown = kc === 40; 2658 // Directions locks 2659 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 2660 return false; 2661 } 2662 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 2663 return false; 2664 } 2665 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 2666 return undefined; 2667 } 2668 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { 2669 return undefined; 2670 } 2671 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 2672 let inView = false; 2673 // Check that swiper should be inside of visible area of window 2674 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { 2675 return undefined; 2676 } 2677 const el = swiper.el; 2678 const swiperWidth = el.clientWidth; 2679 const swiperHeight = el.clientHeight; 2680 const windowWidth = window.innerWidth; 2681 const windowHeight = window.innerHeight; 2682 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el); 2683 if (rtl) swiperOffset.left -= el.scrollLeft; 2684 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 2685 for (let i = 0; i < swiperCoord.length; i += 1) { 2686 const point = swiperCoord[i]; 2687 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 2688 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 2689 inView = true; 2690 } 2691 } 2692 if (!inView) return undefined; 2693 } 2694 if (swiper.isHorizontal()) { 2695 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 2696 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2697 } 2698 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 2699 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 2700 } else { 2701 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 2702 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2703 } 2704 if (isPageDown || isArrowDown) swiper.slideNext(); 2705 if (isPageUp || isArrowUp) swiper.slidePrev(); 2706 } 2707 emit('keyPress', kc); 2708 return undefined; 2709 } 2710 function enable() { 2711 if (swiper.keyboard.enabled) return; 2712 document.addEventListener('keydown', handle); 2713 swiper.keyboard.enabled = true; 2714 } 2715 function disable() { 2716 if (!swiper.keyboard.enabled) return; 2717 document.removeEventListener('keydown', handle); 2718 swiper.keyboard.enabled = false; 2719 } 2720 on('init', () => { 2721 if (swiper.params.keyboard.enabled) { 2722 enable(); 2723 } 2724 }); 2725 on('destroy', () => { 2726 if (swiper.keyboard.enabled) { 2727 disable(); 2728 } 2729 }); 2730 Object.assign(swiper.keyboard, { 2731 enable, 2732 disable 2733 }); 2734} 2735 2736 2737 2738 2739/***/ }), 2740
vendor: 5,503 bytes, lines 2741-2945
2741/***/ "./node_modules/swiper/modules/manipulation.mjs": 2742/*!******************************************************!*\ 2743 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 2744 \******************************************************/ 2745/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2746 2747__webpack_require__.r(__webpack_exports__); 2748/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2749/* harmony export */ "default": () => (/* binding */ Manipulation) 2750/* harmony export */ }); 2751function appendSlide(slides) { 2752 const swiper = this; 2753 const { 2754 params, 2755 slidesEl 2756 } = swiper; 2757 if (params.loop) { 2758 swiper.loopDestroy(); 2759 } 2760 const appendElement = slideEl => { 2761 if (typeof slideEl === 'string') { 2762 const tempDOM = document.createElement('div'); 2763 tempDOM.innerHTML = slideEl; 2764 slidesEl.append(tempDOM.children[0]); 2765 tempDOM.innerHTML = ''; 2766 } else { 2767 slidesEl.append(slideEl); 2768 } 2769 }; 2770 if (typeof slides === 'object' && 'length' in slides) { 2771 for (let i = 0; i < slides.length; i += 1) { 2772 if (slides[i]) appendElement(slides[i]); 2773 } 2774 } else { 2775 appendElement(slides); 2776 } 2777 swiper.recalcSlides(); 2778 if (params.loop) { 2779 swiper.loopCreate(); 2780 } 2781 if (!params.observer || swiper.isElement) { 2782 swiper.update(); 2783 } 2784} 2785 2786function prependSlide(slides) { 2787 const swiper = this; 2788 const { 2789 params, 2790 activeIndex, 2791 slidesEl 2792 } = swiper; 2793 if (params.loop) { 2794 swiper.loopDestroy(); 2795 } 2796 let newActiveIndex = activeIndex + 1; 2797 const prependElement = slideEl => { 2798 if (typeof slideEl === 'string') { 2799 const tempDOM = document.createElement('div'); 2800 tempDOM.innerHTML = slideEl; 2801 slidesEl.prepend(tempDOM.children[0]); 2802 tempDOM.innerHTML = ''; 2803 } else { 2804 slidesEl.prepend(slideEl); 2805 } 2806 }; 2807 if (typeof slides === 'object' && 'length' in slides) { 2808 for (let i = 0; i < slides.length; i += 1) { 2809 if (slides[i]) prependElement(slides[i]); 2810 } 2811 newActiveIndex = activeIndex + slides.length; 2812 } else { 2813 prependElement(slides); 2814 } 2815 swiper.recalcSlides(); 2816 if (params.loop) { 2817 swiper.loopCreate(); 2818 } 2819 if (!params.observer || swiper.isElement) { 2820 swiper.update(); 2821 } 2822 swiper.slideTo(newActiveIndex, 0, false); 2823} 2824 2825function addSlide(index, slides) { 2826 const swiper = this; 2827 const { 2828 params, 2829 activeIndex, 2830 slidesEl 2831 } = swiper; 2832 let activeIndexBuffer = activeIndex; 2833 if (params.loop) { 2834 activeIndexBuffer -= swiper.loopedSlides; 2835 swiper.loopDestroy(); 2836 swiper.recalcSlides(); 2837 } 2838 const baseLength = swiper.slides.length; 2839 if (index <= 0) { 2840 swiper.prependSlide(slides); 2841 return; 2842 } 2843 if (index >= baseLength) { 2844 swiper.appendSlide(slides); 2845 return; 2846 } 2847 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 2848 const slidesBuffer = []; 2849 for (let i = baseLength - 1; i >= index; i -= 1) { 2850 const currentSlide = swiper.slides[i]; 2851 currentSlide.remove(); 2852 slidesBuffer.unshift(currentSlide); 2853 } 2854 if (typeof slides === 'object' && 'length' in slides) { 2855 for (let i = 0; i < slides.length; i += 1) { 2856 if (slides[i]) slidesEl.append(slides[i]); 2857 } 2858 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 2859 } else { 2860 slidesEl.append(slides); 2861 } 2862 for (let i = 0; i < slidesBuffer.length; i += 1) { 2863 slidesEl.append(slidesBuffer[i]); 2864 } 2865 swiper.recalcSlides(); 2866 if (params.loop) { 2867 swiper.loopCreate(); 2868 } 2869 if (!params.observer || swiper.isElement) { 2870 swiper.update(); 2871 } 2872 if (params.loop) { 2873 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2874 } else { 2875 swiper.slideTo(newActiveIndex, 0, false); 2876 } 2877} 2878 2879function removeSlide(slidesIndexes) { 2880 const swiper = this; 2881 const { 2882 params, 2883 activeIndex 2884 } = swiper; 2885 let activeIndexBuffer = activeIndex; 2886 if (params.loop) { 2887 activeIndexBuffer -= swiper.loopedSlides; 2888 swiper.loopDestroy(); 2889 } 2890 let newActiveIndex = activeIndexBuffer; 2891 let indexToRemove; 2892 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 2893 for (let i = 0; i < slidesIndexes.length; i += 1) { 2894 indexToRemove = slidesIndexes[i]; 2895 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 2896 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 2897 } 2898 newActiveIndex = Math.max(newActiveIndex, 0); 2899 } else { 2900 indexToRemove = slidesIndexes; 2901 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 2902 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 2903 newActiveIndex = Math.max(newActiveIndex, 0); 2904 } 2905 swiper.recalcSlides(); 2906 if (params.loop) { 2907 swiper.loopCreate(); 2908 } 2909 if (!params.observer || swiper.isElement) { 2910 swiper.update(); 2911 } 2912 if (params.loop) { 2913 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2914 } else { 2915 swiper.slideTo(newActiveIndex, 0, false); 2916 } 2917} 2918 2919function removeAllSlides() { 2920 const swiper = this; 2921 const slidesIndexes = []; 2922 for (let i = 0; i < swiper.slides.length; i += 1) { 2923 slidesIndexes.push(i); 2924 } 2925 swiper.removeSlide(slidesIndexes); 2926} 2927 2928function Manipulation(_ref) { 2929 let { 2930 swiper 2931 } = _ref; 2932 Object.assign(swiper, { 2933 appendSlide: appendSlide.bind(swiper), 2934 prependSlide: prependSlide.bind(swiper), 2935 addSlide: addSlide.bind(swiper), 2936 removeSlide: removeSlide.bind(swiper), 2937 removeAllSlides: removeAllSlides.bind(swiper) 2938 }); 2939} 2940 2941 2942 2943 2944/***/ }), 2945
vendor: 15,994 bytes, lines 2946-3356
2946/***/ "./node_modules/swiper/modules/mousewheel.mjs": 2947/*!****************************************************!*\ 2948 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 2949 \****************************************************/ 2950/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2951 2952__webpack_require__.r(__webpack_exports__); 2953/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2954/* harmony export */ "default": () => (/* binding */ Mousewheel) 2955/* harmony export */ }); 2956/* 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"); 2957/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2958 2959 2960 2961/* eslint-disable consistent-return */ 2962function Mousewheel(_ref) { 2963 let { 2964 swiper, 2965 extendParams, 2966 on, 2967 emit 2968 } = _ref; 2969 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2970 extendParams({ 2971 mousewheel: { 2972 enabled: false, 2973 releaseOnEdges: false, 2974 invert: false, 2975 forceToAxis: false, 2976 sensitivity: 1, 2977 eventsTarget: 'container', 2978 thresholdDelta: null, 2979 thresholdTime: null, 2980 noMousewheelClass: 'swiper-no-mousewheel' 2981 } 2982 }); 2983 swiper.mousewheel = { 2984 enabled: false 2985 }; 2986 let timeout; 2987 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 2988 let lastEventBeforeSnap; 2989 const recentWheelEvents = []; 2990 function normalize(e) { 2991 // Reasonable defaults 2992 const PIXEL_STEP = 10; 2993 const LINE_HEIGHT = 40; 2994 const PAGE_HEIGHT = 800; 2995 let sX = 0; 2996 let sY = 0; // spinX, spinY 2997 let pX = 0; 2998 let pY = 0; // pixelX, pixelY 2999 3000 // Legacy 3001 if ('detail' in e) { 3002 sY = e.detail; 3003 } 3004 if ('wheelDelta' in e) { 3005 sY = -e.wheelDelta / 120; 3006 } 3007 if ('wheelDeltaY' in e) { 3008 sY = -e.wheelDeltaY / 120; 3009 } 3010 if ('wheelDeltaX' in e) { 3011 sX = -e.wheelDeltaX / 120; 3012 } 3013 3014 // side scrolling on FF with DOMMouseScroll 3015 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 3016 sX = sY; 3017 sY = 0; 3018 } 3019 pX = sX * PIXEL_STEP; 3020 pY = sY * PIXEL_STEP; 3021 if ('deltaY' in e) { 3022 pY = e.deltaY; 3023 } 3024 if ('deltaX' in e) { 3025 pX = e.deltaX; 3026 } 3027 if (e.shiftKey && !pX) { 3028 // if user scrolls with shift he wants horizontal scroll 3029 pX = pY; 3030 pY = 0; 3031 } 3032 if ((pX || pY) && e.deltaMode) { 3033 if (e.deltaMode === 1) { 3034 // delta in LINE units 3035 pX *= LINE_HEIGHT; 3036 pY *= LINE_HEIGHT; 3037 } else { 3038 // delta in PAGE units 3039 pX *= PAGE_HEIGHT; 3040 pY *= PAGE_HEIGHT; 3041 } 3042 } 3043 3044 // Fall-back if spin cannot be determined 3045 if (pX && !sX) { 3046 sX = pX < 1 ? -1 : 1; 3047 } 3048 if (pY && !sY) { 3049 sY = pY < 1 ? -1 : 1; 3050 } 3051 return { 3052 spinX: sX, 3053 spinY: sY, 3054 pixelX: pX, 3055 pixelY: pY 3056 }; 3057 } 3058 function handleMouseEnter() { 3059 if (!swiper.enabled) return; 3060 swiper.mouseEntered = true; 3061 } 3062 function handleMouseLeave() { 3063 if (!swiper.enabled) return; 3064 swiper.mouseEntered = false; 3065 } 3066 function animateSlider(newEvent) { 3067 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 3068 // Prevent if delta of wheel scroll delta is below configured threshold 3069 return false; 3070 } 3071 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 3072 // Prevent if time between scrolls is below configured threshold 3073 return false; 3074 } 3075 3076 // If the movement is NOT big enough and 3077 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 3078 // Don't go any further (avoid insignificant scroll movement). 3079 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) { 3080 // Return false as a default 3081 return true; 3082 } 3083 // If user is scrolling towards the end: 3084 // If the slider hasn't hit the latest slide or 3085 // if the slider is a loop and 3086 // if the slider isn't moving right now: 3087 // Go to next slide and 3088 // emit a scroll event. 3089 // Else (the user is scrolling towards the beginning) and 3090 // if the slider hasn't hit the first slide or 3091 // if the slider is a loop and 3092 // if the slider isn't moving right now: 3093 // Go to prev slide and 3094 // emit a scroll event. 3095 if (newEvent.direction < 0) { 3096 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 3097 swiper.slideNext(); 3098 emit('scroll', newEvent.raw); 3099 } 3100 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 3101 swiper.slidePrev(); 3102 emit('scroll', newEvent.raw); 3103 } 3104 // If you got here is because an animation has been triggered so store the current time 3105 lastScrollTime = new window.Date().getTime(); 3106 // Return false as a default 3107 return false; 3108 } 3109 function releaseScroll(newEvent) { 3110 const params = swiper.params.mousewheel; 3111 if (newEvent.direction < 0) { 3112 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 3113 // Return true to animate scroll on edges 3114 return true; 3115 } 3116 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 3117 // Return true to animate scroll on edges 3118 return true; 3119 } 3120 return false; 3121 } 3122 function handle(event) { 3123 let e = event; 3124 let disableParentSwiper = true; 3125 if (!swiper.enabled) return; 3126 3127 // Ignore event if the target or its parents have the swiper-no-mousewheel class 3128 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 3129 const params = swiper.params.mousewheel; 3130 if (swiper.params.cssMode) { 3131 e.preventDefault(); 3132 } 3133 let targetEl = swiper.el; 3134 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3135 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3136 } 3137 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 3138 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 3139 if (e.originalEvent) e = e.originalEvent; // jquery fix 3140 let delta = 0; 3141 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 3142 const data = normalize(e); 3143 if (params.forceToAxis) { 3144 if (swiper.isHorizontal()) { 3145 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 3146 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 3147 } else { 3148 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 3149 } 3150 if (delta === 0) return true; 3151 if (params.invert) delta = -delta; 3152 3153 // Get the scroll positions 3154 let positions = swiper.getTranslate() + delta * params.sensitivity; 3155 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 3156 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 3157 3158 // When loop is true: 3159 // the disableParentSwiper will be true. 3160 // When loop is false: 3161 // if the scroll positions is not on edge, 3162 // then the disableParentSwiper will be true. 3163 // if the scroll on edge positions, 3164 // then the disableParentSwiper will be false. 3165 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 3166 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 3167 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 3168 // Register the new event in a variable which stores the relevant data 3169 const newEvent = { 3170 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 3171 delta: Math.abs(delta), 3172 direction: Math.sign(delta), 3173 raw: event 3174 }; 3175 3176 // Keep the most recent events 3177 if (recentWheelEvents.length >= 2) { 3178 recentWheelEvents.shift(); // only store the last N events 3179 } 3180 3181 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3182 recentWheelEvents.push(newEvent); 3183 3184 // If there is at least one previous recorded event: 3185 // If direction has changed or 3186 // if the scroll is quicker than the previous one: 3187 // Animate the slider. 3188 // Else (this is the first time the wheel is moved): 3189 // Animate the slider. 3190 if (prevEvent) { 3191 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 3192 animateSlider(newEvent); 3193 } 3194 } else { 3195 animateSlider(newEvent); 3196 } 3197 3198 // If it's time to release the scroll: 3199 // Return now so you don't hit the preventDefault. 3200 if (releaseScroll(newEvent)) { 3201 return true; 3202 } 3203 } else { 3204 // Freemode or scrollContainer: 3205 3206 // If we recently snapped after a momentum scroll, then ignore wheel events 3207 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 3208 // or if it's a new scroll (larger delta or inverse sign as last event before 3209 // an end-of-momentum snap). 3210 const newEvent = { 3211 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 3212 delta: Math.abs(delta), 3213 direction: Math.sign(delta) 3214 }; 3215 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 3216 if (!ignoreWheelEvents) { 3217 lastEventBeforeSnap = undefined; 3218 let position = swiper.getTranslate() + delta * params.sensitivity; 3219 const wasBeginning = swiper.isBeginning; 3220 const wasEnd = swiper.isEnd; 3221 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 3222 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 3223 swiper.setTransition(0); 3224 swiper.setTranslate(position); 3225 swiper.updateProgress(); 3226 swiper.updateActiveIndex(); 3227 swiper.updateSlidesClasses(); 3228 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 3229 swiper.updateSlidesClasses(); 3230 } 3231 if (swiper.params.loop) { 3232 swiper.loopFix({ 3233 direction: newEvent.direction < 0 ? 'next' : 'prev', 3234 byMousewheel: true 3235 }); 3236 } 3237 if (swiper.params.freeMode.sticky) { 3238 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 3239 // the end of a momentum scroll by storing recent (N=15?) wheel events. 3240 // 1. do all N events have decreasing or same (absolute value) delta? 3241 // 2. did all N events arrive in the last M (M=500?) msecs? 3242 // 3. does the earliest event have an (absolute value) delta that's 3243 // at least P (P=1?) larger than the most recent event's delta? 3244 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 3245 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 3246 // Snap immediately and ignore remaining wheel events in this scroll. 3247 // See comment above for "remaining wheel events in this scroll" determination. 3248 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 3249 clearTimeout(timeout); 3250 timeout = undefined; 3251 if (recentWheelEvents.length >= 15) { 3252 recentWheelEvents.shift(); // only store the last N events 3253 } 3254 3255 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3256 const firstEvent = recentWheelEvents[0]; 3257 recentWheelEvents.push(newEvent); 3258 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 3259 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 3260 recentWheelEvents.splice(0); 3261 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 3262 // We're at the end of the deceleration of a momentum scroll, so there's no need 3263 // to wait for more events. Snap ASAP on the next tick. 3264 // Also, because there's some remaining momentum we'll bias the snap in the 3265 // direction of the ongoing scroll because it's better UX for the scroll to snap 3266 // in the same direction as the scroll instead of reversing to snap. Therefore, 3267 // if it's already scrolled more than 20% in the current direction, keep going. 3268 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 3269 lastEventBeforeSnap = newEvent; 3270 recentWheelEvents.splice(0); 3271 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3272 if (swiper.destroyed || !swiper.params) return; 3273 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3274 }, 0); // no delay; move on next tick 3275 } 3276 3277 if (!timeout) { 3278 // if we get here, then we haven't detected the end of a momentum scroll, so 3279 // we'll consider a scroll "complete" when there haven't been any wheel events 3280 // for 500ms. 3281 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3282 if (swiper.destroyed || !swiper.params) return; 3283 const snapToThreshold = 0.5; 3284 lastEventBeforeSnap = newEvent; 3285 recentWheelEvents.splice(0); 3286 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3287 }, 500); 3288 } 3289 } 3290 3291 // Emit event 3292 if (!ignoreWheelEvents) emit('scroll', e); 3293 3294 // Stop autoplay 3295 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); 3296 // Return page scroll on edge positions 3297 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 3298 return true; 3299 } 3300 } 3301 } 3302 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 3303 return false; 3304 } 3305 function events(method) { 3306 let targetEl = swiper.el; 3307 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3308 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3309 } 3310 targetEl[method]('mouseenter', handleMouseEnter); 3311 targetEl[method]('mouseleave', handleMouseLeave); 3312 targetEl[method]('wheel', handle); 3313 } 3314 function enable() { 3315 if (swiper.params.cssMode) { 3316 swiper.wrapperEl.removeEventListener('wheel', handle); 3317 return true; 3318 } 3319 if (swiper.mousewheel.enabled) return false; 3320 events('addEventListener'); 3321 swiper.mousewheel.enabled = true; 3322 return true; 3323 } 3324 function disable() { 3325 if (swiper.params.cssMode) { 3326 swiper.wrapperEl.addEventListener(event, handle); 3327 return true; 3328 } 3329 if (!swiper.mousewheel.enabled) return false; 3330 events('removeEventListener'); 3331 swiper.mousewheel.enabled = false; 3332 return true; 3333 } 3334 on('init', () => { 3335 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 3336 disable(); 3337 } 3338 if (swiper.params.mousewheel.enabled) enable(); 3339 }); 3340 on('destroy', () => { 3341 if (swiper.params.cssMode) { 3342 enable(); 3343 } 3344 if (swiper.mousewheel.enabled) disable(); 3345 }); 3346 Object.assign(swiper.mousewheel, { 3347 enable, 3348 disable 3349 }); 3350} 3351 3352 3353 3354 3355/***/ }), 3356
vendor: 7,408 bytes, lines 3357-3572
3357/***/ "./node_modules/swiper/modules/navigation.mjs": 3358/*!****************************************************!*\ 3359 !*** ./node_modules/swiper/modules/navigation.mjs ***! 3360 \****************************************************/ 3361/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3362 3363__webpack_require__.r(__webpack_exports__); 3364/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3365/* harmony export */ "default": () => (/* binding */ Navigation) 3366/* harmony export */ }); 3367/* 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"); 3368/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3369 3370 3371 3372function Navigation(_ref) { 3373 let { 3374 swiper, 3375 extendParams, 3376 on, 3377 emit 3378 } = _ref; 3379 extendParams({ 3380 navigation: { 3381 nextEl: null, 3382 prevEl: null, 3383 hideOnClick: false, 3384 disabledClass: 'swiper-button-disabled', 3385 hiddenClass: 'swiper-button-hidden', 3386 lockClass: 'swiper-button-lock', 3387 navigationDisabledClass: 'swiper-navigation-disabled' 3388 } 3389 }); 3390 swiper.navigation = { 3391 nextEl: null, 3392 prevEl: null 3393 }; 3394 function getEl(el) { 3395 let res; 3396 if (el && typeof el === 'string' && swiper.isElement) { 3397 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 3398 if (res) return res; 3399 } 3400 if (el) { 3401 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 3402 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 3403 res = swiper.el.querySelector(el); 3404 } else if (res && res.length === 1) { 3405 res = res[0]; 3406 } 3407 } 3408 if (el && !res) return el; 3409 // if (Array.isArray(res) && res.length === 1) res = res[0]; 3410 return res; 3411 } 3412 function toggleEl(el, disabled) { 3413 const params = swiper.params.navigation; 3414 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 3415 el.forEach(subEl => { 3416 if (subEl) { 3417 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 3418 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 3419 if (swiper.params.watchOverflow && swiper.enabled) { 3420 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3421 } 3422 } 3423 }); 3424 } 3425 function update() { 3426 // Update Navigation Buttons 3427 const { 3428 nextEl, 3429 prevEl 3430 } = swiper.navigation; 3431 if (swiper.params.loop) { 3432 toggleEl(prevEl, false); 3433 toggleEl(nextEl, false); 3434 return; 3435 } 3436 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 3437 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 3438 } 3439 function onPrevClick(e) { 3440 e.preventDefault(); 3441 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 3442 swiper.slidePrev(); 3443 emit('navigationPrev'); 3444 } 3445 function onNextClick(e) { 3446 e.preventDefault(); 3447 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 3448 swiper.slideNext(); 3449 emit('navigationNext'); 3450 } 3451 function init() { 3452 const params = swiper.params.navigation; 3453 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 3454 nextEl: 'swiper-button-next', 3455 prevEl: 'swiper-button-prev' 3456 }); 3457 if (!(params.nextEl || params.prevEl)) return; 3458 let nextEl = getEl(params.nextEl); 3459 let prevEl = getEl(params.prevEl); 3460 Object.assign(swiper.navigation, { 3461 nextEl, 3462 prevEl 3463 }); 3464 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3465 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3466 const initButton = (el, dir) => { 3467 if (el) { 3468 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3469 } 3470 if (!swiper.enabled && el) { 3471 el.classList.add(...params.lockClass.split(' ')); 3472 } 3473 }; 3474 nextEl.forEach(el => initButton(el, 'next')); 3475 prevEl.forEach(el => initButton(el, 'prev')); 3476 } 3477 function destroy() { 3478 let { 3479 nextEl, 3480 prevEl 3481 } = swiper.navigation; 3482 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3483 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3484 const destroyButton = (el, dir) => { 3485 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3486 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 3487 }; 3488 nextEl.forEach(el => destroyButton(el, 'next')); 3489 prevEl.forEach(el => destroyButton(el, 'prev')); 3490 } 3491 on('init', () => { 3492 if (swiper.params.navigation.enabled === false) { 3493 // eslint-disable-next-line 3494 disable(); 3495 } else { 3496 init(); 3497 update(); 3498 } 3499 }); 3500 on('toEdge fromEdge lock unlock', () => { 3501 update(); 3502 }); 3503 on('destroy', () => { 3504 destroy(); 3505 }); 3506 on('enable disable', () => { 3507 let { 3508 nextEl, 3509 prevEl 3510 } = swiper.navigation; 3511 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3512 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3513 if (swiper.enabled) { 3514 update(); 3515 return; 3516 } 3517 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 3518 }); 3519 on('click', (_s, e) => { 3520 let { 3521 nextEl, 3522 prevEl 3523 } = swiper.navigation; 3524 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3525 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3526 const targetEl = e.target; 3527 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 3528 if (swiper.isElement && !targetIsButton) { 3529 const path = e.path || e.composedPath && e.composedPath(); 3530 if (path) { 3531 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 3532 } 3533 } 3534 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 3535 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 3536 let isHidden; 3537 if (nextEl.length) { 3538 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3539 } else if (prevEl.length) { 3540 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3541 } 3542 if (isHidden === true) { 3543 emit('navigationShow'); 3544 } else { 3545 emit('navigationHide'); 3546 } 3547 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 3548 } 3549 }); 3550 const enable = () => { 3551 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3552 init(); 3553 update(); 3554 }; 3555 const disable = () => { 3556 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3557 destroy(); 3558 }; 3559 Object.assign(swiper.navigation, { 3560 enable, 3561 disable, 3562 update, 3563 init, 3564 destroy 3565 }); 3566} 3567 3568 3569 3570 3571/***/ }), 3572
vendor: 19,040 bytes, lines 3573-4049
3573/***/ "./node_modules/swiper/modules/pagination.mjs": 3574/*!****************************************************!*\ 3575 !*** ./node_modules/swiper/modules/pagination.mjs ***! 3576 \****************************************************/ 3577/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3578 3579__webpack_require__.r(__webpack_exports__); 3580/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3581/* harmony export */ "default": () => (/* binding */ Pagination) 3582/* harmony export */ }); 3583/* 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"); 3584/* 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"); 3585/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3586 3587 3588 3589 3590function Pagination(_ref) { 3591 let { 3592 swiper, 3593 extendParams, 3594 on, 3595 emit 3596 } = _ref; 3597 const pfx = 'swiper-pagination'; 3598 extendParams({ 3599 pagination: { 3600 el: null, 3601 bulletElement: 'span', 3602 clickable: false, 3603 hideOnClick: false, 3604 renderBullet: null, 3605 renderProgressbar: null, 3606 renderFraction: null, 3607 renderCustom: null, 3608 progressbarOpposite: false, 3609 type: 'bullets', 3610 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 3611 dynamicBullets: false, 3612 dynamicMainBullets: 1, 3613 formatFractionCurrent: number => number, 3614 formatFractionTotal: number => number, 3615 bulletClass: `${pfx}-bullet`, 3616 bulletActiveClass: `${pfx}-bullet-active`, 3617 modifierClass: `${pfx}-`, 3618 currentClass: `${pfx}-current`, 3619 totalClass: `${pfx}-total`, 3620 hiddenClass: `${pfx}-hidden`, 3621 progressbarFillClass: `${pfx}-progressbar-fill`, 3622 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 3623 clickableClass: `${pfx}-clickable`, 3624 lockClass: `${pfx}-lock`, 3625 horizontalClass: `${pfx}-horizontal`, 3626 verticalClass: `${pfx}-vertical`, 3627 paginationDisabledClass: `${pfx}-disabled` 3628 } 3629 }); 3630 swiper.pagination = { 3631 el: null, 3632 bullets: [] 3633 }; 3634 let bulletSize; 3635 let dynamicBulletIndex = 0; 3636 function isPaginationDisabled() { 3637 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 3638 } 3639 function setSideBullets(bulletEl, position) { 3640 const { 3641 bulletActiveClass 3642 } = swiper.params.pagination; 3643 if (!bulletEl) return; 3644 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3645 if (bulletEl) { 3646 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 3647 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3648 if (bulletEl) { 3649 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 3650 } 3651 } 3652 } 3653 function getMoveDirection(prevIndex, nextIndex, length) { 3654 prevIndex = prevIndex % length; 3655 nextIndex = nextIndex % length; 3656 if (nextIndex === prevIndex + 1) { 3657 return 'next'; 3658 } else if (nextIndex === prevIndex - 1) { 3659 return 'previous'; 3660 } 3661 return; 3662 } 3663 function onBulletClick(e) { 3664 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 3665 if (!bulletEl) { 3666 return; 3667 } 3668 e.preventDefault(); 3669 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup; 3670 if (swiper.params.loop) { 3671 if (swiper.realIndex === index) return; 3672 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); 3673 if (moveDirection === 'next') { 3674 swiper.slideNext(); 3675 } else if (moveDirection === 'previous') { 3676 swiper.slidePrev(); 3677 } else { 3678 swiper.slideToLoop(index); 3679 } 3680 } else { 3681 swiper.slideTo(index); 3682 } 3683 } 3684 function update() { 3685 // Render || Update Pagination bullets/items 3686 const rtl = swiper.rtl; 3687 const params = swiper.params.pagination; 3688 if (isPaginationDisabled()) return; 3689 let el = swiper.pagination.el; 3690 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3691 // Current/Total 3692 let current; 3693 let previousIndex; 3694 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 3695 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3696 if (swiper.params.loop) { 3697 previousIndex = swiper.previousRealIndex || 0; 3698 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 3699 } else if (typeof swiper.snapIndex !== 'undefined') { 3700 current = swiper.snapIndex; 3701 previousIndex = swiper.previousSnapIndex; 3702 } else { 3703 previousIndex = swiper.previousIndex || 0; 3704 current = swiper.activeIndex || 0; 3705 } 3706 // Types 3707 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 3708 const bullets = swiper.pagination.bullets; 3709 let firstIndex; 3710 let lastIndex; 3711 let midIndex; 3712 if (params.dynamicBullets) { 3713 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 3714 el.forEach(subEl => { 3715 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 3716 }); 3717 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 3718 dynamicBulletIndex += current - (previousIndex || 0); 3719 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 3720 dynamicBulletIndex = params.dynamicMainBullets - 1; 3721 } else if (dynamicBulletIndex < 0) { 3722 dynamicBulletIndex = 0; 3723 } 3724 } 3725 firstIndex = Math.max(current - dynamicBulletIndex, 0); 3726 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 3727 midIndex = (lastIndex + firstIndex) / 2; 3728 } 3729 bullets.forEach(bulletEl => { 3730 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(); 3731 bulletEl.classList.remove(...classesToRemove); 3732 }); 3733 if (el.length > 1) { 3734 bullets.forEach(bullet => { 3735 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet); 3736 if (bulletIndex === current) { 3737 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3738 } else if (swiper.isElement) { 3739 bullet.setAttribute('part', 'bullet'); 3740 } 3741 if (params.dynamicBullets) { 3742 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 3743 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3744 } 3745 if (bulletIndex === firstIndex) { 3746 setSideBullets(bullet, 'prev'); 3747 } 3748 if (bulletIndex === lastIndex) { 3749 setSideBullets(bullet, 'next'); 3750 } 3751 } 3752 }); 3753 } else { 3754 const bullet = bullets[current]; 3755 if (bullet) { 3756 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3757 } 3758 if (swiper.isElement) { 3759 bullets.forEach((bulletEl, bulletIndex) => { 3760 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 3761 }); 3762 } 3763 if (params.dynamicBullets) { 3764 const firstDisplayedBullet = bullets[firstIndex]; 3765 const lastDisplayedBullet = bullets[lastIndex]; 3766 for (let i = firstIndex; i <= lastIndex; i += 1) { 3767 if (bullets[i]) { 3768 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3769 } 3770 } 3771 setSideBullets(firstDisplayedBullet, 'prev'); 3772 setSideBullets(lastDisplayedBullet, 'next'); 3773 } 3774 } 3775 if (params.dynamicBullets) { 3776 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 3777 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 3778 const offsetProp = rtl ? 'right' : 'left'; 3779 bullets.forEach(bullet => { 3780 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 3781 }); 3782 } 3783 } 3784 el.forEach((subEl, subElIndex) => { 3785 if (params.type === 'fraction') { 3786 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 3787 fractionEl.textContent = params.formatFractionCurrent(current + 1); 3788 }); 3789 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 3790 totalEl.textContent = params.formatFractionTotal(total); 3791 }); 3792 } 3793 if (params.type === 'progressbar') { 3794 let progressbarDirection; 3795 if (params.progressbarOpposite) { 3796 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 3797 } else { 3798 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 3799 } 3800 const scale = (current + 1) / total; 3801 let scaleX = 1; 3802 let scaleY = 1; 3803 if (progressbarDirection === 'horizontal') { 3804 scaleX = scale; 3805 } else { 3806 scaleY = scale; 3807 } 3808 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 3809 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 3810 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 3811 }); 3812 } 3813 if (params.type === 'custom' && params.renderCustom) { 3814 subEl.innerHTML = params.renderCustom(swiper, current + 1, total); 3815 if (subElIndex === 0) emit('paginationRender', subEl); 3816 } else { 3817 if (subElIndex === 0) emit('paginationRender', subEl); 3818 emit('paginationUpdate', subEl); 3819 } 3820 if (swiper.params.watchOverflow && swiper.enabled) { 3821 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3822 } 3823 }); 3824 } 3825 function render() { 3826 // Render Container 3827 const params = swiper.params.pagination; 3828 if (isPaginationDisabled()) return; 3829 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; 3830 let el = swiper.pagination.el; 3831 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3832 let paginationHTML = ''; 3833 if (params.type === 'bullets') { 3834 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3835 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 3836 numberOfBullets = slidesLength; 3837 } 3838 for (let i = 0; i < numberOfBullets; i += 1) { 3839 if (params.renderBullet) { 3840 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 3841 } else { 3842 // prettier-ignore 3843 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 3844 } 3845 } 3846 } 3847 if (params.type === 'fraction') { 3848 if (params.renderFraction) { 3849 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 3850 } else { 3851 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 3852 } 3853 } 3854 if (params.type === 'progressbar') { 3855 if (params.renderProgressbar) { 3856 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 3857 } else { 3858 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 3859 } 3860 } 3861 swiper.pagination.bullets = []; 3862 el.forEach(subEl => { 3863 if (params.type !== 'custom') { 3864 subEl.innerHTML = paginationHTML || ''; 3865 } 3866 if (params.type === 'bullets') { 3867 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 3868 } 3869 }); 3870 if (params.type !== 'custom') { 3871 emit('paginationRender', el[0]); 3872 } 3873 } 3874 function init() { 3875 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 3876 el: 'swiper-pagination' 3877 }); 3878 const params = swiper.params.pagination; 3879 if (!params.el) return; 3880 let el; 3881 if (typeof params.el === 'string' && swiper.isElement) { 3882 el = swiper.el.querySelector(params.el); 3883 } 3884 if (!el && typeof params.el === 'string') { 3885 el = [...document.querySelectorAll(params.el)]; 3886 } 3887 if (!el) { 3888 el = params.el; 3889 } 3890 if (!el || el.length === 0) return; 3891 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 3892 el = [...swiper.el.querySelectorAll(params.el)]; 3893 // check if it belongs to another nested Swiper 3894 if (el.length > 1) { 3895 el = el.filter(subEl => { 3896 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false; 3897 return true; 3898 })[0]; 3899 } 3900 } 3901 if (Array.isArray(el) && el.length === 1) el = el[0]; 3902 Object.assign(swiper.pagination, { 3903 el 3904 }); 3905 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3906 el.forEach(subEl => { 3907 if (params.type === 'bullets' && params.clickable) { 3908 subEl.classList.add(...(params.clickableClass || '').split(' ')); 3909 } 3910 subEl.classList.add(params.modifierClass + params.type); 3911 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3912 if (params.type === 'bullets' && params.dynamicBullets) { 3913 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 3914 dynamicBulletIndex = 0; 3915 if (params.dynamicMainBullets < 1) { 3916 params.dynamicMainBullets = 1; 3917 } 3918 } 3919 if (params.type === 'progressbar' && params.progressbarOpposite) { 3920 subEl.classList.add(params.progressbarOppositeClass); 3921 } 3922 if (params.clickable) { 3923 subEl.addEventListener('click', onBulletClick); 3924 } 3925 if (!swiper.enabled) { 3926 subEl.classList.add(params.lockClass); 3927 } 3928 }); 3929 } 3930 function destroy() { 3931 const params = swiper.params.pagination; 3932 if (isPaginationDisabled()) return; 3933 let el = swiper.pagination.el; 3934 if (el) { 3935 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3936 el.forEach(subEl => { 3937 subEl.classList.remove(params.hiddenClass); 3938 subEl.classList.remove(params.modifierClass + params.type); 3939 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3940 if (params.clickable) { 3941 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 3942 subEl.removeEventListener('click', onBulletClick); 3943 } 3944 }); 3945 } 3946 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 3947 } 3948 on('changeDirection', () => { 3949 if (!swiper.pagination || !swiper.pagination.el) return; 3950 const params = swiper.params.pagination; 3951 let { 3952 el 3953 } = swiper.pagination; 3954 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3955 el.forEach(subEl => { 3956 subEl.classList.remove(params.horizontalClass, params.verticalClass); 3957 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3958 }); 3959 }); 3960 on('init', () => { 3961 if (swiper.params.pagination.enabled === false) { 3962 // eslint-disable-next-line 3963 disable(); 3964 } else { 3965 init(); 3966 render(); 3967 update(); 3968 } 3969 }); 3970 on('activeIndexChange', () => { 3971 if (typeof swiper.snapIndex === 'undefined') { 3972 update(); 3973 } 3974 }); 3975 on('snapIndexChange', () => { 3976 update(); 3977 }); 3978 on('snapGridLengthChange', () => { 3979 render(); 3980 update(); 3981 }); 3982 on('destroy', () => { 3983 destroy(); 3984 }); 3985 on('enable disable', () => { 3986 let { 3987 el 3988 } = swiper.pagination; 3989 if (el) { 3990 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3991 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 3992 } 3993 }); 3994 on('lock unlock', () => { 3995 update(); 3996 }); 3997 on('click', (_s, e) => { 3998 const targetEl = e.target; 3999 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 4000 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 4001 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 4002 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 4003 if (isHidden === true) { 4004 emit('paginationShow'); 4005 } else { 4006 emit('paginationHide'); 4007 } 4008 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 4009 } 4010 }); 4011 const enable = () => { 4012 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 4013 let { 4014 el 4015 } = swiper.pagination; 4016 if (el) { 4017 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4018 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 4019 } 4020 init(); 4021 render(); 4022 update(); 4023 }; 4024 const disable = () => { 4025 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 4026 let { 4027 el 4028 } = swiper.pagination; 4029 if (el) { 4030 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4031 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 4032 } 4033 destroy(); 4034 }; 4035 Object.assign(swiper.pagination, { 4036 enable, 4037 disable, 4038 render, 4039 update, 4040 init, 4041 destroy 4042 }); 4043} 4044 4045 4046 4047 4048/***/ }), 4049
vendor: 4,684 bytes, lines 4050-4188
4050/***/ "./node_modules/swiper/modules/parallax.mjs": 4051/*!**************************************************!*\ 4052 !*** ./node_modules/swiper/modules/parallax.mjs ***! 4053 \**************************************************/ 4054/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4055 4056__webpack_require__.r(__webpack_exports__); 4057/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4058/* harmony export */ "default": () => (/* binding */ Parallax) 4059/* harmony export */ }); 4060/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4061 4062 4063function Parallax(_ref) { 4064 let { 4065 swiper, 4066 extendParams, 4067 on 4068 } = _ref; 4069 extendParams({ 4070 parallax: { 4071 enabled: false 4072 } 4073 }); 4074 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 4075 const setTransform = (el, progress) => { 4076 const { 4077 rtl 4078 } = swiper; 4079 const rtlFactor = rtl ? -1 : 1; 4080 const p = el.getAttribute('data-swiper-parallax') || '0'; 4081 let x = el.getAttribute('data-swiper-parallax-x'); 4082 let y = el.getAttribute('data-swiper-parallax-y'); 4083 const scale = el.getAttribute('data-swiper-parallax-scale'); 4084 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 4085 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 4086 if (x || y) { 4087 x = x || '0'; 4088 y = y || '0'; 4089 } else if (swiper.isHorizontal()) { 4090 x = p; 4091 y = '0'; 4092 } else { 4093 y = p; 4094 x = '0'; 4095 } 4096 if (x.indexOf('%') >= 0) { 4097 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 4098 } else { 4099 x = `${x * progress * rtlFactor}px`; 4100 } 4101 if (y.indexOf('%') >= 0) { 4102 y = `${parseInt(y, 10) * progress}%`; 4103 } else { 4104 y = `${y * progress}px`; 4105 } 4106 if (typeof opacity !== 'undefined' && opacity !== null) { 4107 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 4108 el.style.opacity = currentOpacity; 4109 } 4110 let transform = `translate3d(${x}, ${y}, 0px)`; 4111 if (typeof scale !== 'undefined' && scale !== null) { 4112 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 4113 transform += ` scale(${currentScale})`; 4114 } 4115 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 4116 const currentRotate = rotate * progress * -1; 4117 transform += ` rotate(${currentRotate}deg)`; 4118 } 4119 el.style.transform = transform; 4120 }; 4121 const setTranslate = () => { 4122 const { 4123 el, 4124 slides, 4125 progress, 4126 snapGrid, 4127 isElement 4128 } = swiper; 4129 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 4130 if (swiper.isElement) { 4131 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 4132 } 4133 elements.forEach(subEl => { 4134 setTransform(subEl, progress); 4135 }); 4136 slides.forEach((slideEl, slideIndex) => { 4137 let slideProgress = slideEl.progress; 4138 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 4139 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 4140 } 4141 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 4142 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 4143 setTransform(subEl, slideProgress); 4144 }); 4145 }); 4146 }; 4147 const setTransition = function (duration) { 4148 if (duration === void 0) { 4149 duration = swiper.params.speed; 4150 } 4151 const { 4152 el, 4153 hostEl 4154 } = swiper; 4155 const elements = [...el.querySelectorAll(elementsSelector)]; 4156 if (swiper.isElement) { 4157 elements.push(...hostEl.querySelectorAll(elementsSelector)); 4158 } 4159 elements.forEach(parallaxEl => { 4160 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 4161 if (duration === 0) parallaxDuration = 0; 4162 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 4163 }); 4164 }; 4165 on('beforeInit', () => { 4166 if (!swiper.params.parallax.enabled) return; 4167 swiper.params.watchSlidesProgress = true; 4168 swiper.originalParams.watchSlidesProgress = true; 4169 }); 4170 on('init', () => { 4171 if (!swiper.params.parallax.enabled) return; 4172 setTranslate(); 4173 }); 4174 on('setTranslate', () => { 4175 if (!swiper.params.parallax.enabled) return; 4176 setTranslate(); 4177 }); 4178 on('setTransition', (_swiper, duration) => { 4179 if (!swiper.params.parallax.enabled) return; 4180 setTransition(duration); 4181 }); 4182} 4183 4184 4185 4186 4187/***/ }), 4188
vendor: 12,517 bytes, lines 4189-4572
4189/***/ "./node_modules/swiper/modules/scrollbar.mjs": 4190/*!***************************************************!*\ 4191 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 4192 \***************************************************/ 4193/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4194 4195__webpack_require__.r(__webpack_exports__); 4196/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4197/* harmony export */ "default": () => (/* binding */ Scrollbar) 4198/* harmony export */ }); 4199/* 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"); 4200/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4201/* 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"); 4202/* 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"); 4203 4204 4205 4206 4207 4208function Scrollbar(_ref) { 4209 let { 4210 swiper, 4211 extendParams, 4212 on, 4213 emit 4214 } = _ref; 4215 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4216 let isTouched = false; 4217 let timeout = null; 4218 let dragTimeout = null; 4219 let dragStartPos; 4220 let dragSize; 4221 let trackSize; 4222 let divider; 4223 extendParams({ 4224 scrollbar: { 4225 el: null, 4226 dragSize: 'auto', 4227 hide: false, 4228 draggable: false, 4229 snapOnRelease: true, 4230 lockClass: 'swiper-scrollbar-lock', 4231 dragClass: 'swiper-scrollbar-drag', 4232 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 4233 horizontalClass: `swiper-scrollbar-horizontal`, 4234 verticalClass: `swiper-scrollbar-vertical` 4235 } 4236 }); 4237 swiper.scrollbar = { 4238 el: null, 4239 dragEl: null 4240 }; 4241 function setTranslate() { 4242 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4243 const { 4244 scrollbar, 4245 rtlTranslate: rtl 4246 } = swiper; 4247 const { 4248 dragEl, 4249 el 4250 } = scrollbar; 4251 const params = swiper.params.scrollbar; 4252 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 4253 let newSize = dragSize; 4254 let newPos = (trackSize - dragSize) * progress; 4255 if (rtl) { 4256 newPos = -newPos; 4257 if (newPos > 0) { 4258 newSize = dragSize - newPos; 4259 newPos = 0; 4260 } else if (-newPos + dragSize > trackSize) { 4261 newSize = trackSize + newPos; 4262 } 4263 } else if (newPos < 0) { 4264 newSize = dragSize + newPos; 4265 newPos = 0; 4266 } else if (newPos + dragSize > trackSize) { 4267 newSize = trackSize - newPos; 4268 } 4269 if (swiper.isHorizontal()) { 4270 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 4271 dragEl.style.width = `${newSize}px`; 4272 } else { 4273 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 4274 dragEl.style.height = `${newSize}px`; 4275 } 4276 if (params.hide) { 4277 clearTimeout(timeout); 4278 el.style.opacity = 1; 4279 timeout = setTimeout(() => { 4280 el.style.opacity = 0; 4281 el.style.transitionDuration = '400ms'; 4282 }, 1000); 4283 } 4284 } 4285 function setTransition(duration) { 4286 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4287 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 4288 } 4289 function updateSize() { 4290 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4291 const { 4292 scrollbar 4293 } = swiper; 4294 const { 4295 dragEl, 4296 el 4297 } = scrollbar; 4298 dragEl.style.width = ''; 4299 dragEl.style.height = ''; 4300 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 4301 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 4302 if (swiper.params.scrollbar.dragSize === 'auto') { 4303 dragSize = trackSize * divider; 4304 } else { 4305 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 4306 } 4307 if (swiper.isHorizontal()) { 4308 dragEl.style.width = `${dragSize}px`; 4309 } else { 4310 dragEl.style.height = `${dragSize}px`; 4311 } 4312 if (divider >= 1) { 4313 el.style.display = 'none'; 4314 } else { 4315 el.style.display = ''; 4316 } 4317 if (swiper.params.scrollbar.hide) { 4318 el.style.opacity = 0; 4319 } 4320 if (swiper.params.watchOverflow && swiper.enabled) { 4321 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 4322 } 4323 } 4324 function getPointerPosition(e) { 4325 return swiper.isHorizontal() ? e.clientX : e.clientY; 4326 } 4327 function setDragPosition(e) { 4328 const { 4329 scrollbar, 4330 rtlTranslate: rtl 4331 } = swiper; 4332 const { 4333 el 4334 } = scrollbar; 4335 let positionRatio; 4336 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 4337 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 4338 if (rtl) { 4339 positionRatio = 1 - positionRatio; 4340 } 4341 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 4342 swiper.updateProgress(position); 4343 swiper.setTranslate(position); 4344 swiper.updateActiveIndex(); 4345 swiper.updateSlidesClasses(); 4346 } 4347 function onDragStart(e) { 4348 const params = swiper.params.scrollbar; 4349 const { 4350 scrollbar, 4351 wrapperEl 4352 } = swiper; 4353 const { 4354 el, 4355 dragEl 4356 } = scrollbar; 4357 isTouched = true; 4358 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 4359 e.preventDefault(); 4360 e.stopPropagation(); 4361 wrapperEl.style.transitionDuration = '100ms'; 4362 dragEl.style.transitionDuration = '100ms'; 4363 setDragPosition(e); 4364 clearTimeout(dragTimeout); 4365 el.style.transitionDuration = '0ms'; 4366 if (params.hide) { 4367 el.style.opacity = 1; 4368 } 4369 if (swiper.params.cssMode) { 4370 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 4371 } 4372 emit('scrollbarDragStart', e); 4373 } 4374 function onDragMove(e) { 4375 const { 4376 scrollbar, 4377 wrapperEl 4378 } = swiper; 4379 const { 4380 el, 4381 dragEl 4382 } = scrollbar; 4383 if (!isTouched) return; 4384 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 4385 setDragPosition(e); 4386 wrapperEl.style.transitionDuration = '0ms'; 4387 el.style.transitionDuration = '0ms'; 4388 dragEl.style.transitionDuration = '0ms'; 4389 emit('scrollbarDragMove', e); 4390 } 4391 function onDragEnd(e) { 4392 const params = swiper.params.scrollbar; 4393 const { 4394 scrollbar, 4395 wrapperEl 4396 } = swiper; 4397 const { 4398 el 4399 } = scrollbar; 4400 if (!isTouched) return; 4401 isTouched = false; 4402 if (swiper.params.cssMode) { 4403 swiper.wrapperEl.style['scroll-snap-type'] = ''; 4404 wrapperEl.style.transitionDuration = ''; 4405 } 4406 if (params.hide) { 4407 clearTimeout(dragTimeout); 4408 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 4409 el.style.opacity = 0; 4410 el.style.transitionDuration = '400ms'; 4411 }, 1000); 4412 } 4413 emit('scrollbarDragEnd', e); 4414 if (params.snapOnRelease) { 4415 swiper.slideToClosest(); 4416 } 4417 } 4418 function events(method) { 4419 const { 4420 scrollbar, 4421 params 4422 } = swiper; 4423 const el = scrollbar.el; 4424 if (!el) return; 4425 const target = el; 4426 const activeListener = params.passiveListeners ? { 4427 passive: false, 4428 capture: false 4429 } : false; 4430 const passiveListener = params.passiveListeners ? { 4431 passive: true, 4432 capture: false 4433 } : false; 4434 if (!target) return; 4435 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 4436 target[eventMethod]('pointerdown', onDragStart, activeListener); 4437 document[eventMethod]('pointermove', onDragMove, activeListener); 4438 document[eventMethod]('pointerup', onDragEnd, passiveListener); 4439 } 4440 function enableDraggable() { 4441 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4442 events('on'); 4443 } 4444 function disableDraggable() { 4445 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4446 events('off'); 4447 } 4448 function init() { 4449 const { 4450 scrollbar, 4451 el: swiperEl 4452 } = swiper; 4453 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 4454 el: 'swiper-scrollbar' 4455 }); 4456 const params = swiper.params.scrollbar; 4457 if (!params.el) return; 4458 let el; 4459 if (typeof params.el === 'string' && swiper.isElement) { 4460 el = swiper.el.querySelector(params.el); 4461 } 4462 if (!el && typeof params.el === 'string') { 4463 el = document.querySelectorAll(params.el); 4464 if (!el.length) return; 4465 } else if (!el) { 4466 el = params.el; 4467 } 4468 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 4469 el = swiperEl.querySelector(params.el); 4470 } 4471 if (el.length > 0) el = el[0]; 4472 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4473 let dragEl; 4474 if (el) { 4475 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 4476 if (!dragEl) { 4477 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 4478 el.append(dragEl); 4479 } 4480 } 4481 Object.assign(scrollbar, { 4482 el, 4483 dragEl 4484 }); 4485 if (params.draggable) { 4486 enableDraggable(); 4487 } 4488 if (el) { 4489 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 4490 } 4491 } 4492 function destroy() { 4493 const params = swiper.params.scrollbar; 4494 const el = swiper.scrollbar.el; 4495 if (el) { 4496 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 4497 } 4498 disableDraggable(); 4499 } 4500 on('changeDirection', () => { 4501 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 4502 const params = swiper.params.scrollbar; 4503 let { 4504 el 4505 } = swiper.scrollbar; 4506 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 4507 el.forEach(subEl => { 4508 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4509 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4510 }); 4511 }); 4512 on('init', () => { 4513 if (swiper.params.scrollbar.enabled === false) { 4514 // eslint-disable-next-line 4515 disable(); 4516 } else { 4517 init(); 4518 updateSize(); 4519 setTranslate(); 4520 } 4521 }); 4522 on('update resize observerUpdate lock unlock changeDirection', () => { 4523 updateSize(); 4524 }); 4525 on('setTranslate', () => { 4526 setTranslate(); 4527 }); 4528 on('setTransition', (_s, duration) => { 4529 setTransition(duration); 4530 }); 4531 on('enable disable', () => { 4532 const { 4533 el 4534 } = swiper.scrollbar; 4535 if (el) { 4536 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 4537 } 4538 }); 4539 on('destroy', () => { 4540 destroy(); 4541 }); 4542 const enable = () => { 4543 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4544 if (swiper.scrollbar.el) { 4545 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4546 } 4547 init(); 4548 updateSize(); 4549 setTranslate(); 4550 }; 4551 const disable = () => { 4552 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4553 if (swiper.scrollbar.el) { 4554 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4555 } 4556 destroy(); 4557 }; 4558 Object.assign(swiper.scrollbar, { 4559 enable, 4560 disable, 4561 updateSize, 4562 setTranslate, 4563 init, 4564 destroy 4565 }); 4566} 4567 4568 4569 4570 4571/***/ }), 4572
vendor: 8,082 bytes, lines 4573-4781
4573/***/ "./node_modules/swiper/modules/thumbs.mjs": 4574/*!************************************************!*\ 4575 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 4576 \************************************************/ 4577/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4578 4579__webpack_require__.r(__webpack_exports__); 4580/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4581/* harmony export */ "default": () => (/* binding */ Thumb) 4582/* harmony export */ }); 4583/* 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"); 4584/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4585 4586 4587 4588function Thumb(_ref) { 4589 let { 4590 swiper, 4591 extendParams, 4592 on 4593 } = _ref; 4594 extendParams({ 4595 thumbs: { 4596 swiper: null, 4597 multipleActiveThumbs: true, 4598 autoScrollOffset: 0, 4599 slideThumbActiveClass: 'swiper-slide-thumb-active', 4600 thumbsContainerClass: 'swiper-thumbs' 4601 } 4602 }); 4603 let initialized = false; 4604 let swiperCreated = false; 4605 swiper.thumbs = { 4606 swiper: null 4607 }; 4608 function onThumbClick() { 4609 const thumbsSwiper = swiper.thumbs.swiper; 4610 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4611 const clickedIndex = thumbsSwiper.clickedIndex; 4612 const clickedSlide = thumbsSwiper.clickedSlide; 4613 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 4614 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 4615 let slideToIndex; 4616 if (thumbsSwiper.params.loop) { 4617 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 4618 } else { 4619 slideToIndex = clickedIndex; 4620 } 4621 if (swiper.params.loop) { 4622 swiper.slideToLoop(slideToIndex); 4623 } else { 4624 swiper.slideTo(slideToIndex); 4625 } 4626 } 4627 function init() { 4628 const { 4629 thumbs: thumbsParams 4630 } = swiper.params; 4631 if (initialized) return false; 4632 initialized = true; 4633 const SwiperClass = swiper.constructor; 4634 if (thumbsParams.swiper instanceof SwiperClass) { 4635 swiper.thumbs.swiper = thumbsParams.swiper; 4636 Object.assign(swiper.thumbs.swiper.originalParams, { 4637 watchSlidesProgress: true, 4638 slideToClickedSlide: false 4639 }); 4640 Object.assign(swiper.thumbs.swiper.params, { 4641 watchSlidesProgress: true, 4642 slideToClickedSlide: false 4643 }); 4644 swiper.thumbs.swiper.update(); 4645 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) { 4646 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 4647 Object.assign(thumbsSwiperParams, { 4648 watchSlidesProgress: true, 4649 slideToClickedSlide: false 4650 }); 4651 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 4652 swiperCreated = true; 4653 } 4654 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 4655 swiper.thumbs.swiper.on('tap', onThumbClick); 4656 return true; 4657 } 4658 function update(initial) { 4659 const thumbsSwiper = swiper.thumbs.swiper; 4660 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4661 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 4662 4663 // Activate thumbs 4664 let thumbsToActivate = 1; 4665 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 4666 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 4667 thumbsToActivate = swiper.params.slidesPerView; 4668 } 4669 if (!swiper.params.thumbs.multipleActiveThumbs) { 4670 thumbsToActivate = 1; 4671 } 4672 thumbsToActivate = Math.floor(thumbsToActivate); 4673 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 4674 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 4675 for (let i = 0; i < thumbsToActivate; i += 1) { 4676 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 4677 slideEl.classList.add(thumbActiveClass); 4678 }); 4679 } 4680 } else { 4681 for (let i = 0; i < thumbsToActivate; i += 1) { 4682 if (thumbsSwiper.slides[swiper.realIndex + i]) { 4683 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 4684 } 4685 } 4686 } 4687 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 4688 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 4689 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 4690 const currentThumbsIndex = thumbsSwiper.activeIndex; 4691 let newThumbsIndex; 4692 let direction; 4693 if (thumbsSwiper.params.loop) { 4694 const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; 4695 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 4696 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 4697 } else { 4698 newThumbsIndex = swiper.realIndex; 4699 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 4700 } 4701 if (useOffset) { 4702 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 4703 } 4704 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 4705 if (thumbsSwiper.params.centeredSlides) { 4706 if (newThumbsIndex > currentThumbsIndex) { 4707 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 4708 } else { 4709 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 4710 } 4711 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 4712 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 4713 } 4714 } 4715 } 4716 on('beforeInit', () => { 4717 const { 4718 thumbs 4719 } = swiper.params; 4720 if (!thumbs || !thumbs.swiper) return; 4721 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 4722 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4723 const getThumbsElementAndInit = () => { 4724 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 4725 if (thumbsElement && thumbsElement.swiper) { 4726 thumbs.swiper = thumbsElement.swiper; 4727 init(); 4728 update(true); 4729 } else if (thumbsElement) { 4730 const eventName = `${swiper.params.eventsPrefix}init`; 4731 const onThumbsSwiper = e => { 4732 thumbs.swiper = e.detail[0]; 4733 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 4734 init(); 4735 update(true); 4736 thumbs.swiper.update(); 4737 swiper.update(); 4738 }; 4739 thumbsElement.addEventListener(eventName, onThumbsSwiper); 4740 } 4741 return thumbsElement; 4742 }; 4743 const watchForThumbsToAppear = () => { 4744 if (swiper.destroyed) return; 4745 const thumbsElement = getThumbsElementAndInit(); 4746 if (!thumbsElement) { 4747 requestAnimationFrame(watchForThumbsToAppear); 4748 } 4749 }; 4750 requestAnimationFrame(watchForThumbsToAppear); 4751 } else { 4752 init(); 4753 update(true); 4754 } 4755 }); 4756 on('slideChange update resize observerUpdate', () => { 4757 update(); 4758 }); 4759 on('setTransition', (_s, duration) => { 4760 const thumbsSwiper = swiper.thumbs.swiper; 4761 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4762 thumbsSwiper.setTransition(duration); 4763 }); 4764 on('beforeDestroy', () => { 4765 const thumbsSwiper = swiper.thumbs.swiper; 4766 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4767 if (swiperCreated) { 4768 thumbsSwiper.destroy(); 4769 } 4770 }); 4771 Object.assign(swiper.thumbs, { 4772 init, 4773 update 4774 }); 4775} 4776 4777 4778 4779 4780/***/ }), 4781
vendor: 12,389 bytes, lines 4782-5146
4782/***/ "./node_modules/swiper/modules/virtual.mjs": 4783/*!*************************************************!*\ 4784 !*** ./node_modules/swiper/modules/virtual.mjs ***! 4785 \*************************************************/ 4786/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4787 4788__webpack_require__.r(__webpack_exports__); 4789/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4790/* harmony export */ "default": () => (/* binding */ Virtual) 4791/* harmony export */ }); 4792/* 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"); 4793/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4794 4795 4796 4797function Virtual(_ref) { 4798 let { 4799 swiper, 4800 extendParams, 4801 on, 4802 emit 4803 } = _ref; 4804 extendParams({ 4805 virtual: { 4806 enabled: false, 4807 slides: [], 4808 cache: true, 4809 renderSlide: null, 4810 renderExternal: null, 4811 renderExternalUpdate: true, 4812 addSlidesBefore: 0, 4813 addSlidesAfter: 0 4814 } 4815 }); 4816 let cssModeTimeout; 4817 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4818 swiper.virtual = { 4819 cache: {}, 4820 from: undefined, 4821 to: undefined, 4822 slides: [], 4823 offset: 0, 4824 slidesGrid: [] 4825 }; 4826 const tempDOM = document.createElement('div'); 4827 function renderSlide(slide, index) { 4828 const params = swiper.params.virtual; 4829 if (params.cache && swiper.virtual.cache[index]) { 4830 return swiper.virtual.cache[index]; 4831 } 4832 // eslint-disable-next-line 4833 let slideEl; 4834 if (params.renderSlide) { 4835 slideEl = params.renderSlide.call(swiper, slide, index); 4836 if (typeof slideEl === 'string') { 4837 tempDOM.innerHTML = slideEl; 4838 slideEl = tempDOM.children[0]; 4839 } 4840 } else if (swiper.isElement) { 4841 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 4842 } else { 4843 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 4844 } 4845 slideEl.setAttribute('data-swiper-slide-index', index); 4846 if (!params.renderSlide) { 4847 slideEl.innerHTML = slide; 4848 } 4849 if (params.cache) { 4850 swiper.virtual.cache[index] = slideEl; 4851 } 4852 return slideEl; 4853 } 4854 function update(force, beforeInit) { 4855 const { 4856 slidesPerView, 4857 slidesPerGroup, 4858 centeredSlides, 4859 loop: isLoop, 4860 initialSlide 4861 } = swiper.params; 4862 if (beforeInit && !isLoop && initialSlide > 0) { 4863 return; 4864 } 4865 const { 4866 addSlidesBefore, 4867 addSlidesAfter 4868 } = swiper.params.virtual; 4869 const { 4870 from: previousFrom, 4871 to: previousTo, 4872 slides, 4873 slidesGrid: previousSlidesGrid, 4874 offset: previousOffset 4875 } = swiper.virtual; 4876 if (!swiper.params.cssMode) { 4877 swiper.updateActiveIndex(); 4878 } 4879 const activeIndex = swiper.activeIndex || 0; 4880 let offsetProp; 4881 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 4882 let slidesAfter; 4883 let slidesBefore; 4884 if (centeredSlides) { 4885 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 4886 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 4887 } else { 4888 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 4889 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 4890 } 4891 let from = activeIndex - slidesBefore; 4892 let to = activeIndex + slidesAfter; 4893 if (!isLoop) { 4894 from = Math.max(from, 0); 4895 to = Math.min(to, slides.length - 1); 4896 } 4897 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 4898 if (isLoop && activeIndex >= slidesBefore) { 4899 from -= slidesBefore; 4900 if (!centeredSlides) offset += swiper.slidesGrid[0]; 4901 } else if (isLoop && activeIndex < slidesBefore) { 4902 from = -slidesBefore; 4903 if (centeredSlides) offset += swiper.slidesGrid[0]; 4904 } 4905 Object.assign(swiper.virtual, { 4906 from, 4907 to, 4908 offset, 4909 slidesGrid: swiper.slidesGrid, 4910 slidesBefore, 4911 slidesAfter 4912 }); 4913 function onRendered() { 4914 swiper.updateSlides(); 4915 swiper.updateProgress(); 4916 swiper.updateSlidesClasses(); 4917 emit('virtualUpdate'); 4918 } 4919 if (previousFrom === from && previousTo === to && !force) { 4920 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 4921 swiper.slides.forEach(slideEl => { 4922 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 4923 }); 4924 } 4925 swiper.updateProgress(); 4926 emit('virtualUpdate'); 4927 return; 4928 } 4929 if (swiper.params.virtual.renderExternal) { 4930 swiper.params.virtual.renderExternal.call(swiper, { 4931 offset, 4932 from, 4933 to, 4934 slides: function getSlides() { 4935 const slidesToRender = []; 4936 for (let i = from; i <= to; i += 1) { 4937 slidesToRender.push(slides[i]); 4938 } 4939 return slidesToRender; 4940 }() 4941 }); 4942 if (swiper.params.virtual.renderExternalUpdate) { 4943 onRendered(); 4944 } else { 4945 emit('virtualUpdate'); 4946 } 4947 return; 4948 } 4949 const prependIndexes = []; 4950 const appendIndexes = []; 4951 const getSlideIndex = index => { 4952 let slideIndex = index; 4953 if (index < 0) { 4954 slideIndex = slides.length + index; 4955 } else if (slideIndex >= slides.length) { 4956 // eslint-disable-next-line 4957 slideIndex = slideIndex - slides.length; 4958 } 4959 return slideIndex; 4960 }; 4961 if (force) { 4962 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 4963 slideEl.remove(); 4964 }); 4965 } else { 4966 for (let i = previousFrom; i <= previousTo; i += 1) { 4967 if (i < from || i > to) { 4968 const slideIndex = getSlideIndex(i); 4969 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 4970 slideEl.remove(); 4971 }); 4972 } 4973 } 4974 } 4975 const loopFrom = isLoop ? -slides.length : 0; 4976 const loopTo = isLoop ? slides.length * 2 : slides.length; 4977 for (let i = loopFrom; i < loopTo; i += 1) { 4978 if (i >= from && i <= to) { 4979 const slideIndex = getSlideIndex(i); 4980 if (typeof previousTo === 'undefined' || force) { 4981 appendIndexes.push(slideIndex); 4982 } else { 4983 if (i > previousTo) appendIndexes.push(slideIndex); 4984 if (i < previousFrom) prependIndexes.push(slideIndex); 4985 } 4986 } 4987 } 4988 appendIndexes.forEach(index => { 4989 swiper.slidesEl.append(renderSlide(slides[index], index)); 4990 }); 4991 if (isLoop) { 4992 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 4993 const index = prependIndexes[i]; 4994 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 4995 } 4996 } else { 4997 prependIndexes.sort((a, b) => b - a); 4998 prependIndexes.forEach(index => { 4999 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 5000 }); 5001 } 5002 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 5003 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 5004 }); 5005 onRendered(); 5006 } 5007 function appendSlide(slides) { 5008 if (typeof slides === 'object' && 'length' in slides) { 5009 for (let i = 0; i < slides.length; i += 1) { 5010 if (slides[i]) swiper.virtual.slides.push(slides[i]); 5011 } 5012 } else { 5013 swiper.virtual.slides.push(slides); 5014 } 5015 update(true); 5016 } 5017 function prependSlide(slides) { 5018 const activeIndex = swiper.activeIndex; 5019 let newActiveIndex = activeIndex + 1; 5020 let numberOfNewSlides = 1; 5021 if (Array.isArray(slides)) { 5022 for (let i = 0; i < slides.length; i += 1) { 5023 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 5024 } 5025 newActiveIndex = activeIndex + slides.length; 5026 numberOfNewSlides = slides.length; 5027 } else { 5028 swiper.virtual.slides.unshift(slides); 5029 } 5030 if (swiper.params.virtual.cache) { 5031 const cache = swiper.virtual.cache; 5032 const newCache = {}; 5033 Object.keys(cache).forEach(cachedIndex => { 5034 const cachedEl = cache[cachedIndex]; 5035 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 5036 if (cachedElIndex) { 5037 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 5038 } 5039 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 5040 }); 5041 swiper.virtual.cache = newCache; 5042 } 5043 update(true); 5044 swiper.slideTo(newActiveIndex, 0); 5045 } 5046 function removeSlide(slidesIndexes) { 5047 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 5048 let activeIndex = swiper.activeIndex; 5049 if (Array.isArray(slidesIndexes)) { 5050 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 5051 if (swiper.params.virtual.cache) { 5052 delete swiper.virtual.cache[slidesIndexes[i]]; 5053 // shift cache indexes 5054 Object.keys(swiper.virtual.cache).forEach(key => { 5055 if (key > slidesIndexes) { 5056 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5057 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5058 delete swiper.virtual.cache[key]; 5059 } 5060 }); 5061 } 5062 swiper.virtual.slides.splice(slidesIndexes[i], 1); 5063 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 5064 activeIndex = Math.max(activeIndex, 0); 5065 } 5066 } else { 5067 if (swiper.params.virtual.cache) { 5068 delete swiper.virtual.cache[slidesIndexes]; 5069 // shift cache indexes 5070 Object.keys(swiper.virtual.cache).forEach(key => { 5071 if (key > slidesIndexes) { 5072 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5073 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5074 delete swiper.virtual.cache[key]; 5075 } 5076 }); 5077 } 5078 swiper.virtual.slides.splice(slidesIndexes, 1); 5079 if (slidesIndexes < activeIndex) activeIndex -= 1; 5080 activeIndex = Math.max(activeIndex, 0); 5081 } 5082 update(true); 5083 swiper.slideTo(activeIndex, 0); 5084 } 5085 function removeAllSlides() { 5086 swiper.virtual.slides = []; 5087 if (swiper.params.virtual.cache) { 5088 swiper.virtual.cache = {}; 5089 } 5090 update(true); 5091 swiper.slideTo(0, 0); 5092 } 5093 on('beforeInit', () => { 5094 if (!swiper.params.virtual.enabled) return; 5095 let domSlidesAssigned; 5096 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 5097 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 5098 if (slides && slides.length) { 5099 swiper.virtual.slides = [...slides]; 5100 domSlidesAssigned = true; 5101 slides.forEach((slideEl, slideIndex) => { 5102 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 5103 swiper.virtual.cache[slideIndex] = slideEl; 5104 slideEl.remove(); 5105 }); 5106 } 5107 } 5108 if (!domSlidesAssigned) { 5109 swiper.virtual.slides = swiper.params.virtual.slides; 5110 } 5111 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 5112 swiper.params.watchSlidesProgress = true; 5113 swiper.originalParams.watchSlidesProgress = true; 5114 update(false, true); 5115 }); 5116 on('setTranslate', () => { 5117 if (!swiper.params.virtual.enabled) return; 5118 if (swiper.params.cssMode && !swiper._immediateVirtual) { 5119 clearTimeout(cssModeTimeout); 5120 cssModeTimeout = setTimeout(() => { 5121 update(); 5122 }, 100); 5123 } else { 5124 update(); 5125 } 5126 }); 5127 on('init update resize', () => { 5128 if (!swiper.params.virtual.enabled) return; 5129 if (swiper.params.cssMode) { 5130 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 5131 } 5132 }); 5133 Object.assign(swiper.virtual, { 5134 appendSlide, 5135 prependSlide, 5136 removeSlide, 5137 removeAllSlides, 5138 update 5139 }); 5140} 5141 5142 5143 5144 5145/***/ }), 5146
vendor: 23,551 bytes, lines 5147-5788
5147/***/ "./node_modules/swiper/modules/zoom.mjs": 5148/*!**********************************************!*\ 5149 !*** ./node_modules/swiper/modules/zoom.mjs ***! 5150 \**********************************************/ 5151/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5152 5153__webpack_require__.r(__webpack_exports__); 5154/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5155/* harmony export */ "default": () => (/* binding */ Zoom) 5156/* harmony export */ }); 5157/* 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"); 5158/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5159 5160 5161 5162function Zoom(_ref) { 5163 let { 5164 swiper, 5165 extendParams, 5166 on, 5167 emit 5168 } = _ref; 5169 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5170 extendParams({ 5171 zoom: { 5172 enabled: false, 5173 limitToOriginalSize: false, 5174 maxRatio: 3, 5175 minRatio: 1, 5176 toggle: true, 5177 containerClass: 'swiper-zoom-container', 5178 zoomedSlideClass: 'swiper-slide-zoomed' 5179 } 5180 }); 5181 swiper.zoom = { 5182 enabled: false 5183 }; 5184 let currentScale = 1; 5185 let isScaling = false; 5186 let fakeGestureTouched; 5187 let fakeGestureMoved; 5188 const evCache = []; 5189 const gesture = { 5190 originX: 0, 5191 originY: 0, 5192 slideEl: undefined, 5193 slideWidth: undefined, 5194 slideHeight: undefined, 5195 imageEl: undefined, 5196 imageWrapEl: undefined, 5197 maxRatio: 3 5198 }; 5199 const image = { 5200 isTouched: undefined, 5201 isMoved: undefined, 5202 currentX: undefined, 5203 currentY: undefined, 5204 minX: undefined, 5205 minY: undefined, 5206 maxX: undefined, 5207 maxY: undefined, 5208 width: undefined, 5209 height: undefined, 5210 startX: undefined, 5211 startY: undefined, 5212 touchesStart: {}, 5213 touchesCurrent: {} 5214 }; 5215 const velocity = { 5216 x: undefined, 5217 y: undefined, 5218 prevPositionX: undefined, 5219 prevPositionY: undefined, 5220 prevTime: undefined 5221 }; 5222 let scale = 1; 5223 Object.defineProperty(swiper.zoom, 'scale', { 5224 get() { 5225 return scale; 5226 }, 5227 set(value) { 5228 if (scale !== value) { 5229 const imageEl = gesture.imageEl; 5230 const slideEl = gesture.slideEl; 5231 emit('zoomChange', value, imageEl, slideEl); 5232 } 5233 scale = value; 5234 } 5235 }); 5236 function getDistanceBetweenTouches() { 5237 if (evCache.length < 2) return 1; 5238 const x1 = evCache[0].pageX; 5239 const y1 = evCache[0].pageY; 5240 const x2 = evCache[1].pageX; 5241 const y2 = evCache[1].pageY; 5242 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 5243 return distance; 5244 } 5245 function getMaxRatio() { 5246 const params = swiper.params.zoom; 5247 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 5248 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 5249 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 5250 return Math.min(imageMaxRatio, maxRatio); 5251 } 5252 return maxRatio; 5253 } 5254 function getScaleOrigin() { 5255 if (evCache.length < 2) return { 5256 x: null, 5257 y: null 5258 }; 5259 const box = gesture.imageEl.getBoundingClientRect(); 5260 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]; 5261 } 5262 function getSlideSelector() { 5263 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 5264 } 5265 function eventWithinSlide(e) { 5266 const slideSelector = getSlideSelector(); 5267 if (e.target.matches(slideSelector)) return true; 5268 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 5269 return false; 5270 } 5271 function eventWithinZoomContainer(e) { 5272 const selector = `.${swiper.params.zoom.containerClass}`; 5273 if (e.target.matches(selector)) return true; 5274 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 5275 return false; 5276 } 5277 5278 // Events 5279 function onGestureStart(e) { 5280 if (e.pointerType === 'mouse') { 5281 evCache.splice(0, evCache.length); 5282 } 5283 if (!eventWithinSlide(e)) return; 5284 const params = swiper.params.zoom; 5285 fakeGestureTouched = false; 5286 fakeGestureMoved = false; 5287 evCache.push(e); 5288 if (evCache.length < 2) { 5289 return; 5290 } 5291 fakeGestureTouched = true; 5292 gesture.scaleStart = getDistanceBetweenTouches(); 5293 if (!gesture.slideEl) { 5294 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5295 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 5296 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5297 if (imageEl) { 5298 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5299 } 5300 gesture.imageEl = imageEl; 5301 if (imageEl) { 5302 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5303 } else { 5304 gesture.imageWrapEl = undefined; 5305 } 5306 if (!gesture.imageWrapEl) { 5307 gesture.imageEl = undefined; 5308 return; 5309 } 5310 gesture.maxRatio = getMaxRatio(); 5311 } 5312 if (gesture.imageEl) { 5313 const [originX, originY] = getScaleOrigin(); 5314 gesture.originX = originX; 5315 gesture.originY = originY; 5316 gesture.imageEl.style.transitionDuration = '0ms'; 5317 } 5318 isScaling = true; 5319 } 5320 function onGestureChange(e) { 5321 if (!eventWithinSlide(e)) return; 5322 const params = swiper.params.zoom; 5323 const zoom = swiper.zoom; 5324 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5325 if (pointerIndex >= 0) evCache[pointerIndex] = e; 5326 if (evCache.length < 2) { 5327 return; 5328 } 5329 fakeGestureMoved = true; 5330 gesture.scaleMove = getDistanceBetweenTouches(); 5331 if (!gesture.imageEl) { 5332 return; 5333 } 5334 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 5335 if (zoom.scale > gesture.maxRatio) { 5336 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 5337 } 5338 if (zoom.scale < params.minRatio) { 5339 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 5340 } 5341 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5342 } 5343 function onGestureEnd(e) { 5344 if (!eventWithinSlide(e)) return; 5345 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 5346 const params = swiper.params.zoom; 5347 const zoom = swiper.zoom; 5348 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5349 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 5350 if (!fakeGestureTouched || !fakeGestureMoved) { 5351 return; 5352 } 5353 fakeGestureTouched = false; 5354 fakeGestureMoved = false; 5355 if (!gesture.imageEl) return; 5356 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 5357 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 5358 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5359 currentScale = zoom.scale; 5360 isScaling = false; 5361 if (zoom.scale > 1 && gesture.slideEl) { 5362 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5363 } else if (zoom.scale <= 1 && gesture.slideEl) { 5364 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5365 } 5366 if (zoom.scale === 1) { 5367 gesture.originX = 0; 5368 gesture.originY = 0; 5369 gesture.slideEl = undefined; 5370 } 5371 } 5372 let allowTouchMoveTimeout; 5373 function allowTouchMove() { 5374 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 5375 } 5376 function preventTouchMove() { 5377 clearTimeout(allowTouchMoveTimeout); 5378 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 5379 allowTouchMoveTimeout = setTimeout(() => { 5380 if (swiper.destroyed) return; 5381 allowTouchMove(); 5382 }); 5383 } 5384 function onTouchStart(e) { 5385 const device = swiper.device; 5386 if (!gesture.imageEl) return; 5387 if (image.isTouched) return; 5388 if (device.android && e.cancelable) e.preventDefault(); 5389 image.isTouched = true; 5390 const event = evCache.length > 0 ? evCache[0] : e; 5391 image.touchesStart.x = event.pageX; 5392 image.touchesStart.y = event.pageY; 5393 } 5394 function onTouchMove(e) { 5395 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 5396 return; 5397 } 5398 const zoom = swiper.zoom; 5399 if (!gesture.imageEl) { 5400 return; 5401 } 5402 if (!image.isTouched || !gesture.slideEl) { 5403 return; 5404 } 5405 if (!image.isMoved) { 5406 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5407 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5408 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0; 5409 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0; 5410 gesture.slideWidth = gesture.slideEl.offsetWidth; 5411 gesture.slideHeight = gesture.slideEl.offsetHeight; 5412 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5413 } 5414 // Define if we need image drag 5415 const scaledWidth = image.width * zoom.scale; 5416 const scaledHeight = image.height * zoom.scale; 5417 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5418 image.maxX = -image.minX; 5419 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5420 image.maxY = -image.minY; 5421 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 5422 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 5423 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 5424 if (touchesDiff > 5) { 5425 swiper.allowClick = false; 5426 } 5427 if (!image.isMoved && !isScaling) { 5428 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)) { 5429 image.isTouched = false; 5430 allowTouchMove(); 5431 return; 5432 } 5433 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)) { 5434 image.isTouched = false; 5435 allowTouchMove(); 5436 return; 5437 } 5438 } 5439 if (e.cancelable) { 5440 e.preventDefault(); 5441 } 5442 e.stopPropagation(); 5443 preventTouchMove(); 5444 image.isMoved = true; 5445 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 5446 const { 5447 originX, 5448 originY 5449 } = gesture; 5450 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 5451 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 5452 if (image.currentX < image.minX) { 5453 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 5454 } 5455 if (image.currentX > image.maxX) { 5456 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 5457 } 5458 if (image.currentY < image.minY) { 5459 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 5460 } 5461 if (image.currentY > image.maxY) { 5462 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 5463 } 5464 5465 // Velocity 5466 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 5467 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 5468 if (!velocity.prevTime) velocity.prevTime = Date.now(); 5469 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 5470 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 5471 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 5472 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 5473 velocity.prevPositionX = image.touchesCurrent.x; 5474 velocity.prevPositionY = image.touchesCurrent.y; 5475 velocity.prevTime = Date.now(); 5476 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5477 } 5478 function onTouchEnd() { 5479 const zoom = swiper.zoom; 5480 if (!gesture.imageEl) return; 5481 if (!image.isTouched || !image.isMoved) { 5482 image.isTouched = false; 5483 image.isMoved = false; 5484 return; 5485 } 5486 image.isTouched = false; 5487 image.isMoved = false; 5488 let momentumDurationX = 300; 5489 let momentumDurationY = 300; 5490 const momentumDistanceX = velocity.x * momentumDurationX; 5491 const newPositionX = image.currentX + momentumDistanceX; 5492 const momentumDistanceY = velocity.y * momentumDurationY; 5493 const newPositionY = image.currentY + momentumDistanceY; 5494 5495 // Fix duration 5496 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 5497 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 5498 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 5499 image.currentX = newPositionX; 5500 image.currentY = newPositionY; 5501 // Define if we need image drag 5502 const scaledWidth = image.width * zoom.scale; 5503 const scaledHeight = image.height * zoom.scale; 5504 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5505 image.maxX = -image.minX; 5506 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5507 image.maxY = -image.minY; 5508 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 5509 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 5510 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 5511 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5512 } 5513 function onTransitionEnd() { 5514 const zoom = swiper.zoom; 5515 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 5516 if (gesture.imageEl) { 5517 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5518 } 5519 if (gesture.imageWrapEl) { 5520 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5521 } 5522 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 5523 zoom.scale = 1; 5524 currentScale = 1; 5525 gesture.slideEl = undefined; 5526 gesture.imageEl = undefined; 5527 gesture.imageWrapEl = undefined; 5528 gesture.originX = 0; 5529 gesture.originY = 0; 5530 } 5531 } 5532 function zoomIn(e) { 5533 const zoom = swiper.zoom; 5534 const params = swiper.params.zoom; 5535 if (!gesture.slideEl) { 5536 if (e && e.target) { 5537 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5538 } 5539 if (!gesture.slideEl) { 5540 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5541 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5542 } else { 5543 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5544 } 5545 } 5546 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5547 if (imageEl) { 5548 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5549 } 5550 gesture.imageEl = imageEl; 5551 if (imageEl) { 5552 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5553 } else { 5554 gesture.imageWrapEl = undefined; 5555 } 5556 } 5557 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5558 if (swiper.params.cssMode) { 5559 swiper.wrapperEl.style.overflow = 'hidden'; 5560 swiper.wrapperEl.style.touchAction = 'none'; 5561 } 5562 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5563 let touchX; 5564 let touchY; 5565 let offsetX; 5566 let offsetY; 5567 let diffX; 5568 let diffY; 5569 let translateX; 5570 let translateY; 5571 let imageWidth; 5572 let imageHeight; 5573 let scaledWidth; 5574 let scaledHeight; 5575 let translateMinX; 5576 let translateMinY; 5577 let translateMaxX; 5578 let translateMaxY; 5579 let slideWidth; 5580 let slideHeight; 5581 if (typeof image.touchesStart.x === 'undefined' && e) { 5582 touchX = e.pageX; 5583 touchY = e.pageY; 5584 } else { 5585 touchX = image.touchesStart.x; 5586 touchY = image.touchesStart.y; 5587 } 5588 const forceZoomRatio = typeof e === 'number' ? e : null; 5589 if (currentScale === 1 && forceZoomRatio) { 5590 touchX = undefined; 5591 touchY = undefined; 5592 image.touchesStart.x = undefined; 5593 image.touchesStart.y = undefined; 5594 } 5595 const maxRatio = getMaxRatio(); 5596 zoom.scale = forceZoomRatio || maxRatio; 5597 currentScale = forceZoomRatio || maxRatio; 5598 if (e && !(currentScale === 1 && forceZoomRatio)) { 5599 slideWidth = gesture.slideEl.offsetWidth; 5600 slideHeight = gesture.slideEl.offsetHeight; 5601 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX; 5602 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY; 5603 diffX = offsetX + slideWidth / 2 - touchX; 5604 diffY = offsetY + slideHeight / 2 - touchY; 5605 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5606 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5607 scaledWidth = imageWidth * zoom.scale; 5608 scaledHeight = imageHeight * zoom.scale; 5609 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5610 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5611 translateMaxX = -translateMinX; 5612 translateMaxY = -translateMinY; 5613 translateX = diffX * zoom.scale; 5614 translateY = diffY * zoom.scale; 5615 if (translateX < translateMinX) { 5616 translateX = translateMinX; 5617 } 5618 if (translateX > translateMaxX) { 5619 translateX = translateMaxX; 5620 } 5621 if (translateY < translateMinY) { 5622 translateY = translateMinY; 5623 } 5624 if (translateY > translateMaxY) { 5625 translateY = translateMaxY; 5626 } 5627 } else { 5628 translateX = 0; 5629 translateY = 0; 5630 } 5631 if (forceZoomRatio && zoom.scale === 1) { 5632 gesture.originX = 0; 5633 gesture.originY = 0; 5634 } 5635 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5636 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 5637 gesture.imageEl.style.transitionDuration = '300ms'; 5638 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5639 } 5640 function zoomOut() { 5641 const zoom = swiper.zoom; 5642 const params = swiper.params.zoom; 5643 if (!gesture.slideEl) { 5644 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5645 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5646 } else { 5647 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5648 } 5649 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5650 if (imageEl) { 5651 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5652 } 5653 gesture.imageEl = imageEl; 5654 if (imageEl) { 5655 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5656 } else { 5657 gesture.imageWrapEl = undefined; 5658 } 5659 } 5660 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5661 if (swiper.params.cssMode) { 5662 swiper.wrapperEl.style.overflow = ''; 5663 swiper.wrapperEl.style.touchAction = ''; 5664 } 5665 zoom.scale = 1; 5666 currentScale = 1; 5667 image.touchesStart.x = undefined; 5668 image.touchesStart.y = undefined; 5669 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5670 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5671 gesture.imageEl.style.transitionDuration = '300ms'; 5672 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5673 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5674 gesture.slideEl = undefined; 5675 gesture.originX = 0; 5676 gesture.originY = 0; 5677 } 5678 5679 // Toggle Zoom 5680 function zoomToggle(e) { 5681 const zoom = swiper.zoom; 5682 if (zoom.scale && zoom.scale !== 1) { 5683 // Zoom Out 5684 zoomOut(); 5685 } else { 5686 // Zoom In 5687 zoomIn(e); 5688 } 5689 } 5690 function getListeners() { 5691 const passiveListener = swiper.params.passiveListeners ? { 5692 passive: true, 5693 capture: false 5694 } : false; 5695 const activeListenerWithCapture = swiper.params.passiveListeners ? { 5696 passive: false, 5697 capture: true 5698 } : true; 5699 return { 5700 passiveListener, 5701 activeListenerWithCapture 5702 }; 5703 } 5704 5705 // Attach/Detach Events 5706 function enable() { 5707 const zoom = swiper.zoom; 5708 if (zoom.enabled) return; 5709 zoom.enabled = true; 5710 const { 5711 passiveListener, 5712 activeListenerWithCapture 5713 } = getListeners(); 5714 5715 // Scale image 5716 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 5717 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 5718 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 5719 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 5720 }); 5721 5722 // Move image 5723 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 5724 } 5725 function disable() { 5726 const zoom = swiper.zoom; 5727 if (!zoom.enabled) return; 5728 zoom.enabled = false; 5729 const { 5730 passiveListener, 5731 activeListenerWithCapture 5732 } = getListeners(); 5733 5734 // Scale image 5735 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 5736 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 5737 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 5738 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 5739 }); 5740 5741 // Move image 5742 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 5743 } 5744 on('init', () => { 5745 if (swiper.params.zoom.enabled) { 5746 enable(); 5747 } 5748 }); 5749 on('destroy', () => { 5750 disable(); 5751 }); 5752 on('touchStart', (_s, e) => { 5753 if (!swiper.zoom.enabled) return; 5754 onTouchStart(e); 5755 }); 5756 on('touchEnd', (_s, e) => { 5757 if (!swiper.zoom.enabled) return; 5758 onTouchEnd(); 5759 }); 5760 on('doubleTap', (_s, e) => { 5761 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 5762 zoomToggle(e); 5763 } 5764 }); 5765 on('transitionEnd', () => { 5766 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 5767 onTransitionEnd(); 5768 } 5769 }); 5770 on('slideChange', () => { 5771 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 5772 onTransitionEnd(); 5773 } 5774 }); 5775 Object.assign(swiper.zoom, { 5776 enable, 5777 disable, 5778 in: zoomIn, 5779 out: zoomOut, 5780 toggle: zoomToggle 5781 }); 5782} 5783 5784 5785 5786 5787/***/ }), 5788
vendor: 766 bytes, lines 5789-5811
5789/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 5790/*!************************************************************!*\ 5791 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 5792 \************************************************************/ 5793/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5794 5795__webpack_require__.r(__webpack_exports__); 5796/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5797/* harmony export */ c: () => (/* binding */ classesToSelector) 5798/* harmony export */ }); 5799function classesToSelector(classes) { 5800 if (classes === void 0) { 5801 classes = ''; 5802 } 5803 return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line 5804 .replace(/ /g, '.')}`; 5805} 5806 5807 5808 5809 5810/***/ }), 5811
vendor: 1,405 bytes, lines 5812-5847
5812/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 5813/*!**********************************************************************!*\ 5814 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 5815 \**********************************************************************/ 5816/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5817 5818__webpack_require__.r(__webpack_exports__); 5819/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5820/* harmony export */ c: () => (/* binding */ createElementIfNotDefined) 5821/* harmony export */ }); 5822/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5823 5824 5825function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 5826 if (swiper.params.createElements) { 5827 Object.keys(checkProps).forEach(key => { 5828 if (!params[key] && params.auto === true) { 5829 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 5830 if (!element) { 5831 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 5832 element.className = checkProps[key]; 5833 swiper.el.append(element); 5834 } 5835 params[key] = element; 5836 originalParams[key] = element; 5837 } 5838 }); 5839 } 5840 return params; 5841} 5842 5843 5844 5845 5846/***/ }), 5847
vendor: 1,201 bytes, lines 5848-5876
5848/***/ "./node_modules/swiper/shared/create-shadow.mjs": 5849/*!******************************************************!*\ 5850 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 5851 \******************************************************/ 5852/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5853 5854__webpack_require__.r(__webpack_exports__); 5855/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5856/* harmony export */ c: () => (/* binding */ createShadow) 5857/* harmony export */ }); 5858/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5859 5860 5861function createShadow(suffix, slideEl, side) { 5862 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 5863 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 5864 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 5865 if (!shadowEl) { 5866 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 5867 shadowContainer.append(shadowEl); 5868 } 5869 return shadowEl; 5870} 5871 5872 5873 5874 5875/***/ }), 5876
vendor: 2,324 bytes, lines 5877-5948
5877/***/ "./node_modules/swiper/shared/effect-init.mjs": 5878/*!****************************************************!*\ 5879 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 5880 \****************************************************/ 5881/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5882 5883__webpack_require__.r(__webpack_exports__); 5884/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5885/* harmony export */ e: () => (/* binding */ effectInit) 5886/* harmony export */ }); 5887function effectInit(params) { 5888 const { 5889 effect, 5890 swiper, 5891 on, 5892 setTranslate, 5893 setTransition, 5894 overwriteParams, 5895 perspective, 5896 recreateShadows, 5897 getEffectParams 5898 } = params; 5899 on('beforeInit', () => { 5900 if (swiper.params.effect !== effect) return; 5901 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 5902 if (perspective && perspective()) { 5903 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 5904 } 5905 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 5906 Object.assign(swiper.params, overwriteParamsResult); 5907 Object.assign(swiper.originalParams, overwriteParamsResult); 5908 }); 5909 on('setTranslate', () => { 5910 if (swiper.params.effect !== effect) return; 5911 setTranslate(); 5912 }); 5913 on('setTransition', (_s, duration) => { 5914 if (swiper.params.effect !== effect) return; 5915 setTransition(duration); 5916 }); 5917 on('transitionEnd', () => { 5918 if (swiper.params.effect !== effect) return; 5919 if (recreateShadows) { 5920 if (!getEffectParams || !getEffectParams().slideShadows) return; 5921 // remove shadows 5922 swiper.slides.forEach(slideEl => { 5923 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 5924 }); 5925 // create new one 5926 recreateShadows(); 5927 } 5928 }); 5929 let requireUpdateOnVirtual; 5930 on('virtualUpdate', () => { 5931 if (swiper.params.effect !== effect) return; 5932 if (!swiper.slides.length) { 5933 requireUpdateOnVirtual = true; 5934 } 5935 requestAnimationFrame(() => { 5936 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 5937 setTranslate(); 5938 requireUpdateOnVirtual = false; 5939 } 5940 }); 5941 }); 5942} 5943 5944 5945 5946 5947/***/ }), 5948
vendor: 994 bytes, lines 5949-5975
5949/***/ "./node_modules/swiper/shared/effect-target.mjs": 5950/*!******************************************************!*\ 5951 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 5952 \******************************************************/ 5953/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5954 5955__webpack_require__.r(__webpack_exports__); 5956/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5957/* harmony export */ e: () => (/* binding */ effectTarget) 5958/* harmony export */ }); 5959/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5960 5961 5962function effectTarget(effectParams, slideEl) { 5963 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 5964 if (transformEl !== slideEl) { 5965 transformEl.style.backfaceVisibility = 'hidden'; 5966 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 5967 } 5968 return transformEl; 5969} 5970 5971 5972 5973 5974/***/ }), 5975
vendor: 2,102 bytes, lines 5976-6038
5976/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 5977/*!**********************************************************************!*\ 5978 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 5979 \**********************************************************************/ 5980/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5981 5982__webpack_require__.r(__webpack_exports__); 5983/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5984/* harmony export */ e: () => (/* binding */ effectVirtualTransitionEnd) 5985/* harmony export */ }); 5986/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5987 5988 5989function effectVirtualTransitionEnd(_ref) { 5990 let { 5991 swiper, 5992 duration, 5993 transformElements, 5994 allSlides 5995 } = _ref; 5996 const { 5997 activeIndex 5998 } = swiper; 5999 const getSlide = el => { 6000 if (!el.parentElement) { 6001 // assume shadow root 6002 const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; 6003 return slide; 6004 } 6005 return el.parentElement; 6006 }; 6007 if (swiper.params.virtualTranslate && duration !== 0) { 6008 let eventTriggered = false; 6009 let transitionEndTarget; 6010 if (allSlides) { 6011 transitionEndTarget = transformElements; 6012 } else { 6013 transitionEndTarget = transformElements.filter(transformEl => { 6014 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 6015 return swiper.getSlideIndex(el) === activeIndex; 6016 }); 6017 } 6018 transitionEndTarget.forEach(el => { 6019 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => { 6020 if (eventTriggered) return; 6021 if (!swiper || swiper.destroyed) return; 6022 eventTriggered = true; 6023 swiper.animating = false; 6024 const evt = new window.CustomEvent('transitionend', { 6025 bubbles: true, 6026 cancelable: true 6027 }); 6028 swiper.wrapperEl.dispatchEvent(evt); 6029 }); 6030 }); 6031 } 6032} 6033 6034 6035 6036 6037/***/ }), 6038
vendor: 3,320 bytes, lines 6039-6198
6039/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 6040/*!*******************************************************!*\ 6041 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 6042 \*******************************************************/ 6043/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6044 6045__webpack_require__.r(__webpack_exports__); 6046/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6047/* harmony export */ a: () => (/* binding */ getWindow), 6048/* harmony export */ g: () => (/* binding */ getDocument) 6049/* harmony export */ }); 6050/** 6051 * SSR Window 4.0.2 6052 * Better handling for window object in SSR environment 6053 * https://github.com/nolimits4web/ssr-window 6054 * 6055 * Copyright 2021, Vladimir Kharlampidi 6056 * 6057 * Licensed under MIT 6058 * 6059 * Released on: December 13, 2021 6060 */ 6061/* eslint-disable no-param-reassign */ 6062function isObject(obj) { 6063 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 6064} 6065function extend(target, src) { 6066 if (target === void 0) { 6067 target = {}; 6068 } 6069 if (src === void 0) { 6070 src = {}; 6071 } 6072 Object.keys(src).forEach(key => { 6073 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 6074 extend(target[key], src[key]); 6075 } 6076 }); 6077} 6078const ssrDocument = { 6079 body: {}, 6080 addEventListener() {}, 6081 removeEventListener() {}, 6082 activeElement: { 6083 blur() {}, 6084 nodeName: '' 6085 }, 6086 querySelector() { 6087 return null; 6088 }, 6089 querySelectorAll() { 6090 return []; 6091 }, 6092 getElementById() { 6093 return null; 6094 }, 6095 createEvent() { 6096 return { 6097 initEvent() {} 6098 }; 6099 }, 6100 createElement() { 6101 return { 6102 children: [], 6103 childNodes: [], 6104 style: {}, 6105 setAttribute() {}, 6106 getElementsByTagName() { 6107 return []; 6108 } 6109 }; 6110 }, 6111 createElementNS() { 6112 return {}; 6113 }, 6114 importNode() { 6115 return null; 6116 }, 6117 location: { 6118 hash: '', 6119 host: '', 6120 hostname: '', 6121 href: '', 6122 origin: '', 6123 pathname: '', 6124 protocol: '', 6125 search: '' 6126 } 6127}; 6128function getDocument() { 6129 const doc = typeof document !== 'undefined' ? document : {}; 6130 extend(doc, ssrDocument); 6131 return doc; 6132} 6133const ssrWindow = { 6134 document: ssrDocument, 6135 navigator: { 6136 userAgent: '' 6137 }, 6138 location: { 6139 hash: '', 6140 host: '', 6141 hostname: '', 6142 href: '', 6143 origin: '', 6144 pathname: '', 6145 protocol: '', 6146 search: '' 6147 }, 6148 history: { 6149 replaceState() {}, 6150 pushState() {}, 6151 go() {}, 6152 back() {} 6153 }, 6154 CustomEvent: function CustomEvent() { 6155 return this; 6156 }, 6157 addEventListener() {}, 6158 removeEventListener() {}, 6159 getComputedStyle() { 6160 return { 6161 getPropertyValue() { 6162 return ''; 6163 } 6164 }; 6165 }, 6166 Image() {}, 6167 Date() {}, 6168 screen: {}, 6169 setTimeout() {}, 6170 clearTimeout() {}, 6171 matchMedia() { 6172 return {}; 6173 }, 6174 requestAnimationFrame(callback) { 6175 if (typeof setTimeout === 'undefined') { 6176 callback(); 6177 return null; 6178 } 6179 return setTimeout(callback, 0); 6180 }, 6181 cancelAnimationFrame(id) { 6182 if (typeof setTimeout === 'undefined') { 6183 return; 6184 } 6185 clearTimeout(id); 6186 } 6187}; 6188function getWindow() { 6189 const win = typeof window !== 'undefined' ? window : {}; 6190 extend(win, ssrWindow); 6191 return win; 6192} 6193 6194 6195 6196 6197/***/ }), 6198
vendor: 132,769 bytes, lines 6199-10127
6199/***/ "./node_modules/swiper/shared/swiper-core.mjs": 6200/*!****************************************************!*\ 6201 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 6202 \****************************************************/ 6203/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6204 6205__webpack_require__.r(__webpack_exports__); 6206/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6207/* harmony export */ S: () => (/* binding */ Swiper), 6208/* harmony export */ d: () => (/* binding */ defaults) 6209/* harmony export */ }); 6210/* 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"); 6211/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6212 6213 6214 6215let support; 6216function calcSupport() { 6217 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6218 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 6219 return { 6220 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 6221 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 6222 }; 6223} 6224function getSupport() { 6225 if (!support) { 6226 support = calcSupport(); 6227 } 6228 return support; 6229} 6230 6231let deviceCached; 6232function calcDevice(_temp) { 6233 let { 6234 userAgent 6235 } = _temp === void 0 ? {} : _temp; 6236 const support = getSupport(); 6237 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6238 const platform = window.navigator.platform; 6239 const ua = userAgent || window.navigator.userAgent; 6240 const device = { 6241 ios: false, 6242 android: false 6243 }; 6244 const screenWidth = window.screen.width; 6245 const screenHeight = window.screen.height; 6246 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 6247 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 6248 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 6249 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 6250 const windows = platform === 'Win32'; 6251 let macos = platform === 'MacIntel'; 6252 6253 // iPadOs 13 fix 6254 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 6255 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 6256 ipad = ua.match(/(Version)\/([\d.]+)/); 6257 if (!ipad) ipad = [0, 1, '13_0_0']; 6258 macos = false; 6259 } 6260 6261 // Android 6262 if (android && !windows) { 6263 device.os = 'android'; 6264 device.android = true; 6265 } 6266 if (ipad || iphone || ipod) { 6267 device.os = 'ios'; 6268 device.ios = true; 6269 } 6270 6271 // Export object 6272 return device; 6273} 6274function getDevice(overrides) { 6275 if (overrides === void 0) { 6276 overrides = {}; 6277 } 6278 if (!deviceCached) { 6279 deviceCached = calcDevice(overrides); 6280 } 6281 return deviceCached; 6282} 6283 6284let browser; 6285function calcBrowser() { 6286 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6287 const device = getDevice(); 6288 let needPerspectiveFix = false; 6289 function isSafari() { 6290 const ua = window.navigator.userAgent.toLowerCase(); 6291 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 6292 } 6293 if (isSafari()) { 6294 const ua = String(window.navigator.userAgent); 6295 if (ua.includes('Version/')) { 6296 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 6297 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 6298 } 6299 } 6300 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 6301 const isSafariBrowser = isSafari(); 6302 const need3dFix = isSafariBrowser || isWebView && device.ios; 6303 return { 6304 isSafari: needPerspectiveFix || isSafariBrowser, 6305 needPerspectiveFix, 6306 need3dFix, 6307 isWebView 6308 }; 6309} 6310function getBrowser() { 6311 if (!browser) { 6312 browser = calcBrowser(); 6313 } 6314 return browser; 6315} 6316 6317function Resize(_ref) { 6318 let { 6319 swiper, 6320 on, 6321 emit 6322 } = _ref; 6323 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6324 let observer = null; 6325 let animationFrame = null; 6326 const resizeHandler = () => { 6327 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6328 emit('beforeResize'); 6329 emit('resize'); 6330 }; 6331 const createObserver = () => { 6332 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6333 observer = new ResizeObserver(entries => { 6334 animationFrame = window.requestAnimationFrame(() => { 6335 const { 6336 width, 6337 height 6338 } = swiper; 6339 let newWidth = width; 6340 let newHeight = height; 6341 entries.forEach(_ref2 => { 6342 let { 6343 contentBoxSize, 6344 contentRect, 6345 target 6346 } = _ref2; 6347 if (target && target !== swiper.el) return; 6348 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 6349 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 6350 }); 6351 if (newWidth !== width || newHeight !== height) { 6352 resizeHandler(); 6353 } 6354 }); 6355 }); 6356 observer.observe(swiper.el); 6357 }; 6358 const removeObserver = () => { 6359 if (animationFrame) { 6360 window.cancelAnimationFrame(animationFrame); 6361 } 6362 if (observer && observer.unobserve && swiper.el) { 6363 observer.unobserve(swiper.el); 6364 observer = null; 6365 } 6366 }; 6367 const orientationChangeHandler = () => { 6368 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6369 emit('orientationchange'); 6370 }; 6371 on('init', () => { 6372 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 6373 createObserver(); 6374 return; 6375 } 6376 window.addEventListener('resize', resizeHandler); 6377 window.addEventListener('orientationchange', orientationChangeHandler); 6378 }); 6379 on('destroy', () => { 6380 removeObserver(); 6381 window.removeEventListener('resize', resizeHandler); 6382 window.removeEventListener('orientationchange', orientationChangeHandler); 6383 }); 6384} 6385 6386function Observer(_ref) { 6387 let { 6388 swiper, 6389 extendParams, 6390 on, 6391 emit 6392 } = _ref; 6393 const observers = []; 6394 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6395 const attach = function (target, options) { 6396 if (options === void 0) { 6397 options = {}; 6398 } 6399 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 6400 const observer = new ObserverFunc(mutations => { 6401 // The observerUpdate event should only be triggered 6402 // once despite the number of mutations. Additional 6403 // triggers are redundant and are very costly 6404 if (swiper.__preventObserver__) return; 6405 if (mutations.length === 1) { 6406 emit('observerUpdate', mutations[0]); 6407 return; 6408 } 6409 const observerUpdate = function observerUpdate() { 6410 emit('observerUpdate', mutations[0]); 6411 }; 6412 if (window.requestAnimationFrame) { 6413 window.requestAnimationFrame(observerUpdate); 6414 } else { 6415 window.setTimeout(observerUpdate, 0); 6416 } 6417 }); 6418 observer.observe(target, { 6419 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 6420 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 6421 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 6422 }); 6423 observers.push(observer); 6424 }; 6425 const init = () => { 6426 if (!swiper.params.observer) return; 6427 if (swiper.params.observeParents) { 6428 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl); 6429 for (let i = 0; i < containerParents.length; i += 1) { 6430 attach(containerParents[i]); 6431 } 6432 } 6433 // Observe container 6434 attach(swiper.hostEl, { 6435 childList: swiper.params.observeSlideChildren 6436 }); 6437 6438 // Observe wrapper 6439 attach(swiper.wrapperEl, { 6440 attributes: false 6441 }); 6442 }; 6443 const destroy = () => { 6444 observers.forEach(observer => { 6445 observer.disconnect(); 6446 }); 6447 observers.splice(0, observers.length); 6448 }; 6449 extendParams({ 6450 observer: false, 6451 observeParents: false, 6452 observeSlideChildren: false 6453 }); 6454 on('init', init); 6455 on('destroy', destroy); 6456} 6457 6458/* eslint-disable no-underscore-dangle */ 6459 6460var eventsEmitter = { 6461 on(events, handler, priority) { 6462 const self = this; 6463 if (!self.eventsListeners || self.destroyed) return self; 6464 if (typeof handler !== 'function') return self; 6465 const method = priority ? 'unshift' : 'push'; 6466 events.split(' ').forEach(event => { 6467 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 6468 self.eventsListeners[event][method](handler); 6469 }); 6470 return self; 6471 }, 6472 once(events, handler, priority) { 6473 const self = this; 6474 if (!self.eventsListeners || self.destroyed) return self; 6475 if (typeof handler !== 'function') return self; 6476 function onceHandler() { 6477 self.off(events, onceHandler); 6478 if (onceHandler.__emitterProxy) { 6479 delete onceHandler.__emitterProxy; 6480 } 6481 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6482 args[_key] = arguments[_key]; 6483 } 6484 handler.apply(self, args); 6485 } 6486 onceHandler.__emitterProxy = handler; 6487 return self.on(events, onceHandler, priority); 6488 }, 6489 onAny(handler, priority) { 6490 const self = this; 6491 if (!self.eventsListeners || self.destroyed) return self; 6492 if (typeof handler !== 'function') return self; 6493 const method = priority ? 'unshift' : 'push'; 6494 if (self.eventsAnyListeners.indexOf(handler) < 0) { 6495 self.eventsAnyListeners[method](handler); 6496 } 6497 return self; 6498 }, 6499 offAny(handler) { 6500 const self = this; 6501 if (!self.eventsListeners || self.destroyed) return self; 6502 if (!self.eventsAnyListeners) return self; 6503 const index = self.eventsAnyListeners.indexOf(handler); 6504 if (index >= 0) { 6505 self.eventsAnyListeners.splice(index, 1); 6506 } 6507 return self; 6508 }, 6509 off(events, handler) { 6510 const self = this; 6511 if (!self.eventsListeners || self.destroyed) return self; 6512 if (!self.eventsListeners) return self; 6513 events.split(' ').forEach(event => { 6514 if (typeof handler === 'undefined') { 6515 self.eventsListeners[event] = []; 6516 } else if (self.eventsListeners[event]) { 6517 self.eventsListeners[event].forEach((eventHandler, index) => { 6518 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 6519 self.eventsListeners[event].splice(index, 1); 6520 } 6521 }); 6522 } 6523 }); 6524 return self; 6525 }, 6526 emit() { 6527 const self = this; 6528 if (!self.eventsListeners || self.destroyed) return self; 6529 if (!self.eventsListeners) return self; 6530 let events; 6531 let data; 6532 let context; 6533 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 6534 args[_key2] = arguments[_key2]; 6535 } 6536 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 6537 events = args[0]; 6538 data = args.slice(1, args.length); 6539 context = self; 6540 } else { 6541 events = args[0].events; 6542 data = args[0].data; 6543 context = args[0].context || self; 6544 } 6545 data.unshift(context); 6546 const eventsArray = Array.isArray(events) ? events : events.split(' '); 6547 eventsArray.forEach(event => { 6548 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 6549 self.eventsAnyListeners.forEach(eventHandler => { 6550 eventHandler.apply(context, [event, ...data]); 6551 }); 6552 } 6553 if (self.eventsListeners && self.eventsListeners[event]) { 6554 self.eventsListeners[event].forEach(eventHandler => { 6555 eventHandler.apply(context, data); 6556 }); 6557 } 6558 }); 6559 return self; 6560 } 6561}; 6562 6563function updateSize() { 6564 const swiper = this; 6565 let width; 6566 let height; 6567 const el = swiper.el; 6568 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 6569 width = swiper.params.width; 6570 } else { 6571 width = el.clientWidth; 6572 } 6573 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 6574 height = swiper.params.height; 6575 } else { 6576 height = el.clientHeight; 6577 } 6578 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 6579 return; 6580 } 6581 6582 // Subtract paddings 6583 width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-right') || 0, 10); 6584 height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-bottom') || 0, 10); 6585 if (Number.isNaN(width)) width = 0; 6586 if (Number.isNaN(height)) height = 0; 6587 Object.assign(swiper, { 6588 width, 6589 height, 6590 size: swiper.isHorizontal() ? width : height 6591 }); 6592} 6593 6594function updateSlides() { 6595 const swiper = this; 6596 function getDirectionPropertyValue(node, label) { 6597 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 6598 } 6599 const params = swiper.params; 6600 const { 6601 wrapperEl, 6602 slidesEl, 6603 size: swiperSize, 6604 rtlTranslate: rtl, 6605 wrongRTL 6606 } = swiper; 6607 const isVirtual = swiper.virtual && params.virtual.enabled; 6608 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 6609 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 6610 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 6611 let snapGrid = []; 6612 const slidesGrid = []; 6613 const slidesSizesGrid = []; 6614 let offsetBefore = params.slidesOffsetBefore; 6615 if (typeof offsetBefore === 'function') { 6616 offsetBefore = params.slidesOffsetBefore.call(swiper); 6617 } 6618 let offsetAfter = params.slidesOffsetAfter; 6619 if (typeof offsetAfter === 'function') { 6620 offsetAfter = params.slidesOffsetAfter.call(swiper); 6621 } 6622 const previousSnapGridLength = swiper.snapGrid.length; 6623 const previousSlidesGridLength = swiper.slidesGrid.length; 6624 let spaceBetween = params.spaceBetween; 6625 let slidePosition = -offsetBefore; 6626 let prevSlideSize = 0; 6627 let index = 0; 6628 if (typeof swiperSize === 'undefined') { 6629 return; 6630 } 6631 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6632 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 6633 } else if (typeof spaceBetween === 'string') { 6634 spaceBetween = parseFloat(spaceBetween); 6635 } 6636 swiper.virtualSize = -spaceBetween; 6637 6638 // reset margins 6639 slides.forEach(slideEl => { 6640 if (rtl) { 6641 slideEl.style.marginLeft = ''; 6642 } else { 6643 slideEl.style.marginRight = ''; 6644 } 6645 slideEl.style.marginBottom = ''; 6646 slideEl.style.marginTop = ''; 6647 }); 6648 6649 // reset cssMode offsets 6650 if (params.centeredSlides && params.cssMode) { 6651 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', ''); 6652 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', ''); 6653 } 6654 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 6655 if (gridEnabled) { 6656 swiper.grid.initSlides(slides); 6657 } else if (swiper.grid) { 6658 swiper.grid.unsetSlides(); 6659 } 6660 6661 // Calc slides 6662 let slideSize; 6663 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 6664 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 6665 }).length > 0; 6666 for (let i = 0; i < slidesLength; i += 1) { 6667 slideSize = 0; 6668 let slide; 6669 if (slides[i]) slide = slides[i]; 6670 if (gridEnabled) { 6671 swiper.grid.updateSlide(i, slide, slides); 6672 } 6673 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line 6674 6675 if (params.slidesPerView === 'auto') { 6676 if (shouldResetSlideSize) { 6677 slides[i].style[swiper.getDirectionLabel('width')] = ``; 6678 } 6679 const slideStyles = getComputedStyle(slide); 6680 const currentTransform = slide.style.transform; 6681 const currentWebKitTransform = slide.style.webkitTransform; 6682 if (currentTransform) { 6683 slide.style.transform = 'none'; 6684 } 6685 if (currentWebKitTransform) { 6686 slide.style.webkitTransform = 'none'; 6687 } 6688 if (params.roundLengths) { 6689 slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'height', true); 6690 } else { 6691 // eslint-disable-next-line 6692 const width = getDirectionPropertyValue(slideStyles, 'width'); 6693 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 6694 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 6695 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 6696 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 6697 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 6698 if (boxSizing && boxSizing === 'border-box') { 6699 slideSize = width + marginLeft + marginRight; 6700 } else { 6701 const { 6702 clientWidth, 6703 offsetWidth 6704 } = slide; 6705 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 6706 } 6707 } 6708 if (currentTransform) { 6709 slide.style.transform = currentTransform; 6710 } 6711 if (currentWebKitTransform) { 6712 slide.style.webkitTransform = currentWebKitTransform; 6713 } 6714 if (params.roundLengths) slideSize = Math.floor(slideSize); 6715 } else { 6716 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 6717 if (params.roundLengths) slideSize = Math.floor(slideSize); 6718 if (slides[i]) { 6719 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 6720 } 6721 } 6722 if (slides[i]) { 6723 slides[i].swiperSlideSize = slideSize; 6724 } 6725 slidesSizesGrid.push(slideSize); 6726 if (params.centeredSlides) { 6727 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 6728 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 6729 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 6730 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 6731 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 6732 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 6733 slidesGrid.push(slidePosition); 6734 } else { 6735 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 6736 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 6737 slidesGrid.push(slidePosition); 6738 slidePosition = slidePosition + slideSize + spaceBetween; 6739 } 6740 swiper.virtualSize += slideSize + spaceBetween; 6741 prevSlideSize = slideSize; 6742 index += 1; 6743 } 6744 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 6745 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 6746 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 6747 } 6748 if (params.setWrapperSize) { 6749 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 6750 } 6751 if (gridEnabled) { 6752 swiper.grid.updateWrapperSize(slideSize, snapGrid); 6753 } 6754 6755 // Remove last grid elements depending on width 6756 if (!params.centeredSlides) { 6757 const newSlidesGrid = []; 6758 for (let i = 0; i < snapGrid.length; i += 1) { 6759 let slidesGridItem = snapGrid[i]; 6760 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 6761 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 6762 newSlidesGrid.push(slidesGridItem); 6763 } 6764 } 6765 snapGrid = newSlidesGrid; 6766 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 6767 snapGrid.push(swiper.virtualSize - swiperSize); 6768 } 6769 } 6770 if (isVirtual && params.loop) { 6771 const size = slidesSizesGrid[0] + spaceBetween; 6772 if (params.slidesPerGroup > 1) { 6773 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 6774 const groupSize = size * params.slidesPerGroup; 6775 for (let i = 0; i < groups; i += 1) { 6776 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 6777 } 6778 } 6779 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 6780 if (params.slidesPerGroup === 1) { 6781 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 6782 } 6783 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 6784 swiper.virtualSize += size; 6785 } 6786 } 6787 if (snapGrid.length === 0) snapGrid = [0]; 6788 if (spaceBetween !== 0) { 6789 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 6790 slides.filter((_, slideIndex) => { 6791 if (!params.cssMode || params.loop) return true; 6792 if (slideIndex === slides.length - 1) { 6793 return false; 6794 } 6795 return true; 6796 }).forEach(slideEl => { 6797 slideEl.style[key] = `${spaceBetween}px`; 6798 }); 6799 } 6800 if (params.centeredSlides && params.centeredSlidesBounds) { 6801 let allSlidesSize = 0; 6802 slidesSizesGrid.forEach(slideSizeValue => { 6803 allSlidesSize += slideSizeValue + (spaceBetween || 0); 6804 }); 6805 allSlidesSize -= spaceBetween; 6806 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 6807 snapGrid = snapGrid.map(snap => { 6808 if (snap <= 0) return -offsetBefore; 6809 if (snap > maxSnap) return maxSnap + offsetAfter; 6810 return snap; 6811 }); 6812 } 6813 if (params.centerInsufficientSlides) { 6814 let allSlidesSize = 0; 6815 slidesSizesGrid.forEach(slideSizeValue => { 6816 allSlidesSize += slideSizeValue + (spaceBetween || 0); 6817 }); 6818 allSlidesSize -= spaceBetween; 6819 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 6820 if (allSlidesSize + offsetSize < swiperSize) { 6821 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 6822 snapGrid.forEach((snap, snapIndex) => { 6823 snapGrid[snapIndex] = snap - allSlidesOffset; 6824 }); 6825 slidesGrid.forEach((snap, snapIndex) => { 6826 slidesGrid[snapIndex] = snap + allSlidesOffset; 6827 }); 6828 } 6829 } 6830 Object.assign(swiper, { 6831 slides, 6832 snapGrid, 6833 slidesGrid, 6834 slidesSizesGrid 6835 }); 6836 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 6837 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 6838 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 6839 const addToSnapGrid = -swiper.snapGrid[0]; 6840 const addToSlidesGrid = -swiper.slidesGrid[0]; 6841 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 6842 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 6843 } 6844 if (slidesLength !== previousSlidesLength) { 6845 swiper.emit('slidesLengthChange'); 6846 } 6847 if (snapGrid.length !== previousSnapGridLength) { 6848 if (swiper.params.watchOverflow) swiper.checkOverflow(); 6849 swiper.emit('snapGridLengthChange'); 6850 } 6851 if (slidesGrid.length !== previousSlidesGridLength) { 6852 swiper.emit('slidesGridLengthChange'); 6853 } 6854 if (params.watchSlidesProgress) { 6855 swiper.updateSlidesOffset(); 6856 } 6857 swiper.emit('slidesUpdated'); 6858 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 6859 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 6860 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 6861 if (slidesLength <= params.maxBackfaceHiddenSlides) { 6862 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 6863 } else if (hasClassBackfaceClassAdded) { 6864 swiper.el.classList.remove(backFaceHiddenClass); 6865 } 6866 } 6867} 6868 6869function updateAutoHeight(speed) { 6870 const swiper = this; 6871 const activeSlides = []; 6872 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 6873 let newHeight = 0; 6874 let i; 6875 if (typeof speed === 'number') { 6876 swiper.setTransition(speed); 6877 } else if (speed === true) { 6878 swiper.setTransition(swiper.params.speed); 6879 } 6880 const getSlideByIndex = index => { 6881 if (isVirtual) { 6882 return swiper.slides[swiper.getSlideIndexByData(index)]; 6883 } 6884 return swiper.slides[index]; 6885 }; 6886 // Find slides currently in view 6887 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 6888 if (swiper.params.centeredSlides) { 6889 (swiper.visibleSlides || []).forEach(slide => { 6890 activeSlides.push(slide); 6891 }); 6892 } else { 6893 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 6894 const index = swiper.activeIndex + i; 6895 if (index > swiper.slides.length && !isVirtual) break; 6896 activeSlides.push(getSlideByIndex(index)); 6897 } 6898 } 6899 } else { 6900 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 6901 } 6902 6903 // Find new height from highest slide in view 6904 for (i = 0; i < activeSlides.length; i += 1) { 6905 if (typeof activeSlides[i] !== 'undefined') { 6906 const height = activeSlides[i].offsetHeight; 6907 newHeight = height > newHeight ? height : newHeight; 6908 } 6909 } 6910 6911 // Update Height 6912 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 6913} 6914 6915function updateSlidesOffset() { 6916 const swiper = this; 6917 const slides = swiper.slides; 6918 // eslint-disable-next-line 6919 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 6920 for (let i = 0; i < slides.length; i += 1) { 6921 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 6922 } 6923} 6924 6925const toggleSlideClasses$1 = (slideEl, condition, className) => { 6926 if (condition && !slideEl.classList.contains(className)) { 6927 slideEl.classList.add(className); 6928 } else if (!condition && slideEl.classList.contains(className)) { 6929 slideEl.classList.remove(className); 6930 } 6931}; 6932function updateSlidesProgress(translate) { 6933 if (translate === void 0) { 6934 translate = this && this.translate || 0; 6935 } 6936 const swiper = this; 6937 const params = swiper.params; 6938 const { 6939 slides, 6940 rtlTranslate: rtl, 6941 snapGrid 6942 } = swiper; 6943 if (slides.length === 0) return; 6944 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 6945 let offsetCenter = -translate; 6946 if (rtl) offsetCenter = translate; 6947 swiper.visibleSlidesIndexes = []; 6948 swiper.visibleSlides = []; 6949 let spaceBetween = params.spaceBetween; 6950 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6951 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 6952 } else if (typeof spaceBetween === 'string') { 6953 spaceBetween = parseFloat(spaceBetween); 6954 } 6955 for (let i = 0; i < slides.length; i += 1) { 6956 const slide = slides[i]; 6957 let slideOffset = slide.swiperSlideOffset; 6958 if (params.cssMode && params.centeredSlides) { 6959 slideOffset -= slides[0].swiperSlideOffset; 6960 } 6961 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 6962 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 6963 const slideBefore = -(offsetCenter - slideOffset); 6964 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 6965 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 6966 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 6967 if (isVisible) { 6968 swiper.visibleSlides.push(slide); 6969 swiper.visibleSlidesIndexes.push(i); 6970 } 6971 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 6972 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 6973 slide.progress = rtl ? -slideProgress : slideProgress; 6974 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 6975 } 6976} 6977 6978function updateProgress(translate) { 6979 const swiper = this; 6980 if (typeof translate === 'undefined') { 6981 const multiplier = swiper.rtlTranslate ? -1 : 1; 6982 // eslint-disable-next-line 6983 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 6984 } 6985 const params = swiper.params; 6986 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 6987 let { 6988 progress, 6989 isBeginning, 6990 isEnd, 6991 progressLoop 6992 } = swiper; 6993 const wasBeginning = isBeginning; 6994 const wasEnd = isEnd; 6995 if (translatesDiff === 0) { 6996 progress = 0; 6997 isBeginning = true; 6998 isEnd = true; 6999 } else { 7000 progress = (translate - swiper.minTranslate()) / translatesDiff; 7001 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 7002 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 7003 isBeginning = isBeginningRounded || progress <= 0; 7004 isEnd = isEndRounded || progress >= 1; 7005 if (isBeginningRounded) progress = 0; 7006 if (isEndRounded) progress = 1; 7007 } 7008 if (params.loop) { 7009 const firstSlideIndex = swiper.getSlideIndexByData(0); 7010 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 7011 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 7012 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 7013 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 7014 const translateAbs = Math.abs(translate); 7015 if (translateAbs >= firstSlideTranslate) { 7016 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 7017 } else { 7018 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 7019 } 7020 if (progressLoop > 1) progressLoop -= 1; 7021 } 7022 Object.assign(swiper, { 7023 progress, 7024 progressLoop, 7025 isBeginning, 7026 isEnd 7027 }); 7028 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 7029 if (isBeginning && !wasBeginning) { 7030 swiper.emit('reachBeginning toEdge'); 7031 } 7032 if (isEnd && !wasEnd) { 7033 swiper.emit('reachEnd toEdge'); 7034 } 7035 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 7036 swiper.emit('fromEdge'); 7037 } 7038 swiper.emit('progress', progress); 7039} 7040 7041const toggleSlideClasses = (slideEl, condition, className) => { 7042 if (condition && !slideEl.classList.contains(className)) { 7043 slideEl.classList.add(className); 7044 } else if (!condition && slideEl.classList.contains(className)) { 7045 slideEl.classList.remove(className); 7046 } 7047}; 7048function updateSlidesClasses() { 7049 const swiper = this; 7050 const { 7051 slides, 7052 params, 7053 slidesEl, 7054 activeIndex 7055 } = swiper; 7056 const isVirtual = swiper.virtual && params.virtual.enabled; 7057 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7058 const getFilteredSlide = selector => { 7059 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 7060 }; 7061 let activeSlide; 7062 let prevSlide; 7063 let nextSlide; 7064 if (isVirtual) { 7065 if (params.loop) { 7066 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 7067 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 7068 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 7069 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 7070 } else { 7071 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 7072 } 7073 } else { 7074 if (gridEnabled) { 7075 activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; 7076 nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; 7077 prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; 7078 } else { 7079 activeSlide = slides[activeIndex]; 7080 } 7081 } 7082 if (activeSlide) { 7083 if (!gridEnabled) { 7084 // Next Slide 7085 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7086 if (params.loop && !nextSlide) { 7087 nextSlide = slides[0]; 7088 } 7089 7090 // Prev Slide 7091 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7092 if (params.loop && !prevSlide === 0) { 7093 prevSlide = slides[slides.length - 1]; 7094 } 7095 } 7096 } 7097 slides.forEach(slideEl => { 7098 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 7099 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 7100 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 7101 }); 7102 swiper.emitSlidesClasses(); 7103} 7104 7105const processLazyPreloader = (swiper, imageEl) => { 7106 if (!swiper || swiper.destroyed || !swiper.params) return; 7107 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 7108 const slideEl = imageEl.closest(slideSelector()); 7109 if (slideEl) { 7110 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7111 if (!lazyEl && swiper.isElement) { 7112 if (slideEl.shadowRoot) { 7113 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7114 } else { 7115 // init later 7116 requestAnimationFrame(() => { 7117 if (slideEl.shadowRoot) { 7118 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7119 if (lazyEl) lazyEl.remove(); 7120 } 7121 }); 7122 } 7123 } 7124 if (lazyEl) lazyEl.remove(); 7125 } 7126}; 7127const unlazy = (swiper, index) => { 7128 if (!swiper.slides[index]) return; 7129 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 7130 if (imageEl) imageEl.removeAttribute('loading'); 7131}; 7132const preload = swiper => { 7133 if (!swiper || swiper.destroyed || !swiper.params) return; 7134 let amount = swiper.params.lazyPreloadPrevNext; 7135 const len = swiper.slides.length; 7136 if (!len || !amount || amount < 0) return; 7137 amount = Math.min(amount, len); 7138 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 7139 const activeIndex = swiper.activeIndex; 7140 if (swiper.params.grid && swiper.params.grid.rows > 1) { 7141 const activeColumn = activeIndex; 7142 const preloadColumns = [activeColumn - amount]; 7143 preloadColumns.push(...Array.from({ 7144 length: amount 7145 }).map((_, i) => { 7146 return activeColumn + slidesPerView + i; 7147 })); 7148 swiper.slides.forEach((slideEl, i) => { 7149 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 7150 }); 7151 return; 7152 } 7153 const slideIndexLastInView = activeIndex + slidesPerView - 1; 7154 if (swiper.params.rewind || swiper.params.loop) { 7155 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 7156 const realIndex = (i % len + len) % len; 7157 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 7158 } 7159 } else { 7160 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 7161 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 7162 unlazy(swiper, i); 7163 } 7164 } 7165 } 7166}; 7167 7168function getActiveIndexByTranslate(swiper) { 7169 const { 7170 slidesGrid, 7171 params 7172 } = swiper; 7173 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7174 let activeIndex; 7175 for (let i = 0; i < slidesGrid.length; i += 1) { 7176 if (typeof slidesGrid[i + 1] !== 'undefined') { 7177 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 7178 activeIndex = i; 7179 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 7180 activeIndex = i + 1; 7181 } 7182 } else if (translate >= slidesGrid[i]) { 7183 activeIndex = i; 7184 } 7185 } 7186 // Normalize slideIndex 7187 if (params.normalizeSlideIndex) { 7188 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 7189 } 7190 return activeIndex; 7191} 7192function updateActiveIndex(newActiveIndex) { 7193 const swiper = this; 7194 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7195 const { 7196 snapGrid, 7197 params, 7198 activeIndex: previousIndex, 7199 realIndex: previousRealIndex, 7200 snapIndex: previousSnapIndex 7201 } = swiper; 7202 let activeIndex = newActiveIndex; 7203 let snapIndex; 7204 const getVirtualRealIndex = aIndex => { 7205 let realIndex = aIndex - swiper.virtual.slidesBefore; 7206 if (realIndex < 0) { 7207 realIndex = swiper.virtual.slides.length + realIndex; 7208 } 7209 if (realIndex >= swiper.virtual.slides.length) { 7210 realIndex -= swiper.virtual.slides.length; 7211 } 7212 return realIndex; 7213 }; 7214 if (typeof activeIndex === 'undefined') { 7215 activeIndex = getActiveIndexByTranslate(swiper); 7216 } 7217 if (snapGrid.indexOf(translate) >= 0) { 7218 snapIndex = snapGrid.indexOf(translate); 7219 } else { 7220 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 7221 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 7222 } 7223 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7224 if (activeIndex === previousIndex && !swiper.params.loop) { 7225 if (snapIndex !== previousSnapIndex) { 7226 swiper.snapIndex = snapIndex; 7227 swiper.emit('snapIndexChange'); 7228 } 7229 return; 7230 } 7231 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 7232 swiper.realIndex = getVirtualRealIndex(activeIndex); 7233 return; 7234 } 7235 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7236 7237 // Get real index 7238 let realIndex; 7239 if (swiper.virtual && params.virtual.enabled && params.loop) { 7240 realIndex = getVirtualRealIndex(activeIndex); 7241 } else if (gridEnabled) { 7242 const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; 7243 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 7244 if (Number.isNaN(activeSlideIndex)) { 7245 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 7246 } 7247 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 7248 } else if (swiper.slides[activeIndex]) { 7249 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 7250 if (slideIndex) { 7251 realIndex = parseInt(slideIndex, 10); 7252 } else { 7253 realIndex = activeIndex; 7254 } 7255 } else { 7256 realIndex = activeIndex; 7257 } 7258 Object.assign(swiper, { 7259 previousSnapIndex, 7260 snapIndex, 7261 previousRealIndex, 7262 realIndex, 7263 previousIndex, 7264 activeIndex 7265 }); 7266 if (swiper.initialized) { 7267 preload(swiper); 7268 } 7269 swiper.emit('activeIndexChange'); 7270 swiper.emit('snapIndexChange'); 7271 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 7272 if (previousRealIndex !== realIndex) { 7273 swiper.emit('realIndexChange'); 7274 } 7275 swiper.emit('slideChange'); 7276 } 7277} 7278 7279function updateClickedSlide(el, path) { 7280 const swiper = this; 7281 const params = swiper.params; 7282 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 7283 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 7284 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 7285 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 7286 slide = pathEl; 7287 } 7288 }); 7289 } 7290 let slideFound = false; 7291 let slideIndex; 7292 if (slide) { 7293 for (let i = 0; i < swiper.slides.length; i += 1) { 7294 if (swiper.slides[i] === slide) { 7295 slideFound = true; 7296 slideIndex = i; 7297 break; 7298 } 7299 } 7300 } 7301 if (slide && slideFound) { 7302 swiper.clickedSlide = slide; 7303 if (swiper.virtual && swiper.params.virtual.enabled) { 7304 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 7305 } else { 7306 swiper.clickedIndex = slideIndex; 7307 } 7308 } else { 7309 swiper.clickedSlide = undefined; 7310 swiper.clickedIndex = undefined; 7311 return; 7312 } 7313 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 7314 swiper.slideToClickedSlide(); 7315 } 7316} 7317 7318var update = { 7319 updateSize, 7320 updateSlides, 7321 updateAutoHeight, 7322 updateSlidesOffset, 7323 updateSlidesProgress, 7324 updateProgress, 7325 updateSlidesClasses, 7326 updateActiveIndex, 7327 updateClickedSlide 7328}; 7329 7330function getSwiperTranslate(axis) { 7331 if (axis === void 0) { 7332 axis = this.isHorizontal() ? 'x' : 'y'; 7333 } 7334 const swiper = this; 7335 const { 7336 params, 7337 rtlTranslate: rtl, 7338 translate, 7339 wrapperEl 7340 } = swiper; 7341 if (params.virtualTranslate) { 7342 return rtl ? -translate : translate; 7343 } 7344 if (params.cssMode) { 7345 return translate; 7346 } 7347 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis); 7348 currentTranslate += swiper.cssOverflowAdjustment(); 7349 if (rtl) currentTranslate = -currentTranslate; 7350 return currentTranslate || 0; 7351} 7352 7353function setTranslate(translate, byController) { 7354 const swiper = this; 7355 const { 7356 rtlTranslate: rtl, 7357 params, 7358 wrapperEl, 7359 progress 7360 } = swiper; 7361 let x = 0; 7362 let y = 0; 7363 const z = 0; 7364 if (swiper.isHorizontal()) { 7365 x = rtl ? -translate : translate; 7366 } else { 7367 y = translate; 7368 } 7369 if (params.roundLengths) { 7370 x = Math.floor(x); 7371 y = Math.floor(y); 7372 } 7373 swiper.previousTranslate = swiper.translate; 7374 swiper.translate = swiper.isHorizontal() ? x : y; 7375 if (params.cssMode) { 7376 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 7377 } else if (!params.virtualTranslate) { 7378 if (swiper.isHorizontal()) { 7379 x -= swiper.cssOverflowAdjustment(); 7380 } else { 7381 y -= swiper.cssOverflowAdjustment(); 7382 } 7383 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 7384 } 7385 7386 // Check if we need to update progress 7387 let newProgress; 7388 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7389 if (translatesDiff === 0) { 7390 newProgress = 0; 7391 } else { 7392 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 7393 } 7394 if (newProgress !== progress) { 7395 swiper.updateProgress(translate); 7396 } 7397 swiper.emit('setTranslate', swiper.translate, byController); 7398} 7399 7400function minTranslate() { 7401 return -this.snapGrid[0]; 7402} 7403 7404function maxTranslate() { 7405 return -this.snapGrid[this.snapGrid.length - 1]; 7406} 7407 7408function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 7409 if (translate === void 0) { 7410 translate = 0; 7411 } 7412 if (speed === void 0) { 7413 speed = this.params.speed; 7414 } 7415 if (runCallbacks === void 0) { 7416 runCallbacks = true; 7417 } 7418 if (translateBounds === void 0) { 7419 translateBounds = true; 7420 } 7421 const swiper = this; 7422 const { 7423 params, 7424 wrapperEl 7425 } = swiper; 7426 if (swiper.animating && params.preventInteractionOnTransition) { 7427 return false; 7428 } 7429 const minTranslate = swiper.minTranslate(); 7430 const maxTranslate = swiper.maxTranslate(); 7431 let newTranslate; 7432 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 7433 7434 // Update progress 7435 swiper.updateProgress(newTranslate); 7436 if (params.cssMode) { 7437 const isH = swiper.isHorizontal(); 7438 if (speed === 0) { 7439 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 7440 } else { 7441 if (!swiper.support.smoothScroll) { 7442 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 7443 swiper, 7444 targetPosition: -newTranslate, 7445 side: isH ? 'left' : 'top' 7446 }); 7447 return true; 7448 } 7449 wrapperEl.scrollTo({ 7450 [isH ? 'left' : 'top']: -newTranslate, 7451 behavior: 'smooth' 7452 }); 7453 } 7454 return true; 7455 } 7456 if (speed === 0) { 7457 swiper.setTransition(0); 7458 swiper.setTranslate(newTranslate); 7459 if (runCallbacks) { 7460 swiper.emit('beforeTransitionStart', speed, internal); 7461 swiper.emit('transitionEnd'); 7462 } 7463 } else { 7464 swiper.setTransition(speed); 7465 swiper.setTranslate(newTranslate); 7466 if (runCallbacks) { 7467 swiper.emit('beforeTransitionStart', speed, internal); 7468 swiper.emit('transitionStart'); 7469 } 7470 if (!swiper.animating) { 7471 swiper.animating = true; 7472 if (!swiper.onTranslateToWrapperTransitionEnd) { 7473 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 7474 if (!swiper || swiper.destroyed) return; 7475 if (e.target !== this) return; 7476 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7477 swiper.onTranslateToWrapperTransitionEnd = null; 7478 delete swiper.onTranslateToWrapperTransitionEnd; 7479 swiper.animating = false; 7480 if (runCallbacks) { 7481 swiper.emit('transitionEnd'); 7482 } 7483 }; 7484 } 7485 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7486 } 7487 } 7488 return true; 7489} 7490 7491var translate = { 7492 getTranslate: getSwiperTranslate, 7493 setTranslate, 7494 minTranslate, 7495 maxTranslate, 7496 translateTo 7497}; 7498 7499function setTransition(duration, byController) { 7500 const swiper = this; 7501 if (!swiper.params.cssMode) { 7502 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 7503 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 7504 } 7505 swiper.emit('setTransition', duration, byController); 7506} 7507 7508function transitionEmit(_ref) { 7509 let { 7510 swiper, 7511 runCallbacks, 7512 direction, 7513 step 7514 } = _ref; 7515 const { 7516 activeIndex, 7517 previousIndex 7518 } = swiper; 7519 let dir = direction; 7520 if (!dir) { 7521 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 7522 } 7523 swiper.emit(`transition${step}`); 7524 if (runCallbacks && activeIndex !== previousIndex) { 7525 if (dir === 'reset') { 7526 swiper.emit(`slideResetTransition${step}`); 7527 return; 7528 } 7529 swiper.emit(`slideChangeTransition${step}`); 7530 if (dir === 'next') { 7531 swiper.emit(`slideNextTransition${step}`); 7532 } else { 7533 swiper.emit(`slidePrevTransition${step}`); 7534 } 7535 } 7536} 7537 7538function transitionStart(runCallbacks, direction) { 7539 if (runCallbacks === void 0) { 7540 runCallbacks = true; 7541 } 7542 const swiper = this; 7543 const { 7544 params 7545 } = swiper; 7546 if (params.cssMode) return; 7547 if (params.autoHeight) { 7548 swiper.updateAutoHeight(); 7549 } 7550 transitionEmit({ 7551 swiper, 7552 runCallbacks, 7553 direction, 7554 step: 'Start' 7555 }); 7556} 7557 7558function transitionEnd(runCallbacks, direction) { 7559 if (runCallbacks === void 0) { 7560 runCallbacks = true; 7561 } 7562 const swiper = this; 7563 const { 7564 params 7565 } = swiper; 7566 swiper.animating = false; 7567 if (params.cssMode) return; 7568 swiper.setTransition(0); 7569 transitionEmit({ 7570 swiper, 7571 runCallbacks, 7572 direction, 7573 step: 'End' 7574 }); 7575} 7576 7577var transition = { 7578 setTransition, 7579 transitionStart, 7580 transitionEnd 7581}; 7582 7583function slideTo(index, speed, runCallbacks, internal, initial) { 7584 if (index === void 0) { 7585 index = 0; 7586 } 7587 if (runCallbacks === void 0) { 7588 runCallbacks = true; 7589 } 7590 if (typeof index === 'string') { 7591 index = parseInt(index, 10); 7592 } 7593 const swiper = this; 7594 let slideIndex = index; 7595 if (slideIndex < 0) slideIndex = 0; 7596 const { 7597 params, 7598 snapGrid, 7599 slidesGrid, 7600 previousIndex, 7601 activeIndex, 7602 rtlTranslate: rtl, 7603 wrapperEl, 7604 enabled 7605 } = swiper; 7606 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 7607 return false; 7608 } 7609 if (typeof speed === 'undefined') { 7610 speed = swiper.params.speed; 7611 } 7612 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 7613 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 7614 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7615 const translate = -snapGrid[snapIndex]; 7616 // Normalize slideIndex 7617 if (params.normalizeSlideIndex) { 7618 for (let i = 0; i < slidesGrid.length; i += 1) { 7619 const normalizedTranslate = -Math.floor(translate * 100); 7620 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 7621 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 7622 if (typeof slidesGrid[i + 1] !== 'undefined') { 7623 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 7624 slideIndex = i; 7625 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 7626 slideIndex = i + 1; 7627 } 7628 } else if (normalizedTranslate >= normalizedGrid) { 7629 slideIndex = i; 7630 } 7631 } 7632 } 7633 // Directions locks 7634 if (swiper.initialized && slideIndex !== activeIndex) { 7635 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 7636 return false; 7637 } 7638 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 7639 if ((activeIndex || 0) !== slideIndex) { 7640 return false; 7641 } 7642 } 7643 } 7644 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 7645 swiper.emit('beforeSlideChangeStart'); 7646 } 7647 7648 // Update progress 7649 swiper.updateProgress(translate); 7650 let direction; 7651 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 7652 7653 // initial virtual 7654 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7655 const isInitialVirtual = isVirtual && initial; 7656 // Update Index 7657 if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { 7658 swiper.updateActiveIndex(slideIndex); 7659 // Update Height 7660 if (params.autoHeight) { 7661 swiper.updateAutoHeight(); 7662 } 7663 swiper.updateSlidesClasses(); 7664 if (params.effect !== 'slide') { 7665 swiper.setTranslate(translate); 7666 } 7667 if (direction !== 'reset') { 7668 swiper.transitionStart(runCallbacks, direction); 7669 swiper.transitionEnd(runCallbacks, direction); 7670 } 7671 return false; 7672 } 7673 if (params.cssMode) { 7674 const isH = swiper.isHorizontal(); 7675 const t = rtl ? translate : -translate; 7676 if (speed === 0) { 7677 if (isVirtual) { 7678 swiper.wrapperEl.style.scrollSnapType = 'none'; 7679 swiper._immediateVirtual = true; 7680 } 7681 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 7682 swiper._cssModeVirtualInitialSet = true; 7683 requestAnimationFrame(() => { 7684 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7685 }); 7686 } else { 7687 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7688 } 7689 if (isVirtual) { 7690 requestAnimationFrame(() => { 7691 swiper.wrapperEl.style.scrollSnapType = ''; 7692 swiper._immediateVirtual = false; 7693 }); 7694 } 7695 } else { 7696 if (!swiper.support.smoothScroll) { 7697 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 7698 swiper, 7699 targetPosition: t, 7700 side: isH ? 'left' : 'top' 7701 }); 7702 return true; 7703 } 7704 wrapperEl.scrollTo({ 7705 [isH ? 'left' : 'top']: t, 7706 behavior: 'smooth' 7707 }); 7708 } 7709 return true; 7710 } 7711 swiper.setTransition(speed); 7712 swiper.setTranslate(translate); 7713 swiper.updateActiveIndex(slideIndex); 7714 swiper.updateSlidesClasses(); 7715 swiper.emit('beforeTransitionStart', speed, internal); 7716 swiper.transitionStart(runCallbacks, direction); 7717 if (speed === 0) { 7718 swiper.transitionEnd(runCallbacks, direction); 7719 } else if (!swiper.animating) { 7720 swiper.animating = true; 7721 if (!swiper.onSlideToWrapperTransitionEnd) { 7722 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 7723 if (!swiper || swiper.destroyed) return; 7724 if (e.target !== this) return; 7725 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 7726 swiper.onSlideToWrapperTransitionEnd = null; 7727 delete swiper.onSlideToWrapperTransitionEnd; 7728 swiper.transitionEnd(runCallbacks, direction); 7729 }; 7730 } 7731 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 7732 } 7733 return true; 7734} 7735 7736function slideToLoop(index, speed, runCallbacks, internal) { 7737 if (index === void 0) { 7738 index = 0; 7739 } 7740 if (runCallbacks === void 0) { 7741 runCallbacks = true; 7742 } 7743 if (typeof index === 'string') { 7744 const indexAsNumber = parseInt(index, 10); 7745 index = indexAsNumber; 7746 } 7747 const swiper = this; 7748 if (swiper.destroyed) return; 7749 if (typeof speed === 'undefined') { 7750 speed = swiper.params.speed; 7751 } 7752 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 7753 let newIndex = index; 7754 if (swiper.params.loop) { 7755 if (swiper.virtual && swiper.params.virtual.enabled) { 7756 // eslint-disable-next-line 7757 newIndex = newIndex + swiper.virtual.slidesBefore; 7758 } else { 7759 let targetSlideIndex; 7760 if (gridEnabled) { 7761 const slideIndex = newIndex * swiper.params.grid.rows; 7762 targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 7763 } else { 7764 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 7765 } 7766 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 7767 const { 7768 centeredSlides 7769 } = swiper.params; 7770 let slidesPerView = swiper.params.slidesPerView; 7771 if (slidesPerView === 'auto') { 7772 slidesPerView = swiper.slidesPerViewDynamic(); 7773 } else { 7774 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 7775 if (centeredSlides && slidesPerView % 2 === 0) { 7776 slidesPerView = slidesPerView + 1; 7777 } 7778 } 7779 let needLoopFix = cols - targetSlideIndex < slidesPerView; 7780 if (centeredSlides) { 7781 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 7782 } 7783 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 7784 needLoopFix = false; 7785 } 7786 if (needLoopFix) { 7787 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 7788 swiper.loopFix({ 7789 direction, 7790 slideTo: true, 7791 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 7792 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 7793 }); 7794 } 7795 if (gridEnabled) { 7796 const slideIndex = newIndex * swiper.params.grid.rows; 7797 newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 7798 } else { 7799 newIndex = swiper.getSlideIndexByData(newIndex); 7800 } 7801 } 7802 } 7803 requestAnimationFrame(() => { 7804 swiper.slideTo(newIndex, speed, runCallbacks, internal); 7805 }); 7806 return swiper; 7807} 7808 7809/* eslint no-unused-vars: "off" */ 7810function slideNext(speed, runCallbacks, internal) { 7811 if (runCallbacks === void 0) { 7812 runCallbacks = true; 7813 } 7814 const swiper = this; 7815 const { 7816 enabled, 7817 params, 7818 animating 7819 } = swiper; 7820 if (!enabled || swiper.destroyed) return swiper; 7821 if (typeof speed === 'undefined') { 7822 speed = swiper.params.speed; 7823 } 7824 let perGroup = params.slidesPerGroup; 7825 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 7826 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 7827 } 7828 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 7829 const isVirtual = swiper.virtual && params.virtual.enabled; 7830 if (params.loop) { 7831 if (animating && !isVirtual && params.loopPreventsSliding) return false; 7832 swiper.loopFix({ 7833 direction: 'next' 7834 }); 7835 // eslint-disable-next-line 7836 swiper._clientLeft = swiper.wrapperEl.clientLeft; 7837 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 7838 requestAnimationFrame(() => { 7839 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 7840 }); 7841 return true; 7842 } 7843 } 7844 if (params.rewind && swiper.isEnd) { 7845 return swiper.slideTo(0, speed, runCallbacks, internal); 7846 } 7847 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 7848} 7849 7850/* eslint no-unused-vars: "off" */ 7851function slidePrev(speed, runCallbacks, internal) { 7852 if (runCallbacks === void 0) { 7853 runCallbacks = true; 7854 } 7855 const swiper = this; 7856 const { 7857 params, 7858 snapGrid, 7859 slidesGrid, 7860 rtlTranslate, 7861 enabled, 7862 animating 7863 } = swiper; 7864 if (!enabled || swiper.destroyed) return swiper; 7865 if (typeof speed === 'undefined') { 7866 speed = swiper.params.speed; 7867 } 7868 const isVirtual = swiper.virtual && params.virtual.enabled; 7869 if (params.loop) { 7870 if (animating && !isVirtual && params.loopPreventsSliding) return false; 7871 swiper.loopFix({ 7872 direction: 'prev' 7873 }); 7874 // eslint-disable-next-line 7875 swiper._clientLeft = swiper.wrapperEl.clientLeft; 7876 } 7877 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 7878 function normalize(val) { 7879 if (val < 0) return -Math.floor(Math.abs(val)); 7880 return Math.floor(val); 7881 } 7882 const normalizedTranslate = normalize(translate); 7883 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 7884 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 7885 if (typeof prevSnap === 'undefined' && params.cssMode) { 7886 let prevSnapIndex; 7887 snapGrid.forEach((snap, snapIndex) => { 7888 if (normalizedTranslate >= snap) { 7889 // prevSnap = snap; 7890 prevSnapIndex = snapIndex; 7891 } 7892 }); 7893 if (typeof prevSnapIndex !== 'undefined') { 7894 prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 7895 } 7896 } 7897 let prevIndex = 0; 7898 if (typeof prevSnap !== 'undefined') { 7899 prevIndex = slidesGrid.indexOf(prevSnap); 7900 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 7901 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 7902 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 7903 prevIndex = Math.max(prevIndex, 0); 7904 } 7905 } 7906 if (params.rewind && swiper.isBeginning) { 7907 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 7908 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 7909 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 7910 requestAnimationFrame(() => { 7911 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 7912 }); 7913 return true; 7914 } 7915 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 7916} 7917 7918/* eslint no-unused-vars: "off" */ 7919function slideReset(speed, runCallbacks, internal) { 7920 if (runCallbacks === void 0) { 7921 runCallbacks = true; 7922 } 7923 const swiper = this; 7924 if (swiper.destroyed) return; 7925 if (typeof speed === 'undefined') { 7926 speed = swiper.params.speed; 7927 } 7928 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 7929} 7930 7931/* eslint no-unused-vars: "off" */ 7932function slideToClosest(speed, runCallbacks, internal, threshold) { 7933 if (runCallbacks === void 0) { 7934 runCallbacks = true; 7935 } 7936 if (threshold === void 0) { 7937 threshold = 0.5; 7938 } 7939 const swiper = this; 7940 if (swiper.destroyed) return; 7941 if (typeof speed === 'undefined') { 7942 speed = swiper.params.speed; 7943 } 7944 let index = swiper.activeIndex; 7945 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 7946 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 7947 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7948 if (translate >= swiper.snapGrid[snapIndex]) { 7949 // The current translate is on or after the current snap index, so the choice 7950 // is between the current index and the one after it. 7951 const currentSnap = swiper.snapGrid[snapIndex]; 7952 const nextSnap = swiper.snapGrid[snapIndex + 1]; 7953 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 7954 index += swiper.params.slidesPerGroup; 7955 } 7956 } else { 7957 // The current translate is before the current snap index, so the choice 7958 // is between the current index and the one before it. 7959 const prevSnap = swiper.snapGrid[snapIndex - 1]; 7960 const currentSnap = swiper.snapGrid[snapIndex]; 7961 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 7962 index -= swiper.params.slidesPerGroup; 7963 } 7964 } 7965 index = Math.max(index, 0); 7966 index = Math.min(index, swiper.slidesGrid.length - 1); 7967 return swiper.slideTo(index, speed, runCallbacks, internal); 7968} 7969 7970function slideToClickedSlide() { 7971 const swiper = this; 7972 if (swiper.destroyed) return; 7973 const { 7974 params, 7975 slidesEl 7976 } = swiper; 7977 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 7978 let slideToIndex = swiper.clickedIndex; 7979 let realIndex; 7980 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 7981 if (params.loop) { 7982 if (swiper.animating) return; 7983 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 7984 if (params.centeredSlides) { 7985 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 7986 swiper.loopFix(); 7987 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 7988 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 7989 swiper.slideTo(slideToIndex); 7990 }); 7991 } else { 7992 swiper.slideTo(slideToIndex); 7993 } 7994 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 7995 swiper.loopFix(); 7996 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 7997 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 7998 swiper.slideTo(slideToIndex); 7999 }); 8000 } else { 8001 swiper.slideTo(slideToIndex); 8002 } 8003 } else { 8004 swiper.slideTo(slideToIndex); 8005 } 8006} 8007 8008var slide = { 8009 slideTo, 8010 slideToLoop, 8011 slideNext, 8012 slidePrev, 8013 slideReset, 8014 slideToClosest, 8015 slideToClickedSlide 8016}; 8017 8018function loopCreate(slideRealIndex) { 8019 const swiper = this; 8020 const { 8021 params, 8022 slidesEl 8023 } = swiper; 8024 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 8025 const initSlides = () => { 8026 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 8027 slides.forEach((el, index) => { 8028 el.setAttribute('data-swiper-slide-index', index); 8029 }); 8030 }; 8031 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8032 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 8033 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 8034 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 8035 const addBlankSlides = amountOfSlides => { 8036 for (let i = 0; i < amountOfSlides; i += 1) { 8037 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]); 8038 swiper.slidesEl.append(slideEl); 8039 } 8040 }; 8041 if (shouldFillGroup) { 8042 if (params.loopAddBlankSlides) { 8043 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 8044 addBlankSlides(slidesToAdd); 8045 swiper.recalcSlides(); 8046 swiper.updateSlides(); 8047 } else { 8048 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 8049 } 8050 initSlides(); 8051 } else if (shouldFillGrid) { 8052 if (params.loopAddBlankSlides) { 8053 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 8054 addBlankSlides(slidesToAdd); 8055 swiper.recalcSlides(); 8056 swiper.updateSlides(); 8057 } else { 8058 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 8059 } 8060 initSlides(); 8061 } else { 8062 initSlides(); 8063 } 8064 swiper.loopFix({ 8065 slideRealIndex, 8066 direction: params.centeredSlides ? undefined : 'next' 8067 }); 8068} 8069 8070function loopFix(_temp) { 8071 let { 8072 slideRealIndex, 8073 slideTo = true, 8074 direction, 8075 setTranslate, 8076 activeSlideIndex, 8077 byController, 8078 byMousewheel 8079 } = _temp === void 0 ? {} : _temp; 8080 const swiper = this; 8081 if (!swiper.params.loop) return; 8082 swiper.emit('beforeLoopFix'); 8083 const { 8084 slides, 8085 allowSlidePrev, 8086 allowSlideNext, 8087 slidesEl, 8088 params 8089 } = swiper; 8090 const { 8091 centeredSlides 8092 } = params; 8093 swiper.allowSlidePrev = true; 8094 swiper.allowSlideNext = true; 8095 if (swiper.virtual && params.virtual.enabled) { 8096 if (slideTo) { 8097 if (!params.centeredSlides && swiper.snapIndex === 0) { 8098 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 8099 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 8100 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 8101 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 8102 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 8103 } 8104 } 8105 swiper.allowSlidePrev = allowSlidePrev; 8106 swiper.allowSlideNext = allowSlideNext; 8107 swiper.emit('loopFix'); 8108 return; 8109 } 8110 let slidesPerView = params.slidesPerView; 8111 if (slidesPerView === 'auto') { 8112 slidesPerView = swiper.slidesPerViewDynamic(); 8113 } else { 8114 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 8115 if (centeredSlides && slidesPerView % 2 === 0) { 8116 slidesPerView = slidesPerView + 1; 8117 } 8118 } 8119 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 8120 let loopedSlides = slidesPerGroup; 8121 if (loopedSlides % slidesPerGroup !== 0) { 8122 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 8123 } 8124 loopedSlides += params.loopAdditionalSlides; 8125 swiper.loopedSlides = loopedSlides; 8126 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8127 if (slides.length < slidesPerView + loopedSlides) { 8128 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); 8129 } else if (gridEnabled && params.grid.fill === 'row') { 8130 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 8131 } 8132 const prependSlidesIndexes = []; 8133 const appendSlidesIndexes = []; 8134 let activeIndex = swiper.activeIndex; 8135 if (typeof activeSlideIndex === 'undefined') { 8136 activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); 8137 } else { 8138 activeIndex = activeSlideIndex; 8139 } 8140 const isNext = direction === 'next' || !direction; 8141 const isPrev = direction === 'prev' || !direction; 8142 let slidesPrepended = 0; 8143 let slidesAppended = 0; 8144 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 8145 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 8146 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 8147 // prepend last slides before start 8148 if (activeColIndexWithShift < loopedSlides) { 8149 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 8150 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 8151 const index = i - Math.floor(i / cols) * cols; 8152 if (gridEnabled) { 8153 const colIndexToPrepend = cols - index - 1; 8154 for (let i = slides.length - 1; i >= 0; i -= 1) { 8155 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 8156 } 8157 // slides.forEach((slide, slideIndex) => { 8158 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 8159 // }); 8160 } else { 8161 prependSlidesIndexes.push(cols - index - 1); 8162 } 8163 } 8164 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 8165 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 8166 for (let i = 0; i < slidesAppended; i += 1) { 8167 const index = i - Math.floor(i / cols) * cols; 8168 if (gridEnabled) { 8169 slides.forEach((slide, slideIndex) => { 8170 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 8171 }); 8172 } else { 8173 appendSlidesIndexes.push(index); 8174 } 8175 } 8176 } 8177 swiper.__preventObserver__ = true; 8178 requestAnimationFrame(() => { 8179 swiper.__preventObserver__ = false; 8180 }); 8181 if (isPrev) { 8182 prependSlidesIndexes.forEach(index => { 8183 slides[index].swiperLoopMoveDOM = true; 8184 slidesEl.prepend(slides[index]); 8185 slides[index].swiperLoopMoveDOM = false; 8186 }); 8187 } 8188 if (isNext) { 8189 appendSlidesIndexes.forEach(index => { 8190 slides[index].swiperLoopMoveDOM = true; 8191 slidesEl.append(slides[index]); 8192 slides[index].swiperLoopMoveDOM = false; 8193 }); 8194 } 8195 swiper.recalcSlides(); 8196 if (params.slidesPerView === 'auto') { 8197 swiper.updateSlides(); 8198 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 8199 swiper.slides.forEach((slide, slideIndex) => { 8200 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 8201 }); 8202 } 8203 if (params.watchSlidesProgress) { 8204 swiper.updateSlidesOffset(); 8205 } 8206 if (slideTo) { 8207 if (prependSlidesIndexes.length > 0 && isPrev) { 8208 if (typeof slideRealIndex === 'undefined') { 8209 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8210 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 8211 const diff = newSlideTranslate - currentSlideTranslate; 8212 if (byMousewheel) { 8213 swiper.setTranslate(swiper.translate - diff); 8214 } else { 8215 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 8216 if (setTranslate) { 8217 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8218 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8219 } 8220 } 8221 } else { 8222 if (setTranslate) { 8223 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 8224 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 8225 swiper.touchEventsData.currentTranslate = swiper.translate; 8226 } 8227 } 8228 } else if (appendSlidesIndexes.length > 0 && isNext) { 8229 if (typeof slideRealIndex === 'undefined') { 8230 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8231 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 8232 const diff = newSlideTranslate - currentSlideTranslate; 8233 if (byMousewheel) { 8234 swiper.setTranslate(swiper.translate - diff); 8235 } else { 8236 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 8237 if (setTranslate) { 8238 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8239 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8240 } 8241 } 8242 } else { 8243 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 8244 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 8245 } 8246 } 8247 } 8248 swiper.allowSlidePrev = allowSlidePrev; 8249 swiper.allowSlideNext = allowSlideNext; 8250 if (swiper.controller && swiper.controller.control && !byController) { 8251 const loopParams = { 8252 slideRealIndex, 8253 direction, 8254 setTranslate, 8255 activeSlideIndex, 8256 byController: true 8257 }; 8258 if (Array.isArray(swiper.controller.control)) { 8259 swiper.controller.control.forEach(c => { 8260 if (!c.destroyed && c.params.loop) c.loopFix({ 8261 ...loopParams, 8262 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 8263 }); 8264 }); 8265 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 8266 swiper.controller.control.loopFix({ 8267 ...loopParams, 8268 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 8269 }); 8270 } 8271 } 8272 swiper.emit('loopFix'); 8273} 8274 8275function loopDestroy() { 8276 const swiper = this; 8277 const { 8278 params, 8279 slidesEl 8280 } = swiper; 8281 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 8282 swiper.recalcSlides(); 8283 const newSlidesOrder = []; 8284 swiper.slides.forEach(slideEl => { 8285 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 8286 newSlidesOrder[index] = slideEl; 8287 }); 8288 swiper.slides.forEach(slideEl => { 8289 slideEl.removeAttribute('data-swiper-slide-index'); 8290 }); 8291 newSlidesOrder.forEach(slideEl => { 8292 slidesEl.append(slideEl); 8293 }); 8294 swiper.recalcSlides(); 8295 swiper.slideTo(swiper.realIndex, 0); 8296} 8297 8298var loop = { 8299 loopCreate, 8300 loopFix, 8301 loopDestroy 8302}; 8303 8304function setGrabCursor(moving) { 8305 const swiper = this; 8306 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 8307 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 8308 if (swiper.isElement) { 8309 swiper.__preventObserver__ = true; 8310 } 8311 el.style.cursor = 'move'; 8312 el.style.cursor = moving ? 'grabbing' : 'grab'; 8313 if (swiper.isElement) { 8314 requestAnimationFrame(() => { 8315 swiper.__preventObserver__ = false; 8316 }); 8317 } 8318} 8319 8320function unsetGrabCursor() { 8321 const swiper = this; 8322 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 8323 return; 8324 } 8325 if (swiper.isElement) { 8326 swiper.__preventObserver__ = true; 8327 } 8328 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 8329 if (swiper.isElement) { 8330 requestAnimationFrame(() => { 8331 swiper.__preventObserver__ = false; 8332 }); 8333 } 8334} 8335 8336var grabCursor = { 8337 setGrabCursor, 8338 unsetGrabCursor 8339}; 8340 8341// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 8342function closestElement(selector, base) { 8343 if (base === void 0) { 8344 base = this; 8345 } 8346 function __closestFrom(el) { 8347 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; 8348 if (el.assignedSlot) el = el.assignedSlot; 8349 const found = el.closest(selector); 8350 if (!found && !el.getRootNode) { 8351 return null; 8352 } 8353 return found || __closestFrom(el.getRootNode().host); 8354 } 8355 return __closestFrom(base); 8356} 8357function preventEdgeSwipe(swiper, event, startX) { 8358 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8359 const { 8360 params 8361 } = swiper; 8362 const edgeSwipeDetection = params.edgeSwipeDetection; 8363 const edgeSwipeThreshold = params.edgeSwipeThreshold; 8364 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 8365 if (edgeSwipeDetection === 'prevent') { 8366 event.preventDefault(); 8367 return true; 8368 } 8369 return false; 8370 } 8371 return true; 8372} 8373function onTouchStart(event) { 8374 const swiper = this; 8375 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8376 let e = event; 8377 if (e.originalEvent) e = e.originalEvent; 8378 const data = swiper.touchEventsData; 8379 if (e.type === 'pointerdown') { 8380 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 8381 return; 8382 } 8383 data.pointerId = e.pointerId; 8384 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 8385 data.touchId = e.targetTouches[0].identifier; 8386 } 8387 if (e.type === 'touchstart') { 8388 // don't proceed touch event 8389 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 8390 return; 8391 } 8392 const { 8393 params, 8394 touches, 8395 enabled 8396 } = swiper; 8397 if (!enabled) return; 8398 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8399 if (swiper.animating && params.preventInteractionOnTransition) { 8400 return; 8401 } 8402 if (!swiper.animating && params.cssMode && params.loop) { 8403 swiper.loopFix(); 8404 } 8405 let targetEl = e.target; 8406 if (params.touchEventsTarget === 'wrapper') { 8407 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return; 8408 } 8409 if ('which' in e && e.which === 3) return; 8410 if ('button' in e && e.button > 0) return; 8411 if (data.isTouched && data.isMoved) return; 8412 8413 // change target el for shadow root component 8414 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 8415 // eslint-disable-next-line 8416 const eventPath = e.composedPath ? e.composedPath() : e.path; 8417 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 8418 targetEl = eventPath[0]; 8419 } 8420 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 8421 const isTargetShadow = !!(e.target && e.target.shadowRoot); 8422 8423 // use closestElement for shadow root element to get the actual closest for nested shadow root element 8424 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 8425 swiper.allowClick = true; 8426 return; 8427 } 8428 if (params.swipeHandler) { 8429 if (!targetEl.closest(params.swipeHandler)) return; 8430 } 8431 touches.currentX = e.pageX; 8432 touches.currentY = e.pageY; 8433 const startX = touches.currentX; 8434 const startY = touches.currentY; 8435 8436 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 8437 8438 if (!preventEdgeSwipe(swiper, e, startX)) { 8439 return; 8440 } 8441 Object.assign(data, { 8442 isTouched: true, 8443 isMoved: false, 8444 allowTouchCallbacks: true, 8445 isScrolling: undefined, 8446 startMoving: undefined 8447 }); 8448 touches.startX = startX; 8449 touches.startY = startY; 8450 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8451 swiper.allowClick = true; 8452 swiper.updateSize(); 8453 swiper.swipeDirection = undefined; 8454 if (params.threshold > 0) data.allowThresholdMove = false; 8455 let preventDefault = true; 8456 if (targetEl.matches(data.focusableElements)) { 8457 preventDefault = false; 8458 if (targetEl.nodeName === 'SELECT') { 8459 data.isTouched = false; 8460 } 8461 } 8462 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { 8463 document.activeElement.blur(); 8464 } 8465 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 8466 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 8467 e.preventDefault(); 8468 } 8469 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 8470 swiper.freeMode.onTouchStart(); 8471 } 8472 swiper.emit('touchStart', e); 8473} 8474 8475function onTouchMove(event) { 8476 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8477 const swiper = this; 8478 const data = swiper.touchEventsData; 8479 const { 8480 params, 8481 touches, 8482 rtlTranslate: rtl, 8483 enabled 8484 } = swiper; 8485 if (!enabled) return; 8486 if (!params.simulateTouch && event.pointerType === 'mouse') return; 8487 let e = event; 8488 if (e.originalEvent) e = e.originalEvent; 8489 if (e.type === 'pointermove') { 8490 if (data.touchId !== null) return; // return from pointer if we use touch 8491 const id = e.pointerId; 8492 if (id !== data.pointerId) return; 8493 } 8494 let targetTouch; 8495 if (e.type === 'touchmove') { 8496 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 8497 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8498 } else { 8499 targetTouch = e; 8500 } 8501 if (!data.isTouched) { 8502 if (data.startMoving && data.isScrolling) { 8503 swiper.emit('touchMoveOpposite', e); 8504 } 8505 return; 8506 } 8507 const pageX = targetTouch.pageX; 8508 const pageY = targetTouch.pageY; 8509 if (e.preventedByNestedSwiper) { 8510 touches.startX = pageX; 8511 touches.startY = pageY; 8512 return; 8513 } 8514 if (!swiper.allowTouchMove) { 8515 if (!e.target.matches(data.focusableElements)) { 8516 swiper.allowClick = false; 8517 } 8518 if (data.isTouched) { 8519 Object.assign(touches, { 8520 startX: pageX, 8521 startY: pageY, 8522 currentX: pageX, 8523 currentY: pageY 8524 }); 8525 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8526 } 8527 return; 8528 } 8529 if (params.touchReleaseOnEdges && !params.loop) { 8530 if (swiper.isVertical()) { 8531 // Vertical 8532 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 8533 data.isTouched = false; 8534 data.isMoved = false; 8535 return; 8536 } 8537 } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { 8538 return; 8539 } 8540 } 8541 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { 8542 document.activeElement.blur(); 8543 } 8544 if (document.activeElement) { 8545 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 8546 data.isMoved = true; 8547 swiper.allowClick = false; 8548 return; 8549 } 8550 } 8551 if (data.allowTouchCallbacks) { 8552 swiper.emit('touchMove', e); 8553 } 8554 touches.previousX = touches.currentX; 8555 touches.previousY = touches.currentY; 8556 touches.currentX = pageX; 8557 touches.currentY = pageY; 8558 const diffX = touches.currentX - touches.startX; 8559 const diffY = touches.currentY - touches.startY; 8560 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 8561 if (typeof data.isScrolling === 'undefined') { 8562 let touchAngle; 8563 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 8564 data.isScrolling = false; 8565 } else { 8566 // eslint-disable-next-line 8567 if (diffX * diffX + diffY * diffY >= 25) { 8568 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 8569 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 8570 } 8571 } 8572 } 8573 if (data.isScrolling) { 8574 swiper.emit('touchMoveOpposite', e); 8575 } 8576 if (typeof data.startMoving === 'undefined') { 8577 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 8578 data.startMoving = true; 8579 } 8580 } 8581 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 8582 data.isTouched = false; 8583 return; 8584 } 8585 if (!data.startMoving) { 8586 return; 8587 } 8588 swiper.allowClick = false; 8589 if (!params.cssMode && e.cancelable) { 8590 e.preventDefault(); 8591 } 8592 if (params.touchMoveStopPropagation && !params.nested) { 8593 e.stopPropagation(); 8594 } 8595 let diff = swiper.isHorizontal() ? diffX : diffY; 8596 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 8597 if (params.oneWayMovement) { 8598 diff = Math.abs(diff) * (rtl ? 1 : -1); 8599 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 8600 } 8601 touches.diff = diff; 8602 diff *= params.touchRatio; 8603 if (rtl) { 8604 diff = -diff; 8605 touchesDiff = -touchesDiff; 8606 } 8607 const prevTouchesDirection = swiper.touchesDirection; 8608 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 8609 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 8610 const isLoop = swiper.params.loop && !params.cssMode; 8611 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 8612 if (!data.isMoved) { 8613 if (isLoop && allowLoopFix) { 8614 swiper.loopFix({ 8615 direction: swiper.swipeDirection 8616 }); 8617 } 8618 data.startTranslate = swiper.getTranslate(); 8619 swiper.setTransition(0); 8620 if (swiper.animating) { 8621 const evt = new window.CustomEvent('transitionend', { 8622 bubbles: true, 8623 cancelable: true, 8624 detail: { 8625 bySwiperTouchMove: true 8626 } 8627 }); 8628 swiper.wrapperEl.dispatchEvent(evt); 8629 } 8630 data.allowMomentumBounce = false; 8631 // Grab Cursor 8632 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8633 swiper.setGrabCursor(true); 8634 } 8635 swiper.emit('sliderFirstMove', e); 8636 } 8637 let loopFixed; 8638 new Date().getTime(); 8639 if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 8640 Object.assign(touches, { 8641 startX: pageX, 8642 startY: pageY, 8643 currentX: pageX, 8644 currentY: pageY, 8645 startTranslate: data.currentTranslate 8646 }); 8647 data.loopSwapReset = true; 8648 data.startTranslate = data.currentTranslate; 8649 return; 8650 } 8651 swiper.emit('sliderMove', e); 8652 data.isMoved = true; 8653 data.currentTranslate = diff + data.startTranslate; 8654 let disableParentSwiper = true; 8655 let resistanceRatio = params.resistanceRatio; 8656 if (params.touchReleaseOnEdges) { 8657 resistanceRatio = 0; 8658 } 8659 if (diff > 0) { 8660 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())) { 8661 swiper.loopFix({ 8662 direction: 'prev', 8663 setTranslate: true, 8664 activeSlideIndex: 0 8665 }); 8666 } 8667 if (data.currentTranslate > swiper.minTranslate()) { 8668 disableParentSwiper = false; 8669 if (params.resistance) { 8670 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 8671 } 8672 } 8673 } else if (diff < 0) { 8674 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())) { 8675 swiper.loopFix({ 8676 direction: 'next', 8677 setTranslate: true, 8678 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 8679 }); 8680 } 8681 if (data.currentTranslate < swiper.maxTranslate()) { 8682 disableParentSwiper = false; 8683 if (params.resistance) { 8684 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 8685 } 8686 } 8687 } 8688 if (disableParentSwiper) { 8689 e.preventedByNestedSwiper = true; 8690 } 8691 8692 // Directions locks 8693 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 8694 data.currentTranslate = data.startTranslate; 8695 } 8696 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 8697 data.currentTranslate = data.startTranslate; 8698 } 8699 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 8700 data.currentTranslate = data.startTranslate; 8701 } 8702 8703 // Threshold 8704 if (params.threshold > 0) { 8705 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 8706 if (!data.allowThresholdMove) { 8707 data.allowThresholdMove = true; 8708 touches.startX = touches.currentX; 8709 touches.startY = touches.currentY; 8710 data.currentTranslate = data.startTranslate; 8711 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 8712 return; 8713 } 8714 } else { 8715 data.currentTranslate = data.startTranslate; 8716 return; 8717 } 8718 } 8719 if (!params.followFinger || params.cssMode) return; 8720 8721 // Update active index in free mode 8722 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 8723 swiper.updateActiveIndex(); 8724 swiper.updateSlidesClasses(); 8725 } 8726 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 8727 swiper.freeMode.onTouchMove(); 8728 } 8729 // Update progress 8730 swiper.updateProgress(data.currentTranslate); 8731 // Update translate 8732 swiper.setTranslate(data.currentTranslate); 8733} 8734 8735function onTouchEnd(event) { 8736 const swiper = this; 8737 const data = swiper.touchEventsData; 8738 let e = event; 8739 if (e.originalEvent) e = e.originalEvent; 8740 let targetTouch; 8741 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 8742 if (!isTouchEvent) { 8743 if (data.touchId !== null) return; // return from pointer if we use touch 8744 if (e.pointerId !== data.pointerId) return; 8745 targetTouch = e; 8746 } else { 8747 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 8748 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8749 } 8750 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 8751 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 8752 if (!proceed) { 8753 return; 8754 } 8755 } 8756 data.pointerId = null; 8757 data.touchId = null; 8758 const { 8759 params, 8760 touches, 8761 rtlTranslate: rtl, 8762 slidesGrid, 8763 enabled 8764 } = swiper; 8765 if (!enabled) return; 8766 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8767 if (data.allowTouchCallbacks) { 8768 swiper.emit('touchEnd', e); 8769 } 8770 data.allowTouchCallbacks = false; 8771 if (!data.isTouched) { 8772 if (data.isMoved && params.grabCursor) { 8773 swiper.setGrabCursor(false); 8774 } 8775 data.isMoved = false; 8776 data.startMoving = false; 8777 return; 8778 } 8779 8780 // Return Grab Cursor 8781 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8782 swiper.setGrabCursor(false); 8783 } 8784 8785 // Time diff 8786 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8787 const timeDiff = touchEndTime - data.touchStartTime; 8788 8789 // Tap, doubleTap, Click 8790 if (swiper.allowClick) { 8791 const pathTree = e.path || e.composedPath && e.composedPath(); 8792 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 8793 swiper.emit('tap click', e); 8794 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 8795 swiper.emit('doubleTap doubleClick', e); 8796 } 8797 } 8798 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8799 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 8800 if (!swiper.destroyed) swiper.allowClick = true; 8801 }); 8802 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 8803 data.isTouched = false; 8804 data.isMoved = false; 8805 data.startMoving = false; 8806 return; 8807 } 8808 data.isTouched = false; 8809 data.isMoved = false; 8810 data.startMoving = false; 8811 let currentPos; 8812 if (params.followFinger) { 8813 currentPos = rtl ? swiper.translate : -swiper.translate; 8814 } else { 8815 currentPos = -data.currentTranslate; 8816 } 8817 if (params.cssMode) { 8818 return; 8819 } 8820 if (params.freeMode && params.freeMode.enabled) { 8821 swiper.freeMode.onTouchEnd({ 8822 currentPos 8823 }); 8824 return; 8825 } 8826 8827 // Find current slide 8828 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 8829 let stopIndex = 0; 8830 let groupSize = swiper.slidesSizesGrid[0]; 8831 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 8832 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 8833 if (typeof slidesGrid[i + increment] !== 'undefined') { 8834 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 8835 stopIndex = i; 8836 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 8837 } 8838 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 8839 stopIndex = i; 8840 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 8841 } 8842 } 8843 let rewindFirstIndex = null; 8844 let rewindLastIndex = null; 8845 if (params.rewind) { 8846 if (swiper.isBeginning) { 8847 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 8848 } else if (swiper.isEnd) { 8849 rewindFirstIndex = 0; 8850 } 8851 } 8852 // Find current slide size 8853 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 8854 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 8855 if (timeDiff > params.longSwipesMs) { 8856 // Long touches 8857 if (!params.longSwipes) { 8858 swiper.slideTo(swiper.activeIndex); 8859 return; 8860 } 8861 if (swiper.swipeDirection === 'next') { 8862 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 8863 } 8864 if (swiper.swipeDirection === 'prev') { 8865 if (ratio > 1 - params.longSwipesRatio) { 8866 swiper.slideTo(stopIndex + increment); 8867 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 8868 swiper.slideTo(rewindLastIndex); 8869 } else { 8870 swiper.slideTo(stopIndex); 8871 } 8872 } 8873 } else { 8874 // Short swipes 8875 if (!params.shortSwipes) { 8876 swiper.slideTo(swiper.activeIndex); 8877 return; 8878 } 8879 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 8880 if (!isNavButtonTarget) { 8881 if (swiper.swipeDirection === 'next') { 8882 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 8883 } 8884 if (swiper.swipeDirection === 'prev') { 8885 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 8886 } 8887 } else if (e.target === swiper.navigation.nextEl) { 8888 swiper.slideTo(stopIndex + increment); 8889 } else { 8890 swiper.slideTo(stopIndex); 8891 } 8892 } 8893} 8894 8895function onResize() { 8896 const swiper = this; 8897 const { 8898 params, 8899 el 8900 } = swiper; 8901 if (el && el.offsetWidth === 0) return; 8902 8903 // Breakpoints 8904 if (params.breakpoints) { 8905 swiper.setBreakpoint(); 8906 } 8907 8908 // Save locks 8909 const { 8910 allowSlideNext, 8911 allowSlidePrev, 8912 snapGrid 8913 } = swiper; 8914 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 8915 8916 // Disable locks on resize 8917 swiper.allowSlideNext = true; 8918 swiper.allowSlidePrev = true; 8919 swiper.updateSize(); 8920 swiper.updateSlides(); 8921 swiper.updateSlidesClasses(); 8922 const isVirtualLoop = isVirtual && params.loop; 8923 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 8924 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 8925 } else { 8926 if (swiper.params.loop && !isVirtual) { 8927 swiper.slideToLoop(swiper.realIndex, 0, false, true); 8928 } else { 8929 swiper.slideTo(swiper.activeIndex, 0, false, true); 8930 } 8931 } 8932 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 8933 clearTimeout(swiper.autoplay.resizeTimeout); 8934 swiper.autoplay.resizeTimeout = setTimeout(() => { 8935 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 8936 swiper.autoplay.resume(); 8937 } 8938 }, 500); 8939 } 8940 // Return locks after resize 8941 swiper.allowSlidePrev = allowSlidePrev; 8942 swiper.allowSlideNext = allowSlideNext; 8943 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 8944 swiper.checkOverflow(); 8945 } 8946} 8947 8948function onClick(e) { 8949 const swiper = this; 8950 if (!swiper.enabled) return; 8951 if (!swiper.allowClick) { 8952 if (swiper.params.preventClicks) e.preventDefault(); 8953 if (swiper.params.preventClicksPropagation && swiper.animating) { 8954 e.stopPropagation(); 8955 e.stopImmediatePropagation(); 8956 } 8957 } 8958} 8959 8960function onScroll() { 8961 const swiper = this; 8962 const { 8963 wrapperEl, 8964 rtlTranslate, 8965 enabled 8966 } = swiper; 8967 if (!enabled) return; 8968 swiper.previousTranslate = swiper.translate; 8969 if (swiper.isHorizontal()) { 8970 swiper.translate = -wrapperEl.scrollLeft; 8971 } else { 8972 swiper.translate = -wrapperEl.scrollTop; 8973 } 8974 // eslint-disable-next-line 8975 if (swiper.translate === 0) swiper.translate = 0; 8976 swiper.updateActiveIndex(); 8977 swiper.updateSlidesClasses(); 8978 let newProgress; 8979 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 8980 if (translatesDiff === 0) { 8981 newProgress = 0; 8982 } else { 8983 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 8984 } 8985 if (newProgress !== swiper.progress) { 8986 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 8987 } 8988 swiper.emit('setTranslate', swiper.translate, false); 8989} 8990 8991function onLoad(e) { 8992 const swiper = this; 8993 processLazyPreloader(swiper, e.target); 8994 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 8995 return; 8996 } 8997 swiper.update(); 8998} 8999 9000function onDocumentTouchStart() { 9001 const swiper = this; 9002 if (swiper.documentTouchHandlerProceeded) return; 9003 swiper.documentTouchHandlerProceeded = true; 9004 if (swiper.params.touchReleaseOnEdges) { 9005 swiper.el.style.touchAction = 'auto'; 9006 } 9007} 9008 9009const events = (swiper, method) => { 9010 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9011 const { 9012 params, 9013 el, 9014 wrapperEl, 9015 device 9016 } = swiper; 9017 const capture = !!params.nested; 9018 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 9019 const swiperMethod = method; 9020 if (!el || typeof el === 'string') return; 9021 9022 // Touch Events 9023 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 9024 passive: false, 9025 capture 9026 }); 9027 el[domMethod]('touchstart', swiper.onTouchStart, { 9028 passive: false 9029 }); 9030 el[domMethod]('pointerdown', swiper.onTouchStart, { 9031 passive: false 9032 }); 9033 document[domMethod]('touchmove', swiper.onTouchMove, { 9034 passive: false, 9035 capture 9036 }); 9037 document[domMethod]('pointermove', swiper.onTouchMove, { 9038 passive: false, 9039 capture 9040 }); 9041 document[domMethod]('touchend', swiper.onTouchEnd, { 9042 passive: true 9043 }); 9044 document[domMethod]('pointerup', swiper.onTouchEnd, { 9045 passive: true 9046 }); 9047 document[domMethod]('pointercancel', swiper.onTouchEnd, { 9048 passive: true 9049 }); 9050 document[domMethod]('touchcancel', swiper.onTouchEnd, { 9051 passive: true 9052 }); 9053 document[domMethod]('pointerout', swiper.onTouchEnd, { 9054 passive: true 9055 }); 9056 document[domMethod]('pointerleave', swiper.onTouchEnd, { 9057 passive: true 9058 }); 9059 document[domMethod]('contextmenu', swiper.onTouchEnd, { 9060 passive: true 9061 }); 9062 9063 // Prevent Links Clicks 9064 if (params.preventClicks || params.preventClicksPropagation) { 9065 el[domMethod]('click', swiper.onClick, true); 9066 } 9067 if (params.cssMode) { 9068 wrapperEl[domMethod]('scroll', swiper.onScroll); 9069 } 9070 9071 // Resize handler 9072 if (params.updateOnWindowResize) { 9073 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 9074 } else { 9075 swiper[swiperMethod]('observerUpdate', onResize, true); 9076 } 9077 9078 // Images loader 9079 el[domMethod]('load', swiper.onLoad, { 9080 capture: true 9081 }); 9082}; 9083function attachEvents() { 9084 const swiper = this; 9085 const { 9086 params 9087 } = swiper; 9088 swiper.onTouchStart = onTouchStart.bind(swiper); 9089 swiper.onTouchMove = onTouchMove.bind(swiper); 9090 swiper.onTouchEnd = onTouchEnd.bind(swiper); 9091 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 9092 if (params.cssMode) { 9093 swiper.onScroll = onScroll.bind(swiper); 9094 } 9095 swiper.onClick = onClick.bind(swiper); 9096 swiper.onLoad = onLoad.bind(swiper); 9097 events(swiper, 'on'); 9098} 9099function detachEvents() { 9100 const swiper = this; 9101 events(swiper, 'off'); 9102} 9103var events$1 = { 9104 attachEvents, 9105 detachEvents 9106}; 9107 9108const isGridEnabled = (swiper, params) => { 9109 return swiper.grid && params.grid && params.grid.rows > 1; 9110}; 9111function setBreakpoint() { 9112 const swiper = this; 9113 const { 9114 realIndex, 9115 initialized, 9116 params, 9117 el 9118 } = swiper; 9119 const breakpoints = params.breakpoints; 9120 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 9121 9122 // Get breakpoint for window width and update parameters 9123 const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); 9124 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 9125 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 9126 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 9127 const wasMultiRow = isGridEnabled(swiper, params); 9128 const isMultiRow = isGridEnabled(swiper, breakpointParams); 9129 const wasGrabCursor = swiper.params.grabCursor; 9130 const isGrabCursor = breakpointParams.grabCursor; 9131 const wasEnabled = params.enabled; 9132 if (wasMultiRow && !isMultiRow) { 9133 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 9134 swiper.emitContainerClasses(); 9135 } else if (!wasMultiRow && isMultiRow) { 9136 el.classList.add(`${params.containerModifierClass}grid`); 9137 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 9138 el.classList.add(`${params.containerModifierClass}grid-column`); 9139 } 9140 swiper.emitContainerClasses(); 9141 } 9142 if (wasGrabCursor && !isGrabCursor) { 9143 swiper.unsetGrabCursor(); 9144 } else if (!wasGrabCursor && isGrabCursor) { 9145 swiper.setGrabCursor(); 9146 } 9147 9148 // Toggle navigation, pagination, scrollbar 9149 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 9150 if (typeof breakpointParams[prop] === 'undefined') return; 9151 const wasModuleEnabled = params[prop] && params[prop].enabled; 9152 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 9153 if (wasModuleEnabled && !isModuleEnabled) { 9154 swiper[prop].disable(); 9155 } 9156 if (!wasModuleEnabled && isModuleEnabled) { 9157 swiper[prop].enable(); 9158 } 9159 }); 9160 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 9161 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 9162 const wasLoop = params.loop; 9163 if (directionChanged && initialized) { 9164 swiper.changeDirection(); 9165 } 9166 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams); 9167 const isEnabled = swiper.params.enabled; 9168 const hasLoop = swiper.params.loop; 9169 Object.assign(swiper, { 9170 allowTouchMove: swiper.params.allowTouchMove, 9171 allowSlideNext: swiper.params.allowSlideNext, 9172 allowSlidePrev: swiper.params.allowSlidePrev 9173 }); 9174 if (wasEnabled && !isEnabled) { 9175 swiper.disable(); 9176 } else if (!wasEnabled && isEnabled) { 9177 swiper.enable(); 9178 } 9179 swiper.currentBreakpoint = breakpoint; 9180 swiper.emit('_beforeBreakpoint', breakpointParams); 9181 if (initialized) { 9182 if (needsReLoop) { 9183 swiper.loopDestroy(); 9184 swiper.loopCreate(realIndex); 9185 swiper.updateSlides(); 9186 } else if (!wasLoop && hasLoop) { 9187 swiper.loopCreate(realIndex); 9188 swiper.updateSlides(); 9189 } else if (wasLoop && !hasLoop) { 9190 swiper.loopDestroy(); 9191 } 9192 } 9193 swiper.emit('breakpoint', breakpointParams); 9194} 9195 9196function getBreakpoint(breakpoints, base, containerEl) { 9197 if (base === void 0) { 9198 base = 'window'; 9199 } 9200 if (!breakpoints || base === 'container' && !containerEl) return undefined; 9201 let breakpoint = false; 9202 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 9203 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 9204 const points = Object.keys(breakpoints).map(point => { 9205 if (typeof point === 'string' && point.indexOf('@') === 0) { 9206 const minRatio = parseFloat(point.substr(1)); 9207 const value = currentHeight * minRatio; 9208 return { 9209 value, 9210 point 9211 }; 9212 } 9213 return { 9214 value: point, 9215 point 9216 }; 9217 }); 9218 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 9219 for (let i = 0; i < points.length; i += 1) { 9220 const { 9221 point, 9222 value 9223 } = points[i]; 9224 if (base === 'window') { 9225 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 9226 breakpoint = point; 9227 } 9228 } else if (value <= containerEl.clientWidth) { 9229 breakpoint = point; 9230 } 9231 } 9232 return breakpoint || 'max'; 9233} 9234 9235var breakpoints = { 9236 setBreakpoint, 9237 getBreakpoint 9238}; 9239 9240function prepareClasses(entries, prefix) { 9241 const resultClasses = []; 9242 entries.forEach(item => { 9243 if (typeof item === 'object') { 9244 Object.keys(item).forEach(classNames => { 9245 if (item[classNames]) { 9246 resultClasses.push(prefix + classNames); 9247 } 9248 }); 9249 } else if (typeof item === 'string') { 9250 resultClasses.push(prefix + item); 9251 } 9252 }); 9253 return resultClasses; 9254} 9255function addClasses() { 9256 const swiper = this; 9257 const { 9258 classNames, 9259 params, 9260 rtl, 9261 el, 9262 device 9263 } = swiper; 9264 // prettier-ignore 9265 const suffixes = prepareClasses(['initialized', params.direction, { 9266 'free-mode': swiper.params.freeMode && params.freeMode.enabled 9267 }, { 9268 'autoheight': params.autoHeight 9269 }, { 9270 'rtl': rtl 9271 }, { 9272 'grid': params.grid && params.grid.rows > 1 9273 }, { 9274 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 9275 }, { 9276 'android': device.android 9277 }, { 9278 'ios': device.ios 9279 }, { 9280 'css-mode': params.cssMode 9281 }, { 9282 'centered': params.cssMode && params.centeredSlides 9283 }, { 9284 'watch-progress': params.watchSlidesProgress 9285 }], params.containerModifierClass); 9286 classNames.push(...suffixes); 9287 el.classList.add(...classNames); 9288 swiper.emitContainerClasses(); 9289} 9290 9291function removeClasses() { 9292 const swiper = this; 9293 const { 9294 el, 9295 classNames 9296 } = swiper; 9297 if (!el || typeof el === 'string') return; 9298 el.classList.remove(...classNames); 9299 swiper.emitContainerClasses(); 9300} 9301 9302var classes = { 9303 addClasses, 9304 removeClasses 9305}; 9306 9307function checkOverflow() { 9308 const swiper = this; 9309 const { 9310 isLocked: wasLocked, 9311 params 9312 } = swiper; 9313 const { 9314 slidesOffsetBefore 9315 } = params; 9316 if (slidesOffsetBefore) { 9317 const lastSlideIndex = swiper.slides.length - 1; 9318 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 9319 swiper.isLocked = swiper.size > lastSlideRightEdge; 9320 } else { 9321 swiper.isLocked = swiper.snapGrid.length === 1; 9322 } 9323 if (params.allowSlideNext === true) { 9324 swiper.allowSlideNext = !swiper.isLocked; 9325 } 9326 if (params.allowSlidePrev === true) { 9327 swiper.allowSlidePrev = !swiper.isLocked; 9328 } 9329 if (wasLocked && wasLocked !== swiper.isLocked) { 9330 swiper.isEnd = false; 9331 } 9332 if (wasLocked !== swiper.isLocked) { 9333 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 9334 } 9335} 9336var checkOverflow$1 = { 9337 checkOverflow 9338}; 9339 9340var defaults = { 9341 init: true, 9342 direction: 'horizontal', 9343 oneWayMovement: false, 9344 swiperElementNodeName: 'SWIPER-CONTAINER', 9345 touchEventsTarget: 'wrapper', 9346 initialSlide: 0, 9347 speed: 300, 9348 cssMode: false, 9349 updateOnWindowResize: true, 9350 resizeObserver: true, 9351 nested: false, 9352 createElements: false, 9353 eventsPrefix: 'swiper', 9354 enabled: true, 9355 focusableElements: 'input, select, option, textarea, button, video, label', 9356 // Overrides 9357 width: null, 9358 height: null, 9359 // 9360 preventInteractionOnTransition: false, 9361 // ssr 9362 userAgent: null, 9363 url: null, 9364 // To support iOS's swipe-to-go-back gesture (when being used in-app). 9365 edgeSwipeDetection: false, 9366 edgeSwipeThreshold: 20, 9367 // Autoheight 9368 autoHeight: false, 9369 // Set wrapper width 9370 setWrapperSize: false, 9371 // Virtual Translate 9372 virtualTranslate: false, 9373 // Effects 9374 effect: 'slide', 9375 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 9376 9377 // Breakpoints 9378 breakpoints: undefined, 9379 breakpointsBase: 'window', 9380 // Slides grid 9381 spaceBetween: 0, 9382 slidesPerView: 1, 9383 slidesPerGroup: 1, 9384 slidesPerGroupSkip: 0, 9385 slidesPerGroupAuto: false, 9386 centeredSlides: false, 9387 centeredSlidesBounds: false, 9388 slidesOffsetBefore: 0, 9389 // in px 9390 slidesOffsetAfter: 0, 9391 // in px 9392 normalizeSlideIndex: true, 9393 centerInsufficientSlides: false, 9394 // Disable swiper and hide navigation when container not overflow 9395 watchOverflow: true, 9396 // Round length 9397 roundLengths: false, 9398 // Touches 9399 touchRatio: 1, 9400 touchAngle: 45, 9401 simulateTouch: true, 9402 shortSwipes: true, 9403 longSwipes: true, 9404 longSwipesRatio: 0.5, 9405 longSwipesMs: 300, 9406 followFinger: true, 9407 allowTouchMove: true, 9408 threshold: 5, 9409 touchMoveStopPropagation: false, 9410 touchStartPreventDefault: true, 9411 touchStartForcePreventDefault: false, 9412 touchReleaseOnEdges: false, 9413 // Unique Navigation Elements 9414 uniqueNavElements: true, 9415 // Resistance 9416 resistance: true, 9417 resistanceRatio: 0.85, 9418 // Progress 9419 watchSlidesProgress: false, 9420 // Cursor 9421 grabCursor: false, 9422 // Clicks 9423 preventClicks: true, 9424 preventClicksPropagation: true, 9425 slideToClickedSlide: false, 9426 // loop 9427 loop: false, 9428 loopAddBlankSlides: true, 9429 loopAdditionalSlides: 0, 9430 loopPreventsSliding: true, 9431 // rewind 9432 rewind: false, 9433 // Swiping/no swiping 9434 allowSlidePrev: true, 9435 allowSlideNext: true, 9436 swipeHandler: null, 9437 // '.swipe-handler', 9438 noSwiping: true, 9439 noSwipingClass: 'swiper-no-swiping', 9440 noSwipingSelector: null, 9441 // Passive Listeners 9442 passiveListeners: true, 9443 maxBackfaceHiddenSlides: 10, 9444 // NS 9445 containerModifierClass: 'swiper-', 9446 // NEW 9447 slideClass: 'swiper-slide', 9448 slideBlankClass: 'swiper-slide-blank', 9449 slideActiveClass: 'swiper-slide-active', 9450 slideVisibleClass: 'swiper-slide-visible', 9451 slideFullyVisibleClass: 'swiper-slide-fully-visible', 9452 slideNextClass: 'swiper-slide-next', 9453 slidePrevClass: 'swiper-slide-prev', 9454 wrapperClass: 'swiper-wrapper', 9455 lazyPreloaderClass: 'swiper-lazy-preloader', 9456 lazyPreloadPrevNext: 0, 9457 // Callbacks 9458 runCallbacksOnInit: true, 9459 // Internals 9460 _emitClasses: false 9461}; 9462 9463function moduleExtendParams(params, allModulesParams) { 9464 return function extendParams(obj) { 9465 if (obj === void 0) { 9466 obj = {}; 9467 } 9468 const moduleParamName = Object.keys(obj)[0]; 9469 const moduleParams = obj[moduleParamName]; 9470 if (typeof moduleParams !== 'object' || moduleParams === null) { 9471 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9472 return; 9473 } 9474 if (params[moduleParamName] === true) { 9475 params[moduleParamName] = { 9476 enabled: true 9477 }; 9478 } 9479 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 9480 params[moduleParamName].auto = true; 9481 } 9482 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 9483 params[moduleParamName].auto = true; 9484 } 9485 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 9486 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9487 return; 9488 } 9489 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 9490 params[moduleParamName].enabled = true; 9491 } 9492 if (!params[moduleParamName]) params[moduleParamName] = { 9493 enabled: false 9494 }; 9495 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9496 }; 9497} 9498 9499/* eslint no-param-reassign: "off" */ 9500const prototypes = { 9501 eventsEmitter, 9502 update, 9503 translate, 9504 transition, 9505 slide, 9506 loop, 9507 grabCursor, 9508 events: events$1, 9509 breakpoints, 9510 checkOverflow: checkOverflow$1, 9511 classes 9512}; 9513const extendedDefaults = {}; 9514class Swiper { 9515 constructor() { 9516 let el; 9517 let params; 9518 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 9519 args[_key] = arguments[_key]; 9520 } 9521 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 9522 params = args[0]; 9523 } else { 9524 [el, params] = args; 9525 } 9526 if (!params) params = {}; 9527 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 9528 if (el && !params.el) params.el = el; 9529 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9530 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 9531 const swipers = []; 9532 document.querySelectorAll(params.el).forEach(containerEl => { 9533 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, { 9534 el: containerEl 9535 }); 9536 swipers.push(new Swiper(newParams)); 9537 }); 9538 // eslint-disable-next-line no-constructor-return 9539 return swipers; 9540 } 9541 9542 // Swiper Instance 9543 const swiper = this; 9544 swiper.__swiper__ = true; 9545 swiper.support = getSupport(); 9546 swiper.device = getDevice({ 9547 userAgent: params.userAgent 9548 }); 9549 swiper.browser = getBrowser(); 9550 swiper.eventsListeners = {}; 9551 swiper.eventsAnyListeners = []; 9552 swiper.modules = [...swiper.__modules__]; 9553 if (params.modules && Array.isArray(params.modules)) { 9554 swiper.modules.push(...params.modules); 9555 } 9556 const allModulesParams = {}; 9557 swiper.modules.forEach(mod => { 9558 mod({ 9559 params, 9560 swiper, 9561 extendParams: moduleExtendParams(params, allModulesParams), 9562 on: swiper.on.bind(swiper), 9563 once: swiper.once.bind(swiper), 9564 off: swiper.off.bind(swiper), 9565 emit: swiper.emit.bind(swiper) 9566 }); 9567 }); 9568 9569 // Extend defaults with modules params 9570 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams); 9571 9572 // Extend defaults with passed params 9573 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params); 9574 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params); 9575 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 9576 9577 // add event listeners 9578 if (swiper.params && swiper.params.on) { 9579 Object.keys(swiper.params.on).forEach(eventName => { 9580 swiper.on(eventName, swiper.params.on[eventName]); 9581 }); 9582 } 9583 if (swiper.params && swiper.params.onAny) { 9584 swiper.onAny(swiper.params.onAny); 9585 } 9586 9587 // Extend Swiper 9588 Object.assign(swiper, { 9589 enabled: swiper.params.enabled, 9590 el, 9591 // Classes 9592 classNames: [], 9593 // Slides 9594 slides: [], 9595 slidesGrid: [], 9596 snapGrid: [], 9597 slidesSizesGrid: [], 9598 // isDirection 9599 isHorizontal() { 9600 return swiper.params.direction === 'horizontal'; 9601 }, 9602 isVertical() { 9603 return swiper.params.direction === 'vertical'; 9604 }, 9605 // Indexes 9606 activeIndex: 0, 9607 realIndex: 0, 9608 // 9609 isBeginning: true, 9610 isEnd: false, 9611 // Props 9612 translate: 0, 9613 previousTranslate: 0, 9614 progress: 0, 9615 velocity: 0, 9616 animating: false, 9617 cssOverflowAdjustment() { 9618 // Returns 0 unless `translate` is > 2**23 9619 // Should be subtracted from css values to prevent overflow 9620 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 9621 }, 9622 // Locks 9623 allowSlideNext: swiper.params.allowSlideNext, 9624 allowSlidePrev: swiper.params.allowSlidePrev, 9625 // Touch Events 9626 touchEventsData: { 9627 isTouched: undefined, 9628 isMoved: undefined, 9629 allowTouchCallbacks: undefined, 9630 touchStartTime: undefined, 9631 isScrolling: undefined, 9632 currentTranslate: undefined, 9633 startTranslate: undefined, 9634 allowThresholdMove: undefined, 9635 // Form elements to match 9636 focusableElements: swiper.params.focusableElements, 9637 // Last click time 9638 lastClickTime: 0, 9639 clickTimeout: undefined, 9640 // Velocities 9641 velocities: [], 9642 allowMomentumBounce: undefined, 9643 startMoving: undefined, 9644 pointerId: null, 9645 touchId: null 9646 }, 9647 // Clicks 9648 allowClick: true, 9649 // Touches 9650 allowTouchMove: swiper.params.allowTouchMove, 9651 touches: { 9652 startX: 0, 9653 startY: 0, 9654 currentX: 0, 9655 currentY: 0, 9656 diff: 0 9657 }, 9658 // Images 9659 imagesToLoad: [], 9660 imagesLoaded: 0 9661 }); 9662 swiper.emit('_swiper'); 9663 9664 // Init 9665 if (swiper.params.init) { 9666 swiper.init(); 9667 } 9668 9669 // Return app instance 9670 // eslint-disable-next-line no-constructor-return 9671 return swiper; 9672 } 9673 getDirectionLabel(property) { 9674 if (this.isHorizontal()) { 9675 return property; 9676 } 9677 // prettier-ignore 9678 return { 9679 'width': 'height', 9680 'margin-top': 'margin-left', 9681 'margin-bottom ': 'margin-right', 9682 'margin-left': 'margin-top', 9683 'margin-right': 'margin-bottom', 9684 'padding-left': 'padding-top', 9685 'padding-right': 'padding-bottom', 9686 'marginRight': 'marginBottom' 9687 }[property]; 9688 } 9689 getSlideIndex(slideEl) { 9690 const { 9691 slidesEl, 9692 params 9693 } = this; 9694 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 9695 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]); 9696 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex; 9697 } 9698 getSlideIndexByData(index) { 9699 return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); 9700 } 9701 recalcSlides() { 9702 const swiper = this; 9703 const { 9704 slidesEl, 9705 params 9706 } = swiper; 9707 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 9708 } 9709 enable() { 9710 const swiper = this; 9711 if (swiper.enabled) return; 9712 swiper.enabled = true; 9713 if (swiper.params.grabCursor) { 9714 swiper.setGrabCursor(); 9715 } 9716 swiper.emit('enable'); 9717 } 9718 disable() { 9719 const swiper = this; 9720 if (!swiper.enabled) return; 9721 swiper.enabled = false; 9722 if (swiper.params.grabCursor) { 9723 swiper.unsetGrabCursor(); 9724 } 9725 swiper.emit('disable'); 9726 } 9727 setProgress(progress, speed) { 9728 const swiper = this; 9729 progress = Math.min(Math.max(progress, 0), 1); 9730 const min = swiper.minTranslate(); 9731 const max = swiper.maxTranslate(); 9732 const current = (max - min) * progress + min; 9733 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 9734 swiper.updateActiveIndex(); 9735 swiper.updateSlidesClasses(); 9736 } 9737 emitContainerClasses() { 9738 const swiper = this; 9739 if (!swiper.params._emitClasses || !swiper.el) return; 9740 const cls = swiper.el.className.split(' ').filter(className => { 9741 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 9742 }); 9743 swiper.emit('_containerClasses', cls.join(' ')); 9744 } 9745 getSlideClasses(slideEl) { 9746 const swiper = this; 9747 if (swiper.destroyed) return ''; 9748 return slideEl.className.split(' ').filter(className => { 9749 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 9750 }).join(' '); 9751 } 9752 emitSlidesClasses() { 9753 const swiper = this; 9754 if (!swiper.params._emitClasses || !swiper.el) return; 9755 const updates = []; 9756 swiper.slides.forEach(slideEl => { 9757 const classNames = swiper.getSlideClasses(slideEl); 9758 updates.push({ 9759 slideEl, 9760 classNames 9761 }); 9762 swiper.emit('_slideClass', slideEl, classNames); 9763 }); 9764 swiper.emit('_slideClasses', updates); 9765 } 9766 slidesPerViewDynamic(view, exact) { 9767 if (view === void 0) { 9768 view = 'current'; 9769 } 9770 if (exact === void 0) { 9771 exact = false; 9772 } 9773 const swiper = this; 9774 const { 9775 params, 9776 slides, 9777 slidesGrid, 9778 slidesSizesGrid, 9779 size: swiperSize, 9780 activeIndex 9781 } = swiper; 9782 let spv = 1; 9783 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 9784 if (params.centeredSlides) { 9785 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 9786 let breakLoop; 9787 for (let i = activeIndex + 1; i < slides.length; i += 1) { 9788 if (slides[i] && !breakLoop) { 9789 slideSize += Math.ceil(slides[i].swiperSlideSize); 9790 spv += 1; 9791 if (slideSize > swiperSize) breakLoop = true; 9792 } 9793 } 9794 for (let i = activeIndex - 1; i >= 0; i -= 1) { 9795 if (slides[i] && !breakLoop) { 9796 slideSize += slides[i].swiperSlideSize; 9797 spv += 1; 9798 if (slideSize > swiperSize) breakLoop = true; 9799 } 9800 } 9801 } else { 9802 // eslint-disable-next-line 9803 if (view === 'current') { 9804 for (let i = activeIndex + 1; i < slides.length; i += 1) { 9805 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 9806 if (slideInView) { 9807 spv += 1; 9808 } 9809 } 9810 } else { 9811 // previous 9812 for (let i = activeIndex - 1; i >= 0; i -= 1) { 9813 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 9814 if (slideInView) { 9815 spv += 1; 9816 } 9817 } 9818 } 9819 } 9820 return spv; 9821 } 9822 update() { 9823 const swiper = this; 9824 if (!swiper || swiper.destroyed) return; 9825 const { 9826 snapGrid, 9827 params 9828 } = swiper; 9829 // Breakpoints 9830 if (params.breakpoints) { 9831 swiper.setBreakpoint(); 9832 } 9833 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 9834 if (imageEl.complete) { 9835 processLazyPreloader(swiper, imageEl); 9836 } 9837 }); 9838 swiper.updateSize(); 9839 swiper.updateSlides(); 9840 swiper.updateProgress(); 9841 swiper.updateSlidesClasses(); 9842 function setTranslate() { 9843 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 9844 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 9845 swiper.setTranslate(newTranslate); 9846 swiper.updateActiveIndex(); 9847 swiper.updateSlidesClasses(); 9848 } 9849 let translated; 9850 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 9851 setTranslate(); 9852 if (params.autoHeight) { 9853 swiper.updateAutoHeight(); 9854 } 9855 } else { 9856 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 9857 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 9858 translated = swiper.slideTo(slides.length - 1, 0, false, true); 9859 } else { 9860 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 9861 } 9862 if (!translated) { 9863 setTranslate(); 9864 } 9865 } 9866 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 9867 swiper.checkOverflow(); 9868 } 9869 swiper.emit('update'); 9870 } 9871 changeDirection(newDirection, needUpdate) { 9872 if (needUpdate === void 0) { 9873 needUpdate = true; 9874 } 9875 const swiper = this; 9876 const currentDirection = swiper.params.direction; 9877 if (!newDirection) { 9878 // eslint-disable-next-line 9879 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 9880 } 9881 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 9882 return swiper; 9883 } 9884 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 9885 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 9886 swiper.emitContainerClasses(); 9887 swiper.params.direction = newDirection; 9888 swiper.slides.forEach(slideEl => { 9889 if (newDirection === 'vertical') { 9890 slideEl.style.width = ''; 9891 } else { 9892 slideEl.style.height = ''; 9893 } 9894 }); 9895 swiper.emit('changeDirection'); 9896 if (needUpdate) swiper.update(); 9897 return swiper; 9898 } 9899 changeLanguageDirection(direction) { 9900 const swiper = this; 9901 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 9902 swiper.rtl = direction === 'rtl'; 9903 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 9904 if (swiper.rtl) { 9905 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 9906 swiper.el.dir = 'rtl'; 9907 } else { 9908 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 9909 swiper.el.dir = 'ltr'; 9910 } 9911 swiper.update(); 9912 } 9913 mount(element) { 9914 const swiper = this; 9915 if (swiper.mounted) return true; 9916 9917 // Find el 9918 let el = element || swiper.params.el; 9919 if (typeof el === 'string') { 9920 el = document.querySelector(el); 9921 } 9922 if (!el) { 9923 return false; 9924 } 9925 el.swiper = swiper; 9926 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 9927 swiper.isElement = true; 9928 } 9929 const getWrapperSelector = () => { 9930 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 9931 }; 9932 const getWrapper = () => { 9933 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 9934 const res = el.shadowRoot.querySelector(getWrapperSelector()); 9935 // Children needs to return slot items 9936 return res; 9937 } 9938 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 9939 }; 9940 // Find Wrapper 9941 let wrapperEl = getWrapper(); 9942 if (!wrapperEl && swiper.params.createElements) { 9943 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 9944 el.append(wrapperEl); 9945 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 9946 wrapperEl.append(slideEl); 9947 }); 9948 } 9949 Object.assign(swiper, { 9950 el, 9951 wrapperEl, 9952 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 9953 hostEl: swiper.isElement ? el.parentNode.host : el, 9954 mounted: true, 9955 // RTL 9956 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl', 9957 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'), 9958 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box' 9959 }); 9960 return true; 9961 } 9962 init(el) { 9963 const swiper = this; 9964 if (swiper.initialized) return swiper; 9965 const mounted = swiper.mount(el); 9966 if (mounted === false) return swiper; 9967 swiper.emit('beforeInit'); 9968 9969 // Set breakpoint 9970 if (swiper.params.breakpoints) { 9971 swiper.setBreakpoint(); 9972 } 9973 9974 // Add Classes 9975 swiper.addClasses(); 9976 9977 // Update size 9978 swiper.updateSize(); 9979 9980 // Update slides 9981 swiper.updateSlides(); 9982 if (swiper.params.watchOverflow) { 9983 swiper.checkOverflow(); 9984 } 9985 9986 // Set Grab Cursor 9987 if (swiper.params.grabCursor && swiper.enabled) { 9988 swiper.setGrabCursor(); 9989 } 9990 9991 // Slide To Initial Slide 9992 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 9993 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 9994 } else { 9995 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 9996 } 9997 9998 // Create loop 9999 if (swiper.params.loop) { 10000 swiper.loopCreate(); 10001 } 10002 10003 // Attach events 10004 swiper.attachEvents(); 10005 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 10006 if (swiper.isElement) { 10007 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 10008 } 10009 lazyElements.forEach(imageEl => { 10010 if (imageEl.complete) { 10011 processLazyPreloader(swiper, imageEl); 10012 } else { 10013 imageEl.addEventListener('load', e => { 10014 processLazyPreloader(swiper, e.target); 10015 }); 10016 } 10017 }); 10018 preload(swiper); 10019 10020 // Init Flag 10021 swiper.initialized = true; 10022 preload(swiper); 10023 10024 // Emit 10025 swiper.emit('init'); 10026 swiper.emit('afterInit'); 10027 return swiper; 10028 } 10029 destroy(deleteInstance, cleanStyles) { 10030 if (deleteInstance === void 0) { 10031 deleteInstance = true; 10032 } 10033 if (cleanStyles === void 0) { 10034 cleanStyles = true; 10035 } 10036 const swiper = this; 10037 const { 10038 params, 10039 el, 10040 wrapperEl, 10041 slides 10042 } = swiper; 10043 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 10044 return null; 10045 } 10046 swiper.emit('beforeDestroy'); 10047 10048 // Init Flag 10049 swiper.initialized = false; 10050 10051 // Detach events 10052 swiper.detachEvents(); 10053 10054 // Destroy loop 10055 if (params.loop) { 10056 swiper.loopDestroy(); 10057 } 10058 10059 // Cleanup styles 10060 if (cleanStyles) { 10061 swiper.removeClasses(); 10062 if (el && typeof el !== 'string') { 10063 el.removeAttribute('style'); 10064 } 10065 if (wrapperEl) { 10066 wrapperEl.removeAttribute('style'); 10067 } 10068 if (slides && slides.length) { 10069 slides.forEach(slideEl => { 10070 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 10071 slideEl.removeAttribute('style'); 10072 slideEl.removeAttribute('data-swiper-slide-index'); 10073 }); 10074 } 10075 } 10076 swiper.emit('destroy'); 10077 10078 // Detach emitter events 10079 Object.keys(swiper.eventsListeners).forEach(eventName => { 10080 swiper.off(eventName); 10081 }); 10082 if (deleteInstance !== false) { 10083 if (swiper.el && typeof swiper.el !== 'string') { 10084 swiper.el.swiper = null; 10085 } 10086 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper); 10087 } 10088 swiper.destroyed = true; 10089 return null; 10090 } 10091 static extendDefaults(newDefaults) { 10092 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults); 10093 } 10094 static get extendedDefaults() { 10095 return extendedDefaults; 10096 } 10097 static get defaults() { 10098 return defaults; 10099 } 10100 static installModule(mod) { 10101 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 10102 const modules = Swiper.prototype.__modules__; 10103 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 10104 modules.push(mod); 10105 } 10106 } 10107 static use(module) { 10108 if (Array.isArray(module)) { 10109 module.forEach(m => Swiper.installModule(m)); 10110 return Swiper; 10111 } 10112 Swiper.installModule(module); 10113 return Swiper; 10114 } 10115} 10116Object.keys(prototypes).forEach(prototypeGroup => { 10117 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 10118 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 10119 }); 10120}); 10121Swiper.use([Resize, Observer]); 10122 10123 10124 10125 10126/***/ }), 10127
vendor: 12,360 bytes, lines 10128-10480
10128/***/ "./node_modules/swiper/shared/utils.mjs": 10129/*!**********************************************!*\ 10130 !*** ./node_modules/swiper/shared/utils.mjs ***! 10131 \**********************************************/ 10132/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10133 10134__webpack_require__.r(__webpack_exports__); 10135/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10136/* harmony export */ a: () => (/* binding */ elementParents), 10137/* harmony export */ b: () => (/* binding */ elementOffset), 10138/* harmony export */ c: () => (/* binding */ createElement), 10139/* harmony export */ d: () => (/* binding */ now), 10140/* harmony export */ e: () => (/* binding */ elementChildren), 10141/* harmony export */ f: () => (/* binding */ elementOuterSize), 10142/* harmony export */ g: () => (/* binding */ getSlideTransformEl), 10143/* harmony export */ h: () => (/* binding */ elementIndex), 10144/* harmony export */ i: () => (/* binding */ classesToTokens), 10145/* harmony export */ j: () => (/* binding */ getTranslate), 10146/* harmony export */ k: () => (/* binding */ elementTransitionEnd), 10147/* harmony export */ l: () => (/* binding */ isObject), 10148/* harmony export */ m: () => (/* binding */ makeElementsArray), 10149/* harmony export */ n: () => (/* binding */ nextTick), 10150/* harmony export */ o: () => (/* binding */ getRotateFix), 10151/* harmony export */ p: () => (/* binding */ elementStyle), 10152/* harmony export */ q: () => (/* binding */ elementNextAll), 10153/* harmony export */ r: () => (/* binding */ elementPrevAll), 10154/* harmony export */ s: () => (/* binding */ setCSSProperty), 10155/* harmony export */ t: () => (/* binding */ animateCSSModeScroll), 10156/* harmony export */ u: () => (/* binding */ showWarning), 10157/* harmony export */ v: () => (/* binding */ elementIsChildOf), 10158/* harmony export */ w: () => (/* binding */ extend), 10159/* harmony export */ x: () => (/* binding */ deleteProps) 10160/* harmony export */ }); 10161/* 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"); 10162 10163 10164function classesToTokens(classes) { 10165 if (classes === void 0) { 10166 classes = ''; 10167 } 10168 return classes.trim().split(' ').filter(c => !!c.trim()); 10169} 10170 10171function deleteProps(obj) { 10172 const object = obj; 10173 Object.keys(object).forEach(key => { 10174 try { 10175 object[key] = null; 10176 } catch (e) { 10177 // no getter for object 10178 } 10179 try { 10180 delete object[key]; 10181 } catch (e) { 10182 // something got wrong 10183 } 10184 }); 10185} 10186function nextTick(callback, delay) { 10187 if (delay === void 0) { 10188 delay = 0; 10189 } 10190 return setTimeout(callback, delay); 10191} 10192function now() { 10193 return Date.now(); 10194} 10195function getComputedStyle(el) { 10196 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10197 let style; 10198 if (window.getComputedStyle) { 10199 style = window.getComputedStyle(el, null); 10200 } 10201 if (!style && el.currentStyle) { 10202 style = el.currentStyle; 10203 } 10204 if (!style) { 10205 style = el.style; 10206 } 10207 return style; 10208} 10209function getTranslate(el, axis) { 10210 if (axis === void 0) { 10211 axis = 'x'; 10212 } 10213 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10214 let matrix; 10215 let curTransform; 10216 let transformMatrix; 10217 const curStyle = getComputedStyle(el); 10218 if (window.WebKitCSSMatrix) { 10219 curTransform = curStyle.transform || curStyle.webkitTransform; 10220 if (curTransform.split(',').length > 6) { 10221 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 10222 } 10223 // Some old versions of Webkit choke when 'none' is passed; pass 10224 // empty string instead in this case 10225 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 10226 } else { 10227 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 10228 matrix = transformMatrix.toString().split(','); 10229 } 10230 if (axis === 'x') { 10231 // Latest Chrome and webkits Fix 10232 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 10233 // Crazy IE10 Matrix 10234 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 10235 // Normal Browsers 10236 else curTransform = parseFloat(matrix[4]); 10237 } 10238 if (axis === 'y') { 10239 // Latest Chrome and webkits Fix 10240 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 10241 // Crazy IE10 Matrix 10242 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 10243 // Normal Browsers 10244 else curTransform = parseFloat(matrix[5]); 10245 } 10246 return curTransform || 0; 10247} 10248function isObject(o) { 10249 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 10250} 10251function isNode(node) { 10252 // eslint-disable-next-line 10253 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 10254 return node instanceof HTMLElement; 10255 } 10256 return node && (node.nodeType === 1 || node.nodeType === 11); 10257} 10258function extend() { 10259 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 10260 const noExtend = ['__proto__', 'constructor', 'prototype']; 10261 for (let i = 1; i < arguments.length; i += 1) { 10262 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 10263 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 10264 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 10265 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 10266 const nextKey = keysArray[nextIndex]; 10267 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 10268 if (desc !== undefined && desc.enumerable) { 10269 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10270 if (nextSource[nextKey].__swiper__) { 10271 to[nextKey] = nextSource[nextKey]; 10272 } else { 10273 extend(to[nextKey], nextSource[nextKey]); 10274 } 10275 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10276 to[nextKey] = {}; 10277 if (nextSource[nextKey].__swiper__) { 10278 to[nextKey] = nextSource[nextKey]; 10279 } else { 10280 extend(to[nextKey], nextSource[nextKey]); 10281 } 10282 } else { 10283 to[nextKey] = nextSource[nextKey]; 10284 } 10285 } 10286 } 10287 } 10288 } 10289 return to; 10290} 10291function setCSSProperty(el, varName, varValue) { 10292 el.style.setProperty(varName, varValue); 10293} 10294function animateCSSModeScroll(_ref) { 10295 let { 10296 swiper, 10297 targetPosition, 10298 side 10299 } = _ref; 10300 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10301 const startPosition = -swiper.translate; 10302 let startTime = null; 10303 let time; 10304 const duration = swiper.params.speed; 10305 swiper.wrapperEl.style.scrollSnapType = 'none'; 10306 window.cancelAnimationFrame(swiper.cssModeFrameID); 10307 const dir = targetPosition > startPosition ? 'next' : 'prev'; 10308 const isOutOfBound = (current, target) => { 10309 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 10310 }; 10311 const animate = () => { 10312 time = new Date().getTime(); 10313 if (startTime === null) { 10314 startTime = time; 10315 } 10316 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 10317 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 10318 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 10319 if (isOutOfBound(currentPosition, targetPosition)) { 10320 currentPosition = targetPosition; 10321 } 10322 swiper.wrapperEl.scrollTo({ 10323 [side]: currentPosition 10324 }); 10325 if (isOutOfBound(currentPosition, targetPosition)) { 10326 swiper.wrapperEl.style.overflow = 'hidden'; 10327 swiper.wrapperEl.style.scrollSnapType = ''; 10328 setTimeout(() => { 10329 swiper.wrapperEl.style.overflow = ''; 10330 swiper.wrapperEl.scrollTo({ 10331 [side]: currentPosition 10332 }); 10333 }); 10334 window.cancelAnimationFrame(swiper.cssModeFrameID); 10335 return; 10336 } 10337 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 10338 }; 10339 animate(); 10340} 10341function getSlideTransformEl(slideEl) { 10342 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 10343} 10344function elementChildren(element, selector) { 10345 if (selector === void 0) { 10346 selector = ''; 10347 } 10348 const children = [...element.children]; 10349 if (element instanceof HTMLSlotElement) { 10350 children.push(...element.assignedElements()); 10351 } 10352 if (!selector) { 10353 return children; 10354 } 10355 return children.filter(el => el.matches(selector)); 10356} 10357function elementIsChildOf(el, parent) { 10358 const isChild = parent.contains(el); 10359 if (!isChild && parent instanceof HTMLSlotElement) { 10360 const children = [...parent.assignedElements()]; 10361 return children.includes(el); 10362 } 10363 return isChild; 10364} 10365function showWarning(text) { 10366 try { 10367 console.warn(text); 10368 return; 10369 } catch (err) { 10370 // err 10371 } 10372} 10373function createElement(tag, classes) { 10374 if (classes === void 0) { 10375 classes = []; 10376 } 10377 const el = document.createElement(tag); 10378 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 10379 return el; 10380} 10381function elementOffset(el) { 10382 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10383 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 10384 const box = el.getBoundingClientRect(); 10385 const body = document.body; 10386 const clientTop = el.clientTop || body.clientTop || 0; 10387 const clientLeft = el.clientLeft || body.clientLeft || 0; 10388 const scrollTop = el === window ? window.scrollY : el.scrollTop; 10389 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 10390 return { 10391 top: box.top + scrollTop - clientTop, 10392 left: box.left + scrollLeft - clientLeft 10393 }; 10394} 10395function elementPrevAll(el, selector) { 10396 const prevEls = []; 10397 while (el.previousElementSibling) { 10398 const prev = el.previousElementSibling; // eslint-disable-line 10399 if (selector) { 10400 if (prev.matches(selector)) prevEls.push(prev); 10401 } else prevEls.push(prev); 10402 el = prev; 10403 } 10404 return prevEls; 10405} 10406function elementNextAll(el, selector) { 10407 const nextEls = []; 10408 while (el.nextElementSibling) { 10409 const next = el.nextElementSibling; // eslint-disable-line 10410 if (selector) { 10411 if (next.matches(selector)) nextEls.push(next); 10412 } else nextEls.push(next); 10413 el = next; 10414 } 10415 return nextEls; 10416} 10417function elementStyle(el, prop) { 10418 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10419 return window.getComputedStyle(el, null).getPropertyValue(prop); 10420} 10421function elementIndex(el) { 10422 let child = el; 10423 let i; 10424 if (child) { 10425 i = 0; 10426 // eslint-disable-next-line 10427 while ((child = child.previousSibling) !== null) { 10428 if (child.nodeType === 1) i += 1; 10429 } 10430 return i; 10431 } 10432 return undefined; 10433} 10434function elementParents(el, selector) { 10435 const parents = []; // eslint-disable-line 10436 let parent = el.parentElement; // eslint-disable-line 10437 while (parent) { 10438 if (selector) { 10439 if (parent.matches(selector)) parents.push(parent); 10440 } else { 10441 parents.push(parent); 10442 } 10443 parent = parent.parentElement; 10444 } 10445 return parents; 10446} 10447function elementTransitionEnd(el, callback) { 10448 function fireCallBack(e) { 10449 if (e.target !== el) return; 10450 callback.call(el, e); 10451 el.removeEventListener('transitionend', fireCallBack); 10452 } 10453 if (callback) { 10454 el.addEventListener('transitionend', fireCallBack); 10455 } 10456} 10457function elementOuterSize(el, size, includeMargins) { 10458 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10459 if (includeMargins) { 10460 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')); 10461 } 10462 return el.offsetWidth; 10463} 10464function makeElementsArray(el) { 10465 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 10466} 10467function getRotateFix(swiper) { 10468 return v => { 10469 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 10470 return v + 0.001; 10471 } 10472 return v; 10473 }; 10474} 10475 10476 10477 10478 10479/***/ }), 10480
vendor: 1,090 bytes, lines 10481-10508
10481/***/ "./node_modules/swiper/swiper.mjs": 10482/*!****************************************!*\ 10483 !*** ./node_modules/swiper/swiper.mjs ***! 10484 \****************************************/ 10485/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10486 10487__webpack_require__.r(__webpack_exports__); 10488/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10489/* harmony export */ Swiper: () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S), 10490/* harmony export */ "default": () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S) 10491/* harmony export */ }); 10492/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 10493/** 10494 * Swiper 11.1.15 10495 * Most modern mobile touch slider and framework with hardware accelerated transitions 10496 * https://swiperjs.com 10497 * 10498 * Copyright 2014-2024 Vladimir Kharlampidi 10499 * 10500 * Released under the MIT License 10501 * 10502 * Released on: November 18, 2024 10503 */ 10504 10505 10506 10507 10508/***/ })
vendor: 6,410 bytes, lines 10508-10664
10508 10509 10510/******/ }); 10511/************************************************************************/ 10512/******/ // The module cache 10513/******/ var __webpack_module_cache__ = {}; 10514/******/ 10515/******/ // The require function 10516/******/ function __webpack_require__(moduleId) { 10517/******/ // Check if module is in cache 10518/******/ var cachedModule = __webpack_module_cache__[moduleId]; 10519/******/ if (cachedModule !== undefined) { 10520/******/ return cachedModule.exports; 10521/******/ } 10522/******/ // Create a new module (and put it into the cache) 10523/******/ var module = __webpack_module_cache__[moduleId] = { 10524/******/ // no module.id needed 10525/******/ // no module.loaded needed 10526/******/ exports: {} 10527/******/ }; 10528/******/ 10529/******/ // Execute the module function 10530/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 10531/******/ 10532/******/ // Return the exports of the module 10533/******/ return module.exports; 10534/******/ } 10535/******/ 10536/******/ // expose the modules object (__webpack_modules__) 10537/******/ __webpack_require__.m = __webpack_modules__; 10538/******/ 10539/************************************************************************/ 10540/******/ /* webpack/runtime/chunk loaded */ 10541/******/ (() => { 10542/******/ var deferred = []; 10543/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { 10544/******/ if(chunkIds) { 10545/******/ priority = priority || 0; 10546/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; 10547/******/ deferred[i] = [chunkIds, fn, priority]; 10548/******/ return; 10549/******/ } 10550/******/ var notFulfilled = Infinity; 10551/******/ for (var i = 0; i < deferred.length; i++) { 10552/******/ var [chunkIds, fn, priority] = deferred[i]; 10553/******/ var fulfilled = true; 10554/******/ for (var j = 0; j < chunkIds.length; j++) { 10555/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { 10556/******/ chunkIds.splice(j--, 1); 10557/******/ } else { 10558/******/ fulfilled = false; 10559/******/ if(priority < notFulfilled) notFulfilled = priority; 10560/******/ } 10561/******/ } 10562/******/ if(fulfilled) { 10563/******/ deferred.splice(i--, 1) 10564/******/ var r = fn(); 10565/******/ if (r !== undefined) result = r; 10566/******/ } 10567/******/ } 10568/******/ return result; 10569/******/ }; 10570/******/ })(); 10571/******/ 10572/******/ /* webpack/runtime/define property getters */ 10573/******/ (() => { 10574/******/ // define getter functions for harmony exports 10575/******/ __webpack_require__.d = (exports, definition) => { 10576/******/ for(var key in definition) { 10577/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 10578/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 10579/******/ } 10580/******/ } 10581/******/ }; 10582/******/ })(); 10583/******/ 10584/******/ /* webpack/runtime/hasOwnProperty shorthand */ 10585/******/ (() => { 10586/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 10587/******/ })(); 10588/******/ 10589/******/ /* webpack/runtime/make namespace object */ 10590/******/ (() => { 10591/******/ // define __esModule on exports 10592/******/ __webpack_require__.r = (exports) => { 10593/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 10594/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 10595/******/ } 10596/******/ Object.defineProperty(exports, '__esModule', { value: true }); 10597/******/ }; 10598/******/ })(); 10599/******/ 10600/******/ /* webpack/runtime/jsonp chunk loading */ 10601/******/ (() => { 10602/******/ // no baseURI 10603/******/ 10604/******/ // object to store loaded and loading chunks 10605/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 10606/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 10607/******/ var installedChunks = { 10608/******/ "banner-hero/view": 0, 10609/******/ "banner-hero/style-view": 0 10610/******/ }; 10611/******/ 10612/******/ // no chunk on demand loading 10613/******/ 10614/******/ // no prefetching 10615/******/ 10616/******/ // no preloaded 10617/******/ 10618/******/ // no HMR 10619/******/ 10620/******/ // no HMR manifest 10621/******/ 10622/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); 10623/******/ 10624/******/ // install a JSONP callback for chunk loading 10625/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 10626/******/ var [chunkIds, moreModules, runtime] = data; 10627/******/ // add "moreModules" to the modules object, 10628/******/ // then flag all "chunkIds" as loaded and fire callback 10629/******/ var moduleId, chunkId, i = 0; 10630/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 10631/******/ for(moduleId in moreModules) { 10632/******/ if(__webpack_require__.o(moreModules, moduleId)) { 10633/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 10634/******/ } 10635/******/ } 10636/******/ if(runtime) var result = runtime(__webpack_require__); 10637/******/ } 10638/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 10639/******/ for(;i < chunkIds.length; i++) { 10640/******/ chunkId = chunkIds[i]; 10641/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 10642/******/ installedChunks[chunkId][0](); 10643/******/ } 10644/******/ installedChunks[chunkId] = 0; 10645/******/ } 10646/******/ return __webpack_require__.O(result); 10647/******/ } 10648/******/ 10649/******/ var chunkLoadingGlobal = globalThis["webpackChunkKeraton"] = globalThis["webpackChunkKeraton"] || []; 10650/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 10651/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 10652/******/ })(); 10653/******/ 10654/************************************************************************/ 10655/******/ 10656/******/ // startup 10657/******/ // Load entry module and return exports 10658/******/ // This entry module depends on other loaded chunks and execution need to be delayed 10659/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["banner-hero/style-view"], () => (__webpack_require__("./src/blocks/banner-hero/view.js"))) 10660/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); 10661/******/ 10662/******/ })() 10663; 10664//# sourceMappingURL=view.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.