1"use strict"; 2(globalThis["webpackChunkwpnest"] = globalThis["webpackChunkwpnest"] || []).push([["library/swiper"],{ 3
vendor: 14,078 bytes, lines 4-398
4/***/ "./node_modules/swiper/modules/a11y.mjs": 5/*!**********************************************!*\ 6 !*** ./node_modules/swiper/modules/a11y.mjs ***! 7 \**********************************************/ 8/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 9 10__webpack_require__.r(__webpack_exports__); 11/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12/* harmony export */ "default": () => (/* binding */ A11y) 13/* harmony export */ }); 14/* 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"); 15/* 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"); 16/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17 18 19 20 21function A11y(_ref) { 22 let { 23 swiper, 24 extendParams, 25 on 26 } = _ref; 27 extendParams({ 28 a11y: { 29 enabled: true, 30 notificationClass: 'swiper-notification', 31 prevSlideMessage: 'Previous slide', 32 nextSlideMessage: 'Next slide', 33 firstSlideMessage: 'This is the first slide', 34 lastSlideMessage: 'This is the last slide', 35 paginationBulletMessage: 'Go to slide {{index}}', 36 slideLabelMessage: '{{index}} / {{slidesLength}}', 37 containerMessage: null, 38 containerRoleDescriptionMessage: null, 39 containerRole: null, 40 itemRoleDescriptionMessage: null, 41 slideRole: 'group', 42 id: null, 43 scrollOnFocus: true 44 } 45 }); 46 swiper.a11y = { 47 clicked: false 48 }; 49 let liveRegion = null; 50 let preventFocusHandler; 51 let focusTargetSlideEl; 52 let visibilityChangedTimestamp = new Date().getTime(); 53 function notify(message) { 54 const notification = liveRegion; 55 if (notification.length === 0) return; 56 notification.innerHTML = ''; 57 notification.innerHTML = message; 58 } 59 function getRandomNumber(size) { 60 if (size === void 0) { 61 size = 16; 62 } 63 const randomChar = () => Math.round(16 * Math.random()).toString(16); 64 return 'x'.repeat(size).replace(/x/g, randomChar); 65 } 66 function makeElFocusable(el) { 67 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 68 el.forEach(subEl => { 69 subEl.setAttribute('tabIndex', '0'); 70 }); 71 } 72 function makeElNotFocusable(el) { 73 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 74 el.forEach(subEl => { 75 subEl.setAttribute('tabIndex', '-1'); 76 }); 77 } 78 function addElRole(el, role) { 79 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 80 el.forEach(subEl => { 81 subEl.setAttribute('role', role); 82 }); 83 } 84 function addElRoleDescription(el, description) { 85 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 86 el.forEach(subEl => { 87 subEl.setAttribute('aria-roledescription', description); 88 }); 89 } 90 function addElControls(el, controls) { 91 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 92 el.forEach(subEl => { 93 subEl.setAttribute('aria-controls', controls); 94 }); 95 } 96 function addElLabel(el, label) { 97 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 98 el.forEach(subEl => { 99 subEl.setAttribute('aria-label', label); 100 }); 101 } 102 function addElId(el, id) { 103 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 104 el.forEach(subEl => { 105 subEl.setAttribute('id', id); 106 }); 107 } 108 function addElLive(el, live) { 109 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 110 el.forEach(subEl => { 111 subEl.setAttribute('aria-live', live); 112 }); 113 } 114 function disableEl(el) { 115 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 116 el.forEach(subEl => { 117 subEl.setAttribute('aria-disabled', true); 118 }); 119 } 120 function enableEl(el) { 121 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 122 el.forEach(subEl => { 123 subEl.setAttribute('aria-disabled', false); 124 }); 125 } 126 function onEnterOrSpaceKey(e) { 127 if (e.keyCode !== 13 && e.keyCode !== 32) return; 128 const params = swiper.params.a11y; 129 const targetEl = e.target; 130 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 131 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 132 } 133 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 134 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 135 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 136 if (nextEls.includes(targetEl)) { 137 if (!(swiper.isEnd && !swiper.params.loop)) { 138 swiper.slideNext(); 139 } 140 if (swiper.isEnd) { 141 notify(params.lastSlideMessage); 142 } else { 143 notify(params.nextSlideMessage); 144 } 145 } 146 if (prevEls.includes(targetEl)) { 147 if (!(swiper.isBeginning && !swiper.params.loop)) { 148 swiper.slidePrev(); 149 } 150 if (swiper.isBeginning) { 151 notify(params.firstSlideMessage); 152 } else { 153 notify(params.prevSlideMessage); 154 } 155 } 156 } 157 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 158 targetEl.click(); 159 } 160 } 161 function updateNavigation() { 162 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 163 const { 164 nextEl, 165 prevEl 166 } = swiper.navigation; 167 if (prevEl) { 168 if (swiper.isBeginning) { 169 disableEl(prevEl); 170 makeElNotFocusable(prevEl); 171 } else { 172 enableEl(prevEl); 173 makeElFocusable(prevEl); 174 } 175 } 176 if (nextEl) { 177 if (swiper.isEnd) { 178 disableEl(nextEl); 179 makeElNotFocusable(nextEl); 180 } else { 181 enableEl(nextEl); 182 makeElFocusable(nextEl); 183 } 184 } 185 } 186 function hasPagination() { 187 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 188 } 189 function hasClickablePagination() { 190 return hasPagination() && swiper.params.pagination.clickable; 191 } 192 function updatePagination() { 193 const params = swiper.params.a11y; 194 if (!hasPagination()) return; 195 swiper.pagination.bullets.forEach(bulletEl => { 196 if (swiper.params.pagination.clickable) { 197 makeElFocusable(bulletEl); 198 if (!swiper.params.pagination.renderBullet) { 199 addElRole(bulletEl, 'button'); 200 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1)); 201 } 202 } 203 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 204 bulletEl.setAttribute('aria-current', 'true'); 205 } else { 206 bulletEl.removeAttribute('aria-current'); 207 } 208 }); 209 } 210 const initNavEl = (el, wrapperId, message) => { 211 makeElFocusable(el); 212 if (el.tagName !== 'BUTTON') { 213 addElRole(el, 'button'); 214 el.addEventListener('keydown', onEnterOrSpaceKey); 215 } 216 addElLabel(el, message); 217 addElControls(el, wrapperId); 218 }; 219 const handlePointerDown = e => { 220 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 221 preventFocusHandler = true; 222 } 223 swiper.a11y.clicked = true; 224 }; 225 const handlePointerUp = () => { 226 preventFocusHandler = false; 227 requestAnimationFrame(() => { 228 requestAnimationFrame(() => { 229 if (!swiper.destroyed) { 230 swiper.a11y.clicked = false; 231 } 232 }); 233 }); 234 }; 235 const onVisibilityChange = e => { 236 visibilityChangedTimestamp = new Date().getTime(); 237 }; 238 const handleFocus = e => { 239 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 240 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 241 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 242 if (!slideEl || !swiper.slides.includes(slideEl)) return; 243 focusTargetSlideEl = slideEl; 244 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 245 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 246 if (isActive || isVisible) return; 247 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 248 if (swiper.isHorizontal()) { 249 swiper.el.scrollLeft = 0; 250 } else { 251 swiper.el.scrollTop = 0; 252 } 253 requestAnimationFrame(() => { 254 if (preventFocusHandler) return; 255 if (swiper.params.loop) { 256 swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); 257 } else { 258 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 259 } 260 preventFocusHandler = false; 261 }); 262 }; 263 const initSlides = () => { 264 const params = swiper.params.a11y; 265 if (params.itemRoleDescriptionMessage) { 266 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 267 } 268 if (params.slideRole) { 269 addElRole(swiper.slides, params.slideRole); 270 } 271 const slidesLength = swiper.slides.length; 272 if (params.slideLabelMessage) { 273 swiper.slides.forEach((slideEl, index) => { 274 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 275 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 276 addElLabel(slideEl, ariaLabelMessage); 277 }); 278 } 279 }; 280 const init = () => { 281 const params = swiper.params.a11y; 282 swiper.el.append(liveRegion); 283 284 // Container 285 const containerEl = swiper.el; 286 if (params.containerRoleDescriptionMessage) { 287 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 288 } 289 if (params.containerMessage) { 290 addElLabel(containerEl, params.containerMessage); 291 } 292 if (params.containerRole) { 293 addElRole(containerEl, params.containerRole); 294 } 295 296 // Wrapper 297 const wrapperEl = swiper.wrapperEl; 298 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 299 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 300 addElId(wrapperEl, wrapperId); 301 addElLive(wrapperEl, live); 302 303 // Slide 304 initSlides(); 305 306 // Navigation 307 let { 308 nextEl, 309 prevEl 310 } = swiper.navigation ? swiper.navigation : {}; 311 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 312 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 313 if (nextEl) { 314 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 315 } 316 if (prevEl) { 317 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 318 } 319 320 // Pagination 321 if (hasClickablePagination()) { 322 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 323 paginationEl.forEach(el => { 324 el.addEventListener('keydown', onEnterOrSpaceKey); 325 }); 326 } 327 328 // Tab focus 329 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 330 document.addEventListener('visibilitychange', onVisibilityChange); 331 swiper.el.addEventListener('focus', handleFocus, true); 332 swiper.el.addEventListener('focus', handleFocus, true); 333 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 334 swiper.el.addEventListener('pointerup', handlePointerUp, true); 335 }; 336 function destroy() { 337 if (liveRegion) liveRegion.remove(); 338 let { 339 nextEl, 340 prevEl 341 } = swiper.navigation ? swiper.navigation : {}; 342 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 343 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 344 if (nextEl) { 345 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 346 } 347 if (prevEl) { 348 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 349 } 350 351 // Pagination 352 if (hasClickablePagination()) { 353 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 354 paginationEl.forEach(el => { 355 el.removeEventListener('keydown', onEnterOrSpaceKey); 356 }); 357 } 358 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 359 document.removeEventListener('visibilitychange', onVisibilityChange); 360 // Tab focus 361 if (swiper.el && typeof swiper.el !== 'string') { 362 swiper.el.removeEventListener('focus', handleFocus, true); 363 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 364 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 365 } 366 } 367 on('beforeInit', () => { 368 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 369 liveRegion.setAttribute('aria-live', 'assertive'); 370 liveRegion.setAttribute('aria-atomic', 'true'); 371 }); 372 on('afterInit', () => { 373 if (!swiper.params.a11y.enabled) return; 374 init(); 375 }); 376 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 377 if (!swiper.params.a11y.enabled) return; 378 initSlides(); 379 }); 380 on('fromEdge toEdge afterInit lock unlock', () => { 381 if (!swiper.params.a11y.enabled) return; 382 updateNavigation(); 383 }); 384 on('paginationUpdate', () => { 385 if (!swiper.params.a11y.enabled) return; 386 updatePagination(); 387 }); 388 on('destroy', () => { 389 if (!swiper.params.a11y.enabled) return; 390 destroy(); 391 }); 392} 393 394 395 396 397/***/ }), 398
vendor: 10,030 bytes, lines 399-717
399/***/ "./node_modules/swiper/modules/autoplay.mjs": 400/*!**************************************************!*\ 401 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 402 \**************************************************/ 403/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 404 405__webpack_require__.r(__webpack_exports__); 406/* harmony export */ __webpack_require__.d(__webpack_exports__, { 407/* harmony export */ "default": () => (/* binding */ Autoplay) 408/* harmony export */ }); 409/* 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"); 410 411 412/* eslint no-underscore-dangle: "off" */ 413/* eslint no-use-before-define: "off" */ 414function Autoplay(_ref) { 415 let { 416 swiper, 417 extendParams, 418 on, 419 emit, 420 params 421 } = _ref; 422 swiper.autoplay = { 423 running: false, 424 paused: false, 425 timeLeft: 0 426 }; 427 extendParams({ 428 autoplay: { 429 enabled: false, 430 delay: 3000, 431 waitForTransition: true, 432 disableOnInteraction: false, 433 stopOnLastSlide: false, 434 reverseDirection: false, 435 pauseOnMouseEnter: false 436 } 437 }); 438 let timeout; 439 let raf; 440 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 441 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 442 let autoplayTimeLeft; 443 let autoplayStartTime = new Date().getTime(); 444 let wasPaused; 445 let isTouched; 446 let pausedByTouch; 447 let touchStartTimeout; 448 let slideChanged; 449 let pausedByInteraction; 450 let pausedByPointerEnter; 451 function onTransitionEnd(e) { 452 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 453 if (e.target !== swiper.wrapperEl) return; 454 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 455 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 456 return; 457 } 458 resume(); 459 } 460 const calcTimeLeft = () => { 461 if (swiper.destroyed || !swiper.autoplay.running) return; 462 if (swiper.autoplay.paused) { 463 wasPaused = true; 464 } else if (wasPaused) { 465 autoplayDelayCurrent = autoplayTimeLeft; 466 wasPaused = false; 467 } 468 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 469 swiper.autoplay.timeLeft = timeLeft; 470 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 471 raf = requestAnimationFrame(() => { 472 calcTimeLeft(); 473 }); 474 }; 475 const getSlideDelay = () => { 476 let activeSlideEl; 477 if (swiper.virtual && swiper.params.virtual.enabled) { 478 activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); 479 } else { 480 activeSlideEl = swiper.slides[swiper.activeIndex]; 481 } 482 if (!activeSlideEl) return undefined; 483 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 484 return currentSlideDelay; 485 }; 486 const run = delayForce => { 487 if (swiper.destroyed || !swiper.autoplay.running) return; 488 cancelAnimationFrame(raf); 489 calcTimeLeft(); 490 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 491 autoplayDelayTotal = swiper.params.autoplay.delay; 492 autoplayDelayCurrent = swiper.params.autoplay.delay; 493 const currentSlideDelay = getSlideDelay(); 494 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 495 delay = currentSlideDelay; 496 autoplayDelayTotal = currentSlideDelay; 497 autoplayDelayCurrent = currentSlideDelay; 498 } 499 autoplayTimeLeft = delay; 500 const speed = swiper.params.speed; 501 const proceed = () => { 502 if (!swiper || swiper.destroyed) return; 503 if (swiper.params.autoplay.reverseDirection) { 504 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 505 swiper.slidePrev(speed, true, true); 506 emit('autoplay'); 507 } else if (!swiper.params.autoplay.stopOnLastSlide) { 508 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 509 emit('autoplay'); 510 } 511 } else { 512 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 513 swiper.slideNext(speed, true, true); 514 emit('autoplay'); 515 } else if (!swiper.params.autoplay.stopOnLastSlide) { 516 swiper.slideTo(0, speed, true, true); 517 emit('autoplay'); 518 } 519 } 520 if (swiper.params.cssMode) { 521 autoplayStartTime = new Date().getTime(); 522 requestAnimationFrame(() => { 523 run(); 524 }); 525 } 526 }; 527 if (delay > 0) { 528 clearTimeout(timeout); 529 timeout = setTimeout(() => { 530 proceed(); 531 }, delay); 532 } else { 533 requestAnimationFrame(() => { 534 proceed(); 535 }); 536 } 537 538 // eslint-disable-next-line 539 return delay; 540 }; 541 const start = () => { 542 autoplayStartTime = new Date().getTime(); 543 swiper.autoplay.running = true; 544 run(); 545 emit('autoplayStart'); 546 }; 547 const stop = () => { 548 swiper.autoplay.running = false; 549 clearTimeout(timeout); 550 cancelAnimationFrame(raf); 551 emit('autoplayStop'); 552 }; 553 const pause = (internal, reset) => { 554 if (swiper.destroyed || !swiper.autoplay.running) return; 555 clearTimeout(timeout); 556 if (!internal) { 557 pausedByInteraction = true; 558 } 559 const proceed = () => { 560 emit('autoplayPause'); 561 if (swiper.params.autoplay.waitForTransition) { 562 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 563 } else { 564 resume(); 565 } 566 }; 567 swiper.autoplay.paused = true; 568 if (reset) { 569 if (slideChanged) { 570 autoplayTimeLeft = swiper.params.autoplay.delay; 571 } 572 slideChanged = false; 573 proceed(); 574 return; 575 } 576 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 577 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 578 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 579 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 580 proceed(); 581 }; 582 const resume = () => { 583 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 584 autoplayStartTime = new Date().getTime(); 585 if (pausedByInteraction) { 586 pausedByInteraction = false; 587 run(autoplayTimeLeft); 588 } else { 589 run(); 590 } 591 swiper.autoplay.paused = false; 592 emit('autoplayResume'); 593 }; 594 const onVisibilityChange = () => { 595 if (swiper.destroyed || !swiper.autoplay.running) return; 596 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 597 if (document.visibilityState === 'hidden') { 598 pausedByInteraction = true; 599 pause(true); 600 } 601 if (document.visibilityState === 'visible') { 602 resume(); 603 } 604 }; 605 const onPointerEnter = e => { 606 if (e.pointerType !== 'mouse') return; 607 pausedByInteraction = true; 608 pausedByPointerEnter = true; 609 if (swiper.animating || swiper.autoplay.paused) return; 610 pause(true); 611 }; 612 const onPointerLeave = e => { 613 if (e.pointerType !== 'mouse') return; 614 pausedByPointerEnter = false; 615 if (swiper.autoplay.paused) { 616 resume(); 617 } 618 }; 619 const attachMouseEvents = () => { 620 if (swiper.params.autoplay.pauseOnMouseEnter) { 621 swiper.el.addEventListener('pointerenter', onPointerEnter); 622 swiper.el.addEventListener('pointerleave', onPointerLeave); 623 } 624 }; 625 const detachMouseEvents = () => { 626 if (swiper.el && typeof swiper.el !== 'string') { 627 swiper.el.removeEventListener('pointerenter', onPointerEnter); 628 swiper.el.removeEventListener('pointerleave', onPointerLeave); 629 } 630 }; 631 const attachDocumentEvents = () => { 632 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 633 document.addEventListener('visibilitychange', onVisibilityChange); 634 }; 635 const detachDocumentEvents = () => { 636 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 637 document.removeEventListener('visibilitychange', onVisibilityChange); 638 }; 639 on('init', () => { 640 if (swiper.params.autoplay.enabled) { 641 attachMouseEvents(); 642 attachDocumentEvents(); 643 start(); 644 } 645 }); 646 on('destroy', () => { 647 detachMouseEvents(); 648 detachDocumentEvents(); 649 if (swiper.autoplay.running) { 650 stop(); 651 } 652 }); 653 on('_freeModeStaticRelease', () => { 654 if (pausedByTouch || pausedByInteraction) { 655 resume(); 656 } 657 }); 658 on('_freeModeNoMomentumRelease', () => { 659 if (!swiper.params.autoplay.disableOnInteraction) { 660 pause(true, true); 661 } else { 662 stop(); 663 } 664 }); 665 on('beforeTransitionStart', (_s, speed, internal) => { 666 if (swiper.destroyed || !swiper.autoplay.running) return; 667 if (internal || !swiper.params.autoplay.disableOnInteraction) { 668 pause(true, true); 669 } else { 670 stop(); 671 } 672 }); 673 on('sliderFirstMove', () => { 674 if (swiper.destroyed || !swiper.autoplay.running) return; 675 if (swiper.params.autoplay.disableOnInteraction) { 676 stop(); 677 return; 678 } 679 isTouched = true; 680 pausedByTouch = false; 681 pausedByInteraction = false; 682 touchStartTimeout = setTimeout(() => { 683 pausedByInteraction = true; 684 pausedByTouch = true; 685 pause(true); 686 }, 200); 687 }); 688 on('touchEnd', () => { 689 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 690 clearTimeout(touchStartTimeout); 691 clearTimeout(timeout); 692 if (swiper.params.autoplay.disableOnInteraction) { 693 pausedByTouch = false; 694 isTouched = false; 695 return; 696 } 697 if (pausedByTouch && swiper.params.cssMode) resume(); 698 pausedByTouch = false; 699 isTouched = false; 700 }); 701 on('slideChange', () => { 702 if (swiper.destroyed || !swiper.autoplay.running) return; 703 slideChanged = true; 704 }); 705 Object.assign(swiper.autoplay, { 706 start, 707 stop, 708 pause, 709 resume 710 }); 711} 712 713 714 715 716/***/ }), 717
vendor: 7,499 bytes, lines 718-923
718/***/ "./node_modules/swiper/modules/controller.mjs": 719/*!****************************************************!*\ 720 !*** ./node_modules/swiper/modules/controller.mjs ***! 721 \****************************************************/ 722/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 723 724__webpack_require__.r(__webpack_exports__); 725/* harmony export */ __webpack_require__.d(__webpack_exports__, { 726/* harmony export */ "default": () => (/* binding */ Controller) 727/* harmony export */ }); 728/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 729 730 731/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 732function Controller(_ref) { 733 let { 734 swiper, 735 extendParams, 736 on 737 } = _ref; 738 extendParams({ 739 controller: { 740 control: undefined, 741 inverse: false, 742 by: 'slide' // or 'container' 743 } 744 }); 745 746 swiper.controller = { 747 control: undefined 748 }; 749 function LinearSpline(x, y) { 750 const binarySearch = function search() { 751 let maxIndex; 752 let minIndex; 753 let guess; 754 return (array, val) => { 755 minIndex = -1; 756 maxIndex = array.length; 757 while (maxIndex - minIndex > 1) { 758 guess = maxIndex + minIndex >> 1; 759 if (array[guess] <= val) { 760 minIndex = guess; 761 } else { 762 maxIndex = guess; 763 } 764 } 765 return maxIndex; 766 }; 767 }(); 768 this.x = x; 769 this.y = y; 770 this.lastIndex = x.length - 1; 771 // Given an x value (x2), return the expected y2 value: 772 // (x1,y1) is the known point before given value, 773 // (x3,y3) is the known point after given value. 774 let i1; 775 let i3; 776 this.interpolate = function interpolate(x2) { 777 if (!x2) return 0; 778 779 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 780 i3 = binarySearch(this.x, x2); 781 i1 = i3 - 1; 782 783 // We have our indexes i1 & i3, so we can calculate already: 784 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 785 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 786 }; 787 return this; 788 } 789 function getInterpolateFunction(c) { 790 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 791 } 792 function setTranslate(_t, byController) { 793 const controlled = swiper.controller.control; 794 let multiplier; 795 let controlledTranslate; 796 const Swiper = swiper.constructor; 797 function setControlledTranslate(c) { 798 if (c.destroyed) return; 799 800 // this will create an Interpolate function based on the snapGrids 801 // x is the Grid of the scrolled scroller and y will be the controlled scroller 802 // it makes sense to create this only once and recall it for the interpolation 803 // the function does a lot of value caching for performance 804 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 805 if (swiper.params.controller.by === 'slide') { 806 getInterpolateFunction(c); 807 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 808 // but it did not work out 809 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 810 } 811 if (!controlledTranslate || swiper.params.controller.by === 'container') { 812 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 813 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 814 multiplier = 1; 815 } 816 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 817 } 818 if (swiper.params.controller.inverse) { 819 controlledTranslate = c.maxTranslate() - controlledTranslate; 820 } 821 c.updateProgress(controlledTranslate); 822 c.setTranslate(controlledTranslate, swiper); 823 c.updateActiveIndex(); 824 c.updateSlidesClasses(); 825 } 826 if (Array.isArray(controlled)) { 827 for (let i = 0; i < controlled.length; i += 1) { 828 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 829 setControlledTranslate(controlled[i]); 830 } 831 } 832 } else if (controlled instanceof Swiper && byController !== controlled) { 833 setControlledTranslate(controlled); 834 } 835 } 836 function setTransition(duration, byController) { 837 const Swiper = swiper.constructor; 838 const controlled = swiper.controller.control; 839 let i; 840 function setControlledTransition(c) { 841 if (c.destroyed) return; 842 c.setTransition(duration, swiper); 843 if (duration !== 0) { 844 c.transitionStart(); 845 if (c.params.autoHeight) { 846 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 847 c.updateAutoHeight(); 848 }); 849 } 850 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => { 851 if (!controlled) return; 852 c.transitionEnd(); 853 }); 854 } 855 } 856 if (Array.isArray(controlled)) { 857 for (i = 0; i < controlled.length; i += 1) { 858 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 859 setControlledTransition(controlled[i]); 860 } 861 } 862 } else if (controlled instanceof Swiper && byController !== controlled) { 863 setControlledTransition(controlled); 864 } 865 } 866 function removeSpline() { 867 if (!swiper.controller.control) return; 868 if (swiper.controller.spline) { 869 swiper.controller.spline = undefined; 870 delete swiper.controller.spline; 871 } 872 } 873 on('beforeInit', () => { 874 if (typeof window !== 'undefined' && ( 875 // eslint-disable-line 876 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 877 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 878 controlElements.forEach(controlElement => { 879 if (!swiper.controller.control) swiper.controller.control = []; 880 if (controlElement && controlElement.swiper) { 881 swiper.controller.control.push(controlElement.swiper); 882 } else if (controlElement) { 883 const eventName = `${swiper.params.eventsPrefix}init`; 884 const onControllerSwiper = e => { 885 swiper.controller.control.push(e.detail[0]); 886 swiper.update(); 887 controlElement.removeEventListener(eventName, onControllerSwiper); 888 }; 889 controlElement.addEventListener(eventName, onControllerSwiper); 890 } 891 }); 892 return; 893 } 894 swiper.controller.control = swiper.params.controller.control; 895 }); 896 on('update', () => { 897 removeSpline(); 898 }); 899 on('resize', () => { 900 removeSpline(); 901 }); 902 on('observerUpdate', () => { 903 removeSpline(); 904 }); 905 on('setTranslate', (_s, translate, byController) => { 906 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 907 swiper.controller.setTranslate(translate, byController); 908 }); 909 on('setTransition', (_s, duration, byController) => { 910 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 911 swiper.controller.setTransition(duration, byController); 912 }); 913 Object.assign(swiper.controller, { 914 setTranslate, 915 setTransition 916 }); 917} 918 919 920 921 922/***/ }), 923
vendor: 6,023 bytes, lines 924-1070
924/***/ "./node_modules/swiper/modules/effect-cards.mjs": 925/*!******************************************************!*\ 926 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 927 \******************************************************/ 928/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 929 930__webpack_require__.r(__webpack_exports__); 931/* harmony export */ __webpack_require__.d(__webpack_exports__, { 932/* harmony export */ "default": () => (/* binding */ EffectCards) 933/* harmony export */ }); 934/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 935/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 936/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 937/* 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"); 938/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 939 940 941 942 943 944 945function EffectCards(_ref) { 946 let { 947 swiper, 948 extendParams, 949 on 950 } = _ref; 951 extendParams({ 952 cardsEffect: { 953 slideShadows: true, 954 rotate: true, 955 perSlideRotate: 2, 956 perSlideOffset: 8 957 } 958 }); 959 const setTranslate = () => { 960 const { 961 slides, 962 activeIndex, 963 rtlTranslate: rtl 964 } = swiper; 965 const params = swiper.params.cardsEffect; 966 const { 967 startTranslate, 968 isTouched 969 } = swiper.touchEventsData; 970 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 971 for (let i = 0; i < slides.length; i += 1) { 972 const slideEl = slides[i]; 973 const slideProgress = slideEl.progress; 974 const progress = Math.min(Math.max(slideProgress, -4), 4); 975 let offset = slideEl.swiperSlideOffset; 976 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 977 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 978 } 979 if (swiper.params.centeredSlides && swiper.params.cssMode) { 980 offset -= slides[0].swiperSlideOffset; 981 } 982 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 983 let tY = 0; 984 const tZ = -100 * Math.abs(progress); 985 let scale = 1; 986 let rotate = -params.perSlideRotate * progress; 987 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 988 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 989 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 990 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 991 if (isSwipeToNext || isSwipeToPrev) { 992 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 993 rotate += -28 * progress * subProgress; 994 scale += -0.5 * subProgress; 995 tXAdd += 96 * subProgress; 996 tY = `${-25 * subProgress * Math.abs(progress)}%`; 997 } 998 if (progress < 0) { 999 // next 1000 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 1001 } else if (progress > 0) { 1002 // prev 1003 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 1004 } else { 1005 tX = `${tX}px`; 1006 } 1007 if (!swiper.isHorizontal()) { 1008 const prevY = tY; 1009 tY = tX; 1010 tX = prevY; 1011 } 1012 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 1013 1014 /* eslint-disable */ 1015 const transform = ` 1016 translate3d(${tX}, ${tY}, ${tZ}px) 1017 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 1018 scale(${scaleString}) 1019 `; 1020 /* eslint-enable */ 1021 1022 if (params.slideShadows) { 1023 // Set shadows 1024 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1025 if (!shadowEl) { 1026 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 1027 } 1028 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 1029 } 1030 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1031 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1032 targetEl.style.transform = transform; 1033 } 1034 }; 1035 const setTransition = duration => { 1036 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1037 transformElements.forEach(el => { 1038 el.style.transitionDuration = `${duration}ms`; 1039 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1040 shadowEl.style.transitionDuration = `${duration}ms`; 1041 }); 1042 }); 1043 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1044 swiper, 1045 duration, 1046 transformElements 1047 }); 1048 }; 1049 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1050 effect: 'cards', 1051 swiper, 1052 on, 1053 setTranslate, 1054 setTransition, 1055 perspective: () => true, 1056 overwriteParams: () => ({ 1057 _loopSwapReset: false, 1058 watchSlidesProgress: true, 1059 loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, 1060 centeredSlides: true, 1061 virtualTranslate: !swiper.params.cssMode 1062 }) 1063 }); 1064} 1065 1066 1067 1068 1069/***/ }), 1070
vendor: 5,680 bytes, lines 1071-1192
1071/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 1072/*!**********************************************************!*\ 1073 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 1074 \**********************************************************/ 1075/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1076 1077__webpack_require__.r(__webpack_exports__); 1078/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1079/* harmony export */ "default": () => (/* binding */ EffectCoverflow) 1080/* harmony export */ }); 1081/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1082/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1083/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1084/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1085 1086 1087 1088 1089 1090function EffectCoverflow(_ref) { 1091 let { 1092 swiper, 1093 extendParams, 1094 on 1095 } = _ref; 1096 extendParams({ 1097 coverflowEffect: { 1098 rotate: 50, 1099 stretch: 0, 1100 depth: 100, 1101 scale: 1, 1102 modifier: 1, 1103 slideShadows: true 1104 } 1105 }); 1106 const setTranslate = () => { 1107 const { 1108 width: swiperWidth, 1109 height: swiperHeight, 1110 slides, 1111 slidesSizesGrid 1112 } = swiper; 1113 const params = swiper.params.coverflowEffect; 1114 const isHorizontal = swiper.isHorizontal(); 1115 const transform = swiper.translate; 1116 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 1117 const rotate = isHorizontal ? params.rotate : -params.rotate; 1118 const translate = params.depth; 1119 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper); 1120 // Each slide offset from center 1121 for (let i = 0, length = slides.length; i < length; i += 1) { 1122 const slideEl = slides[i]; 1123 const slideSize = slidesSizesGrid[i]; 1124 const slideOffset = slideEl.swiperSlideOffset; 1125 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 1126 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 1127 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 1128 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 1129 // var rotateZ = 0 1130 let translateZ = -translate * Math.abs(offsetMultiplier); 1131 let stretch = params.stretch; 1132 // Allow percentage to make a relative stretch for responsive sliders 1133 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 1134 stretch = parseFloat(params.stretch) / 100 * slideSize; 1135 } 1136 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 1137 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 1138 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 1139 1140 // Fix for ultra small values 1141 if (Math.abs(translateX) < 0.001) translateX = 0; 1142 if (Math.abs(translateY) < 0.001) translateY = 0; 1143 if (Math.abs(translateZ) < 0.001) translateZ = 0; 1144 if (Math.abs(rotateY) < 0.001) rotateY = 0; 1145 if (Math.abs(rotateX) < 0.001) rotateX = 0; 1146 if (Math.abs(scale) < 0.001) scale = 0; 1147 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 1148 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1149 targetEl.style.transform = slideTransform; 1150 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 1151 if (params.slideShadows) { 1152 // Set shadows 1153 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1154 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1155 if (!shadowBeforeEl) { 1156 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 1157 } 1158 if (!shadowAfterEl) { 1159 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 1160 } 1161 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 1162 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 1163 } 1164 } 1165 }; 1166 const setTransition = duration => { 1167 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1168 transformElements.forEach(el => { 1169 el.style.transitionDuration = `${duration}ms`; 1170 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1171 shadowEl.style.transitionDuration = `${duration}ms`; 1172 }); 1173 }); 1174 }; 1175 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1176 effect: 'coverflow', 1177 swiper, 1178 on, 1179 setTranslate, 1180 setTransition, 1181 perspective: () => true, 1182 overwriteParams: () => ({ 1183 watchSlidesProgress: true 1184 }) 1185 }); 1186} 1187 1188 1189 1190 1191/***/ }), 1192
vendor: 6,449 bytes, lines 1193-1357
1193/***/ "./node_modules/swiper/modules/effect-creative.mjs": 1194/*!*********************************************************!*\ 1195 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 1196 \*********************************************************/ 1197/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1198 1199__webpack_require__.r(__webpack_exports__); 1200/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1201/* harmony export */ "default": () => (/* binding */ EffectCreative) 1202/* harmony export */ }); 1203/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1204/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1205/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1206/* 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"); 1207/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1208 1209 1210 1211 1212 1213 1214function EffectCreative(_ref) { 1215 let { 1216 swiper, 1217 extendParams, 1218 on 1219 } = _ref; 1220 extendParams({ 1221 creativeEffect: { 1222 limitProgress: 1, 1223 shadowPerProgress: false, 1224 progressMultiplier: 1, 1225 perspective: true, 1226 prev: { 1227 translate: [0, 0, 0], 1228 rotate: [0, 0, 0], 1229 opacity: 1, 1230 scale: 1 1231 }, 1232 next: { 1233 translate: [0, 0, 0], 1234 rotate: [0, 0, 0], 1235 opacity: 1, 1236 scale: 1 1237 } 1238 } 1239 }); 1240 const getTranslateValue = value => { 1241 if (typeof value === 'string') return value; 1242 return `${value}px`; 1243 }; 1244 const setTranslate = () => { 1245 const { 1246 slides, 1247 wrapperEl, 1248 slidesSizesGrid 1249 } = swiper; 1250 const params = swiper.params.creativeEffect; 1251 const { 1252 progressMultiplier: multiplier 1253 } = params; 1254 const isCenteredSlides = swiper.params.centeredSlides; 1255 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 1256 if (isCenteredSlides) { 1257 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 1258 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 1259 } 1260 for (let i = 0; i < slides.length; i += 1) { 1261 const slideEl = slides[i]; 1262 const slideProgress = slideEl.progress; 1263 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 1264 let originalProgress = progress; 1265 if (!isCenteredSlides) { 1266 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 1267 } 1268 const offset = slideEl.swiperSlideOffset; 1269 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 1270 const r = [0, 0, 0]; 1271 let custom = false; 1272 if (!swiper.isHorizontal()) { 1273 t[1] = t[0]; 1274 t[0] = 0; 1275 } 1276 let data = { 1277 translate: [0, 0, 0], 1278 rotate: [0, 0, 0], 1279 scale: 1, 1280 opacity: 1 1281 }; 1282 if (progress < 0) { 1283 data = params.next; 1284 custom = true; 1285 } else if (progress > 0) { 1286 data = params.prev; 1287 custom = true; 1288 } 1289 // set translate 1290 t.forEach((value, index) => { 1291 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 1292 }); 1293 // set rotates 1294 r.forEach((value, index) => { 1295 let val = data.rotate[index] * Math.abs(progress * multiplier); 1296 r[index] = val; 1297 }); 1298 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1299 const translateString = t.join(', '); 1300 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 1301 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 1302 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 1303 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 1304 1305 // Set shadows 1306 if (custom && data.shadow || !custom) { 1307 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1308 if (!shadowEl && data.shadow) { 1309 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 1310 } 1311 if (shadowEl) { 1312 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 1313 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 1314 } 1315 } 1316 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1317 targetEl.style.transform = transform; 1318 targetEl.style.opacity = opacityString; 1319 if (data.origin) { 1320 targetEl.style.transformOrigin = data.origin; 1321 } 1322 } 1323 }; 1324 const setTransition = duration => { 1325 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1326 transformElements.forEach(el => { 1327 el.style.transitionDuration = `${duration}ms`; 1328 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1329 shadowEl.style.transitionDuration = `${duration}ms`; 1330 }); 1331 }); 1332 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1333 swiper, 1334 duration, 1335 transformElements, 1336 allSlides: true 1337 }); 1338 }; 1339 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1340 effect: 'creative', 1341 swiper, 1342 on, 1343 setTranslate, 1344 setTransition, 1345 perspective: () => swiper.params.creativeEffect.perspective, 1346 overwriteParams: () => ({ 1347 watchSlidesProgress: true, 1348 virtualTranslate: !swiper.params.cssMode 1349 }) 1350 }); 1351} 1352 1353 1354 1355 1356/***/ }), 1357
vendor: 7,602 bytes, lines 1358-1547
1358/***/ "./node_modules/swiper/modules/effect-cube.mjs": 1359/*!*****************************************************!*\ 1360 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 1361 \*****************************************************/ 1362/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1363 1364__webpack_require__.r(__webpack_exports__); 1365/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1366/* harmony export */ "default": () => (/* binding */ EffectCube) 1367/* harmony export */ }); 1368/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1369/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1370 1371 1372 1373function EffectCube(_ref) { 1374 let { 1375 swiper, 1376 extendParams, 1377 on 1378 } = _ref; 1379 extendParams({ 1380 cubeEffect: { 1381 slideShadows: true, 1382 shadow: true, 1383 shadowOffset: 20, 1384 shadowScale: 0.94 1385 } 1386 }); 1387 const createSlideShadows = (slideEl, progress, isHorizontal) => { 1388 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1389 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1390 if (!shadowBefore) { 1391 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 1392 slideEl.append(shadowBefore); 1393 } 1394 if (!shadowAfter) { 1395 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 1396 slideEl.append(shadowAfter); 1397 } 1398 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1399 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1400 }; 1401 const recreateShadows = () => { 1402 // create new ones 1403 const isHorizontal = swiper.isHorizontal(); 1404 swiper.slides.forEach(slideEl => { 1405 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1406 createSlideShadows(slideEl, progress, isHorizontal); 1407 }); 1408 }; 1409 const setTranslate = () => { 1410 const { 1411 el, 1412 wrapperEl, 1413 slides, 1414 width: swiperWidth, 1415 height: swiperHeight, 1416 rtlTranslate: rtl, 1417 size: swiperSize, 1418 browser 1419 } = swiper; 1420 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper); 1421 const params = swiper.params.cubeEffect; 1422 const isHorizontal = swiper.isHorizontal(); 1423 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 1424 let wrapperRotate = 0; 1425 let cubeShadowEl; 1426 if (params.shadow) { 1427 if (isHorizontal) { 1428 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 1429 if (!cubeShadowEl) { 1430 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1431 swiper.wrapperEl.append(cubeShadowEl); 1432 } 1433 cubeShadowEl.style.height = `${swiperWidth}px`; 1434 } else { 1435 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 1436 if (!cubeShadowEl) { 1437 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1438 el.append(cubeShadowEl); 1439 } 1440 } 1441 } 1442 for (let i = 0; i < slides.length; i += 1) { 1443 const slideEl = slides[i]; 1444 let slideIndex = i; 1445 if (isVirtual) { 1446 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 1447 } 1448 let slideAngle = slideIndex * 90; 1449 let round = Math.floor(slideAngle / 360); 1450 if (rtl) { 1451 slideAngle = -slideAngle; 1452 round = Math.floor(-slideAngle / 360); 1453 } 1454 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1455 let tx = 0; 1456 let ty = 0; 1457 let tz = 0; 1458 if (slideIndex % 4 === 0) { 1459 tx = -round * 4 * swiperSize; 1460 tz = 0; 1461 } else if ((slideIndex - 1) % 4 === 0) { 1462 tx = 0; 1463 tz = -round * 4 * swiperSize; 1464 } else if ((slideIndex - 2) % 4 === 0) { 1465 tx = swiperSize + round * 4 * swiperSize; 1466 tz = swiperSize; 1467 } else if ((slideIndex - 3) % 4 === 0) { 1468 tx = -swiperSize; 1469 tz = 3 * swiperSize + swiperSize * 4 * round; 1470 } 1471 if (rtl) { 1472 tx = -tx; 1473 } 1474 if (!isHorizontal) { 1475 ty = tx; 1476 tx = 0; 1477 } 1478 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 1479 if (progress <= 1 && progress > -1) { 1480 wrapperRotate = slideIndex * 90 + progress * 90; 1481 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 1482 } 1483 slideEl.style.transform = transform; 1484 if (params.slideShadows) { 1485 createSlideShadows(slideEl, progress, isHorizontal); 1486 } 1487 } 1488 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 1489 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 1490 if (params.shadow) { 1491 if (isHorizontal) { 1492 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 1493 } else { 1494 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 1495 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 1496 const scale1 = params.shadowScale; 1497 const scale2 = params.shadowScale / multiplier; 1498 const offset = params.shadowOffset; 1499 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 1500 } 1501 } 1502 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 1503 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 1504 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 1505 }; 1506 const setTransition = duration => { 1507 const { 1508 el, 1509 slides 1510 } = swiper; 1511 slides.forEach(slideEl => { 1512 slideEl.style.transitionDuration = `${duration}ms`; 1513 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 1514 subEl.style.transitionDuration = `${duration}ms`; 1515 }); 1516 }); 1517 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 1518 const shadowEl = el.querySelector('.swiper-cube-shadow'); 1519 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 1520 } 1521 }; 1522 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1523 effect: 'cube', 1524 swiper, 1525 on, 1526 setTranslate, 1527 setTransition, 1528 recreateShadows, 1529 getEffectParams: () => swiper.params.cubeEffect, 1530 perspective: () => true, 1531 overwriteParams: () => ({ 1532 slidesPerView: 1, 1533 slidesPerGroup: 1, 1534 watchSlidesProgress: true, 1535 resistanceRatio: 0, 1536 spaceBetween: 0, 1537 centeredSlides: false, 1538 virtualTranslate: true 1539 }) 1540 }); 1541} 1542 1543 1544 1545 1546/***/ }), 1547
vendor: 3,069 bytes, lines 1548-1631
1548/***/ "./node_modules/swiper/modules/effect-fade.mjs": 1549/*!*****************************************************!*\ 1550 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 1551 \*****************************************************/ 1552/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1553 1554__webpack_require__.r(__webpack_exports__); 1555/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1556/* harmony export */ "default": () => (/* binding */ EffectFade) 1557/* harmony export */ }); 1558/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1559/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1560/* 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"); 1561/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1562 1563 1564 1565 1566 1567function EffectFade(_ref) { 1568 let { 1569 swiper, 1570 extendParams, 1571 on 1572 } = _ref; 1573 extendParams({ 1574 fadeEffect: { 1575 crossFade: false 1576 } 1577 }); 1578 const setTranslate = () => { 1579 const { 1580 slides 1581 } = swiper; 1582 const params = swiper.params.fadeEffect; 1583 for (let i = 0; i < slides.length; i += 1) { 1584 const slideEl = swiper.slides[i]; 1585 const offset = slideEl.swiperSlideOffset; 1586 let tx = -offset; 1587 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 1588 let ty = 0; 1589 if (!swiper.isHorizontal()) { 1590 ty = tx; 1591 tx = 0; 1592 } 1593 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 1594 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 1595 targetEl.style.opacity = slideOpacity; 1596 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 1597 } 1598 }; 1599 const setTransition = duration => { 1600 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1601 transformElements.forEach(el => { 1602 el.style.transitionDuration = `${duration}ms`; 1603 }); 1604 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 1605 swiper, 1606 duration, 1607 transformElements, 1608 allSlides: true 1609 }); 1610 }; 1611 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1612 effect: 'fade', 1613 swiper, 1614 on, 1615 setTranslate, 1616 setTransition, 1617 overwriteParams: () => ({ 1618 slidesPerView: 1, 1619 slidesPerGroup: 1, 1620 watchSlidesProgress: true, 1621 spaceBetween: 0, 1622 virtualTranslate: !swiper.params.cssMode 1623 }) 1624 }); 1625} 1626 1627 1628 1629 1630/***/ }), 1631
vendor: 5,302 bytes, lines 1632-1761
1632/***/ "./node_modules/swiper/modules/effect-flip.mjs": 1633/*!*****************************************************!*\ 1634 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 1635 \*****************************************************/ 1636/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1637 1638__webpack_require__.r(__webpack_exports__); 1639/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1640/* harmony export */ "default": () => (/* binding */ EffectFlip) 1641/* harmony export */ }); 1642/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1643/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1644/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1645/* 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"); 1646/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1647 1648 1649 1650 1651 1652 1653function EffectFlip(_ref) { 1654 let { 1655 swiper, 1656 extendParams, 1657 on 1658 } = _ref; 1659 extendParams({ 1660 flipEffect: { 1661 slideShadows: true, 1662 limitRotation: true 1663 } 1664 }); 1665 const createSlideShadows = (slideEl, progress) => { 1666 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1667 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1668 if (!shadowBefore) { 1669 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 1670 } 1671 if (!shadowAfter) { 1672 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 1673 } 1674 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1675 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1676 }; 1677 const recreateShadows = () => { 1678 // Set shadows 1679 swiper.params.flipEffect; 1680 swiper.slides.forEach(slideEl => { 1681 let progress = slideEl.progress; 1682 if (swiper.params.flipEffect.limitRotation) { 1683 progress = Math.max(Math.min(slideEl.progress, 1), -1); 1684 } 1685 createSlideShadows(slideEl, progress); 1686 }); 1687 }; 1688 const setTranslate = () => { 1689 const { 1690 slides, 1691 rtlTranslate: rtl 1692 } = swiper; 1693 const params = swiper.params.flipEffect; 1694 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 1695 for (let i = 0; i < slides.length; i += 1) { 1696 const slideEl = slides[i]; 1697 let progress = slideEl.progress; 1698 if (swiper.params.flipEffect.limitRotation) { 1699 progress = Math.max(Math.min(slideEl.progress, 1), -1); 1700 } 1701 const offset = slideEl.swiperSlideOffset; 1702 const rotate = -180 * progress; 1703 let rotateY = rotate; 1704 let rotateX = 0; 1705 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 1706 let ty = 0; 1707 if (!swiper.isHorizontal()) { 1708 ty = tx; 1709 tx = 0; 1710 rotateX = -rotateY; 1711 rotateY = 0; 1712 } else if (rtl) { 1713 rotateY = -rotateY; 1714 } 1715 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 1716 if (params.slideShadows) { 1717 createSlideShadows(slideEl, progress); 1718 } 1719 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 1720 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1721 targetEl.style.transform = transform; 1722 } 1723 }; 1724 const setTransition = duration => { 1725 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1726 transformElements.forEach(el => { 1727 el.style.transitionDuration = `${duration}ms`; 1728 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1729 shadowEl.style.transitionDuration = `${duration}ms`; 1730 }); 1731 }); 1732 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1733 swiper, 1734 duration, 1735 transformElements 1736 }); 1737 }; 1738 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1739 effect: 'flip', 1740 swiper, 1741 on, 1742 setTranslate, 1743 setTransition, 1744 recreateShadows, 1745 getEffectParams: () => swiper.params.flipEffect, 1746 perspective: () => true, 1747 overwriteParams: () => ({ 1748 slidesPerView: 1, 1749 slidesPerGroup: 1, 1750 watchSlidesProgress: true, 1751 spaceBetween: 0, 1752 virtualTranslate: !swiper.params.cssMode 1753 }) 1754 }); 1755} 1756 1757 1758 1759 1760/***/ }), 1761
vendor: 9,227 bytes, lines 1762-2013
1762/***/ "./node_modules/swiper/modules/free-mode.mjs": 1763/*!***************************************************!*\ 1764 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 1765 \***************************************************/ 1766/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1767 1768__webpack_require__.r(__webpack_exports__); 1769/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1770/* harmony export */ "default": () => (/* binding */ freeMode) 1771/* harmony export */ }); 1772/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1773 1774 1775function freeMode(_ref) { 1776 let { 1777 swiper, 1778 extendParams, 1779 emit, 1780 once 1781 } = _ref; 1782 extendParams({ 1783 freeMode: { 1784 enabled: false, 1785 momentum: true, 1786 momentumRatio: 1, 1787 momentumBounce: true, 1788 momentumBounceRatio: 1, 1789 momentumVelocityRatio: 1, 1790 sticky: false, 1791 minimumVelocity: 0.02 1792 } 1793 }); 1794 function onTouchStart() { 1795 if (swiper.params.cssMode) return; 1796 const translate = swiper.getTranslate(); 1797 swiper.setTranslate(translate); 1798 swiper.setTransition(0); 1799 swiper.touchEventsData.velocities.length = 0; 1800 swiper.freeMode.onTouchEnd({ 1801 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 1802 }); 1803 } 1804 function onTouchMove() { 1805 if (swiper.params.cssMode) return; 1806 const { 1807 touchEventsData: data, 1808 touches 1809 } = swiper; 1810 // Velocity 1811 if (data.velocities.length === 0) { 1812 data.velocities.push({ 1813 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 1814 time: data.touchStartTime 1815 }); 1816 } 1817 data.velocities.push({ 1818 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 1819 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() 1820 }); 1821 } 1822 function onTouchEnd(_ref2) { 1823 let { 1824 currentPos 1825 } = _ref2; 1826 if (swiper.params.cssMode) return; 1827 const { 1828 params, 1829 wrapperEl, 1830 rtlTranslate: rtl, 1831 snapGrid, 1832 touchEventsData: data 1833 } = swiper; 1834 // Time diff 1835 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)(); 1836 const timeDiff = touchEndTime - data.touchStartTime; 1837 if (currentPos < -swiper.minTranslate()) { 1838 swiper.slideTo(swiper.activeIndex); 1839 return; 1840 } 1841 if (currentPos > -swiper.maxTranslate()) { 1842 if (swiper.slides.length < snapGrid.length) { 1843 swiper.slideTo(snapGrid.length - 1); 1844 } else { 1845 swiper.slideTo(swiper.slides.length - 1); 1846 } 1847 return; 1848 } 1849 if (params.freeMode.momentum) { 1850 if (data.velocities.length > 1) { 1851 const lastMoveEvent = data.velocities.pop(); 1852 const velocityEvent = data.velocities.pop(); 1853 const distance = lastMoveEvent.position - velocityEvent.position; 1854 const time = lastMoveEvent.time - velocityEvent.time; 1855 swiper.velocity = distance / time; 1856 swiper.velocity /= 2; 1857 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 1858 swiper.velocity = 0; 1859 } 1860 // this implies that the user stopped moving a finger then released. 1861 // There would be no events with distance zero, so the last event is stale. 1862 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) { 1863 swiper.velocity = 0; 1864 } 1865 } else { 1866 swiper.velocity = 0; 1867 } 1868 swiper.velocity *= params.freeMode.momentumVelocityRatio; 1869 data.velocities.length = 0; 1870 let momentumDuration = 1000 * params.freeMode.momentumRatio; 1871 const momentumDistance = swiper.velocity * momentumDuration; 1872 let newPosition = swiper.translate + momentumDistance; 1873 if (rtl) newPosition = -newPosition; 1874 let doBounce = false; 1875 let afterBouncePosition; 1876 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 1877 let needsLoopFix; 1878 if (newPosition < swiper.maxTranslate()) { 1879 if (params.freeMode.momentumBounce) { 1880 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 1881 newPosition = swiper.maxTranslate() - bounceAmount; 1882 } 1883 afterBouncePosition = swiper.maxTranslate(); 1884 doBounce = true; 1885 data.allowMomentumBounce = true; 1886 } else { 1887 newPosition = swiper.maxTranslate(); 1888 } 1889 if (params.loop && params.centeredSlides) needsLoopFix = true; 1890 } else if (newPosition > swiper.minTranslate()) { 1891 if (params.freeMode.momentumBounce) { 1892 if (newPosition - swiper.minTranslate() > bounceAmount) { 1893 newPosition = swiper.minTranslate() + bounceAmount; 1894 } 1895 afterBouncePosition = swiper.minTranslate(); 1896 doBounce = true; 1897 data.allowMomentumBounce = true; 1898 } else { 1899 newPosition = swiper.minTranslate(); 1900 } 1901 if (params.loop && params.centeredSlides) needsLoopFix = true; 1902 } else if (params.freeMode.sticky) { 1903 let nextSlide; 1904 for (let j = 0; j < snapGrid.length; j += 1) { 1905 if (snapGrid[j] > -newPosition) { 1906 nextSlide = j; 1907 break; 1908 } 1909 } 1910 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 1911 newPosition = snapGrid[nextSlide]; 1912 } else { 1913 newPosition = snapGrid[nextSlide - 1]; 1914 } 1915 newPosition = -newPosition; 1916 } 1917 if (needsLoopFix) { 1918 once('transitionEnd', () => { 1919 swiper.loopFix(); 1920 }); 1921 } 1922 // Fix duration 1923 if (swiper.velocity !== 0) { 1924 if (rtl) { 1925 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 1926 } else { 1927 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 1928 } 1929 if (params.freeMode.sticky) { 1930 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 1931 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 1932 // It's easy to see this when simulating touch with mouse events. To fix this, 1933 // limit single-slide swipes to the default slide duration. This also has the 1934 // nice side effect of matching slide speed if the user stopped moving before 1935 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 1936 // For faster swipes, also apply limits (albeit higher ones). 1937 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 1938 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 1939 if (moveDistance < currentSlideSize) { 1940 momentumDuration = params.speed; 1941 } else if (moveDistance < 2 * currentSlideSize) { 1942 momentumDuration = params.speed * 1.5; 1943 } else { 1944 momentumDuration = params.speed * 2.5; 1945 } 1946 } 1947 } else if (params.freeMode.sticky) { 1948 swiper.slideToClosest(); 1949 return; 1950 } 1951 if (params.freeMode.momentumBounce && doBounce) { 1952 swiper.updateProgress(afterBouncePosition); 1953 swiper.setTransition(momentumDuration); 1954 swiper.setTranslate(newPosition); 1955 swiper.transitionStart(true, swiper.swipeDirection); 1956 swiper.animating = true; 1957 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 1958 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 1959 emit('momentumBounce'); 1960 swiper.setTransition(params.speed); 1961 setTimeout(() => { 1962 swiper.setTranslate(afterBouncePosition); 1963 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 1964 if (!swiper || swiper.destroyed) return; 1965 swiper.transitionEnd(); 1966 }); 1967 }, 0); 1968 }); 1969 } else if (swiper.velocity) { 1970 emit('_freeModeNoMomentumRelease'); 1971 swiper.updateProgress(newPosition); 1972 swiper.setTransition(momentumDuration); 1973 swiper.setTranslate(newPosition); 1974 swiper.transitionStart(true, swiper.swipeDirection); 1975 if (!swiper.animating) { 1976 swiper.animating = true; 1977 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 1978 if (!swiper || swiper.destroyed) return; 1979 swiper.transitionEnd(); 1980 }); 1981 } 1982 } else { 1983 swiper.updateProgress(newPosition); 1984 } 1985 swiper.updateActiveIndex(); 1986 swiper.updateSlidesClasses(); 1987 } else if (params.freeMode.sticky) { 1988 swiper.slideToClosest(); 1989 return; 1990 } else if (params.freeMode) { 1991 emit('_freeModeNoMomentumRelease'); 1992 } 1993 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 1994 emit('_freeModeStaticRelease'); 1995 swiper.updateProgress(); 1996 swiper.updateActiveIndex(); 1997 swiper.updateSlidesClasses(); 1998 } 1999 } 2000 Object.assign(swiper, { 2001 freeMode: { 2002 onTouchStart, 2003 onTouchMove, 2004 onTouchEnd 2005 } 2006 }); 2007} 2008 2009 2010 2011 2012/***/ }), 2013
vendor: 5,697 bytes, lines 2014-2182
2014/***/ "./node_modules/swiper/modules/grid.mjs": 2015/*!**********************************************!*\ 2016 !*** ./node_modules/swiper/modules/grid.mjs ***! 2017 \**********************************************/ 2018/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2019 2020__webpack_require__.r(__webpack_exports__); 2021/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2022/* harmony export */ "default": () => (/* binding */ Grid) 2023/* harmony export */ }); 2024function Grid(_ref) { 2025 let { 2026 swiper, 2027 extendParams, 2028 on 2029 } = _ref; 2030 extendParams({ 2031 grid: { 2032 rows: 1, 2033 fill: 'column' 2034 } 2035 }); 2036 let slidesNumberEvenToRows; 2037 let slidesPerRow; 2038 let numFullColumns; 2039 let wasMultiRow; 2040 const getSpaceBetween = () => { 2041 let spaceBetween = swiper.params.spaceBetween; 2042 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 2043 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 2044 } else if (typeof spaceBetween === 'string') { 2045 spaceBetween = parseFloat(spaceBetween); 2046 } 2047 return spaceBetween; 2048 }; 2049 const initSlides = slides => { 2050 const { 2051 slidesPerView 2052 } = swiper.params; 2053 const { 2054 rows, 2055 fill 2056 } = swiper.params.grid; 2057 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2058 numFullColumns = Math.floor(slidesLength / rows); 2059 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 2060 slidesNumberEvenToRows = slidesLength; 2061 } else { 2062 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 2063 } 2064 if (slidesPerView !== 'auto' && fill === 'row') { 2065 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 2066 } 2067 slidesPerRow = slidesNumberEvenToRows / rows; 2068 }; 2069 const unsetSlides = () => { 2070 if (swiper.slides) { 2071 swiper.slides.forEach(slide => { 2072 if (slide.swiperSlideGridSet) { 2073 slide.style.height = ''; 2074 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 2075 } 2076 }); 2077 } 2078 }; 2079 const updateSlide = (i, slide, slides) => { 2080 const { 2081 slidesPerGroup 2082 } = swiper.params; 2083 const spaceBetween = getSpaceBetween(); 2084 const { 2085 rows, 2086 fill 2087 } = swiper.params.grid; 2088 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2089 // Set slides order 2090 let newSlideOrderIndex; 2091 let column; 2092 let row; 2093 if (fill === 'row' && slidesPerGroup > 1) { 2094 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 2095 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 2096 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 2097 row = Math.floor(slideIndexInGroup / columnsInGroup); 2098 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 2099 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 2100 slide.style.order = newSlideOrderIndex; 2101 } else if (fill === 'column') { 2102 column = Math.floor(i / rows); 2103 row = i - column * rows; 2104 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 2105 row += 1; 2106 if (row >= rows) { 2107 row = 0; 2108 column += 1; 2109 } 2110 } 2111 } else { 2112 row = Math.floor(i / slidesPerRow); 2113 column = i - row * slidesPerRow; 2114 } 2115 slide.row = row; 2116 slide.column = column; 2117 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 2118 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 2119 slide.swiperSlideGridSet = true; 2120 }; 2121 const updateWrapperSize = (slideSize, snapGrid) => { 2122 const { 2123 centeredSlides, 2124 roundLengths 2125 } = swiper.params; 2126 const spaceBetween = getSpaceBetween(); 2127 const { 2128 rows 2129 } = swiper.params.grid; 2130 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 2131 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 2132 if (!swiper.params.cssMode) { 2133 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 2134 } 2135 if (centeredSlides) { 2136 const newSlidesGrid = []; 2137 for (let i = 0; i < snapGrid.length; i += 1) { 2138 let slidesGridItem = snapGrid[i]; 2139 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 2140 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 2141 } 2142 snapGrid.splice(0, snapGrid.length); 2143 snapGrid.push(...newSlidesGrid); 2144 } 2145 }; 2146 const onInit = () => { 2147 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 2148 }; 2149 const onUpdate = () => { 2150 const { 2151 params, 2152 el 2153 } = swiper; 2154 const isMultiRow = params.grid && params.grid.rows > 1; 2155 if (wasMultiRow && !isMultiRow) { 2156 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 2157 numFullColumns = 1; 2158 swiper.emitContainerClasses(); 2159 } else if (!wasMultiRow && isMultiRow) { 2160 el.classList.add(`${params.containerModifierClass}grid`); 2161 if (params.grid.fill === 'column') { 2162 el.classList.add(`${params.containerModifierClass}grid-column`); 2163 } 2164 swiper.emitContainerClasses(); 2165 } 2166 wasMultiRow = isMultiRow; 2167 }; 2168 on('init', onInit); 2169 on('update', onUpdate); 2170 swiper.grid = { 2171 initSlides, 2172 unsetSlides, 2173 updateSlide, 2174 updateWrapperSize 2175 }; 2176} 2177 2178 2179 2180 2181/***/ }), 2182
vendor: 4,393 bytes, lines 2183-2291
2183/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 2184/*!*********************************************************!*\ 2185 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 2186 \*********************************************************/ 2187/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2188 2189__webpack_require__.r(__webpack_exports__); 2190/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2191/* harmony export */ "default": () => (/* binding */ HashNavigation) 2192/* harmony export */ }); 2193/* 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"); 2194/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2195 2196 2197 2198function HashNavigation(_ref) { 2199 let { 2200 swiper, 2201 extendParams, 2202 emit, 2203 on 2204 } = _ref; 2205 let initialized = false; 2206 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2207 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2208 extendParams({ 2209 hashNavigation: { 2210 enabled: false, 2211 replaceState: false, 2212 watchState: false, 2213 getSlideIndex(_s, hash) { 2214 if (swiper.virtual && swiper.params.virtual.enabled) { 2215 const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); 2216 if (!slideWithHash) return 0; 2217 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 2218 return index; 2219 } 2220 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]); 2221 } 2222 } 2223 }); 2224 const onHashChange = () => { 2225 emit('hashChange'); 2226 const newHash = document.location.hash.replace('#', ''); 2227 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2228 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 2229 if (newHash !== activeSlideHash) { 2230 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 2231 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 2232 swiper.slideTo(newIndex); 2233 } 2234 }; 2235 const setHash = () => { 2236 if (!initialized || !swiper.params.hashNavigation.enabled) return; 2237 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2238 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 2239 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 2240 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 2241 emit('hashSet'); 2242 } else { 2243 document.location.hash = activeSlideHash || ''; 2244 emit('hashSet'); 2245 } 2246 }; 2247 const init = () => { 2248 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 2249 initialized = true; 2250 const hash = document.location.hash.replace('#', ''); 2251 if (hash) { 2252 const speed = 0; 2253 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 2254 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 2255 } 2256 if (swiper.params.hashNavigation.watchState) { 2257 window.addEventListener('hashchange', onHashChange); 2258 } 2259 }; 2260 const destroy = () => { 2261 if (swiper.params.hashNavigation.watchState) { 2262 window.removeEventListener('hashchange', onHashChange); 2263 } 2264 }; 2265 on('init', () => { 2266 if (swiper.params.hashNavigation.enabled) { 2267 init(); 2268 } 2269 }); 2270 on('destroy', () => { 2271 if (swiper.params.hashNavigation.enabled) { 2272 destroy(); 2273 } 2274 }); 2275 on('transitionEnd _freeModeNoMomentumRelease', () => { 2276 if (initialized) { 2277 setHash(); 2278 } 2279 }); 2280 on('slideChange', () => { 2281 if (initialized && swiper.params.cssMode) { 2282 setHash(); 2283 } 2284 }); 2285} 2286 2287 2288 2289 2290/***/ }), 2291
vendor: 5,110 bytes, lines 2292-2448
2292/***/ "./node_modules/swiper/modules/history.mjs": 2293/*!*************************************************!*\ 2294 !*** ./node_modules/swiper/modules/history.mjs ***! 2295 \*************************************************/ 2296/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2297 2298__webpack_require__.r(__webpack_exports__); 2299/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2300/* harmony export */ "default": () => (/* binding */ History) 2301/* harmony export */ }); 2302/* 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"); 2303 2304 2305function History(_ref) { 2306 let { 2307 swiper, 2308 extendParams, 2309 on 2310 } = _ref; 2311 extendParams({ 2312 history: { 2313 enabled: false, 2314 root: '', 2315 replaceState: false, 2316 key: 'slides', 2317 keepQuery: false 2318 } 2319 }); 2320 let initialized = false; 2321 let paths = {}; 2322 const slugify = text => { 2323 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 2324 }; 2325 const getPathValues = urlOverride => { 2326 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2327 let location; 2328 if (urlOverride) { 2329 location = new URL(urlOverride); 2330 } else { 2331 location = window.location; 2332 } 2333 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 2334 const total = pathArray.length; 2335 const key = pathArray[total - 2]; 2336 const value = pathArray[total - 1]; 2337 return { 2338 key, 2339 value 2340 }; 2341 }; 2342 const setHistory = (key, index) => { 2343 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2344 if (!initialized || !swiper.params.history.enabled) return; 2345 let location; 2346 if (swiper.params.url) { 2347 location = new URL(swiper.params.url); 2348 } else { 2349 location = window.location; 2350 } 2351 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 2352 let value = slugify(slide.getAttribute('data-history')); 2353 if (swiper.params.history.root.length > 0) { 2354 let root = swiper.params.history.root; 2355 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 2356 value = `${root}/${key ? `${key}/` : ''}${value}`; 2357 } else if (!location.pathname.includes(key)) { 2358 value = `${key ? `${key}/` : ''}${value}`; 2359 } 2360 if (swiper.params.history.keepQuery) { 2361 value += location.search; 2362 } 2363 const currentState = window.history.state; 2364 if (currentState && currentState.value === value) { 2365 return; 2366 } 2367 if (swiper.params.history.replaceState) { 2368 window.history.replaceState({ 2369 value 2370 }, null, value); 2371 } else { 2372 window.history.pushState({ 2373 value 2374 }, null, value); 2375 } 2376 }; 2377 const scrollToSlide = (speed, value, runCallbacks) => { 2378 if (value) { 2379 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 2380 const slide = swiper.slides[i]; 2381 const slideHistory = slugify(slide.getAttribute('data-history')); 2382 if (slideHistory === value) { 2383 const index = swiper.getSlideIndex(slide); 2384 swiper.slideTo(index, speed, runCallbacks); 2385 } 2386 } 2387 } else { 2388 swiper.slideTo(0, speed, runCallbacks); 2389 } 2390 }; 2391 const setHistoryPopState = () => { 2392 paths = getPathValues(swiper.params.url); 2393 scrollToSlide(swiper.params.speed, paths.value, false); 2394 }; 2395 const init = () => { 2396 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2397 if (!swiper.params.history) return; 2398 if (!window.history || !window.history.pushState) { 2399 swiper.params.history.enabled = false; 2400 swiper.params.hashNavigation.enabled = true; 2401 return; 2402 } 2403 initialized = true; 2404 paths = getPathValues(swiper.params.url); 2405 if (!paths.key && !paths.value) { 2406 if (!swiper.params.history.replaceState) { 2407 window.addEventListener('popstate', setHistoryPopState); 2408 } 2409 return; 2410 } 2411 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 2412 if (!swiper.params.history.replaceState) { 2413 window.addEventListener('popstate', setHistoryPopState); 2414 } 2415 }; 2416 const destroy = () => { 2417 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2418 if (!swiper.params.history.replaceState) { 2419 window.removeEventListener('popstate', setHistoryPopState); 2420 } 2421 }; 2422 on('init', () => { 2423 if (swiper.params.history.enabled) { 2424 init(); 2425 } 2426 }); 2427 on('destroy', () => { 2428 if (swiper.params.history.enabled) { 2429 destroy(); 2430 } 2431 }); 2432 on('transitionEnd _freeModeNoMomentumRelease', () => { 2433 if (initialized) { 2434 setHistory(swiper.params.history.key, swiper.activeIndex); 2435 } 2436 }); 2437 on('slideChange', () => { 2438 if (initialized && swiper.params.cssMode) { 2439 setHistory(swiper.params.history.key, swiper.activeIndex); 2440 } 2441 }); 2442} 2443 2444 2445 2446 2447/***/ }), 2448
vendor: 6,977 bytes, lines 2449-2529
2449/***/ "./node_modules/swiper/modules/index.mjs": 2450/*!***********************************************!*\ 2451 !*** ./node_modules/swiper/modules/index.mjs ***! 2452 \***********************************************/ 2453/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2454 2455__webpack_require__.r(__webpack_exports__); 2456/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2457/* harmony export */ A11y: () => (/* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]), 2458/* harmony export */ Autoplay: () => (/* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]), 2459/* harmony export */ Controller: () => (/* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]), 2460/* harmony export */ EffectCards: () => (/* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]), 2461/* harmony export */ EffectCoverflow: () => (/* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]), 2462/* harmony export */ EffectCreative: () => (/* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]), 2463/* harmony export */ EffectCube: () => (/* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]), 2464/* harmony export */ EffectFade: () => (/* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]), 2465/* harmony export */ EffectFlip: () => (/* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]), 2466/* harmony export */ FreeMode: () => (/* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]), 2467/* harmony export */ Grid: () => (/* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]), 2468/* harmony export */ HashNavigation: () => (/* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]), 2469/* harmony export */ History: () => (/* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]), 2470/* harmony export */ Keyboard: () => (/* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]), 2471/* harmony export */ Manipulation: () => (/* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]), 2472/* harmony export */ Mousewheel: () => (/* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]), 2473/* harmony export */ Navigation: () => (/* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]), 2474/* harmony export */ Pagination: () => (/* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]), 2475/* harmony export */ Parallax: () => (/* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]), 2476/* harmony export */ Scrollbar: () => (/* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]), 2477/* harmony export */ Thumbs: () => (/* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]), 2478/* harmony export */ Virtual: () => (/* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]), 2479/* harmony export */ Zoom: () => (/* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]) 2480/* harmony export */ }); 2481/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 2482/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 2483/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 2484/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 2485/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 2486/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 2487/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 2488/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 2489/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 2490/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 2491/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs"); 2492/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 2493/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 2494/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 2495/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 2496/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 2497/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 2498/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 2499/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 2500/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 2501/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 2502/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 2503/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528/***/ }), 2529
vendor: 5,259 bytes, lines 2530-2662
2530/***/ "./node_modules/swiper/modules/keyboard.mjs": 2531/*!**************************************************!*\ 2532 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 2533 \**************************************************/ 2534/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2535 2536__webpack_require__.r(__webpack_exports__); 2537/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2538/* harmony export */ "default": () => (/* binding */ Keyboard) 2539/* harmony export */ }); 2540/* 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"); 2541/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2542 2543 2544 2545/* eslint-disable consistent-return */ 2546function Keyboard(_ref) { 2547 let { 2548 swiper, 2549 extendParams, 2550 on, 2551 emit 2552 } = _ref; 2553 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2554 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2555 swiper.keyboard = { 2556 enabled: false 2557 }; 2558 extendParams({ 2559 keyboard: { 2560 enabled: false, 2561 onlyInViewport: true, 2562 pageUpDown: true 2563 } 2564 }); 2565 function handle(event) { 2566 if (!swiper.enabled) return; 2567 const { 2568 rtlTranslate: rtl 2569 } = swiper; 2570 let e = event; 2571 if (e.originalEvent) e = e.originalEvent; // jquery fix 2572 const kc = e.keyCode || e.charCode; 2573 const pageUpDown = swiper.params.keyboard.pageUpDown; 2574 const isPageUp = pageUpDown && kc === 33; 2575 const isPageDown = pageUpDown && kc === 34; 2576 const isArrowLeft = kc === 37; 2577 const isArrowRight = kc === 39; 2578 const isArrowUp = kc === 38; 2579 const isArrowDown = kc === 40; 2580 // Directions locks 2581 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 2582 return false; 2583 } 2584 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 2585 return false; 2586 } 2587 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 2588 return undefined; 2589 } 2590 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { 2591 return undefined; 2592 } 2593 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 2594 let inView = false; 2595 // Check that swiper should be inside of visible area of window 2596 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) { 2597 return undefined; 2598 } 2599 const el = swiper.el; 2600 const swiperWidth = el.clientWidth; 2601 const swiperHeight = el.clientHeight; 2602 const windowWidth = window.innerWidth; 2603 const windowHeight = window.innerHeight; 2604 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el); 2605 if (rtl) swiperOffset.left -= el.scrollLeft; 2606 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 2607 for (let i = 0; i < swiperCoord.length; i += 1) { 2608 const point = swiperCoord[i]; 2609 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 2610 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 2611 inView = true; 2612 } 2613 } 2614 if (!inView) return undefined; 2615 } 2616 if (swiper.isHorizontal()) { 2617 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 2618 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2619 } 2620 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 2621 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 2622 } else { 2623 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 2624 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2625 } 2626 if (isPageDown || isArrowDown) swiper.slideNext(); 2627 if (isPageUp || isArrowUp) swiper.slidePrev(); 2628 } 2629 emit('keyPress', kc); 2630 return undefined; 2631 } 2632 function enable() { 2633 if (swiper.keyboard.enabled) return; 2634 document.addEventListener('keydown', handle); 2635 swiper.keyboard.enabled = true; 2636 } 2637 function disable() { 2638 if (!swiper.keyboard.enabled) return; 2639 document.removeEventListener('keydown', handle); 2640 swiper.keyboard.enabled = false; 2641 } 2642 on('init', () => { 2643 if (swiper.params.keyboard.enabled) { 2644 enable(); 2645 } 2646 }); 2647 on('destroy', () => { 2648 if (swiper.keyboard.enabled) { 2649 disable(); 2650 } 2651 }); 2652 Object.assign(swiper.keyboard, { 2653 enable, 2654 disable 2655 }); 2656} 2657 2658 2659 2660 2661/***/ }), 2662
vendor: 5,503 bytes, lines 2663-2867
2663/***/ "./node_modules/swiper/modules/manipulation.mjs": 2664/*!******************************************************!*\ 2665 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 2666 \******************************************************/ 2667/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2668 2669__webpack_require__.r(__webpack_exports__); 2670/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2671/* harmony export */ "default": () => (/* binding */ Manipulation) 2672/* harmony export */ }); 2673function appendSlide(slides) { 2674 const swiper = this; 2675 const { 2676 params, 2677 slidesEl 2678 } = swiper; 2679 if (params.loop) { 2680 swiper.loopDestroy(); 2681 } 2682 const appendElement = slideEl => { 2683 if (typeof slideEl === 'string') { 2684 const tempDOM = document.createElement('div'); 2685 tempDOM.innerHTML = slideEl; 2686 slidesEl.append(tempDOM.children[0]); 2687 tempDOM.innerHTML = ''; 2688 } else { 2689 slidesEl.append(slideEl); 2690 } 2691 }; 2692 if (typeof slides === 'object' && 'length' in slides) { 2693 for (let i = 0; i < slides.length; i += 1) { 2694 if (slides[i]) appendElement(slides[i]); 2695 } 2696 } else { 2697 appendElement(slides); 2698 } 2699 swiper.recalcSlides(); 2700 if (params.loop) { 2701 swiper.loopCreate(); 2702 } 2703 if (!params.observer || swiper.isElement) { 2704 swiper.update(); 2705 } 2706} 2707 2708function prependSlide(slides) { 2709 const swiper = this; 2710 const { 2711 params, 2712 activeIndex, 2713 slidesEl 2714 } = swiper; 2715 if (params.loop) { 2716 swiper.loopDestroy(); 2717 } 2718 let newActiveIndex = activeIndex + 1; 2719 const prependElement = slideEl => { 2720 if (typeof slideEl === 'string') { 2721 const tempDOM = document.createElement('div'); 2722 tempDOM.innerHTML = slideEl; 2723 slidesEl.prepend(tempDOM.children[0]); 2724 tempDOM.innerHTML = ''; 2725 } else { 2726 slidesEl.prepend(slideEl); 2727 } 2728 }; 2729 if (typeof slides === 'object' && 'length' in slides) { 2730 for (let i = 0; i < slides.length; i += 1) { 2731 if (slides[i]) prependElement(slides[i]); 2732 } 2733 newActiveIndex = activeIndex + slides.length; 2734 } else { 2735 prependElement(slides); 2736 } 2737 swiper.recalcSlides(); 2738 if (params.loop) { 2739 swiper.loopCreate(); 2740 } 2741 if (!params.observer || swiper.isElement) { 2742 swiper.update(); 2743 } 2744 swiper.slideTo(newActiveIndex, 0, false); 2745} 2746 2747function addSlide(index, slides) { 2748 const swiper = this; 2749 const { 2750 params, 2751 activeIndex, 2752 slidesEl 2753 } = swiper; 2754 let activeIndexBuffer = activeIndex; 2755 if (params.loop) { 2756 activeIndexBuffer -= swiper.loopedSlides; 2757 swiper.loopDestroy(); 2758 swiper.recalcSlides(); 2759 } 2760 const baseLength = swiper.slides.length; 2761 if (index <= 0) { 2762 swiper.prependSlide(slides); 2763 return; 2764 } 2765 if (index >= baseLength) { 2766 swiper.appendSlide(slides); 2767 return; 2768 } 2769 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 2770 const slidesBuffer = []; 2771 for (let i = baseLength - 1; i >= index; i -= 1) { 2772 const currentSlide = swiper.slides[i]; 2773 currentSlide.remove(); 2774 slidesBuffer.unshift(currentSlide); 2775 } 2776 if (typeof slides === 'object' && 'length' in slides) { 2777 for (let i = 0; i < slides.length; i += 1) { 2778 if (slides[i]) slidesEl.append(slides[i]); 2779 } 2780 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 2781 } else { 2782 slidesEl.append(slides); 2783 } 2784 for (let i = 0; i < slidesBuffer.length; i += 1) { 2785 slidesEl.append(slidesBuffer[i]); 2786 } 2787 swiper.recalcSlides(); 2788 if (params.loop) { 2789 swiper.loopCreate(); 2790 } 2791 if (!params.observer || swiper.isElement) { 2792 swiper.update(); 2793 } 2794 if (params.loop) { 2795 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2796 } else { 2797 swiper.slideTo(newActiveIndex, 0, false); 2798 } 2799} 2800 2801function removeSlide(slidesIndexes) { 2802 const swiper = this; 2803 const { 2804 params, 2805 activeIndex 2806 } = swiper; 2807 let activeIndexBuffer = activeIndex; 2808 if (params.loop) { 2809 activeIndexBuffer -= swiper.loopedSlides; 2810 swiper.loopDestroy(); 2811 } 2812 let newActiveIndex = activeIndexBuffer; 2813 let indexToRemove; 2814 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 2815 for (let i = 0; i < slidesIndexes.length; i += 1) { 2816 indexToRemove = slidesIndexes[i]; 2817 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 2818 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 2819 } 2820 newActiveIndex = Math.max(newActiveIndex, 0); 2821 } else { 2822 indexToRemove = slidesIndexes; 2823 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 2824 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 2825 newActiveIndex = Math.max(newActiveIndex, 0); 2826 } 2827 swiper.recalcSlides(); 2828 if (params.loop) { 2829 swiper.loopCreate(); 2830 } 2831 if (!params.observer || swiper.isElement) { 2832 swiper.update(); 2833 } 2834 if (params.loop) { 2835 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2836 } else { 2837 swiper.slideTo(newActiveIndex, 0, false); 2838 } 2839} 2840 2841function removeAllSlides() { 2842 const swiper = this; 2843 const slidesIndexes = []; 2844 for (let i = 0; i < swiper.slides.length; i += 1) { 2845 slidesIndexes.push(i); 2846 } 2847 swiper.removeSlide(slidesIndexes); 2848} 2849 2850function Manipulation(_ref) { 2851 let { 2852 swiper 2853 } = _ref; 2854 Object.assign(swiper, { 2855 appendSlide: appendSlide.bind(swiper), 2856 prependSlide: prependSlide.bind(swiper), 2857 addSlide: addSlide.bind(swiper), 2858 removeSlide: removeSlide.bind(swiper), 2859 removeAllSlides: removeAllSlides.bind(swiper) 2860 }); 2861} 2862 2863 2864 2865 2866/***/ }), 2867
vendor: 15,995 bytes, lines 2868-3278
2868/***/ "./node_modules/swiper/modules/mousewheel.mjs": 2869/*!****************************************************!*\ 2870 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 2871 \****************************************************/ 2872/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2873 2874__webpack_require__.r(__webpack_exports__); 2875/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2876/* harmony export */ "default": () => (/* binding */ Mousewheel) 2877/* harmony export */ }); 2878/* 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"); 2879/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2880 2881 2882 2883/* eslint-disable consistent-return */ 2884function Mousewheel(_ref) { 2885 let { 2886 swiper, 2887 extendParams, 2888 on, 2889 emit 2890 } = _ref; 2891 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2892 extendParams({ 2893 mousewheel: { 2894 enabled: false, 2895 releaseOnEdges: false, 2896 invert: false, 2897 forceToAxis: false, 2898 sensitivity: 1, 2899 eventsTarget: 'container', 2900 thresholdDelta: null, 2901 thresholdTime: null, 2902 noMousewheelClass: 'swiper-no-mousewheel' 2903 } 2904 }); 2905 swiper.mousewheel = { 2906 enabled: false 2907 }; 2908 let timeout; 2909 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 2910 let lastEventBeforeSnap; 2911 const recentWheelEvents = []; 2912 function normalize(e) { 2913 // Reasonable defaults 2914 const PIXEL_STEP = 10; 2915 const LINE_HEIGHT = 40; 2916 const PAGE_HEIGHT = 800; 2917 let sX = 0; 2918 let sY = 0; // spinX, spinY 2919 let pX = 0; 2920 let pY = 0; // pixelX, pixelY 2921 2922 // Legacy 2923 if ('detail' in e) { 2924 sY = e.detail; 2925 } 2926 if ('wheelDelta' in e) { 2927 sY = -e.wheelDelta / 120; 2928 } 2929 if ('wheelDeltaY' in e) { 2930 sY = -e.wheelDeltaY / 120; 2931 } 2932 if ('wheelDeltaX' in e) { 2933 sX = -e.wheelDeltaX / 120; 2934 } 2935 2936 // side scrolling on FF with DOMMouseScroll 2937 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 2938 sX = sY; 2939 sY = 0; 2940 } 2941 pX = sX * PIXEL_STEP; 2942 pY = sY * PIXEL_STEP; 2943 if ('deltaY' in e) { 2944 pY = e.deltaY; 2945 } 2946 if ('deltaX' in e) { 2947 pX = e.deltaX; 2948 } 2949 if (e.shiftKey && !pX) { 2950 // if user scrolls with shift he wants horizontal scroll 2951 pX = pY; 2952 pY = 0; 2953 } 2954 if ((pX || pY) && e.deltaMode) { 2955 if (e.deltaMode === 1) { 2956 // delta in LINE units 2957 pX *= LINE_HEIGHT; 2958 pY *= LINE_HEIGHT; 2959 } else { 2960 // delta in PAGE units 2961 pX *= PAGE_HEIGHT; 2962 pY *= PAGE_HEIGHT; 2963 } 2964 } 2965 2966 // Fall-back if spin cannot be determined 2967 if (pX && !sX) { 2968 sX = pX < 1 ? -1 : 1; 2969 } 2970 if (pY && !sY) { 2971 sY = pY < 1 ? -1 : 1; 2972 } 2973 return { 2974 spinX: sX, 2975 spinY: sY, 2976 pixelX: pX, 2977 pixelY: pY 2978 }; 2979 } 2980 function handleMouseEnter() { 2981 if (!swiper.enabled) return; 2982 swiper.mouseEntered = true; 2983 } 2984 function handleMouseLeave() { 2985 if (!swiper.enabled) return; 2986 swiper.mouseEntered = false; 2987 } 2988 function animateSlider(newEvent) { 2989 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 2990 // Prevent if delta of wheel scroll delta is below configured threshold 2991 return false; 2992 } 2993 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 2994 // Prevent if time between scrolls is below configured threshold 2995 return false; 2996 } 2997 2998 // If the movement is NOT big enough and 2999 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 3000 // Don't go any further (avoid insignificant scroll movement). 3001 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) { 3002 // Return false as a default 3003 return true; 3004 } 3005 // If user is scrolling towards the end: 3006 // If the slider hasn't hit the latest slide or 3007 // if the slider is a loop and 3008 // if the slider isn't moving right now: 3009 // Go to next slide and 3010 // emit a scroll event. 3011 // Else (the user is scrolling towards the beginning) and 3012 // if the slider hasn't hit the first slide or 3013 // if the slider is a loop and 3014 // if the slider isn't moving right now: 3015 // Go to prev slide and 3016 // emit a scroll event. 3017 if (newEvent.direction < 0) { 3018 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 3019 swiper.slideNext(); 3020 emit('scroll', newEvent.raw); 3021 } 3022 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 3023 swiper.slidePrev(); 3024 emit('scroll', newEvent.raw); 3025 } 3026 // If you got here is because an animation has been triggered so store the current time 3027 lastScrollTime = new window.Date().getTime(); 3028 // Return false as a default 3029 return false; 3030 } 3031 function releaseScroll(newEvent) { 3032 const params = swiper.params.mousewheel; 3033 if (newEvent.direction < 0) { 3034 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 3035 // Return true to animate scroll on edges 3036 return true; 3037 } 3038 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 3039 // Return true to animate scroll on edges 3040 return true; 3041 } 3042 return false; 3043 } 3044 function handle(event) { 3045 let e = event; 3046 let disableParentSwiper = true; 3047 if (!swiper.enabled) return; 3048 3049 // Ignore event if the target or its parents have the swiper-no-mousewheel class 3050 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 3051 const params = swiper.params.mousewheel; 3052 if (swiper.params.cssMode) { 3053 e.preventDefault(); 3054 } 3055 let targetEl = swiper.el; 3056 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3057 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3058 } 3059 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 3060 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 3061 if (e.originalEvent) e = e.originalEvent; // jquery fix 3062 let delta = 0; 3063 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 3064 const data = normalize(e); 3065 if (params.forceToAxis) { 3066 if (swiper.isHorizontal()) { 3067 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 3068 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 3069 } else { 3070 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 3071 } 3072 if (delta === 0) return true; 3073 if (params.invert) delta = -delta; 3074 3075 // Get the scroll positions 3076 let positions = swiper.getTranslate() + delta * params.sensitivity; 3077 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 3078 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 3079 3080 // When loop is true: 3081 // the disableParentSwiper will be true. 3082 // When loop is false: 3083 // if the scroll positions is not on edge, 3084 // then the disableParentSwiper will be true. 3085 // if the scroll on edge positions, 3086 // then the disableParentSwiper will be false. 3087 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 3088 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 3089 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 3090 // Register the new event in a variable which stores the relevant data 3091 const newEvent = { 3092 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 3093 delta: Math.abs(delta), 3094 direction: Math.sign(delta), 3095 raw: event 3096 }; 3097 3098 // Keep the most recent events 3099 if (recentWheelEvents.length >= 2) { 3100 recentWheelEvents.shift(); // only store the last N events 3101 } 3102 3103 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3104 recentWheelEvents.push(newEvent); 3105 3106 // If there is at least one previous recorded event: 3107 // If direction has changed or 3108 // if the scroll is quicker than the previous one: 3109 // Animate the slider. 3110 // Else (this is the first time the wheel is moved): 3111 // Animate the slider. 3112 if (prevEvent) { 3113 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 3114 animateSlider(newEvent); 3115 } 3116 } else { 3117 animateSlider(newEvent); 3118 } 3119 3120 // If it's time to release the scroll: 3121 // Return now so you don't hit the preventDefault. 3122 if (releaseScroll(newEvent)) { 3123 return true; 3124 } 3125 } else { 3126 // Freemode or scrollContainer: 3127 3128 // If we recently snapped after a momentum scroll, then ignore wheel events 3129 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 3130 // or if it's a new scroll (larger delta or inverse sign as last event before 3131 // an end-of-momentum snap). 3132 const newEvent = { 3133 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 3134 delta: Math.abs(delta), 3135 direction: Math.sign(delta) 3136 }; 3137 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 3138 if (!ignoreWheelEvents) { 3139 lastEventBeforeSnap = undefined; 3140 let position = swiper.getTranslate() + delta * params.sensitivity; 3141 const wasBeginning = swiper.isBeginning; 3142 const wasEnd = swiper.isEnd; 3143 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 3144 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 3145 swiper.setTransition(0); 3146 swiper.setTranslate(position); 3147 swiper.updateProgress(); 3148 swiper.updateActiveIndex(); 3149 swiper.updateSlidesClasses(); 3150 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 3151 swiper.updateSlidesClasses(); 3152 } 3153 if (swiper.params.loop) { 3154 swiper.loopFix({ 3155 direction: newEvent.direction < 0 ? 'next' : 'prev', 3156 byMousewheel: true 3157 }); 3158 } 3159 if (swiper.params.freeMode.sticky) { 3160 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 3161 // the end of a momentum scroll by storing recent (N=15?) wheel events. 3162 // 1. do all N events have decreasing or same (absolute value) delta? 3163 // 2. did all N events arrive in the last M (M=500?) msecs? 3164 // 3. does the earliest event have an (absolute value) delta that's 3165 // at least P (P=1?) larger than the most recent event's delta? 3166 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 3167 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 3168 // Snap immediately and ignore remaining wheel events in this scroll. 3169 // See comment above for "remaining wheel events in this scroll" determination. 3170 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 3171 clearTimeout(timeout); 3172 timeout = undefined; 3173 if (recentWheelEvents.length >= 15) { 3174 recentWheelEvents.shift(); // only store the last N events 3175 } 3176 3177 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3178 const firstEvent = recentWheelEvents[0]; 3179 recentWheelEvents.push(newEvent); 3180 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 3181 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 3182 recentWheelEvents.splice(0); 3183 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 3184 // We're at the end of the deceleration of a momentum scroll, so there's no need 3185 // to wait for more events. Snap ASAP on the next tick. 3186 // Also, because there's some remaining momentum we'll bias the snap in the 3187 // direction of the ongoing scroll because it's better UX for the scroll to snap 3188 // in the same direction as the scroll instead of reversing to snap. Therefore, 3189 // if it's already scrolled more than 20% in the current direction, keep going. 3190 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 3191 lastEventBeforeSnap = newEvent; 3192 recentWheelEvents.splice(0); 3193 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3194 if (swiper.destroyed || !swiper.params) return; 3195 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3196 }, 0); // no delay; move on next tick 3197 } 3198 3199 if (!timeout) { 3200 // if we get here, then we haven't detected the end of a momentum scroll, so 3201 // we'll consider a scroll "complete" when there haven't been any wheel events 3202 // for 500ms. 3203 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3204 if (swiper.destroyed || !swiper.params) return; 3205 const snapToThreshold = 0.5; 3206 lastEventBeforeSnap = newEvent; 3207 recentWheelEvents.splice(0); 3208 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3209 }, 500); 3210 } 3211 } 3212 3213 // Emit event 3214 if (!ignoreWheelEvents) emit('scroll', e); 3215 3216 // Stop autoplay 3217 if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); 3218 // Return page scroll on edge positions 3219 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 3220 return true; 3221 } 3222 } 3223 } 3224 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 3225 return false; 3226 } 3227 function events(method) { 3228 let targetEl = swiper.el; 3229 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3230 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3231 } 3232 targetEl[method]('mouseenter', handleMouseEnter); 3233 targetEl[method]('mouseleave', handleMouseLeave); 3234 targetEl[method]('wheel', handle); 3235 } 3236 function enable() { 3237 if (swiper.params.cssMode) { 3238 swiper.wrapperEl.removeEventListener('wheel', handle); 3239 return true; 3240 } 3241 if (swiper.mousewheel.enabled) return false; 3242 events('addEventListener'); 3243 swiper.mousewheel.enabled = true; 3244 return true; 3245 } 3246 function disable() { 3247 if (swiper.params.cssMode) { 3248 swiper.wrapperEl.addEventListener(event, handle); 3249 return true; 3250 } 3251 if (!swiper.mousewheel.enabled) return false; 3252 events('removeEventListener'); 3253 swiper.mousewheel.enabled = false; 3254 return true; 3255 } 3256 on('init', () => { 3257 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 3258 disable(); 3259 } 3260 if (swiper.params.mousewheel.enabled) enable(); 3261 }); 3262 on('destroy', () => { 3263 if (swiper.params.cssMode) { 3264 enable(); 3265 } 3266 if (swiper.mousewheel.enabled) disable(); 3267 }); 3268 Object.assign(swiper.mousewheel, { 3269 enable, 3270 disable 3271 }); 3272} 3273 3274 3275 3276 3277/***/ }), 3278
vendor: 7,408 bytes, lines 3279-3494
3279/***/ "./node_modules/swiper/modules/navigation.mjs": 3280/*!****************************************************!*\ 3281 !*** ./node_modules/swiper/modules/navigation.mjs ***! 3282 \****************************************************/ 3283/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3284 3285__webpack_require__.r(__webpack_exports__); 3286/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3287/* harmony export */ "default": () => (/* binding */ Navigation) 3288/* harmony export */ }); 3289/* 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"); 3290/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3291 3292 3293 3294function Navigation(_ref) { 3295 let { 3296 swiper, 3297 extendParams, 3298 on, 3299 emit 3300 } = _ref; 3301 extendParams({ 3302 navigation: { 3303 nextEl: null, 3304 prevEl: null, 3305 hideOnClick: false, 3306 disabledClass: 'swiper-button-disabled', 3307 hiddenClass: 'swiper-button-hidden', 3308 lockClass: 'swiper-button-lock', 3309 navigationDisabledClass: 'swiper-navigation-disabled' 3310 } 3311 }); 3312 swiper.navigation = { 3313 nextEl: null, 3314 prevEl: null 3315 }; 3316 function getEl(el) { 3317 let res; 3318 if (el && typeof el === 'string' && swiper.isElement) { 3319 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 3320 if (res) return res; 3321 } 3322 if (el) { 3323 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 3324 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 3325 res = swiper.el.querySelector(el); 3326 } else if (res && res.length === 1) { 3327 res = res[0]; 3328 } 3329 } 3330 if (el && !res) return el; 3331 // if (Array.isArray(res) && res.length === 1) res = res[0]; 3332 return res; 3333 } 3334 function toggleEl(el, disabled) { 3335 const params = swiper.params.navigation; 3336 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 3337 el.forEach(subEl => { 3338 if (subEl) { 3339 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 3340 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 3341 if (swiper.params.watchOverflow && swiper.enabled) { 3342 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3343 } 3344 } 3345 }); 3346 } 3347 function update() { 3348 // Update Navigation Buttons 3349 const { 3350 nextEl, 3351 prevEl 3352 } = swiper.navigation; 3353 if (swiper.params.loop) { 3354 toggleEl(prevEl, false); 3355 toggleEl(nextEl, false); 3356 return; 3357 } 3358 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 3359 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 3360 } 3361 function onPrevClick(e) { 3362 e.preventDefault(); 3363 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 3364 swiper.slidePrev(); 3365 emit('navigationPrev'); 3366 } 3367 function onNextClick(e) { 3368 e.preventDefault(); 3369 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 3370 swiper.slideNext(); 3371 emit('navigationNext'); 3372 } 3373 function init() { 3374 const params = swiper.params.navigation; 3375 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 3376 nextEl: 'swiper-button-next', 3377 prevEl: 'swiper-button-prev' 3378 }); 3379 if (!(params.nextEl || params.prevEl)) return; 3380 let nextEl = getEl(params.nextEl); 3381 let prevEl = getEl(params.prevEl); 3382 Object.assign(swiper.navigation, { 3383 nextEl, 3384 prevEl 3385 }); 3386 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3387 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3388 const initButton = (el, dir) => { 3389 if (el) { 3390 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3391 } 3392 if (!swiper.enabled && el) { 3393 el.classList.add(...params.lockClass.split(' ')); 3394 } 3395 }; 3396 nextEl.forEach(el => initButton(el, 'next')); 3397 prevEl.forEach(el => initButton(el, 'prev')); 3398 } 3399 function destroy() { 3400 let { 3401 nextEl, 3402 prevEl 3403 } = swiper.navigation; 3404 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3405 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3406 const destroyButton = (el, dir) => { 3407 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3408 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 3409 }; 3410 nextEl.forEach(el => destroyButton(el, 'next')); 3411 prevEl.forEach(el => destroyButton(el, 'prev')); 3412 } 3413 on('init', () => { 3414 if (swiper.params.navigation.enabled === false) { 3415 // eslint-disable-next-line 3416 disable(); 3417 } else { 3418 init(); 3419 update(); 3420 } 3421 }); 3422 on('toEdge fromEdge lock unlock', () => { 3423 update(); 3424 }); 3425 on('destroy', () => { 3426 destroy(); 3427 }); 3428 on('enable disable', () => { 3429 let { 3430 nextEl, 3431 prevEl 3432 } = swiper.navigation; 3433 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3434 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3435 if (swiper.enabled) { 3436 update(); 3437 return; 3438 } 3439 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 3440 }); 3441 on('click', (_s, e) => { 3442 let { 3443 nextEl, 3444 prevEl 3445 } = swiper.navigation; 3446 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3447 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3448 const targetEl = e.target; 3449 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 3450 if (swiper.isElement && !targetIsButton) { 3451 const path = e.path || e.composedPath && e.composedPath(); 3452 if (path) { 3453 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 3454 } 3455 } 3456 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 3457 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 3458 let isHidden; 3459 if (nextEl.length) { 3460 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3461 } else if (prevEl.length) { 3462 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3463 } 3464 if (isHidden === true) { 3465 emit('navigationShow'); 3466 } else { 3467 emit('navigationHide'); 3468 } 3469 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 3470 } 3471 }); 3472 const enable = () => { 3473 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3474 init(); 3475 update(); 3476 }; 3477 const disable = () => { 3478 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3479 destroy(); 3480 }; 3481 Object.assign(swiper.navigation, { 3482 enable, 3483 disable, 3484 update, 3485 init, 3486 destroy 3487 }); 3488} 3489 3490 3491 3492 3493/***/ }), 3494
vendor: 19,035 bytes, lines 3495-3971
3495/***/ "./node_modules/swiper/modules/pagination.mjs": 3496/*!****************************************************!*\ 3497 !*** ./node_modules/swiper/modules/pagination.mjs ***! 3498 \****************************************************/ 3499/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3500 3501__webpack_require__.r(__webpack_exports__); 3502/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3503/* harmony export */ "default": () => (/* binding */ Pagination) 3504/* harmony export */ }); 3505/* 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"); 3506/* 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"); 3507/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3508 3509 3510 3511 3512function Pagination(_ref) { 3513 let { 3514 swiper, 3515 extendParams, 3516 on, 3517 emit 3518 } = _ref; 3519 const pfx = 'swiper-pagination'; 3520 extendParams({ 3521 pagination: { 3522 el: null, 3523 bulletElement: 'span', 3524 clickable: false, 3525 hideOnClick: false, 3526 renderBullet: null, 3527 renderProgressbar: null, 3528 renderFraction: null, 3529 renderCustom: null, 3530 progressbarOpposite: false, 3531 type: 'bullets', 3532 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 3533 dynamicBullets: false, 3534 dynamicMainBullets: 1, 3535 formatFractionCurrent: number => number, 3536 formatFractionTotal: number => number, 3537 bulletClass: `${pfx}-bullet`, 3538 bulletActiveClass: `${pfx}-bullet-active`, 3539 modifierClass: `${pfx}-`, 3540 currentClass: `${pfx}-current`, 3541 totalClass: `${pfx}-total`, 3542 hiddenClass: `${pfx}-hidden`, 3543 progressbarFillClass: `${pfx}-progressbar-fill`, 3544 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 3545 clickableClass: `${pfx}-clickable`, 3546 lockClass: `${pfx}-lock`, 3547 horizontalClass: `${pfx}-horizontal`, 3548 verticalClass: `${pfx}-vertical`, 3549 paginationDisabledClass: `${pfx}-disabled` 3550 } 3551 }); 3552 swiper.pagination = { 3553 el: null, 3554 bullets: [] 3555 }; 3556 let bulletSize; 3557 let dynamicBulletIndex = 0; 3558 function isPaginationDisabled() { 3559 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 3560 } 3561 function setSideBullets(bulletEl, position) { 3562 const { 3563 bulletActiveClass 3564 } = swiper.params.pagination; 3565 if (!bulletEl) return; 3566 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3567 if (bulletEl) { 3568 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 3569 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3570 if (bulletEl) { 3571 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 3572 } 3573 } 3574 } 3575 function getMoveDirection(prevIndex, nextIndex, length) { 3576 prevIndex = prevIndex % length; 3577 nextIndex = nextIndex % length; 3578 if (nextIndex === prevIndex + 1) { 3579 return 'next'; 3580 } else if (nextIndex === prevIndex - 1) { 3581 return 'previous'; 3582 } 3583 return; 3584 } 3585 function onBulletClick(e) { 3586 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 3587 if (!bulletEl) { 3588 return; 3589 } 3590 e.preventDefault(); 3591 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup; 3592 if (swiper.params.loop) { 3593 if (swiper.realIndex === index) return; 3594 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); 3595 if (moveDirection === 'next') { 3596 swiper.slideNext(); 3597 } else if (moveDirection === 'previous') { 3598 swiper.slidePrev(); 3599 } else { 3600 swiper.slideToLoop(index); 3601 } 3602 } else { 3603 swiper.slideTo(index); 3604 } 3605 } 3606 function update() { 3607 // Render || Update Pagination bullets/items 3608 const rtl = swiper.rtl; 3609 const params = swiper.params.pagination; 3610 if (isPaginationDisabled()) return; 3611 let el = swiper.pagination.el; 3612 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3613 // Current/Total 3614 let current; 3615 let previousIndex; 3616 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 3617 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3618 if (swiper.params.loop) { 3619 previousIndex = swiper.previousRealIndex || 0; 3620 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 3621 } else if (typeof swiper.snapIndex !== 'undefined') { 3622 current = swiper.snapIndex; 3623 previousIndex = swiper.previousSnapIndex; 3624 } else { 3625 previousIndex = swiper.previousIndex || 0; 3626 current = swiper.activeIndex || 0; 3627 } 3628 // Types 3629 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 3630 const bullets = swiper.pagination.bullets; 3631 let firstIndex; 3632 let lastIndex; 3633 let midIndex; 3634 if (params.dynamicBullets) { 3635 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 3636 el.forEach(subEl => { 3637 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 3638 }); 3639 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 3640 dynamicBulletIndex += current - (previousIndex || 0); 3641 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 3642 dynamicBulletIndex = params.dynamicMainBullets - 1; 3643 } else if (dynamicBulletIndex < 0) { 3644 dynamicBulletIndex = 0; 3645 } 3646 } 3647 firstIndex = Math.max(current - dynamicBulletIndex, 0); 3648 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 3649 midIndex = (lastIndex + firstIndex) / 2; 3650 } 3651 bullets.forEach(bulletEl => { 3652 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(); 3653 bulletEl.classList.remove(...classesToRemove); 3654 }); 3655 if (el.length > 1) { 3656 bullets.forEach(bullet => { 3657 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet); 3658 if (bulletIndex === current) { 3659 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3660 } else if (swiper.isElement) { 3661 bullet.setAttribute('part', 'bullet'); 3662 } 3663 if (params.dynamicBullets) { 3664 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 3665 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3666 } 3667 if (bulletIndex === firstIndex) { 3668 setSideBullets(bullet, 'prev'); 3669 } 3670 if (bulletIndex === lastIndex) { 3671 setSideBullets(bullet, 'next'); 3672 } 3673 } 3674 }); 3675 } else { 3676 const bullet = bullets[current]; 3677 if (bullet) { 3678 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3679 } 3680 if (swiper.isElement) { 3681 bullets.forEach((bulletEl, bulletIndex) => { 3682 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 3683 }); 3684 } 3685 if (params.dynamicBullets) { 3686 const firstDisplayedBullet = bullets[firstIndex]; 3687 const lastDisplayedBullet = bullets[lastIndex]; 3688 for (let i = firstIndex; i <= lastIndex; i += 1) { 3689 if (bullets[i]) { 3690 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3691 } 3692 } 3693 setSideBullets(firstDisplayedBullet, 'prev'); 3694 setSideBullets(lastDisplayedBullet, 'next'); 3695 } 3696 } 3697 if (params.dynamicBullets) { 3698 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 3699 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 3700 const offsetProp = rtl ? 'right' : 'left'; 3701 bullets.forEach(bullet => { 3702 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 3703 }); 3704 } 3705 } 3706 el.forEach((subEl, subElIndex) => { 3707 if (params.type === 'fraction') { 3708 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 3709 fractionEl.textContent = params.formatFractionCurrent(current + 1); 3710 }); 3711 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 3712 totalEl.textContent = params.formatFractionTotal(total); 3713 }); 3714 } 3715 if (params.type === 'progressbar') { 3716 let progressbarDirection; 3717 if (params.progressbarOpposite) { 3718 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 3719 } else { 3720 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 3721 } 3722 const scale = (current + 1) / total; 3723 let scaleX = 1; 3724 let scaleY = 1; 3725 if (progressbarDirection === 'horizontal') { 3726 scaleX = scale; 3727 } else { 3728 scaleY = scale; 3729 } 3730 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 3731 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 3732 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 3733 }); 3734 } 3735 if (params.type === 'custom' && params.renderCustom) { 3736 subEl.innerHTML = params.renderCustom(swiper, current + 1, total); 3737 if (subElIndex === 0) emit('paginationRender', subEl); 3738 } else { 3739 if (subElIndex === 0) emit('paginationRender', subEl); 3740 emit('paginationUpdate', subEl); 3741 } 3742 if (swiper.params.watchOverflow && swiper.enabled) { 3743 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3744 } 3745 }); 3746 } 3747 function render() { 3748 // Render Container 3749 const params = swiper.params.pagination; 3750 if (isPaginationDisabled()) return; 3751 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; 3752 let el = swiper.pagination.el; 3753 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3754 let paginationHTML = ''; 3755 if (params.type === 'bullets') { 3756 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3757 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 3758 numberOfBullets = slidesLength; 3759 } 3760 for (let i = 0; i < numberOfBullets; i += 1) { 3761 if (params.renderBullet) { 3762 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 3763 } else { 3764 // prettier-ignore 3765 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 3766 } 3767 } 3768 } 3769 if (params.type === 'fraction') { 3770 if (params.renderFraction) { 3771 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 3772 } else { 3773 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 3774 } 3775 } 3776 if (params.type === 'progressbar') { 3777 if (params.renderProgressbar) { 3778 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 3779 } else { 3780 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 3781 } 3782 } 3783 swiper.pagination.bullets = []; 3784 el.forEach(subEl => { 3785 if (params.type !== 'custom') { 3786 subEl.innerHTML = paginationHTML || ''; 3787 } 3788 if (params.type === 'bullets') { 3789 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 3790 } 3791 }); 3792 if (params.type !== 'custom') { 3793 emit('paginationRender', el[0]); 3794 } 3795 } 3796 function init() { 3797 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 3798 el: 'swiper-pagination' 3799 }); 3800 const params = swiper.params.pagination; 3801 if (!params.el) return; 3802 let el; 3803 if (typeof params.el === 'string' && swiper.isElement) { 3804 el = swiper.el.querySelector(params.el); 3805 } 3806 if (!el && typeof params.el === 'string') { 3807 el = [...document.querySelectorAll(params.el)]; 3808 } 3809 if (!el) { 3810 el = params.el; 3811 } 3812 if (!el || el.length === 0) return; 3813 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 3814 el = [...swiper.el.querySelectorAll(params.el)]; 3815 // check if it belongs to another nested Swiper 3816 if (el.length > 1) { 3817 el = el.find(subEl => { 3818 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false; 3819 return true; 3820 }); 3821 } 3822 } 3823 if (Array.isArray(el) && el.length === 1) el = el[0]; 3824 Object.assign(swiper.pagination, { 3825 el 3826 }); 3827 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3828 el.forEach(subEl => { 3829 if (params.type === 'bullets' && params.clickable) { 3830 subEl.classList.add(...(params.clickableClass || '').split(' ')); 3831 } 3832 subEl.classList.add(params.modifierClass + params.type); 3833 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3834 if (params.type === 'bullets' && params.dynamicBullets) { 3835 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 3836 dynamicBulletIndex = 0; 3837 if (params.dynamicMainBullets < 1) { 3838 params.dynamicMainBullets = 1; 3839 } 3840 } 3841 if (params.type === 'progressbar' && params.progressbarOpposite) { 3842 subEl.classList.add(params.progressbarOppositeClass); 3843 } 3844 if (params.clickable) { 3845 subEl.addEventListener('click', onBulletClick); 3846 } 3847 if (!swiper.enabled) { 3848 subEl.classList.add(params.lockClass); 3849 } 3850 }); 3851 } 3852 function destroy() { 3853 const params = swiper.params.pagination; 3854 if (isPaginationDisabled()) return; 3855 let el = swiper.pagination.el; 3856 if (el) { 3857 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3858 el.forEach(subEl => { 3859 subEl.classList.remove(params.hiddenClass); 3860 subEl.classList.remove(params.modifierClass + params.type); 3861 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3862 if (params.clickable) { 3863 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 3864 subEl.removeEventListener('click', onBulletClick); 3865 } 3866 }); 3867 } 3868 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 3869 } 3870 on('changeDirection', () => { 3871 if (!swiper.pagination || !swiper.pagination.el) return; 3872 const params = swiper.params.pagination; 3873 let { 3874 el 3875 } = swiper.pagination; 3876 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3877 el.forEach(subEl => { 3878 subEl.classList.remove(params.horizontalClass, params.verticalClass); 3879 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 3880 }); 3881 }); 3882 on('init', () => { 3883 if (swiper.params.pagination.enabled === false) { 3884 // eslint-disable-next-line 3885 disable(); 3886 } else { 3887 init(); 3888 render(); 3889 update(); 3890 } 3891 }); 3892 on('activeIndexChange', () => { 3893 if (typeof swiper.snapIndex === 'undefined') { 3894 update(); 3895 } 3896 }); 3897 on('snapIndexChange', () => { 3898 update(); 3899 }); 3900 on('snapGridLengthChange', () => { 3901 render(); 3902 update(); 3903 }); 3904 on('destroy', () => { 3905 destroy(); 3906 }); 3907 on('enable disable', () => { 3908 let { 3909 el 3910 } = swiper.pagination; 3911 if (el) { 3912 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3913 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 3914 } 3915 }); 3916 on('lock unlock', () => { 3917 update(); 3918 }); 3919 on('click', (_s, e) => { 3920 const targetEl = e.target; 3921 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 3922 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 3923 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 3924 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 3925 if (isHidden === true) { 3926 emit('paginationShow'); 3927 } else { 3928 emit('paginationHide'); 3929 } 3930 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 3931 } 3932 }); 3933 const enable = () => { 3934 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 3935 let { 3936 el 3937 } = swiper.pagination; 3938 if (el) { 3939 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3940 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 3941 } 3942 init(); 3943 render(); 3944 update(); 3945 }; 3946 const disable = () => { 3947 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 3948 let { 3949 el 3950 } = swiper.pagination; 3951 if (el) { 3952 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3953 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 3954 } 3955 destroy(); 3956 }; 3957 Object.assign(swiper.pagination, { 3958 enable, 3959 disable, 3960 render, 3961 update, 3962 init, 3963 destroy 3964 }); 3965} 3966 3967 3968 3969 3970/***/ }), 3971
vendor: 4,684 bytes, lines 3972-4110
3972/***/ "./node_modules/swiper/modules/parallax.mjs": 3973/*!**************************************************!*\ 3974 !*** ./node_modules/swiper/modules/parallax.mjs ***! 3975 \**************************************************/ 3976/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3977 3978__webpack_require__.r(__webpack_exports__); 3979/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3980/* harmony export */ "default": () => (/* binding */ Parallax) 3981/* harmony export */ }); 3982/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3983 3984 3985function Parallax(_ref) { 3986 let { 3987 swiper, 3988 extendParams, 3989 on 3990 } = _ref; 3991 extendParams({ 3992 parallax: { 3993 enabled: false 3994 } 3995 }); 3996 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 3997 const setTransform = (el, progress) => { 3998 const { 3999 rtl 4000 } = swiper; 4001 const rtlFactor = rtl ? -1 : 1; 4002 const p = el.getAttribute('data-swiper-parallax') || '0'; 4003 let x = el.getAttribute('data-swiper-parallax-x'); 4004 let y = el.getAttribute('data-swiper-parallax-y'); 4005 const scale = el.getAttribute('data-swiper-parallax-scale'); 4006 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 4007 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 4008 if (x || y) { 4009 x = x || '0'; 4010 y = y || '0'; 4011 } else if (swiper.isHorizontal()) { 4012 x = p; 4013 y = '0'; 4014 } else { 4015 y = p; 4016 x = '0'; 4017 } 4018 if (x.indexOf('%') >= 0) { 4019 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 4020 } else { 4021 x = `${x * progress * rtlFactor}px`; 4022 } 4023 if (y.indexOf('%') >= 0) { 4024 y = `${parseInt(y, 10) * progress}%`; 4025 } else { 4026 y = `${y * progress}px`; 4027 } 4028 if (typeof opacity !== 'undefined' && opacity !== null) { 4029 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 4030 el.style.opacity = currentOpacity; 4031 } 4032 let transform = `translate3d(${x}, ${y}, 0px)`; 4033 if (typeof scale !== 'undefined' && scale !== null) { 4034 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 4035 transform += ` scale(${currentScale})`; 4036 } 4037 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 4038 const currentRotate = rotate * progress * -1; 4039 transform += ` rotate(${currentRotate}deg)`; 4040 } 4041 el.style.transform = transform; 4042 }; 4043 const setTranslate = () => { 4044 const { 4045 el, 4046 slides, 4047 progress, 4048 snapGrid, 4049 isElement 4050 } = swiper; 4051 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 4052 if (swiper.isElement) { 4053 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 4054 } 4055 elements.forEach(subEl => { 4056 setTransform(subEl, progress); 4057 }); 4058 slides.forEach((slideEl, slideIndex) => { 4059 let slideProgress = slideEl.progress; 4060 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 4061 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 4062 } 4063 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 4064 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 4065 setTransform(subEl, slideProgress); 4066 }); 4067 }); 4068 }; 4069 const setTransition = function (duration) { 4070 if (duration === void 0) { 4071 duration = swiper.params.speed; 4072 } 4073 const { 4074 el, 4075 hostEl 4076 } = swiper; 4077 const elements = [...el.querySelectorAll(elementsSelector)]; 4078 if (swiper.isElement) { 4079 elements.push(...hostEl.querySelectorAll(elementsSelector)); 4080 } 4081 elements.forEach(parallaxEl => { 4082 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 4083 if (duration === 0) parallaxDuration = 0; 4084 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 4085 }); 4086 }; 4087 on('beforeInit', () => { 4088 if (!swiper.params.parallax.enabled) return; 4089 swiper.params.watchSlidesProgress = true; 4090 swiper.originalParams.watchSlidesProgress = true; 4091 }); 4092 on('init', () => { 4093 if (!swiper.params.parallax.enabled) return; 4094 setTranslate(); 4095 }); 4096 on('setTranslate', () => { 4097 if (!swiper.params.parallax.enabled) return; 4098 setTranslate(); 4099 }); 4100 on('setTransition', (_swiper, duration) => { 4101 if (!swiper.params.parallax.enabled) return; 4102 setTransition(duration); 4103 }); 4104} 4105 4106 4107 4108 4109/***/ }), 4110
vendor: 12,517 bytes, lines 4111-4494
4111/***/ "./node_modules/swiper/modules/scrollbar.mjs": 4112/*!***************************************************!*\ 4113 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 4114 \***************************************************/ 4115/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4116 4117__webpack_require__.r(__webpack_exports__); 4118/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4119/* harmony export */ "default": () => (/* binding */ Scrollbar) 4120/* harmony export */ }); 4121/* 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"); 4122/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4123/* 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"); 4124/* 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"); 4125 4126 4127 4128 4129 4130function Scrollbar(_ref) { 4131 let { 4132 swiper, 4133 extendParams, 4134 on, 4135 emit 4136 } = _ref; 4137 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4138 let isTouched = false; 4139 let timeout = null; 4140 let dragTimeout = null; 4141 let dragStartPos; 4142 let dragSize; 4143 let trackSize; 4144 let divider; 4145 extendParams({ 4146 scrollbar: { 4147 el: null, 4148 dragSize: 'auto', 4149 hide: false, 4150 draggable: false, 4151 snapOnRelease: true, 4152 lockClass: 'swiper-scrollbar-lock', 4153 dragClass: 'swiper-scrollbar-drag', 4154 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 4155 horizontalClass: `swiper-scrollbar-horizontal`, 4156 verticalClass: `swiper-scrollbar-vertical` 4157 } 4158 }); 4159 swiper.scrollbar = { 4160 el: null, 4161 dragEl: null 4162 }; 4163 function setTranslate() { 4164 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4165 const { 4166 scrollbar, 4167 rtlTranslate: rtl 4168 } = swiper; 4169 const { 4170 dragEl, 4171 el 4172 } = scrollbar; 4173 const params = swiper.params.scrollbar; 4174 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 4175 let newSize = dragSize; 4176 let newPos = (trackSize - dragSize) * progress; 4177 if (rtl) { 4178 newPos = -newPos; 4179 if (newPos > 0) { 4180 newSize = dragSize - newPos; 4181 newPos = 0; 4182 } else if (-newPos + dragSize > trackSize) { 4183 newSize = trackSize + newPos; 4184 } 4185 } else if (newPos < 0) { 4186 newSize = dragSize + newPos; 4187 newPos = 0; 4188 } else if (newPos + dragSize > trackSize) { 4189 newSize = trackSize - newPos; 4190 } 4191 if (swiper.isHorizontal()) { 4192 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 4193 dragEl.style.width = `${newSize}px`; 4194 } else { 4195 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 4196 dragEl.style.height = `${newSize}px`; 4197 } 4198 if (params.hide) { 4199 clearTimeout(timeout); 4200 el.style.opacity = 1; 4201 timeout = setTimeout(() => { 4202 el.style.opacity = 0; 4203 el.style.transitionDuration = '400ms'; 4204 }, 1000); 4205 } 4206 } 4207 function setTransition(duration) { 4208 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4209 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 4210 } 4211 function updateSize() { 4212 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4213 const { 4214 scrollbar 4215 } = swiper; 4216 const { 4217 dragEl, 4218 el 4219 } = scrollbar; 4220 dragEl.style.width = ''; 4221 dragEl.style.height = ''; 4222 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 4223 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 4224 if (swiper.params.scrollbar.dragSize === 'auto') { 4225 dragSize = trackSize * divider; 4226 } else { 4227 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 4228 } 4229 if (swiper.isHorizontal()) { 4230 dragEl.style.width = `${dragSize}px`; 4231 } else { 4232 dragEl.style.height = `${dragSize}px`; 4233 } 4234 if (divider >= 1) { 4235 el.style.display = 'none'; 4236 } else { 4237 el.style.display = ''; 4238 } 4239 if (swiper.params.scrollbar.hide) { 4240 el.style.opacity = 0; 4241 } 4242 if (swiper.params.watchOverflow && swiper.enabled) { 4243 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 4244 } 4245 } 4246 function getPointerPosition(e) { 4247 return swiper.isHorizontal() ? e.clientX : e.clientY; 4248 } 4249 function setDragPosition(e) { 4250 const { 4251 scrollbar, 4252 rtlTranslate: rtl 4253 } = swiper; 4254 const { 4255 el 4256 } = scrollbar; 4257 let positionRatio; 4258 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 4259 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 4260 if (rtl) { 4261 positionRatio = 1 - positionRatio; 4262 } 4263 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 4264 swiper.updateProgress(position); 4265 swiper.setTranslate(position); 4266 swiper.updateActiveIndex(); 4267 swiper.updateSlidesClasses(); 4268 } 4269 function onDragStart(e) { 4270 const params = swiper.params.scrollbar; 4271 const { 4272 scrollbar, 4273 wrapperEl 4274 } = swiper; 4275 const { 4276 el, 4277 dragEl 4278 } = scrollbar; 4279 isTouched = true; 4280 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 4281 e.preventDefault(); 4282 e.stopPropagation(); 4283 wrapperEl.style.transitionDuration = '100ms'; 4284 dragEl.style.transitionDuration = '100ms'; 4285 setDragPosition(e); 4286 clearTimeout(dragTimeout); 4287 el.style.transitionDuration = '0ms'; 4288 if (params.hide) { 4289 el.style.opacity = 1; 4290 } 4291 if (swiper.params.cssMode) { 4292 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 4293 } 4294 emit('scrollbarDragStart', e); 4295 } 4296 function onDragMove(e) { 4297 const { 4298 scrollbar, 4299 wrapperEl 4300 } = swiper; 4301 const { 4302 el, 4303 dragEl 4304 } = scrollbar; 4305 if (!isTouched) return; 4306 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 4307 setDragPosition(e); 4308 wrapperEl.style.transitionDuration = '0ms'; 4309 el.style.transitionDuration = '0ms'; 4310 dragEl.style.transitionDuration = '0ms'; 4311 emit('scrollbarDragMove', e); 4312 } 4313 function onDragEnd(e) { 4314 const params = swiper.params.scrollbar; 4315 const { 4316 scrollbar, 4317 wrapperEl 4318 } = swiper; 4319 const { 4320 el 4321 } = scrollbar; 4322 if (!isTouched) return; 4323 isTouched = false; 4324 if (swiper.params.cssMode) { 4325 swiper.wrapperEl.style['scroll-snap-type'] = ''; 4326 wrapperEl.style.transitionDuration = ''; 4327 } 4328 if (params.hide) { 4329 clearTimeout(dragTimeout); 4330 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 4331 el.style.opacity = 0; 4332 el.style.transitionDuration = '400ms'; 4333 }, 1000); 4334 } 4335 emit('scrollbarDragEnd', e); 4336 if (params.snapOnRelease) { 4337 swiper.slideToClosest(); 4338 } 4339 } 4340 function events(method) { 4341 const { 4342 scrollbar, 4343 params 4344 } = swiper; 4345 const el = scrollbar.el; 4346 if (!el) return; 4347 const target = el; 4348 const activeListener = params.passiveListeners ? { 4349 passive: false, 4350 capture: false 4351 } : false; 4352 const passiveListener = params.passiveListeners ? { 4353 passive: true, 4354 capture: false 4355 } : false; 4356 if (!target) return; 4357 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 4358 target[eventMethod]('pointerdown', onDragStart, activeListener); 4359 document[eventMethod]('pointermove', onDragMove, activeListener); 4360 document[eventMethod]('pointerup', onDragEnd, passiveListener); 4361 } 4362 function enableDraggable() { 4363 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4364 events('on'); 4365 } 4366 function disableDraggable() { 4367 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4368 events('off'); 4369 } 4370 function init() { 4371 const { 4372 scrollbar, 4373 el: swiperEl 4374 } = swiper; 4375 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 4376 el: 'swiper-scrollbar' 4377 }); 4378 const params = swiper.params.scrollbar; 4379 if (!params.el) return; 4380 let el; 4381 if (typeof params.el === 'string' && swiper.isElement) { 4382 el = swiper.el.querySelector(params.el); 4383 } 4384 if (!el && typeof params.el === 'string') { 4385 el = document.querySelectorAll(params.el); 4386 if (!el.length) return; 4387 } else if (!el) { 4388 el = params.el; 4389 } 4390 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 4391 el = swiperEl.querySelector(params.el); 4392 } 4393 if (el.length > 0) el = el[0]; 4394 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4395 let dragEl; 4396 if (el) { 4397 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 4398 if (!dragEl) { 4399 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 4400 el.append(dragEl); 4401 } 4402 } 4403 Object.assign(scrollbar, { 4404 el, 4405 dragEl 4406 }); 4407 if (params.draggable) { 4408 enableDraggable(); 4409 } 4410 if (el) { 4411 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 4412 } 4413 } 4414 function destroy() { 4415 const params = swiper.params.scrollbar; 4416 const el = swiper.scrollbar.el; 4417 if (el) { 4418 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 4419 } 4420 disableDraggable(); 4421 } 4422 on('changeDirection', () => { 4423 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 4424 const params = swiper.params.scrollbar; 4425 let { 4426 el 4427 } = swiper.scrollbar; 4428 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 4429 el.forEach(subEl => { 4430 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4431 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4432 }); 4433 }); 4434 on('init', () => { 4435 if (swiper.params.scrollbar.enabled === false) { 4436 // eslint-disable-next-line 4437 disable(); 4438 } else { 4439 init(); 4440 updateSize(); 4441 setTranslate(); 4442 } 4443 }); 4444 on('update resize observerUpdate lock unlock changeDirection', () => { 4445 updateSize(); 4446 }); 4447 on('setTranslate', () => { 4448 setTranslate(); 4449 }); 4450 on('setTransition', (_s, duration) => { 4451 setTransition(duration); 4452 }); 4453 on('enable disable', () => { 4454 const { 4455 el 4456 } = swiper.scrollbar; 4457 if (el) { 4458 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 4459 } 4460 }); 4461 on('destroy', () => { 4462 destroy(); 4463 }); 4464 const enable = () => { 4465 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4466 if (swiper.scrollbar.el) { 4467 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4468 } 4469 init(); 4470 updateSize(); 4471 setTranslate(); 4472 }; 4473 const disable = () => { 4474 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4475 if (swiper.scrollbar.el) { 4476 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 4477 } 4478 destroy(); 4479 }; 4480 Object.assign(swiper.scrollbar, { 4481 enable, 4482 disable, 4483 updateSize, 4484 setTranslate, 4485 init, 4486 destroy 4487 }); 4488} 4489 4490 4491 4492 4493/***/ }), 4494
vendor: 8,179 bytes, lines 4495-4707
4495/***/ "./node_modules/swiper/modules/thumbs.mjs": 4496/*!************************************************!*\ 4497 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 4498 \************************************************/ 4499/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4500 4501__webpack_require__.r(__webpack_exports__); 4502/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4503/* harmony export */ "default": () => (/* binding */ Thumb) 4504/* harmony export */ }); 4505/* 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"); 4506/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4507 4508 4509 4510function Thumb(_ref) { 4511 let { 4512 swiper, 4513 extendParams, 4514 on 4515 } = _ref; 4516 extendParams({ 4517 thumbs: { 4518 swiper: null, 4519 multipleActiveThumbs: true, 4520 autoScrollOffset: 0, 4521 slideThumbActiveClass: 'swiper-slide-thumb-active', 4522 thumbsContainerClass: 'swiper-thumbs' 4523 } 4524 }); 4525 let initialized = false; 4526 let swiperCreated = false; 4527 swiper.thumbs = { 4528 swiper: null 4529 }; 4530 function onThumbClick() { 4531 const thumbsSwiper = swiper.thumbs.swiper; 4532 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4533 const clickedIndex = thumbsSwiper.clickedIndex; 4534 const clickedSlide = thumbsSwiper.clickedSlide; 4535 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 4536 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 4537 let slideToIndex; 4538 if (thumbsSwiper.params.loop) { 4539 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 4540 } else { 4541 slideToIndex = clickedIndex; 4542 } 4543 if (swiper.params.loop) { 4544 swiper.slideToLoop(slideToIndex); 4545 } else { 4546 swiper.slideTo(slideToIndex); 4547 } 4548 } 4549 function init() { 4550 const { 4551 thumbs: thumbsParams 4552 } = swiper.params; 4553 if (initialized) return false; 4554 initialized = true; 4555 const SwiperClass = swiper.constructor; 4556 if (thumbsParams.swiper instanceof SwiperClass) { 4557 if (thumbsParams.swiper.destroyed) { 4558 initialized = false; 4559 return false; 4560 } 4561 swiper.thumbs.swiper = thumbsParams.swiper; 4562 Object.assign(swiper.thumbs.swiper.originalParams, { 4563 watchSlidesProgress: true, 4564 slideToClickedSlide: false 4565 }); 4566 Object.assign(swiper.thumbs.swiper.params, { 4567 watchSlidesProgress: true, 4568 slideToClickedSlide: false 4569 }); 4570 swiper.thumbs.swiper.update(); 4571 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) { 4572 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 4573 Object.assign(thumbsSwiperParams, { 4574 watchSlidesProgress: true, 4575 slideToClickedSlide: false 4576 }); 4577 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 4578 swiperCreated = true; 4579 } 4580 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 4581 swiper.thumbs.swiper.on('tap', onThumbClick); 4582 return true; 4583 } 4584 function update(initial) { 4585 const thumbsSwiper = swiper.thumbs.swiper; 4586 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4587 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 4588 4589 // Activate thumbs 4590 let thumbsToActivate = 1; 4591 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 4592 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 4593 thumbsToActivate = swiper.params.slidesPerView; 4594 } 4595 if (!swiper.params.thumbs.multipleActiveThumbs) { 4596 thumbsToActivate = 1; 4597 } 4598 thumbsToActivate = Math.floor(thumbsToActivate); 4599 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 4600 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 4601 for (let i = 0; i < thumbsToActivate; i += 1) { 4602 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 4603 slideEl.classList.add(thumbActiveClass); 4604 }); 4605 } 4606 } else { 4607 for (let i = 0; i < thumbsToActivate; i += 1) { 4608 if (thumbsSwiper.slides[swiper.realIndex + i]) { 4609 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 4610 } 4611 } 4612 } 4613 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 4614 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 4615 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 4616 const currentThumbsIndex = thumbsSwiper.activeIndex; 4617 let newThumbsIndex; 4618 let direction; 4619 if (thumbsSwiper.params.loop) { 4620 const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); 4621 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 4622 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 4623 } else { 4624 newThumbsIndex = swiper.realIndex; 4625 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 4626 } 4627 if (useOffset) { 4628 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 4629 } 4630 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 4631 if (thumbsSwiper.params.centeredSlides) { 4632 if (newThumbsIndex > currentThumbsIndex) { 4633 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 4634 } else { 4635 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 4636 } 4637 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 4638 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 4639 } 4640 } 4641 } 4642 on('beforeInit', () => { 4643 const { 4644 thumbs 4645 } = swiper.params; 4646 if (!thumbs || !thumbs.swiper) return; 4647 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 4648 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4649 const getThumbsElementAndInit = () => { 4650 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 4651 if (thumbsElement && thumbsElement.swiper) { 4652 thumbs.swiper = thumbsElement.swiper; 4653 init(); 4654 update(true); 4655 } else if (thumbsElement) { 4656 const eventName = `${swiper.params.eventsPrefix}init`; 4657 const onThumbsSwiper = e => { 4658 thumbs.swiper = e.detail[0]; 4659 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 4660 init(); 4661 update(true); 4662 thumbs.swiper.update(); 4663 swiper.update(); 4664 }; 4665 thumbsElement.addEventListener(eventName, onThumbsSwiper); 4666 } 4667 return thumbsElement; 4668 }; 4669 const watchForThumbsToAppear = () => { 4670 if (swiper.destroyed) return; 4671 const thumbsElement = getThumbsElementAndInit(); 4672 if (!thumbsElement) { 4673 requestAnimationFrame(watchForThumbsToAppear); 4674 } 4675 }; 4676 requestAnimationFrame(watchForThumbsToAppear); 4677 } else { 4678 init(); 4679 update(true); 4680 } 4681 }); 4682 on('slideChange update resize observerUpdate', () => { 4683 update(); 4684 }); 4685 on('setTransition', (_s, duration) => { 4686 const thumbsSwiper = swiper.thumbs.swiper; 4687 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4688 thumbsSwiper.setTransition(duration); 4689 }); 4690 on('beforeDestroy', () => { 4691 const thumbsSwiper = swiper.thumbs.swiper; 4692 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4693 if (swiperCreated) { 4694 thumbsSwiper.destroy(); 4695 } 4696 }); 4697 Object.assign(swiper.thumbs, { 4698 init, 4699 update 4700 }); 4701} 4702 4703 4704 4705 4706/***/ }), 4707
vendor: 12,468 bytes, lines 4708-5072
4708/***/ "./node_modules/swiper/modules/virtual.mjs": 4709/*!*************************************************!*\ 4710 !*** ./node_modules/swiper/modules/virtual.mjs ***! 4711 \*************************************************/ 4712/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4713 4714__webpack_require__.r(__webpack_exports__); 4715/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4716/* harmony export */ "default": () => (/* binding */ Virtual) 4717/* harmony export */ }); 4718/* 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"); 4719/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4720 4721 4722 4723function Virtual(_ref) { 4724 let { 4725 swiper, 4726 extendParams, 4727 on, 4728 emit 4729 } = _ref; 4730 extendParams({ 4731 virtual: { 4732 enabled: false, 4733 slides: [], 4734 cache: true, 4735 renderSlide: null, 4736 renderExternal: null, 4737 renderExternalUpdate: true, 4738 addSlidesBefore: 0, 4739 addSlidesAfter: 0 4740 } 4741 }); 4742 let cssModeTimeout; 4743 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4744 swiper.virtual = { 4745 cache: {}, 4746 from: undefined, 4747 to: undefined, 4748 slides: [], 4749 offset: 0, 4750 slidesGrid: [] 4751 }; 4752 const tempDOM = document.createElement('div'); 4753 function renderSlide(slide, index) { 4754 const params = swiper.params.virtual; 4755 if (params.cache && swiper.virtual.cache[index]) { 4756 return swiper.virtual.cache[index]; 4757 } 4758 // eslint-disable-next-line 4759 let slideEl; 4760 if (params.renderSlide) { 4761 slideEl = params.renderSlide.call(swiper, slide, index); 4762 if (typeof slideEl === 'string') { 4763 tempDOM.innerHTML = slideEl; 4764 slideEl = tempDOM.children[0]; 4765 } 4766 } else if (swiper.isElement) { 4767 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 4768 } else { 4769 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 4770 } 4771 slideEl.setAttribute('data-swiper-slide-index', index); 4772 if (!params.renderSlide) { 4773 slideEl.innerHTML = slide; 4774 } 4775 if (params.cache) { 4776 swiper.virtual.cache[index] = slideEl; 4777 } 4778 return slideEl; 4779 } 4780 function update(force, beforeInit, forceActiveIndex) { 4781 const { 4782 slidesPerView, 4783 slidesPerGroup, 4784 centeredSlides, 4785 loop: isLoop, 4786 initialSlide 4787 } = swiper.params; 4788 if (beforeInit && !isLoop && initialSlide > 0) { 4789 return; 4790 } 4791 const { 4792 addSlidesBefore, 4793 addSlidesAfter 4794 } = swiper.params.virtual; 4795 const { 4796 from: previousFrom, 4797 to: previousTo, 4798 slides, 4799 slidesGrid: previousSlidesGrid, 4800 offset: previousOffset 4801 } = swiper.virtual; 4802 if (!swiper.params.cssMode) { 4803 swiper.updateActiveIndex(); 4804 } 4805 const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; 4806 let offsetProp; 4807 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 4808 let slidesAfter; 4809 let slidesBefore; 4810 if (centeredSlides) { 4811 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 4812 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 4813 } else { 4814 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 4815 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 4816 } 4817 let from = activeIndex - slidesBefore; 4818 let to = activeIndex + slidesAfter; 4819 if (!isLoop) { 4820 from = Math.max(from, 0); 4821 to = Math.min(to, slides.length - 1); 4822 } 4823 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 4824 if (isLoop && activeIndex >= slidesBefore) { 4825 from -= slidesBefore; 4826 if (!centeredSlides) offset += swiper.slidesGrid[0]; 4827 } else if (isLoop && activeIndex < slidesBefore) { 4828 from = -slidesBefore; 4829 if (centeredSlides) offset += swiper.slidesGrid[0]; 4830 } 4831 Object.assign(swiper.virtual, { 4832 from, 4833 to, 4834 offset, 4835 slidesGrid: swiper.slidesGrid, 4836 slidesBefore, 4837 slidesAfter 4838 }); 4839 function onRendered() { 4840 swiper.updateSlides(); 4841 swiper.updateProgress(); 4842 swiper.updateSlidesClasses(); 4843 emit('virtualUpdate'); 4844 } 4845 if (previousFrom === from && previousTo === to && !force) { 4846 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 4847 swiper.slides.forEach(slideEl => { 4848 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 4849 }); 4850 } 4851 swiper.updateProgress(); 4852 emit('virtualUpdate'); 4853 return; 4854 } 4855 if (swiper.params.virtual.renderExternal) { 4856 swiper.params.virtual.renderExternal.call(swiper, { 4857 offset, 4858 from, 4859 to, 4860 slides: function getSlides() { 4861 const slidesToRender = []; 4862 for (let i = from; i <= to; i += 1) { 4863 slidesToRender.push(slides[i]); 4864 } 4865 return slidesToRender; 4866 }() 4867 }); 4868 if (swiper.params.virtual.renderExternalUpdate) { 4869 onRendered(); 4870 } else { 4871 emit('virtualUpdate'); 4872 } 4873 return; 4874 } 4875 const prependIndexes = []; 4876 const appendIndexes = []; 4877 const getSlideIndex = index => { 4878 let slideIndex = index; 4879 if (index < 0) { 4880 slideIndex = slides.length + index; 4881 } else if (slideIndex >= slides.length) { 4882 // eslint-disable-next-line 4883 slideIndex = slideIndex - slides.length; 4884 } 4885 return slideIndex; 4886 }; 4887 if (force) { 4888 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 4889 slideEl.remove(); 4890 }); 4891 } else { 4892 for (let i = previousFrom; i <= previousTo; i += 1) { 4893 if (i < from || i > to) { 4894 const slideIndex = getSlideIndex(i); 4895 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 4896 slideEl.remove(); 4897 }); 4898 } 4899 } 4900 } 4901 const loopFrom = isLoop ? -slides.length : 0; 4902 const loopTo = isLoop ? slides.length * 2 : slides.length; 4903 for (let i = loopFrom; i < loopTo; i += 1) { 4904 if (i >= from && i <= to) { 4905 const slideIndex = getSlideIndex(i); 4906 if (typeof previousTo === 'undefined' || force) { 4907 appendIndexes.push(slideIndex); 4908 } else { 4909 if (i > previousTo) appendIndexes.push(slideIndex); 4910 if (i < previousFrom) prependIndexes.push(slideIndex); 4911 } 4912 } 4913 } 4914 appendIndexes.forEach(index => { 4915 swiper.slidesEl.append(renderSlide(slides[index], index)); 4916 }); 4917 if (isLoop) { 4918 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 4919 const index = prependIndexes[i]; 4920 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 4921 } 4922 } else { 4923 prependIndexes.sort((a, b) => b - a); 4924 prependIndexes.forEach(index => { 4925 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 4926 }); 4927 } 4928 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 4929 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 4930 }); 4931 onRendered(); 4932 } 4933 function appendSlide(slides) { 4934 if (typeof slides === 'object' && 'length' in slides) { 4935 for (let i = 0; i < slides.length; i += 1) { 4936 if (slides[i]) swiper.virtual.slides.push(slides[i]); 4937 } 4938 } else { 4939 swiper.virtual.slides.push(slides); 4940 } 4941 update(true); 4942 } 4943 function prependSlide(slides) { 4944 const activeIndex = swiper.activeIndex; 4945 let newActiveIndex = activeIndex + 1; 4946 let numberOfNewSlides = 1; 4947 if (Array.isArray(slides)) { 4948 for (let i = 0; i < slides.length; i += 1) { 4949 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 4950 } 4951 newActiveIndex = activeIndex + slides.length; 4952 numberOfNewSlides = slides.length; 4953 } else { 4954 swiper.virtual.slides.unshift(slides); 4955 } 4956 if (swiper.params.virtual.cache) { 4957 const cache = swiper.virtual.cache; 4958 const newCache = {}; 4959 Object.keys(cache).forEach(cachedIndex => { 4960 const cachedEl = cache[cachedIndex]; 4961 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 4962 if (cachedElIndex) { 4963 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 4964 } 4965 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 4966 }); 4967 swiper.virtual.cache = newCache; 4968 } 4969 update(true); 4970 swiper.slideTo(newActiveIndex, 0); 4971 } 4972 function removeSlide(slidesIndexes) { 4973 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 4974 let activeIndex = swiper.activeIndex; 4975 if (Array.isArray(slidesIndexes)) { 4976 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 4977 if (swiper.params.virtual.cache) { 4978 delete swiper.virtual.cache[slidesIndexes[i]]; 4979 // shift cache indexes 4980 Object.keys(swiper.virtual.cache).forEach(key => { 4981 if (key > slidesIndexes) { 4982 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 4983 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 4984 delete swiper.virtual.cache[key]; 4985 } 4986 }); 4987 } 4988 swiper.virtual.slides.splice(slidesIndexes[i], 1); 4989 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 4990 activeIndex = Math.max(activeIndex, 0); 4991 } 4992 } else { 4993 if (swiper.params.virtual.cache) { 4994 delete swiper.virtual.cache[slidesIndexes]; 4995 // shift cache indexes 4996 Object.keys(swiper.virtual.cache).forEach(key => { 4997 if (key > slidesIndexes) { 4998 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 4999 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5000 delete swiper.virtual.cache[key]; 5001 } 5002 }); 5003 } 5004 swiper.virtual.slides.splice(slidesIndexes, 1); 5005 if (slidesIndexes < activeIndex) activeIndex -= 1; 5006 activeIndex = Math.max(activeIndex, 0); 5007 } 5008 update(true); 5009 swiper.slideTo(activeIndex, 0); 5010 } 5011 function removeAllSlides() { 5012 swiper.virtual.slides = []; 5013 if (swiper.params.virtual.cache) { 5014 swiper.virtual.cache = {}; 5015 } 5016 update(true); 5017 swiper.slideTo(0, 0); 5018 } 5019 on('beforeInit', () => { 5020 if (!swiper.params.virtual.enabled) return; 5021 let domSlidesAssigned; 5022 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 5023 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 5024 if (slides && slides.length) { 5025 swiper.virtual.slides = [...slides]; 5026 domSlidesAssigned = true; 5027 slides.forEach((slideEl, slideIndex) => { 5028 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 5029 swiper.virtual.cache[slideIndex] = slideEl; 5030 slideEl.remove(); 5031 }); 5032 } 5033 } 5034 if (!domSlidesAssigned) { 5035 swiper.virtual.slides = swiper.params.virtual.slides; 5036 } 5037 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 5038 swiper.params.watchSlidesProgress = true; 5039 swiper.originalParams.watchSlidesProgress = true; 5040 update(false, true); 5041 }); 5042 on('setTranslate', () => { 5043 if (!swiper.params.virtual.enabled) return; 5044 if (swiper.params.cssMode && !swiper._immediateVirtual) { 5045 clearTimeout(cssModeTimeout); 5046 cssModeTimeout = setTimeout(() => { 5047 update(); 5048 }, 100); 5049 } else { 5050 update(); 5051 } 5052 }); 5053 on('init update resize', () => { 5054 if (!swiper.params.virtual.enabled) return; 5055 if (swiper.params.cssMode) { 5056 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 5057 } 5058 }); 5059 Object.assign(swiper.virtual, { 5060 appendSlide, 5061 prependSlide, 5062 removeSlide, 5063 removeAllSlides, 5064 update 5065 }); 5066} 5067 5068 5069 5070 5071/***/ }), 5072
vendor: 26,487 bytes, lines 5073-5789
5073/***/ "./node_modules/swiper/modules/zoom.mjs": 5074/*!**********************************************!*\ 5075 !*** ./node_modules/swiper/modules/zoom.mjs ***! 5076 \**********************************************/ 5077/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5078 5079__webpack_require__.r(__webpack_exports__); 5080/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5081/* harmony export */ "default": () => (/* binding */ Zoom) 5082/* harmony export */ }); 5083/* 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"); 5084/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5085 5086 5087 5088function Zoom(_ref) { 5089 let { 5090 swiper, 5091 extendParams, 5092 on, 5093 emit 5094 } = _ref; 5095 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5096 extendParams({ 5097 zoom: { 5098 enabled: false, 5099 limitToOriginalSize: false, 5100 maxRatio: 3, 5101 minRatio: 1, 5102 panOnMouseMove: false, 5103 toggle: true, 5104 containerClass: 'swiper-zoom-container', 5105 zoomedSlideClass: 'swiper-slide-zoomed' 5106 } 5107 }); 5108 swiper.zoom = { 5109 enabled: false 5110 }; 5111 let currentScale = 1; 5112 let isScaling = false; 5113 let isPanningWithMouse = false; 5114 let mousePanStart = { 5115 x: 0, 5116 y: 0 5117 }; 5118 const mousePanSensitivity = -3; // Negative to invert pan direction 5119 let fakeGestureTouched; 5120 let fakeGestureMoved; 5121 const evCache = []; 5122 const gesture = { 5123 originX: 0, 5124 originY: 0, 5125 slideEl: undefined, 5126 slideWidth: undefined, 5127 slideHeight: undefined, 5128 imageEl: undefined, 5129 imageWrapEl: undefined, 5130 maxRatio: 3 5131 }; 5132 const image = { 5133 isTouched: undefined, 5134 isMoved: undefined, 5135 currentX: undefined, 5136 currentY: undefined, 5137 minX: undefined, 5138 minY: undefined, 5139 maxX: undefined, 5140 maxY: undefined, 5141 width: undefined, 5142 height: undefined, 5143 startX: undefined, 5144 startY: undefined, 5145 touchesStart: {}, 5146 touchesCurrent: {} 5147 }; 5148 const velocity = { 5149 x: undefined, 5150 y: undefined, 5151 prevPositionX: undefined, 5152 prevPositionY: undefined, 5153 prevTime: undefined 5154 }; 5155 let scale = 1; 5156 Object.defineProperty(swiper.zoom, 'scale', { 5157 get() { 5158 return scale; 5159 }, 5160 set(value) { 5161 if (scale !== value) { 5162 const imageEl = gesture.imageEl; 5163 const slideEl = gesture.slideEl; 5164 emit('zoomChange', value, imageEl, slideEl); 5165 } 5166 scale = value; 5167 } 5168 }); 5169 function getDistanceBetweenTouches() { 5170 if (evCache.length < 2) return 1; 5171 const x1 = evCache[0].pageX; 5172 const y1 = evCache[0].pageY; 5173 const x2 = evCache[1].pageX; 5174 const y2 = evCache[1].pageY; 5175 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 5176 return distance; 5177 } 5178 function getMaxRatio() { 5179 const params = swiper.params.zoom; 5180 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 5181 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 5182 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 5183 return Math.min(imageMaxRatio, maxRatio); 5184 } 5185 return maxRatio; 5186 } 5187 function getScaleOrigin() { 5188 if (evCache.length < 2) return { 5189 x: null, 5190 y: null 5191 }; 5192 const box = gesture.imageEl.getBoundingClientRect(); 5193 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]; 5194 } 5195 function getSlideSelector() { 5196 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 5197 } 5198 function eventWithinSlide(e) { 5199 const slideSelector = getSlideSelector(); 5200 if (e.target.matches(slideSelector)) return true; 5201 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 5202 return false; 5203 } 5204 function eventWithinZoomContainer(e) { 5205 const selector = `.${swiper.params.zoom.containerClass}`; 5206 if (e.target.matches(selector)) return true; 5207 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 5208 return false; 5209 } 5210 5211 // Events 5212 function onGestureStart(e) { 5213 if (e.pointerType === 'mouse') { 5214 evCache.splice(0, evCache.length); 5215 } 5216 if (!eventWithinSlide(e)) return; 5217 const params = swiper.params.zoom; 5218 fakeGestureTouched = false; 5219 fakeGestureMoved = false; 5220 evCache.push(e); 5221 if (evCache.length < 2) { 5222 return; 5223 } 5224 fakeGestureTouched = true; 5225 gesture.scaleStart = getDistanceBetweenTouches(); 5226 if (!gesture.slideEl) { 5227 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5228 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 5229 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5230 if (imageEl) { 5231 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5232 } 5233 gesture.imageEl = imageEl; 5234 if (imageEl) { 5235 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5236 } else { 5237 gesture.imageWrapEl = undefined; 5238 } 5239 if (!gesture.imageWrapEl) { 5240 gesture.imageEl = undefined; 5241 return; 5242 } 5243 gesture.maxRatio = getMaxRatio(); 5244 } 5245 if (gesture.imageEl) { 5246 const [originX, originY] = getScaleOrigin(); 5247 gesture.originX = originX; 5248 gesture.originY = originY; 5249 gesture.imageEl.style.transitionDuration = '0ms'; 5250 } 5251 isScaling = true; 5252 } 5253 function onGestureChange(e) { 5254 if (!eventWithinSlide(e)) return; 5255 const params = swiper.params.zoom; 5256 const zoom = swiper.zoom; 5257 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5258 if (pointerIndex >= 0) evCache[pointerIndex] = e; 5259 if (evCache.length < 2) { 5260 return; 5261 } 5262 fakeGestureMoved = true; 5263 gesture.scaleMove = getDistanceBetweenTouches(); 5264 if (!gesture.imageEl) { 5265 return; 5266 } 5267 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 5268 if (zoom.scale > gesture.maxRatio) { 5269 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 5270 } 5271 if (zoom.scale < params.minRatio) { 5272 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 5273 } 5274 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5275 } 5276 function onGestureEnd(e) { 5277 if (!eventWithinSlide(e)) return; 5278 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 5279 const params = swiper.params.zoom; 5280 const zoom = swiper.zoom; 5281 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5282 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 5283 if (!fakeGestureTouched || !fakeGestureMoved) { 5284 return; 5285 } 5286 fakeGestureTouched = false; 5287 fakeGestureMoved = false; 5288 if (!gesture.imageEl) return; 5289 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 5290 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 5291 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5292 currentScale = zoom.scale; 5293 isScaling = false; 5294 if (zoom.scale > 1 && gesture.slideEl) { 5295 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5296 } else if (zoom.scale <= 1 && gesture.slideEl) { 5297 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5298 } 5299 if (zoom.scale === 1) { 5300 gesture.originX = 0; 5301 gesture.originY = 0; 5302 gesture.slideEl = undefined; 5303 } 5304 } 5305 let allowTouchMoveTimeout; 5306 function allowTouchMove() { 5307 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 5308 } 5309 function preventTouchMove() { 5310 clearTimeout(allowTouchMoveTimeout); 5311 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 5312 allowTouchMoveTimeout = setTimeout(() => { 5313 if (swiper.destroyed) return; 5314 allowTouchMove(); 5315 }); 5316 } 5317 function onTouchStart(e) { 5318 const device = swiper.device; 5319 if (!gesture.imageEl) return; 5320 if (image.isTouched) return; 5321 if (device.android && e.cancelable) e.preventDefault(); 5322 image.isTouched = true; 5323 const event = evCache.length > 0 ? evCache[0] : e; 5324 image.touchesStart.x = event.pageX; 5325 image.touchesStart.y = event.pageY; 5326 } 5327 function onTouchMove(e) { 5328 const isMouseEvent = e.pointerType === 'mouse'; 5329 const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; 5330 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 5331 return; 5332 } 5333 const zoom = swiper.zoom; 5334 if (!gesture.imageEl) { 5335 return; 5336 } 5337 if (!image.isTouched || !gesture.slideEl) { 5338 if (isMousePan) onMouseMove(e); 5339 return; 5340 } 5341 if (isMousePan) { 5342 onMouseMove(e); 5343 return; 5344 } 5345 if (!image.isMoved) { 5346 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5347 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5348 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0; 5349 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0; 5350 gesture.slideWidth = gesture.slideEl.offsetWidth; 5351 gesture.slideHeight = gesture.slideEl.offsetHeight; 5352 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5353 } 5354 // Define if we need image drag 5355 const scaledWidth = image.width * zoom.scale; 5356 const scaledHeight = image.height * zoom.scale; 5357 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5358 image.maxX = -image.minX; 5359 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5360 image.maxY = -image.minY; 5361 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 5362 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 5363 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 5364 if (touchesDiff > 5) { 5365 swiper.allowClick = false; 5366 } 5367 if (!image.isMoved && !isScaling) { 5368 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)) { 5369 image.isTouched = false; 5370 allowTouchMove(); 5371 return; 5372 } 5373 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)) { 5374 image.isTouched = false; 5375 allowTouchMove(); 5376 return; 5377 } 5378 } 5379 if (e.cancelable) { 5380 e.preventDefault(); 5381 } 5382 e.stopPropagation(); 5383 preventTouchMove(); 5384 image.isMoved = true; 5385 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 5386 const { 5387 originX, 5388 originY 5389 } = gesture; 5390 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 5391 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 5392 if (image.currentX < image.minX) { 5393 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 5394 } 5395 if (image.currentX > image.maxX) { 5396 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 5397 } 5398 if (image.currentY < image.minY) { 5399 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 5400 } 5401 if (image.currentY > image.maxY) { 5402 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 5403 } 5404 5405 // Velocity 5406 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 5407 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 5408 if (!velocity.prevTime) velocity.prevTime = Date.now(); 5409 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 5410 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 5411 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 5412 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 5413 velocity.prevPositionX = image.touchesCurrent.x; 5414 velocity.prevPositionY = image.touchesCurrent.y; 5415 velocity.prevTime = Date.now(); 5416 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5417 } 5418 function onTouchEnd() { 5419 const zoom = swiper.zoom; 5420 evCache.length = 0; 5421 if (!gesture.imageEl) return; 5422 if (!image.isTouched || !image.isMoved) { 5423 image.isTouched = false; 5424 image.isMoved = false; 5425 return; 5426 } 5427 image.isTouched = false; 5428 image.isMoved = false; 5429 let momentumDurationX = 300; 5430 let momentumDurationY = 300; 5431 const momentumDistanceX = velocity.x * momentumDurationX; 5432 const newPositionX = image.currentX + momentumDistanceX; 5433 const momentumDistanceY = velocity.y * momentumDurationY; 5434 const newPositionY = image.currentY + momentumDistanceY; 5435 5436 // Fix duration 5437 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 5438 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 5439 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 5440 image.currentX = newPositionX; 5441 image.currentY = newPositionY; 5442 // Define if we need image drag 5443 const scaledWidth = image.width * zoom.scale; 5444 const scaledHeight = image.height * zoom.scale; 5445 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5446 image.maxX = -image.minX; 5447 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5448 image.maxY = -image.minY; 5449 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 5450 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 5451 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 5452 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5453 } 5454 function onTransitionEnd() { 5455 const zoom = swiper.zoom; 5456 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 5457 if (gesture.imageEl) { 5458 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5459 } 5460 if (gesture.imageWrapEl) { 5461 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5462 } 5463 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 5464 zoom.scale = 1; 5465 currentScale = 1; 5466 gesture.slideEl = undefined; 5467 gesture.imageEl = undefined; 5468 gesture.imageWrapEl = undefined; 5469 gesture.originX = 0; 5470 gesture.originY = 0; 5471 } 5472 } 5473 function onMouseMove(e) { 5474 // Only pan if zoomed in and mouse panning is enabled 5475 if (currentScale <= 1 || !gesture.imageWrapEl) return; 5476 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; 5477 const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; 5478 const matrix = new window.DOMMatrix(currentTransform); 5479 if (!isPanningWithMouse) { 5480 isPanningWithMouse = true; 5481 mousePanStart.x = e.clientX; 5482 mousePanStart.y = e.clientY; 5483 image.startX = matrix.e; 5484 image.startY = matrix.f; 5485 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5486 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5487 gesture.slideWidth = gesture.slideEl.offsetWidth; 5488 gesture.slideHeight = gesture.slideEl.offsetHeight; 5489 return; 5490 } 5491 const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; 5492 const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; 5493 const scaledWidth = image.width * currentScale; 5494 const scaledHeight = image.height * currentScale; 5495 const slideWidth = gesture.slideWidth; 5496 const slideHeight = gesture.slideHeight; 5497 const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5498 const maxX = -minX; 5499 const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5500 const maxY = -minY; 5501 const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); 5502 const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); 5503 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5504 gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; 5505 mousePanStart.x = e.clientX; 5506 mousePanStart.y = e.clientY; 5507 image.startX = newX; 5508 image.startY = newY; 5509 image.currentX = newX; 5510 image.currentY = newY; 5511 } 5512 function zoomIn(e) { 5513 const zoom = swiper.zoom; 5514 const params = swiper.params.zoom; 5515 if (!gesture.slideEl) { 5516 if (e && e.target) { 5517 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5518 } 5519 if (!gesture.slideEl) { 5520 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5521 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5522 } else { 5523 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5524 } 5525 } 5526 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5527 if (imageEl) { 5528 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5529 } 5530 gesture.imageEl = imageEl; 5531 if (imageEl) { 5532 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5533 } else { 5534 gesture.imageWrapEl = undefined; 5535 } 5536 } 5537 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5538 if (swiper.params.cssMode) { 5539 swiper.wrapperEl.style.overflow = 'hidden'; 5540 swiper.wrapperEl.style.touchAction = 'none'; 5541 } 5542 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5543 let touchX; 5544 let touchY; 5545 let offsetX; 5546 let offsetY; 5547 let diffX; 5548 let diffY; 5549 let translateX; 5550 let translateY; 5551 let imageWidth; 5552 let imageHeight; 5553 let scaledWidth; 5554 let scaledHeight; 5555 let translateMinX; 5556 let translateMinY; 5557 let translateMaxX; 5558 let translateMaxY; 5559 let slideWidth; 5560 let slideHeight; 5561 if (typeof image.touchesStart.x === 'undefined' && e) { 5562 touchX = e.pageX; 5563 touchY = e.pageY; 5564 } else { 5565 touchX = image.touchesStart.x; 5566 touchY = image.touchesStart.y; 5567 } 5568 const prevScale = currentScale; 5569 const forceZoomRatio = typeof e === 'number' ? e : null; 5570 if (currentScale === 1 && forceZoomRatio) { 5571 touchX = undefined; 5572 touchY = undefined; 5573 image.touchesStart.x = undefined; 5574 image.touchesStart.y = undefined; 5575 } 5576 const maxRatio = getMaxRatio(); 5577 zoom.scale = forceZoomRatio || maxRatio; 5578 currentScale = forceZoomRatio || maxRatio; 5579 if (e && !(currentScale === 1 && forceZoomRatio)) { 5580 slideWidth = gesture.slideEl.offsetWidth; 5581 slideHeight = gesture.slideEl.offsetHeight; 5582 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX; 5583 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY; 5584 diffX = offsetX + slideWidth / 2 - touchX; 5585 diffY = offsetY + slideHeight / 2 - touchY; 5586 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5587 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5588 scaledWidth = imageWidth * zoom.scale; 5589 scaledHeight = imageHeight * zoom.scale; 5590 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5591 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5592 translateMaxX = -translateMinX; 5593 translateMaxY = -translateMinY; 5594 if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { 5595 translateX = image.currentX * zoom.scale / prevScale; 5596 translateY = image.currentY * zoom.scale / prevScale; 5597 } else { 5598 translateX = diffX * zoom.scale; 5599 translateY = diffY * zoom.scale; 5600 } 5601 if (translateX < translateMinX) { 5602 translateX = translateMinX; 5603 } 5604 if (translateX > translateMaxX) { 5605 translateX = translateMaxX; 5606 } 5607 if (translateY < translateMinY) { 5608 translateY = translateMinY; 5609 } 5610 if (translateY > translateMaxY) { 5611 translateY = translateMaxY; 5612 } 5613 } else { 5614 translateX = 0; 5615 translateY = 0; 5616 } 5617 if (forceZoomRatio && zoom.scale === 1) { 5618 gesture.originX = 0; 5619 gesture.originY = 0; 5620 } 5621 image.currentX = translateX; 5622 image.currentY = translateY; 5623 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5624 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 5625 gesture.imageEl.style.transitionDuration = '300ms'; 5626 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5627 } 5628 function zoomOut() { 5629 const zoom = swiper.zoom; 5630 const params = swiper.params.zoom; 5631 if (!gesture.slideEl) { 5632 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5633 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5634 } else { 5635 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5636 } 5637 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5638 if (imageEl) { 5639 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5640 } 5641 gesture.imageEl = imageEl; 5642 if (imageEl) { 5643 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 5644 } else { 5645 gesture.imageWrapEl = undefined; 5646 } 5647 } 5648 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5649 if (swiper.params.cssMode) { 5650 swiper.wrapperEl.style.overflow = ''; 5651 swiper.wrapperEl.style.touchAction = ''; 5652 } 5653 zoom.scale = 1; 5654 currentScale = 1; 5655 image.currentX = undefined; 5656 image.currentY = undefined; 5657 image.touchesStart.x = undefined; 5658 image.touchesStart.y = undefined; 5659 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5660 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5661 gesture.imageEl.style.transitionDuration = '300ms'; 5662 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5663 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5664 gesture.slideEl = undefined; 5665 gesture.originX = 0; 5666 gesture.originY = 0; 5667 if (swiper.params.zoom.panOnMouseMove) { 5668 mousePanStart = { 5669 x: 0, 5670 y: 0 5671 }; 5672 if (isPanningWithMouse) { 5673 isPanningWithMouse = false; 5674 image.startX = 0; 5675 image.startY = 0; 5676 } 5677 } 5678 } 5679 5680 // Toggle Zoom 5681 function zoomToggle(e) { 5682 const zoom = swiper.zoom; 5683 if (zoom.scale && zoom.scale !== 1) { 5684 // Zoom Out 5685 zoomOut(); 5686 } else { 5687 // Zoom In 5688 zoomIn(e); 5689 } 5690 } 5691 function getListeners() { 5692 const passiveListener = swiper.params.passiveListeners ? { 5693 passive: true, 5694 capture: false 5695 } : false; 5696 const activeListenerWithCapture = swiper.params.passiveListeners ? { 5697 passive: false, 5698 capture: true 5699 } : true; 5700 return { 5701 passiveListener, 5702 activeListenerWithCapture 5703 }; 5704 } 5705 5706 // Attach/Detach Events 5707 function enable() { 5708 const zoom = swiper.zoom; 5709 if (zoom.enabled) return; 5710 zoom.enabled = true; 5711 const { 5712 passiveListener, 5713 activeListenerWithCapture 5714 } = getListeners(); 5715 5716 // Scale image 5717 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 5718 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 5719 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 5720 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 5721 }); 5722 5723 // Move image 5724 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 5725 } 5726 function disable() { 5727 const zoom = swiper.zoom; 5728 if (!zoom.enabled) return; 5729 zoom.enabled = false; 5730 const { 5731 passiveListener, 5732 activeListenerWithCapture 5733 } = getListeners(); 5734 5735 // Scale image 5736 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 5737 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 5738 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 5739 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 5740 }); 5741 5742 // Move image 5743 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 5744 } 5745 on('init', () => { 5746 if (swiper.params.zoom.enabled) { 5747 enable(); 5748 } 5749 }); 5750 on('destroy', () => { 5751 disable(); 5752 }); 5753 on('touchStart', (_s, e) => { 5754 if (!swiper.zoom.enabled) return; 5755 onTouchStart(e); 5756 }); 5757 on('touchEnd', (_s, e) => { 5758 if (!swiper.zoom.enabled) return; 5759 onTouchEnd(); 5760 }); 5761 on('doubleTap', (_s, e) => { 5762 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 5763 zoomToggle(e); 5764 } 5765 }); 5766 on('transitionEnd', () => { 5767 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 5768 onTransitionEnd(); 5769 } 5770 }); 5771 on('slideChange', () => { 5772 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 5773 onTransitionEnd(); 5774 } 5775 }); 5776 Object.assign(swiper.zoom, { 5777 enable, 5778 disable, 5779 in: zoomIn, 5780 out: zoomOut, 5781 toggle: zoomToggle 5782 }); 5783} 5784 5785 5786 5787 5788/***/ }), 5789
vendor: 766 bytes, lines 5790-5812
5790/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 5791/*!************************************************************!*\ 5792 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 5793 \************************************************************/ 5794/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5795 5796__webpack_require__.r(__webpack_exports__); 5797/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5798/* harmony export */ c: () => (/* binding */ classesToSelector) 5799/* harmony export */ }); 5800function classesToSelector(classes) { 5801 if (classes === void 0) { 5802 classes = ''; 5803 } 5804 return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line 5805 .replace(/ /g, '.')}`; 5806} 5807 5808 5809 5810 5811/***/ }), 5812
vendor: 1,405 bytes, lines 5813-5848
5813/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 5814/*!**********************************************************************!*\ 5815 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 5816 \**********************************************************************/ 5817/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5818 5819__webpack_require__.r(__webpack_exports__); 5820/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5821/* harmony export */ c: () => (/* binding */ createElementIfNotDefined) 5822/* harmony export */ }); 5823/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5824 5825 5826function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 5827 if (swiper.params.createElements) { 5828 Object.keys(checkProps).forEach(key => { 5829 if (!params[key] && params.auto === true) { 5830 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 5831 if (!element) { 5832 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 5833 element.className = checkProps[key]; 5834 swiper.el.append(element); 5835 } 5836 params[key] = element; 5837 originalParams[key] = element; 5838 } 5839 }); 5840 } 5841 return params; 5842} 5843 5844 5845 5846 5847/***/ }), 5848
vendor: 1,201 bytes, lines 5849-5877
5849/***/ "./node_modules/swiper/shared/create-shadow.mjs": 5850/*!******************************************************!*\ 5851 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 5852 \******************************************************/ 5853/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5854 5855__webpack_require__.r(__webpack_exports__); 5856/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5857/* harmony export */ c: () => (/* binding */ createShadow) 5858/* harmony export */ }); 5859/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5860 5861 5862function createShadow(suffix, slideEl, side) { 5863 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 5864 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 5865 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 5866 if (!shadowEl) { 5867 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 5868 shadowContainer.append(shadowEl); 5869 } 5870 return shadowEl; 5871} 5872 5873 5874 5875 5876/***/ }), 5877
vendor: 2,324 bytes, lines 5878-5949
5878/***/ "./node_modules/swiper/shared/effect-init.mjs": 5879/*!****************************************************!*\ 5880 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 5881 \****************************************************/ 5882/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5883 5884__webpack_require__.r(__webpack_exports__); 5885/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5886/* harmony export */ e: () => (/* binding */ effectInit) 5887/* harmony export */ }); 5888function effectInit(params) { 5889 const { 5890 effect, 5891 swiper, 5892 on, 5893 setTranslate, 5894 setTransition, 5895 overwriteParams, 5896 perspective, 5897 recreateShadows, 5898 getEffectParams 5899 } = params; 5900 on('beforeInit', () => { 5901 if (swiper.params.effect !== effect) return; 5902 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 5903 if (perspective && perspective()) { 5904 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 5905 } 5906 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 5907 Object.assign(swiper.params, overwriteParamsResult); 5908 Object.assign(swiper.originalParams, overwriteParamsResult); 5909 }); 5910 on('setTranslate', () => { 5911 if (swiper.params.effect !== effect) return; 5912 setTranslate(); 5913 }); 5914 on('setTransition', (_s, duration) => { 5915 if (swiper.params.effect !== effect) return; 5916 setTransition(duration); 5917 }); 5918 on('transitionEnd', () => { 5919 if (swiper.params.effect !== effect) return; 5920 if (recreateShadows) { 5921 if (!getEffectParams || !getEffectParams().slideShadows) return; 5922 // remove shadows 5923 swiper.slides.forEach(slideEl => { 5924 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 5925 }); 5926 // create new one 5927 recreateShadows(); 5928 } 5929 }); 5930 let requireUpdateOnVirtual; 5931 on('virtualUpdate', () => { 5932 if (swiper.params.effect !== effect) return; 5933 if (!swiper.slides.length) { 5934 requireUpdateOnVirtual = true; 5935 } 5936 requestAnimationFrame(() => { 5937 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 5938 setTranslate(); 5939 requireUpdateOnVirtual = false; 5940 } 5941 }); 5942 }); 5943} 5944 5945 5946 5947 5948/***/ }), 5949
vendor: 994 bytes, lines 5950-5976
5950/***/ "./node_modules/swiper/shared/effect-target.mjs": 5951/*!******************************************************!*\ 5952 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 5953 \******************************************************/ 5954/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5955 5956__webpack_require__.r(__webpack_exports__); 5957/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5958/* harmony export */ e: () => (/* binding */ effectTarget) 5959/* harmony export */ }); 5960/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5961 5962 5963function effectTarget(effectParams, slideEl) { 5964 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 5965 if (transformEl !== slideEl) { 5966 transformEl.style.backfaceVisibility = 'hidden'; 5967 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 5968 } 5969 return transformEl; 5970} 5971 5972 5973 5974 5975/***/ }), 5976
vendor: 2,097 bytes, lines 5977-6039
5977/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 5978/*!**********************************************************************!*\ 5979 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 5980 \**********************************************************************/ 5981/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5982 5983__webpack_require__.r(__webpack_exports__); 5984/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5985/* harmony export */ e: () => (/* binding */ effectVirtualTransitionEnd) 5986/* harmony export */ }); 5987/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5988 5989 5990function effectVirtualTransitionEnd(_ref) { 5991 let { 5992 swiper, 5993 duration, 5994 transformElements, 5995 allSlides 5996 } = _ref; 5997 const { 5998 activeIndex 5999 } = swiper; 6000 const getSlide = el => { 6001 if (!el.parentElement) { 6002 // assume shadow root 6003 const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); 6004 return slide; 6005 } 6006 return el.parentElement; 6007 }; 6008 if (swiper.params.virtualTranslate && duration !== 0) { 6009 let eventTriggered = false; 6010 let transitionEndTarget; 6011 if (allSlides) { 6012 transitionEndTarget = transformElements; 6013 } else { 6014 transitionEndTarget = transformElements.filter(transformEl => { 6015 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 6016 return swiper.getSlideIndex(el) === activeIndex; 6017 }); 6018 } 6019 transitionEndTarget.forEach(el => { 6020 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => { 6021 if (eventTriggered) return; 6022 if (!swiper || swiper.destroyed) return; 6023 eventTriggered = true; 6024 swiper.animating = false; 6025 const evt = new window.CustomEvent('transitionend', { 6026 bubbles: true, 6027 cancelable: true 6028 }); 6029 swiper.wrapperEl.dispatchEvent(evt); 6030 }); 6031 }); 6032 } 6033} 6034 6035 6036 6037 6038/***/ }), 6039
vendor: 3,423 bytes, lines 6040-6200
6040/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 6041/*!*******************************************************!*\ 6042 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 6043 \*******************************************************/ 6044/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6045 6046__webpack_require__.r(__webpack_exports__); 6047/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6048/* harmony export */ a: () => (/* binding */ getWindow), 6049/* harmony export */ g: () => (/* binding */ getDocument) 6050/* harmony export */ }); 6051/** 6052 * SSR Window 5.0.0 6053 * Better handling for window object in SSR environment 6054 * https://github.com/nolimits4web/ssr-window 6055 * 6056 * Copyright 2025, Vladimir Kharlampidi 6057 * 6058 * Licensed under MIT 6059 * 6060 * Released on: February 12, 2025 6061 */ 6062/* eslint-disable no-param-reassign */ 6063function isObject(obj) { 6064 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 6065} 6066function extend(target, src) { 6067 if (target === void 0) { 6068 target = {}; 6069 } 6070 if (src === void 0) { 6071 src = {}; 6072 } 6073 const noExtend = ['__proto__', 'constructor', 'prototype']; 6074 Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { 6075 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 6076 extend(target[key], src[key]); 6077 } 6078 }); 6079} 6080const ssrDocument = { 6081 body: {}, 6082 addEventListener() {}, 6083 removeEventListener() {}, 6084 activeElement: { 6085 blur() {}, 6086 nodeName: '' 6087 }, 6088 querySelector() { 6089 return null; 6090 }, 6091 querySelectorAll() { 6092 return []; 6093 }, 6094 getElementById() { 6095 return null; 6096 }, 6097 createEvent() { 6098 return { 6099 initEvent() {} 6100 }; 6101 }, 6102 createElement() { 6103 return { 6104 children: [], 6105 childNodes: [], 6106 style: {}, 6107 setAttribute() {}, 6108 getElementsByTagName() { 6109 return []; 6110 } 6111 }; 6112 }, 6113 createElementNS() { 6114 return {}; 6115 }, 6116 importNode() { 6117 return null; 6118 }, 6119 location: { 6120 hash: '', 6121 host: '', 6122 hostname: '', 6123 href: '', 6124 origin: '', 6125 pathname: '', 6126 protocol: '', 6127 search: '' 6128 } 6129}; 6130function getDocument() { 6131 const doc = typeof document !== 'undefined' ? document : {}; 6132 extend(doc, ssrDocument); 6133 return doc; 6134} 6135const ssrWindow = { 6136 document: ssrDocument, 6137 navigator: { 6138 userAgent: '' 6139 }, 6140 location: { 6141 hash: '', 6142 host: '', 6143 hostname: '', 6144 href: '', 6145 origin: '', 6146 pathname: '', 6147 protocol: '', 6148 search: '' 6149 }, 6150 history: { 6151 replaceState() {}, 6152 pushState() {}, 6153 go() {}, 6154 back() {} 6155 }, 6156 CustomEvent: function CustomEvent() { 6157 return this; 6158 }, 6159 addEventListener() {}, 6160 removeEventListener() {}, 6161 getComputedStyle() { 6162 return { 6163 getPropertyValue() { 6164 return ''; 6165 } 6166 }; 6167 }, 6168 Image() {}, 6169 Date() {}, 6170 screen: {}, 6171 setTimeout() {}, 6172 clearTimeout() {}, 6173 matchMedia() { 6174 return {}; 6175 }, 6176 requestAnimationFrame(callback) { 6177 if (typeof setTimeout === 'undefined') { 6178 callback(); 6179 return null; 6180 } 6181 return setTimeout(callback, 0); 6182 }, 6183 cancelAnimationFrame(id) { 6184 if (typeof setTimeout === 'undefined') { 6185 return; 6186 } 6187 clearTimeout(id); 6188 } 6189}; 6190function getWindow() { 6191 const win = typeof window !== 'undefined' ? window : {}; 6192 extend(win, ssrWindow); 6193 return win; 6194} 6195 6196 6197 6198 6199/***/ }), 6200
vendor: 134,463 bytes, lines 6201-10155
6201/***/ "./node_modules/swiper/shared/swiper-core.mjs": 6202/*!****************************************************!*\ 6203 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 6204 \****************************************************/ 6205/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6206 6207__webpack_require__.r(__webpack_exports__); 6208/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6209/* harmony export */ S: () => (/* binding */ Swiper), 6210/* harmony export */ d: () => (/* binding */ defaults) 6211/* harmony export */ }); 6212/* 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"); 6213/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6214 6215 6216 6217let support; 6218function calcSupport() { 6219 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6220 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 6221 return { 6222 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 6223 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 6224 }; 6225} 6226function getSupport() { 6227 if (!support) { 6228 support = calcSupport(); 6229 } 6230 return support; 6231} 6232 6233let deviceCached; 6234function calcDevice(_temp) { 6235 let { 6236 userAgent 6237 } = _temp === void 0 ? {} : _temp; 6238 const support = getSupport(); 6239 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6240 const platform = window.navigator.platform; 6241 const ua = userAgent || window.navigator.userAgent; 6242 const device = { 6243 ios: false, 6244 android: false 6245 }; 6246 const screenWidth = window.screen.width; 6247 const screenHeight = window.screen.height; 6248 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 6249 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 6250 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 6251 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 6252 const windows = platform === 'Win32'; 6253 let macos = platform === 'MacIntel'; 6254 6255 // iPadOs 13 fix 6256 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 6257 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 6258 ipad = ua.match(/(Version)\/([\d.]+)/); 6259 if (!ipad) ipad = [0, 1, '13_0_0']; 6260 macos = false; 6261 } 6262 6263 // Android 6264 if (android && !windows) { 6265 device.os = 'android'; 6266 device.android = true; 6267 } 6268 if (ipad || iphone || ipod) { 6269 device.os = 'ios'; 6270 device.ios = true; 6271 } 6272 6273 // Export object 6274 return device; 6275} 6276function getDevice(overrides) { 6277 if (overrides === void 0) { 6278 overrides = {}; 6279 } 6280 if (!deviceCached) { 6281 deviceCached = calcDevice(overrides); 6282 } 6283 return deviceCached; 6284} 6285 6286let browser; 6287function calcBrowser() { 6288 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6289 const device = getDevice(); 6290 let needPerspectiveFix = false; 6291 function isSafari() { 6292 const ua = window.navigator.userAgent.toLowerCase(); 6293 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 6294 } 6295 if (isSafari()) { 6296 const ua = String(window.navigator.userAgent); 6297 if (ua.includes('Version/')) { 6298 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 6299 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 6300 } 6301 } 6302 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 6303 const isSafariBrowser = isSafari(); 6304 const need3dFix = isSafariBrowser || isWebView && device.ios; 6305 return { 6306 isSafari: needPerspectiveFix || isSafariBrowser, 6307 needPerspectiveFix, 6308 need3dFix, 6309 isWebView 6310 }; 6311} 6312function getBrowser() { 6313 if (!browser) { 6314 browser = calcBrowser(); 6315 } 6316 return browser; 6317} 6318 6319function Resize(_ref) { 6320 let { 6321 swiper, 6322 on, 6323 emit 6324 } = _ref; 6325 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6326 let observer = null; 6327 let animationFrame = null; 6328 const resizeHandler = () => { 6329 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6330 emit('beforeResize'); 6331 emit('resize'); 6332 }; 6333 const createObserver = () => { 6334 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6335 observer = new ResizeObserver(entries => { 6336 animationFrame = window.requestAnimationFrame(() => { 6337 const { 6338 width, 6339 height 6340 } = swiper; 6341 let newWidth = width; 6342 let newHeight = height; 6343 entries.forEach(_ref2 => { 6344 let { 6345 contentBoxSize, 6346 contentRect, 6347 target 6348 } = _ref2; 6349 if (target && target !== swiper.el) return; 6350 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 6351 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 6352 }); 6353 if (newWidth !== width || newHeight !== height) { 6354 resizeHandler(); 6355 } 6356 }); 6357 }); 6358 observer.observe(swiper.el); 6359 }; 6360 const removeObserver = () => { 6361 if (animationFrame) { 6362 window.cancelAnimationFrame(animationFrame); 6363 } 6364 if (observer && observer.unobserve && swiper.el) { 6365 observer.unobserve(swiper.el); 6366 observer = null; 6367 } 6368 }; 6369 const orientationChangeHandler = () => { 6370 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6371 emit('orientationchange'); 6372 }; 6373 on('init', () => { 6374 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 6375 createObserver(); 6376 return; 6377 } 6378 window.addEventListener('resize', resizeHandler); 6379 window.addEventListener('orientationchange', orientationChangeHandler); 6380 }); 6381 on('destroy', () => { 6382 removeObserver(); 6383 window.removeEventListener('resize', resizeHandler); 6384 window.removeEventListener('orientationchange', orientationChangeHandler); 6385 }); 6386} 6387 6388function Observer(_ref) { 6389 let { 6390 swiper, 6391 extendParams, 6392 on, 6393 emit 6394 } = _ref; 6395 const observers = []; 6396 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6397 const attach = function (target, options) { 6398 if (options === void 0) { 6399 options = {}; 6400 } 6401 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 6402 const observer = new ObserverFunc(mutations => { 6403 // The observerUpdate event should only be triggered 6404 // once despite the number of mutations. Additional 6405 // triggers are redundant and are very costly 6406 if (swiper.__preventObserver__) return; 6407 if (mutations.length === 1) { 6408 emit('observerUpdate', mutations[0]); 6409 return; 6410 } 6411 const observerUpdate = function observerUpdate() { 6412 emit('observerUpdate', mutations[0]); 6413 }; 6414 if (window.requestAnimationFrame) { 6415 window.requestAnimationFrame(observerUpdate); 6416 } else { 6417 window.setTimeout(observerUpdate, 0); 6418 } 6419 }); 6420 observer.observe(target, { 6421 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 6422 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 6423 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 6424 }); 6425 observers.push(observer); 6426 }; 6427 const init = () => { 6428 if (!swiper.params.observer) return; 6429 if (swiper.params.observeParents) { 6430 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl); 6431 for (let i = 0; i < containerParents.length; i += 1) { 6432 attach(containerParents[i]); 6433 } 6434 } 6435 // Observe container 6436 attach(swiper.hostEl, { 6437 childList: swiper.params.observeSlideChildren 6438 }); 6439 6440 // Observe wrapper 6441 attach(swiper.wrapperEl, { 6442 attributes: false 6443 }); 6444 }; 6445 const destroy = () => { 6446 observers.forEach(observer => { 6447 observer.disconnect(); 6448 }); 6449 observers.splice(0, observers.length); 6450 }; 6451 extendParams({ 6452 observer: false, 6453 observeParents: false, 6454 observeSlideChildren: false 6455 }); 6456 on('init', init); 6457 on('destroy', destroy); 6458} 6459 6460/* eslint-disable no-underscore-dangle */ 6461 6462var eventsEmitter = { 6463 on(events, handler, priority) { 6464 const self = this; 6465 if (!self.eventsListeners || self.destroyed) return self; 6466 if (typeof handler !== 'function') return self; 6467 const method = priority ? 'unshift' : 'push'; 6468 events.split(' ').forEach(event => { 6469 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 6470 self.eventsListeners[event][method](handler); 6471 }); 6472 return self; 6473 }, 6474 once(events, handler, priority) { 6475 const self = this; 6476 if (!self.eventsListeners || self.destroyed) return self; 6477 if (typeof handler !== 'function') return self; 6478 function onceHandler() { 6479 self.off(events, onceHandler); 6480 if (onceHandler.__emitterProxy) { 6481 delete onceHandler.__emitterProxy; 6482 } 6483 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6484 args[_key] = arguments[_key]; 6485 } 6486 handler.apply(self, args); 6487 } 6488 onceHandler.__emitterProxy = handler; 6489 return self.on(events, onceHandler, priority); 6490 }, 6491 onAny(handler, priority) { 6492 const self = this; 6493 if (!self.eventsListeners || self.destroyed) return self; 6494 if (typeof handler !== 'function') return self; 6495 const method = priority ? 'unshift' : 'push'; 6496 if (self.eventsAnyListeners.indexOf(handler) < 0) { 6497 self.eventsAnyListeners[method](handler); 6498 } 6499 return self; 6500 }, 6501 offAny(handler) { 6502 const self = this; 6503 if (!self.eventsListeners || self.destroyed) return self; 6504 if (!self.eventsAnyListeners) return self; 6505 const index = self.eventsAnyListeners.indexOf(handler); 6506 if (index >= 0) { 6507 self.eventsAnyListeners.splice(index, 1); 6508 } 6509 return self; 6510 }, 6511 off(events, handler) { 6512 const self = this; 6513 if (!self.eventsListeners || self.destroyed) return self; 6514 if (!self.eventsListeners) return self; 6515 events.split(' ').forEach(event => { 6516 if (typeof handler === 'undefined') { 6517 self.eventsListeners[event] = []; 6518 } else if (self.eventsListeners[event]) { 6519 self.eventsListeners[event].forEach((eventHandler, index) => { 6520 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 6521 self.eventsListeners[event].splice(index, 1); 6522 } 6523 }); 6524 } 6525 }); 6526 return self; 6527 }, 6528 emit() { 6529 const self = this; 6530 if (!self.eventsListeners || self.destroyed) return self; 6531 if (!self.eventsListeners) return self; 6532 let events; 6533 let data; 6534 let context; 6535 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 6536 args[_key2] = arguments[_key2]; 6537 } 6538 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 6539 events = args[0]; 6540 data = args.slice(1, args.length); 6541 context = self; 6542 } else { 6543 events = args[0].events; 6544 data = args[0].data; 6545 context = args[0].context || self; 6546 } 6547 data.unshift(context); 6548 const eventsArray = Array.isArray(events) ? events : events.split(' '); 6549 eventsArray.forEach(event => { 6550 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 6551 self.eventsAnyListeners.forEach(eventHandler => { 6552 eventHandler.apply(context, [event, ...data]); 6553 }); 6554 } 6555 if (self.eventsListeners && self.eventsListeners[event]) { 6556 self.eventsListeners[event].forEach(eventHandler => { 6557 eventHandler.apply(context, data); 6558 }); 6559 } 6560 }); 6561 return self; 6562 } 6563}; 6564 6565function updateSize() { 6566 const swiper = this; 6567 let width; 6568 let height; 6569 const el = swiper.el; 6570 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 6571 width = swiper.params.width; 6572 } else { 6573 width = el.clientWidth; 6574 } 6575 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 6576 height = swiper.params.height; 6577 } else { 6578 height = el.clientHeight; 6579 } 6580 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 6581 return; 6582 } 6583 6584 // Subtract paddings 6585 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); 6586 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); 6587 if (Number.isNaN(width)) width = 0; 6588 if (Number.isNaN(height)) height = 0; 6589 Object.assign(swiper, { 6590 width, 6591 height, 6592 size: swiper.isHorizontal() ? width : height 6593 }); 6594} 6595 6596function updateSlides() { 6597 const swiper = this; 6598 function getDirectionPropertyValue(node, label) { 6599 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 6600 } 6601 const params = swiper.params; 6602 const { 6603 wrapperEl, 6604 slidesEl, 6605 size: swiperSize, 6606 rtlTranslate: rtl, 6607 wrongRTL 6608 } = swiper; 6609 const isVirtual = swiper.virtual && params.virtual.enabled; 6610 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 6611 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 6612 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 6613 let snapGrid = []; 6614 const slidesGrid = []; 6615 const slidesSizesGrid = []; 6616 let offsetBefore = params.slidesOffsetBefore; 6617 if (typeof offsetBefore === 'function') { 6618 offsetBefore = params.slidesOffsetBefore.call(swiper); 6619 } 6620 let offsetAfter = params.slidesOffsetAfter; 6621 if (typeof offsetAfter === 'function') { 6622 offsetAfter = params.slidesOffsetAfter.call(swiper); 6623 } 6624 const previousSnapGridLength = swiper.snapGrid.length; 6625 const previousSlidesGridLength = swiper.slidesGrid.length; 6626 let spaceBetween = params.spaceBetween; 6627 let slidePosition = -offsetBefore; 6628 let prevSlideSize = 0; 6629 let index = 0; 6630 if (typeof swiperSize === 'undefined') { 6631 return; 6632 } 6633 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6634 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 6635 } else if (typeof spaceBetween === 'string') { 6636 spaceBetween = parseFloat(spaceBetween); 6637 } 6638 swiper.virtualSize = -spaceBetween; 6639 6640 // reset margins 6641 slides.forEach(slideEl => { 6642 if (rtl) { 6643 slideEl.style.marginLeft = ''; 6644 } else { 6645 slideEl.style.marginRight = ''; 6646 } 6647 slideEl.style.marginBottom = ''; 6648 slideEl.style.marginTop = ''; 6649 }); 6650 6651 // reset cssMode offsets 6652 if (params.centeredSlides && params.cssMode) { 6653 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', ''); 6654 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', ''); 6655 } 6656 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 6657 if (gridEnabled) { 6658 swiper.grid.initSlides(slides); 6659 } else if (swiper.grid) { 6660 swiper.grid.unsetSlides(); 6661 } 6662 6663 // Calc slides 6664 let slideSize; 6665 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 6666 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 6667 }).length > 0; 6668 for (let i = 0; i < slidesLength; i += 1) { 6669 slideSize = 0; 6670 let slide; 6671 if (slides[i]) slide = slides[i]; 6672 if (gridEnabled) { 6673 swiper.grid.updateSlide(i, slide, slides); 6674 } 6675 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line 6676 6677 if (params.slidesPerView === 'auto') { 6678 if (shouldResetSlideSize) { 6679 slides[i].style[swiper.getDirectionLabel('width')] = ``; 6680 } 6681 const slideStyles = getComputedStyle(slide); 6682 const currentTransform = slide.style.transform; 6683 const currentWebKitTransform = slide.style.webkitTransform; 6684 if (currentTransform) { 6685 slide.style.transform = 'none'; 6686 } 6687 if (currentWebKitTransform) { 6688 slide.style.webkitTransform = 'none'; 6689 } 6690 if (params.roundLengths) { 6691 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); 6692 } else { 6693 // eslint-disable-next-line 6694 const width = getDirectionPropertyValue(slideStyles, 'width'); 6695 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 6696 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 6697 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 6698 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 6699 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 6700 if (boxSizing && boxSizing === 'border-box') { 6701 slideSize = width + marginLeft + marginRight; 6702 } else { 6703 const { 6704 clientWidth, 6705 offsetWidth 6706 } = slide; 6707 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 6708 } 6709 } 6710 if (currentTransform) { 6711 slide.style.transform = currentTransform; 6712 } 6713 if (currentWebKitTransform) { 6714 slide.style.webkitTransform = currentWebKitTransform; 6715 } 6716 if (params.roundLengths) slideSize = Math.floor(slideSize); 6717 } else { 6718 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 6719 if (params.roundLengths) slideSize = Math.floor(slideSize); 6720 if (slides[i]) { 6721 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 6722 } 6723 } 6724 if (slides[i]) { 6725 slides[i].swiperSlideSize = slideSize; 6726 } 6727 slidesSizesGrid.push(slideSize); 6728 if (params.centeredSlides) { 6729 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 6730 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 6731 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 6732 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 6733 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 6734 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 6735 slidesGrid.push(slidePosition); 6736 } else { 6737 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 6738 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 6739 slidesGrid.push(slidePosition); 6740 slidePosition = slidePosition + slideSize + spaceBetween; 6741 } 6742 swiper.virtualSize += slideSize + spaceBetween; 6743 prevSlideSize = slideSize; 6744 index += 1; 6745 } 6746 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 6747 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 6748 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 6749 } 6750 if (params.setWrapperSize) { 6751 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 6752 } 6753 if (gridEnabled) { 6754 swiper.grid.updateWrapperSize(slideSize, snapGrid); 6755 } 6756 6757 // Remove last grid elements depending on width 6758 if (!params.centeredSlides) { 6759 const newSlidesGrid = []; 6760 for (let i = 0; i < snapGrid.length; i += 1) { 6761 let slidesGridItem = snapGrid[i]; 6762 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 6763 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 6764 newSlidesGrid.push(slidesGridItem); 6765 } 6766 } 6767 snapGrid = newSlidesGrid; 6768 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 6769 snapGrid.push(swiper.virtualSize - swiperSize); 6770 } 6771 } 6772 if (isVirtual && params.loop) { 6773 const size = slidesSizesGrid[0] + spaceBetween; 6774 if (params.slidesPerGroup > 1) { 6775 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 6776 const groupSize = size * params.slidesPerGroup; 6777 for (let i = 0; i < groups; i += 1) { 6778 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 6779 } 6780 } 6781 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 6782 if (params.slidesPerGroup === 1) { 6783 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 6784 } 6785 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 6786 swiper.virtualSize += size; 6787 } 6788 } 6789 if (snapGrid.length === 0) snapGrid = [0]; 6790 if (spaceBetween !== 0) { 6791 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 6792 slides.filter((_, slideIndex) => { 6793 if (!params.cssMode || params.loop) return true; 6794 if (slideIndex === slides.length - 1) { 6795 return false; 6796 } 6797 return true; 6798 }).forEach(slideEl => { 6799 slideEl.style[key] = `${spaceBetween}px`; 6800 }); 6801 } 6802 if (params.centeredSlides && params.centeredSlidesBounds) { 6803 let allSlidesSize = 0; 6804 slidesSizesGrid.forEach(slideSizeValue => { 6805 allSlidesSize += slideSizeValue + (spaceBetween || 0); 6806 }); 6807 allSlidesSize -= spaceBetween; 6808 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 6809 snapGrid = snapGrid.map(snap => { 6810 if (snap <= 0) return -offsetBefore; 6811 if (snap > maxSnap) return maxSnap + offsetAfter; 6812 return snap; 6813 }); 6814 } 6815 if (params.centerInsufficientSlides) { 6816 let allSlidesSize = 0; 6817 slidesSizesGrid.forEach(slideSizeValue => { 6818 allSlidesSize += slideSizeValue + (spaceBetween || 0); 6819 }); 6820 allSlidesSize -= spaceBetween; 6821 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 6822 if (allSlidesSize + offsetSize < swiperSize) { 6823 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 6824 snapGrid.forEach((snap, snapIndex) => { 6825 snapGrid[snapIndex] = snap - allSlidesOffset; 6826 }); 6827 slidesGrid.forEach((snap, snapIndex) => { 6828 slidesGrid[snapIndex] = snap + allSlidesOffset; 6829 }); 6830 } 6831 } 6832 Object.assign(swiper, { 6833 slides, 6834 snapGrid, 6835 slidesGrid, 6836 slidesSizesGrid 6837 }); 6838 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 6839 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 6840 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 6841 const addToSnapGrid = -swiper.snapGrid[0]; 6842 const addToSlidesGrid = -swiper.slidesGrid[0]; 6843 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 6844 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 6845 } 6846 if (slidesLength !== previousSlidesLength) { 6847 swiper.emit('slidesLengthChange'); 6848 } 6849 if (snapGrid.length !== previousSnapGridLength) { 6850 if (swiper.params.watchOverflow) swiper.checkOverflow(); 6851 swiper.emit('snapGridLengthChange'); 6852 } 6853 if (slidesGrid.length !== previousSlidesGridLength) { 6854 swiper.emit('slidesGridLengthChange'); 6855 } 6856 if (params.watchSlidesProgress) { 6857 swiper.updateSlidesOffset(); 6858 } 6859 swiper.emit('slidesUpdated'); 6860 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 6861 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 6862 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 6863 if (slidesLength <= params.maxBackfaceHiddenSlides) { 6864 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 6865 } else if (hasClassBackfaceClassAdded) { 6866 swiper.el.classList.remove(backFaceHiddenClass); 6867 } 6868 } 6869} 6870 6871function updateAutoHeight(speed) { 6872 const swiper = this; 6873 const activeSlides = []; 6874 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 6875 let newHeight = 0; 6876 let i; 6877 if (typeof speed === 'number') { 6878 swiper.setTransition(speed); 6879 } else if (speed === true) { 6880 swiper.setTransition(swiper.params.speed); 6881 } 6882 const getSlideByIndex = index => { 6883 if (isVirtual) { 6884 return swiper.slides[swiper.getSlideIndexByData(index)]; 6885 } 6886 return swiper.slides[index]; 6887 }; 6888 // Find slides currently in view 6889 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 6890 if (swiper.params.centeredSlides) { 6891 (swiper.visibleSlides || []).forEach(slide => { 6892 activeSlides.push(slide); 6893 }); 6894 } else { 6895 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 6896 const index = swiper.activeIndex + i; 6897 if (index > swiper.slides.length && !isVirtual) break; 6898 activeSlides.push(getSlideByIndex(index)); 6899 } 6900 } 6901 } else { 6902 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 6903 } 6904 6905 // Find new height from highest slide in view 6906 for (i = 0; i < activeSlides.length; i += 1) { 6907 if (typeof activeSlides[i] !== 'undefined') { 6908 const height = activeSlides[i].offsetHeight; 6909 newHeight = height > newHeight ? height : newHeight; 6910 } 6911 } 6912 6913 // Update Height 6914 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 6915} 6916 6917function updateSlidesOffset() { 6918 const swiper = this; 6919 const slides = swiper.slides; 6920 // eslint-disable-next-line 6921 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 6922 for (let i = 0; i < slides.length; i += 1) { 6923 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 6924 } 6925} 6926 6927const toggleSlideClasses$1 = (slideEl, condition, className) => { 6928 if (condition && !slideEl.classList.contains(className)) { 6929 slideEl.classList.add(className); 6930 } else if (!condition && slideEl.classList.contains(className)) { 6931 slideEl.classList.remove(className); 6932 } 6933}; 6934function updateSlidesProgress(translate) { 6935 if (translate === void 0) { 6936 translate = this && this.translate || 0; 6937 } 6938 const swiper = this; 6939 const params = swiper.params; 6940 const { 6941 slides, 6942 rtlTranslate: rtl, 6943 snapGrid 6944 } = swiper; 6945 if (slides.length === 0) return; 6946 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 6947 let offsetCenter = -translate; 6948 if (rtl) offsetCenter = translate; 6949 swiper.visibleSlidesIndexes = []; 6950 swiper.visibleSlides = []; 6951 let spaceBetween = params.spaceBetween; 6952 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6953 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 6954 } else if (typeof spaceBetween === 'string') { 6955 spaceBetween = parseFloat(spaceBetween); 6956 } 6957 for (let i = 0; i < slides.length; i += 1) { 6958 const slide = slides[i]; 6959 let slideOffset = slide.swiperSlideOffset; 6960 if (params.cssMode && params.centeredSlides) { 6961 slideOffset -= slides[0].swiperSlideOffset; 6962 } 6963 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 6964 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 6965 const slideBefore = -(offsetCenter - slideOffset); 6966 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 6967 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 6968 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 6969 if (isVisible) { 6970 swiper.visibleSlides.push(slide); 6971 swiper.visibleSlidesIndexes.push(i); 6972 } 6973 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 6974 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 6975 slide.progress = rtl ? -slideProgress : slideProgress; 6976 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 6977 } 6978} 6979 6980function updateProgress(translate) { 6981 const swiper = this; 6982 if (typeof translate === 'undefined') { 6983 const multiplier = swiper.rtlTranslate ? -1 : 1; 6984 // eslint-disable-next-line 6985 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 6986 } 6987 const params = swiper.params; 6988 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 6989 let { 6990 progress, 6991 isBeginning, 6992 isEnd, 6993 progressLoop 6994 } = swiper; 6995 const wasBeginning = isBeginning; 6996 const wasEnd = isEnd; 6997 if (translatesDiff === 0) { 6998 progress = 0; 6999 isBeginning = true; 7000 isEnd = true; 7001 } else { 7002 progress = (translate - swiper.minTranslate()) / translatesDiff; 7003 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 7004 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 7005 isBeginning = isBeginningRounded || progress <= 0; 7006 isEnd = isEndRounded || progress >= 1; 7007 if (isBeginningRounded) progress = 0; 7008 if (isEndRounded) progress = 1; 7009 } 7010 if (params.loop) { 7011 const firstSlideIndex = swiper.getSlideIndexByData(0); 7012 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 7013 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 7014 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 7015 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 7016 const translateAbs = Math.abs(translate); 7017 if (translateAbs >= firstSlideTranslate) { 7018 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 7019 } else { 7020 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 7021 } 7022 if (progressLoop > 1) progressLoop -= 1; 7023 } 7024 Object.assign(swiper, { 7025 progress, 7026 progressLoop, 7027 isBeginning, 7028 isEnd 7029 }); 7030 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 7031 if (isBeginning && !wasBeginning) { 7032 swiper.emit('reachBeginning toEdge'); 7033 } 7034 if (isEnd && !wasEnd) { 7035 swiper.emit('reachEnd toEdge'); 7036 } 7037 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 7038 swiper.emit('fromEdge'); 7039 } 7040 swiper.emit('progress', progress); 7041} 7042 7043const toggleSlideClasses = (slideEl, condition, className) => { 7044 if (condition && !slideEl.classList.contains(className)) { 7045 slideEl.classList.add(className); 7046 } else if (!condition && slideEl.classList.contains(className)) { 7047 slideEl.classList.remove(className); 7048 } 7049}; 7050function updateSlidesClasses() { 7051 const swiper = this; 7052 const { 7053 slides, 7054 params, 7055 slidesEl, 7056 activeIndex 7057 } = swiper; 7058 const isVirtual = swiper.virtual && params.virtual.enabled; 7059 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7060 const getFilteredSlide = selector => { 7061 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 7062 }; 7063 let activeSlide; 7064 let prevSlide; 7065 let nextSlide; 7066 if (isVirtual) { 7067 if (params.loop) { 7068 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 7069 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 7070 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 7071 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 7072 } else { 7073 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 7074 } 7075 } else { 7076 if (gridEnabled) { 7077 activeSlide = slides.find(slideEl => slideEl.column === activeIndex); 7078 nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); 7079 prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); 7080 } else { 7081 activeSlide = slides[activeIndex]; 7082 } 7083 } 7084 if (activeSlide) { 7085 if (!gridEnabled) { 7086 // Next Slide 7087 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7088 if (params.loop && !nextSlide) { 7089 nextSlide = slides[0]; 7090 } 7091 7092 // Prev Slide 7093 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7094 if (params.loop && !prevSlide === 0) { 7095 prevSlide = slides[slides.length - 1]; 7096 } 7097 } 7098 } 7099 slides.forEach(slideEl => { 7100 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 7101 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 7102 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 7103 }); 7104 swiper.emitSlidesClasses(); 7105} 7106 7107const processLazyPreloader = (swiper, imageEl) => { 7108 if (!swiper || swiper.destroyed || !swiper.params) return; 7109 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 7110 const slideEl = imageEl.closest(slideSelector()); 7111 if (slideEl) { 7112 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7113 if (!lazyEl && swiper.isElement) { 7114 if (slideEl.shadowRoot) { 7115 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7116 } else { 7117 // init later 7118 requestAnimationFrame(() => { 7119 if (slideEl.shadowRoot) { 7120 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7121 if (lazyEl) lazyEl.remove(); 7122 } 7123 }); 7124 } 7125 } 7126 if (lazyEl) lazyEl.remove(); 7127 } 7128}; 7129const unlazy = (swiper, index) => { 7130 if (!swiper.slides[index]) return; 7131 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 7132 if (imageEl) imageEl.removeAttribute('loading'); 7133}; 7134const preload = swiper => { 7135 if (!swiper || swiper.destroyed || !swiper.params) return; 7136 let amount = swiper.params.lazyPreloadPrevNext; 7137 const len = swiper.slides.length; 7138 if (!len || !amount || amount < 0) return; 7139 amount = Math.min(amount, len); 7140 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 7141 const activeIndex = swiper.activeIndex; 7142 if (swiper.params.grid && swiper.params.grid.rows > 1) { 7143 const activeColumn = activeIndex; 7144 const preloadColumns = [activeColumn - amount]; 7145 preloadColumns.push(...Array.from({ 7146 length: amount 7147 }).map((_, i) => { 7148 return activeColumn + slidesPerView + i; 7149 })); 7150 swiper.slides.forEach((slideEl, i) => { 7151 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 7152 }); 7153 return; 7154 } 7155 const slideIndexLastInView = activeIndex + slidesPerView - 1; 7156 if (swiper.params.rewind || swiper.params.loop) { 7157 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 7158 const realIndex = (i % len + len) % len; 7159 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 7160 } 7161 } else { 7162 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 7163 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 7164 unlazy(swiper, i); 7165 } 7166 } 7167 } 7168}; 7169 7170function getActiveIndexByTranslate(swiper) { 7171 const { 7172 slidesGrid, 7173 params 7174 } = swiper; 7175 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7176 let activeIndex; 7177 for (let i = 0; i < slidesGrid.length; i += 1) { 7178 if (typeof slidesGrid[i + 1] !== 'undefined') { 7179 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 7180 activeIndex = i; 7181 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 7182 activeIndex = i + 1; 7183 } 7184 } else if (translate >= slidesGrid[i]) { 7185 activeIndex = i; 7186 } 7187 } 7188 // Normalize slideIndex 7189 if (params.normalizeSlideIndex) { 7190 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 7191 } 7192 return activeIndex; 7193} 7194function updateActiveIndex(newActiveIndex) { 7195 const swiper = this; 7196 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7197 const { 7198 snapGrid, 7199 params, 7200 activeIndex: previousIndex, 7201 realIndex: previousRealIndex, 7202 snapIndex: previousSnapIndex 7203 } = swiper; 7204 let activeIndex = newActiveIndex; 7205 let snapIndex; 7206 const getVirtualRealIndex = aIndex => { 7207 let realIndex = aIndex - swiper.virtual.slidesBefore; 7208 if (realIndex < 0) { 7209 realIndex = swiper.virtual.slides.length + realIndex; 7210 } 7211 if (realIndex >= swiper.virtual.slides.length) { 7212 realIndex -= swiper.virtual.slides.length; 7213 } 7214 return realIndex; 7215 }; 7216 if (typeof activeIndex === 'undefined') { 7217 activeIndex = getActiveIndexByTranslate(swiper); 7218 } 7219 if (snapGrid.indexOf(translate) >= 0) { 7220 snapIndex = snapGrid.indexOf(translate); 7221 } else { 7222 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 7223 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 7224 } 7225 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7226 if (activeIndex === previousIndex && !swiper.params.loop) { 7227 if (snapIndex !== previousSnapIndex) { 7228 swiper.snapIndex = snapIndex; 7229 swiper.emit('snapIndexChange'); 7230 } 7231 return; 7232 } 7233 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 7234 swiper.realIndex = getVirtualRealIndex(activeIndex); 7235 return; 7236 } 7237 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7238 7239 // Get real index 7240 let realIndex; 7241 if (swiper.virtual && params.virtual.enabled && params.loop) { 7242 realIndex = getVirtualRealIndex(activeIndex); 7243 } else if (gridEnabled) { 7244 const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); 7245 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 7246 if (Number.isNaN(activeSlideIndex)) { 7247 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 7248 } 7249 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 7250 } else if (swiper.slides[activeIndex]) { 7251 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 7252 if (slideIndex) { 7253 realIndex = parseInt(slideIndex, 10); 7254 } else { 7255 realIndex = activeIndex; 7256 } 7257 } else { 7258 realIndex = activeIndex; 7259 } 7260 Object.assign(swiper, { 7261 previousSnapIndex, 7262 snapIndex, 7263 previousRealIndex, 7264 realIndex, 7265 previousIndex, 7266 activeIndex 7267 }); 7268 if (swiper.initialized) { 7269 preload(swiper); 7270 } 7271 swiper.emit('activeIndexChange'); 7272 swiper.emit('snapIndexChange'); 7273 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 7274 if (previousRealIndex !== realIndex) { 7275 swiper.emit('realIndexChange'); 7276 } 7277 swiper.emit('slideChange'); 7278 } 7279} 7280 7281function updateClickedSlide(el, path) { 7282 const swiper = this; 7283 const params = swiper.params; 7284 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 7285 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 7286 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 7287 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 7288 slide = pathEl; 7289 } 7290 }); 7291 } 7292 let slideFound = false; 7293 let slideIndex; 7294 if (slide) { 7295 for (let i = 0; i < swiper.slides.length; i += 1) { 7296 if (swiper.slides[i] === slide) { 7297 slideFound = true; 7298 slideIndex = i; 7299 break; 7300 } 7301 } 7302 } 7303 if (slide && slideFound) { 7304 swiper.clickedSlide = slide; 7305 if (swiper.virtual && swiper.params.virtual.enabled) { 7306 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 7307 } else { 7308 swiper.clickedIndex = slideIndex; 7309 } 7310 } else { 7311 swiper.clickedSlide = undefined; 7312 swiper.clickedIndex = undefined; 7313 return; 7314 } 7315 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 7316 swiper.slideToClickedSlide(); 7317 } 7318} 7319 7320var update = { 7321 updateSize, 7322 updateSlides, 7323 updateAutoHeight, 7324 updateSlidesOffset, 7325 updateSlidesProgress, 7326 updateProgress, 7327 updateSlidesClasses, 7328 updateActiveIndex, 7329 updateClickedSlide 7330}; 7331 7332function getSwiperTranslate(axis) { 7333 if (axis === void 0) { 7334 axis = this.isHorizontal() ? 'x' : 'y'; 7335 } 7336 const swiper = this; 7337 const { 7338 params, 7339 rtlTranslate: rtl, 7340 translate, 7341 wrapperEl 7342 } = swiper; 7343 if (params.virtualTranslate) { 7344 return rtl ? -translate : translate; 7345 } 7346 if (params.cssMode) { 7347 return translate; 7348 } 7349 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis); 7350 currentTranslate += swiper.cssOverflowAdjustment(); 7351 if (rtl) currentTranslate = -currentTranslate; 7352 return currentTranslate || 0; 7353} 7354 7355function setTranslate(translate, byController) { 7356 const swiper = this; 7357 const { 7358 rtlTranslate: rtl, 7359 params, 7360 wrapperEl, 7361 progress 7362 } = swiper; 7363 let x = 0; 7364 let y = 0; 7365 const z = 0; 7366 if (swiper.isHorizontal()) { 7367 x = rtl ? -translate : translate; 7368 } else { 7369 y = translate; 7370 } 7371 if (params.roundLengths) { 7372 x = Math.floor(x); 7373 y = Math.floor(y); 7374 } 7375 swiper.previousTranslate = swiper.translate; 7376 swiper.translate = swiper.isHorizontal() ? x : y; 7377 if (params.cssMode) { 7378 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 7379 } else if (!params.virtualTranslate) { 7380 if (swiper.isHorizontal()) { 7381 x -= swiper.cssOverflowAdjustment(); 7382 } else { 7383 y -= swiper.cssOverflowAdjustment(); 7384 } 7385 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 7386 } 7387 7388 // Check if we need to update progress 7389 let newProgress; 7390 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7391 if (translatesDiff === 0) { 7392 newProgress = 0; 7393 } else { 7394 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 7395 } 7396 if (newProgress !== progress) { 7397 swiper.updateProgress(translate); 7398 } 7399 swiper.emit('setTranslate', swiper.translate, byController); 7400} 7401 7402function minTranslate() { 7403 return -this.snapGrid[0]; 7404} 7405 7406function maxTranslate() { 7407 return -this.snapGrid[this.snapGrid.length - 1]; 7408} 7409 7410function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 7411 if (translate === void 0) { 7412 translate = 0; 7413 } 7414 if (speed === void 0) { 7415 speed = this.params.speed; 7416 } 7417 if (runCallbacks === void 0) { 7418 runCallbacks = true; 7419 } 7420 if (translateBounds === void 0) { 7421 translateBounds = true; 7422 } 7423 const swiper = this; 7424 const { 7425 params, 7426 wrapperEl 7427 } = swiper; 7428 if (swiper.animating && params.preventInteractionOnTransition) { 7429 return false; 7430 } 7431 const minTranslate = swiper.minTranslate(); 7432 const maxTranslate = swiper.maxTranslate(); 7433 let newTranslate; 7434 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 7435 7436 // Update progress 7437 swiper.updateProgress(newTranslate); 7438 if (params.cssMode) { 7439 const isH = swiper.isHorizontal(); 7440 if (speed === 0) { 7441 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 7442 } else { 7443 if (!swiper.support.smoothScroll) { 7444 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 7445 swiper, 7446 targetPosition: -newTranslate, 7447 side: isH ? 'left' : 'top' 7448 }); 7449 return true; 7450 } 7451 wrapperEl.scrollTo({ 7452 [isH ? 'left' : 'top']: -newTranslate, 7453 behavior: 'smooth' 7454 }); 7455 } 7456 return true; 7457 } 7458 if (speed === 0) { 7459 swiper.setTransition(0); 7460 swiper.setTranslate(newTranslate); 7461 if (runCallbacks) { 7462 swiper.emit('beforeTransitionStart', speed, internal); 7463 swiper.emit('transitionEnd'); 7464 } 7465 } else { 7466 swiper.setTransition(speed); 7467 swiper.setTranslate(newTranslate); 7468 if (runCallbacks) { 7469 swiper.emit('beforeTransitionStart', speed, internal); 7470 swiper.emit('transitionStart'); 7471 } 7472 if (!swiper.animating) { 7473 swiper.animating = true; 7474 if (!swiper.onTranslateToWrapperTransitionEnd) { 7475 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 7476 if (!swiper || swiper.destroyed) return; 7477 if (e.target !== this) return; 7478 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7479 swiper.onTranslateToWrapperTransitionEnd = null; 7480 delete swiper.onTranslateToWrapperTransitionEnd; 7481 swiper.animating = false; 7482 if (runCallbacks) { 7483 swiper.emit('transitionEnd'); 7484 } 7485 }; 7486 } 7487 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7488 } 7489 } 7490 return true; 7491} 7492 7493var translate = { 7494 getTranslate: getSwiperTranslate, 7495 setTranslate, 7496 minTranslate, 7497 maxTranslate, 7498 translateTo 7499}; 7500 7501function setTransition(duration, byController) { 7502 const swiper = this; 7503 if (!swiper.params.cssMode) { 7504 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 7505 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 7506 } 7507 swiper.emit('setTransition', duration, byController); 7508} 7509 7510function transitionEmit(_ref) { 7511 let { 7512 swiper, 7513 runCallbacks, 7514 direction, 7515 step 7516 } = _ref; 7517 const { 7518 activeIndex, 7519 previousIndex 7520 } = swiper; 7521 let dir = direction; 7522 if (!dir) { 7523 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 7524 } 7525 swiper.emit(`transition${step}`); 7526 if (runCallbacks && activeIndex !== previousIndex) { 7527 if (dir === 'reset') { 7528 swiper.emit(`slideResetTransition${step}`); 7529 return; 7530 } 7531 swiper.emit(`slideChangeTransition${step}`); 7532 if (dir === 'next') { 7533 swiper.emit(`slideNextTransition${step}`); 7534 } else { 7535 swiper.emit(`slidePrevTransition${step}`); 7536 } 7537 } 7538} 7539 7540function transitionStart(runCallbacks, direction) { 7541 if (runCallbacks === void 0) { 7542 runCallbacks = true; 7543 } 7544 const swiper = this; 7545 const { 7546 params 7547 } = swiper; 7548 if (params.cssMode) return; 7549 if (params.autoHeight) { 7550 swiper.updateAutoHeight(); 7551 } 7552 transitionEmit({ 7553 swiper, 7554 runCallbacks, 7555 direction, 7556 step: 'Start' 7557 }); 7558} 7559 7560function transitionEnd(runCallbacks, direction) { 7561 if (runCallbacks === void 0) { 7562 runCallbacks = true; 7563 } 7564 const swiper = this; 7565 const { 7566 params 7567 } = swiper; 7568 swiper.animating = false; 7569 if (params.cssMode) return; 7570 swiper.setTransition(0); 7571 transitionEmit({ 7572 swiper, 7573 runCallbacks, 7574 direction, 7575 step: 'End' 7576 }); 7577} 7578 7579var transition = { 7580 setTransition, 7581 transitionStart, 7582 transitionEnd 7583}; 7584 7585function slideTo(index, speed, runCallbacks, internal, initial) { 7586 if (index === void 0) { 7587 index = 0; 7588 } 7589 if (runCallbacks === void 0) { 7590 runCallbacks = true; 7591 } 7592 if (typeof index === 'string') { 7593 index = parseInt(index, 10); 7594 } 7595 const swiper = this; 7596 let slideIndex = index; 7597 if (slideIndex < 0) slideIndex = 0; 7598 const { 7599 params, 7600 snapGrid, 7601 slidesGrid, 7602 previousIndex, 7603 activeIndex, 7604 rtlTranslate: rtl, 7605 wrapperEl, 7606 enabled 7607 } = swiper; 7608 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 7609 return false; 7610 } 7611 if (typeof speed === 'undefined') { 7612 speed = swiper.params.speed; 7613 } 7614 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 7615 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 7616 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7617 const translate = -snapGrid[snapIndex]; 7618 // Normalize slideIndex 7619 if (params.normalizeSlideIndex) { 7620 for (let i = 0; i < slidesGrid.length; i += 1) { 7621 const normalizedTranslate = -Math.floor(translate * 100); 7622 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 7623 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 7624 if (typeof slidesGrid[i + 1] !== 'undefined') { 7625 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 7626 slideIndex = i; 7627 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 7628 slideIndex = i + 1; 7629 } 7630 } else if (normalizedTranslate >= normalizedGrid) { 7631 slideIndex = i; 7632 } 7633 } 7634 } 7635 // Directions locks 7636 if (swiper.initialized && slideIndex !== activeIndex) { 7637 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 7638 return false; 7639 } 7640 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 7641 if ((activeIndex || 0) !== slideIndex) { 7642 return false; 7643 } 7644 } 7645 } 7646 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 7647 swiper.emit('beforeSlideChangeStart'); 7648 } 7649 7650 // Update progress 7651 swiper.updateProgress(translate); 7652 let direction; 7653 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 7654 7655 // initial virtual 7656 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7657 const isInitialVirtual = isVirtual && initial; 7658 // Update Index 7659 if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { 7660 swiper.updateActiveIndex(slideIndex); 7661 // Update Height 7662 if (params.autoHeight) { 7663 swiper.updateAutoHeight(); 7664 } 7665 swiper.updateSlidesClasses(); 7666 if (params.effect !== 'slide') { 7667 swiper.setTranslate(translate); 7668 } 7669 if (direction !== 'reset') { 7670 swiper.transitionStart(runCallbacks, direction); 7671 swiper.transitionEnd(runCallbacks, direction); 7672 } 7673 return false; 7674 } 7675 if (params.cssMode) { 7676 const isH = swiper.isHorizontal(); 7677 const t = rtl ? translate : -translate; 7678 if (speed === 0) { 7679 if (isVirtual) { 7680 swiper.wrapperEl.style.scrollSnapType = 'none'; 7681 swiper._immediateVirtual = true; 7682 } 7683 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 7684 swiper._cssModeVirtualInitialSet = true; 7685 requestAnimationFrame(() => { 7686 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7687 }); 7688 } else { 7689 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7690 } 7691 if (isVirtual) { 7692 requestAnimationFrame(() => { 7693 swiper.wrapperEl.style.scrollSnapType = ''; 7694 swiper._immediateVirtual = false; 7695 }); 7696 } 7697 } else { 7698 if (!swiper.support.smoothScroll) { 7699 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 7700 swiper, 7701 targetPosition: t, 7702 side: isH ? 'left' : 'top' 7703 }); 7704 return true; 7705 } 7706 wrapperEl.scrollTo({ 7707 [isH ? 'left' : 'top']: t, 7708 behavior: 'smooth' 7709 }); 7710 } 7711 return true; 7712 } 7713 const browser = getBrowser(); 7714 const isSafari = browser.isSafari; 7715 if (isVirtual && !initial && isSafari && swiper.isElement) { 7716 swiper.virtual.update(false, false, slideIndex); 7717 } 7718 swiper.setTransition(speed); 7719 swiper.setTranslate(translate); 7720 swiper.updateActiveIndex(slideIndex); 7721 swiper.updateSlidesClasses(); 7722 swiper.emit('beforeTransitionStart', speed, internal); 7723 swiper.transitionStart(runCallbacks, direction); 7724 if (speed === 0) { 7725 swiper.transitionEnd(runCallbacks, direction); 7726 } else if (!swiper.animating) { 7727 swiper.animating = true; 7728 if (!swiper.onSlideToWrapperTransitionEnd) { 7729 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 7730 if (!swiper || swiper.destroyed) return; 7731 if (e.target !== this) return; 7732 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 7733 swiper.onSlideToWrapperTransitionEnd = null; 7734 delete swiper.onSlideToWrapperTransitionEnd; 7735 swiper.transitionEnd(runCallbacks, direction); 7736 }; 7737 } 7738 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 7739 } 7740 return true; 7741} 7742 7743function slideToLoop(index, speed, runCallbacks, internal) { 7744 if (index === void 0) { 7745 index = 0; 7746 } 7747 if (runCallbacks === void 0) { 7748 runCallbacks = true; 7749 } 7750 if (typeof index === 'string') { 7751 const indexAsNumber = parseInt(index, 10); 7752 index = indexAsNumber; 7753 } 7754 const swiper = this; 7755 if (swiper.destroyed) return; 7756 if (typeof speed === 'undefined') { 7757 speed = swiper.params.speed; 7758 } 7759 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 7760 let newIndex = index; 7761 if (swiper.params.loop) { 7762 if (swiper.virtual && swiper.params.virtual.enabled) { 7763 // eslint-disable-next-line 7764 newIndex = newIndex + swiper.virtual.slidesBefore; 7765 } else { 7766 let targetSlideIndex; 7767 if (gridEnabled) { 7768 const slideIndex = newIndex * swiper.params.grid.rows; 7769 targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 7770 } else { 7771 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 7772 } 7773 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 7774 const { 7775 centeredSlides 7776 } = swiper.params; 7777 let slidesPerView = swiper.params.slidesPerView; 7778 if (slidesPerView === 'auto') { 7779 slidesPerView = swiper.slidesPerViewDynamic(); 7780 } else { 7781 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 7782 if (centeredSlides && slidesPerView % 2 === 0) { 7783 slidesPerView = slidesPerView + 1; 7784 } 7785 } 7786 let needLoopFix = cols - targetSlideIndex < slidesPerView; 7787 if (centeredSlides) { 7788 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 7789 } 7790 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 7791 needLoopFix = false; 7792 } 7793 if (needLoopFix) { 7794 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 7795 swiper.loopFix({ 7796 direction, 7797 slideTo: true, 7798 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 7799 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 7800 }); 7801 } 7802 if (gridEnabled) { 7803 const slideIndex = newIndex * swiper.params.grid.rows; 7804 newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 7805 } else { 7806 newIndex = swiper.getSlideIndexByData(newIndex); 7807 } 7808 } 7809 } 7810 requestAnimationFrame(() => { 7811 swiper.slideTo(newIndex, speed, runCallbacks, internal); 7812 }); 7813 return swiper; 7814} 7815 7816/* eslint no-unused-vars: "off" */ 7817function slideNext(speed, runCallbacks, internal) { 7818 if (runCallbacks === void 0) { 7819 runCallbacks = true; 7820 } 7821 const swiper = this; 7822 const { 7823 enabled, 7824 params, 7825 animating 7826 } = swiper; 7827 if (!enabled || swiper.destroyed) return swiper; 7828 if (typeof speed === 'undefined') { 7829 speed = swiper.params.speed; 7830 } 7831 let perGroup = params.slidesPerGroup; 7832 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 7833 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 7834 } 7835 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 7836 const isVirtual = swiper.virtual && params.virtual.enabled; 7837 if (params.loop) { 7838 if (animating && !isVirtual && params.loopPreventsSliding) return false; 7839 swiper.loopFix({ 7840 direction: 'next' 7841 }); 7842 // eslint-disable-next-line 7843 swiper._clientLeft = swiper.wrapperEl.clientLeft; 7844 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 7845 requestAnimationFrame(() => { 7846 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 7847 }); 7848 return true; 7849 } 7850 } 7851 if (params.rewind && swiper.isEnd) { 7852 return swiper.slideTo(0, speed, runCallbacks, internal); 7853 } 7854 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 7855} 7856 7857/* eslint no-unused-vars: "off" */ 7858function slidePrev(speed, runCallbacks, internal) { 7859 if (runCallbacks === void 0) { 7860 runCallbacks = true; 7861 } 7862 const swiper = this; 7863 const { 7864 params, 7865 snapGrid, 7866 slidesGrid, 7867 rtlTranslate, 7868 enabled, 7869 animating 7870 } = swiper; 7871 if (!enabled || swiper.destroyed) return swiper; 7872 if (typeof speed === 'undefined') { 7873 speed = swiper.params.speed; 7874 } 7875 const isVirtual = swiper.virtual && params.virtual.enabled; 7876 if (params.loop) { 7877 if (animating && !isVirtual && params.loopPreventsSliding) return false; 7878 swiper.loopFix({ 7879 direction: 'prev' 7880 }); 7881 // eslint-disable-next-line 7882 swiper._clientLeft = swiper.wrapperEl.clientLeft; 7883 } 7884 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 7885 function normalize(val) { 7886 if (val < 0) return -Math.floor(Math.abs(val)); 7887 return Math.floor(val); 7888 } 7889 const normalizedTranslate = normalize(translate); 7890 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 7891 const isFreeMode = params.freeMode && params.freeMode.enabled; 7892 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 7893 if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { 7894 let prevSnapIndex; 7895 snapGrid.forEach((snap, snapIndex) => { 7896 if (normalizedTranslate >= snap) { 7897 // prevSnap = snap; 7898 prevSnapIndex = snapIndex; 7899 } 7900 }); 7901 if (typeof prevSnapIndex !== 'undefined') { 7902 prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 7903 } 7904 } 7905 let prevIndex = 0; 7906 if (typeof prevSnap !== 'undefined') { 7907 prevIndex = slidesGrid.indexOf(prevSnap); 7908 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 7909 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 7910 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 7911 prevIndex = Math.max(prevIndex, 0); 7912 } 7913 } 7914 if (params.rewind && swiper.isBeginning) { 7915 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 7916 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 7917 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 7918 requestAnimationFrame(() => { 7919 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 7920 }); 7921 return true; 7922 } 7923 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 7924} 7925 7926/* eslint no-unused-vars: "off" */ 7927function slideReset(speed, runCallbacks, internal) { 7928 if (runCallbacks === void 0) { 7929 runCallbacks = true; 7930 } 7931 const swiper = this; 7932 if (swiper.destroyed) return; 7933 if (typeof speed === 'undefined') { 7934 speed = swiper.params.speed; 7935 } 7936 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 7937} 7938 7939/* eslint no-unused-vars: "off" */ 7940function slideToClosest(speed, runCallbacks, internal, threshold) { 7941 if (runCallbacks === void 0) { 7942 runCallbacks = true; 7943 } 7944 if (threshold === void 0) { 7945 threshold = 0.5; 7946 } 7947 const swiper = this; 7948 if (swiper.destroyed) return; 7949 if (typeof speed === 'undefined') { 7950 speed = swiper.params.speed; 7951 } 7952 let index = swiper.activeIndex; 7953 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 7954 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 7955 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7956 if (translate >= swiper.snapGrid[snapIndex]) { 7957 // The current translate is on or after the current snap index, so the choice 7958 // is between the current index and the one after it. 7959 const currentSnap = swiper.snapGrid[snapIndex]; 7960 const nextSnap = swiper.snapGrid[snapIndex + 1]; 7961 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 7962 index += swiper.params.slidesPerGroup; 7963 } 7964 } else { 7965 // The current translate is before the current snap index, so the choice 7966 // is between the current index and the one before it. 7967 const prevSnap = swiper.snapGrid[snapIndex - 1]; 7968 const currentSnap = swiper.snapGrid[snapIndex]; 7969 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 7970 index -= swiper.params.slidesPerGroup; 7971 } 7972 } 7973 index = Math.max(index, 0); 7974 index = Math.min(index, swiper.slidesGrid.length - 1); 7975 return swiper.slideTo(index, speed, runCallbacks, internal); 7976} 7977 7978function slideToClickedSlide() { 7979 const swiper = this; 7980 if (swiper.destroyed) return; 7981 const { 7982 params, 7983 slidesEl 7984 } = swiper; 7985 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 7986 let slideToIndex = swiper.clickedIndex; 7987 let realIndex; 7988 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 7989 if (params.loop) { 7990 if (swiper.animating) return; 7991 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 7992 if (params.centeredSlides) { 7993 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 7994 swiper.loopFix(); 7995 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 7996 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 7997 swiper.slideTo(slideToIndex); 7998 }); 7999 } else { 8000 swiper.slideTo(slideToIndex); 8001 } 8002 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 8003 swiper.loopFix(); 8004 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 8005 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 8006 swiper.slideTo(slideToIndex); 8007 }); 8008 } else { 8009 swiper.slideTo(slideToIndex); 8010 } 8011 } else { 8012 swiper.slideTo(slideToIndex); 8013 } 8014} 8015 8016var slide = { 8017 slideTo, 8018 slideToLoop, 8019 slideNext, 8020 slidePrev, 8021 slideReset, 8022 slideToClosest, 8023 slideToClickedSlide 8024}; 8025 8026function loopCreate(slideRealIndex, initial) { 8027 const swiper = this; 8028 const { 8029 params, 8030 slidesEl 8031 } = swiper; 8032 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 8033 const initSlides = () => { 8034 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 8035 slides.forEach((el, index) => { 8036 el.setAttribute('data-swiper-slide-index', index); 8037 }); 8038 }; 8039 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8040 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 8041 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 8042 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 8043 const addBlankSlides = amountOfSlides => { 8044 for (let i = 0; i < amountOfSlides; i += 1) { 8045 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]); 8046 swiper.slidesEl.append(slideEl); 8047 } 8048 }; 8049 if (shouldFillGroup) { 8050 if (params.loopAddBlankSlides) { 8051 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 8052 addBlankSlides(slidesToAdd); 8053 swiper.recalcSlides(); 8054 swiper.updateSlides(); 8055 } else { 8056 (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)'); 8057 } 8058 initSlides(); 8059 } else if (shouldFillGrid) { 8060 if (params.loopAddBlankSlides) { 8061 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 8062 addBlankSlides(slidesToAdd); 8063 swiper.recalcSlides(); 8064 swiper.updateSlides(); 8065 } else { 8066 (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)'); 8067 } 8068 initSlides(); 8069 } else { 8070 initSlides(); 8071 } 8072 swiper.loopFix({ 8073 slideRealIndex, 8074 direction: params.centeredSlides ? undefined : 'next', 8075 initial 8076 }); 8077} 8078 8079function loopFix(_temp) { 8080 let { 8081 slideRealIndex, 8082 slideTo = true, 8083 direction, 8084 setTranslate, 8085 activeSlideIndex, 8086 initial, 8087 byController, 8088 byMousewheel 8089 } = _temp === void 0 ? {} : _temp; 8090 const swiper = this; 8091 if (!swiper.params.loop) return; 8092 swiper.emit('beforeLoopFix'); 8093 const { 8094 slides, 8095 allowSlidePrev, 8096 allowSlideNext, 8097 slidesEl, 8098 params 8099 } = swiper; 8100 const { 8101 centeredSlides, 8102 initialSlide 8103 } = params; 8104 swiper.allowSlidePrev = true; 8105 swiper.allowSlideNext = true; 8106 if (swiper.virtual && params.virtual.enabled) { 8107 if (slideTo) { 8108 if (!params.centeredSlides && swiper.snapIndex === 0) { 8109 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 8110 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 8111 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 8112 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 8113 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 8114 } 8115 } 8116 swiper.allowSlidePrev = allowSlidePrev; 8117 swiper.allowSlideNext = allowSlideNext; 8118 swiper.emit('loopFix'); 8119 return; 8120 } 8121 let slidesPerView = params.slidesPerView; 8122 if (slidesPerView === 'auto') { 8123 slidesPerView = swiper.slidesPerViewDynamic(); 8124 } else { 8125 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 8126 if (centeredSlides && slidesPerView % 2 === 0) { 8127 slidesPerView = slidesPerView + 1; 8128 } 8129 } 8130 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 8131 let loopedSlides = slidesPerGroup; 8132 if (loopedSlides % slidesPerGroup !== 0) { 8133 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 8134 } 8135 loopedSlides += params.loopAdditionalSlides; 8136 swiper.loopedSlides = loopedSlides; 8137 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8138 if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8139 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); 8140 } else if (gridEnabled && params.grid.fill === 'row') { 8141 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 8142 } 8143 const prependSlidesIndexes = []; 8144 const appendSlidesIndexes = []; 8145 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 8146 const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides; 8147 let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; 8148 if (typeof activeSlideIndex === 'undefined') { 8149 activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); 8150 } else { 8151 activeIndex = activeSlideIndex; 8152 } 8153 const isNext = direction === 'next' || !direction; 8154 const isPrev = direction === 'prev' || !direction; 8155 let slidesPrepended = 0; 8156 let slidesAppended = 0; 8157 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 8158 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 8159 // prepend last slides before start 8160 if (activeColIndexWithShift < loopedSlides) { 8161 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 8162 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 8163 const index = i - Math.floor(i / cols) * cols; 8164 if (gridEnabled) { 8165 const colIndexToPrepend = cols - index - 1; 8166 for (let i = slides.length - 1; i >= 0; i -= 1) { 8167 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 8168 } 8169 // slides.forEach((slide, slideIndex) => { 8170 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 8171 // }); 8172 } else { 8173 prependSlidesIndexes.push(cols - index - 1); 8174 } 8175 } 8176 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 8177 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 8178 if (isInitialOverflow) { 8179 slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); 8180 } 8181 for (let i = 0; i < slidesAppended; i += 1) { 8182 const index = i - Math.floor(i / cols) * cols; 8183 if (gridEnabled) { 8184 slides.forEach((slide, slideIndex) => { 8185 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 8186 }); 8187 } else { 8188 appendSlidesIndexes.push(index); 8189 } 8190 } 8191 } 8192 swiper.__preventObserver__ = true; 8193 requestAnimationFrame(() => { 8194 swiper.__preventObserver__ = false; 8195 }); 8196 if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8197 if (appendSlidesIndexes.includes(activeSlideIndex)) { 8198 appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); 8199 } 8200 if (prependSlidesIndexes.includes(activeSlideIndex)) { 8201 prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); 8202 } 8203 } 8204 if (isPrev) { 8205 prependSlidesIndexes.forEach(index => { 8206 slides[index].swiperLoopMoveDOM = true; 8207 slidesEl.prepend(slides[index]); 8208 slides[index].swiperLoopMoveDOM = false; 8209 }); 8210 } 8211 if (isNext) { 8212 appendSlidesIndexes.forEach(index => { 8213 slides[index].swiperLoopMoveDOM = true; 8214 slidesEl.append(slides[index]); 8215 slides[index].swiperLoopMoveDOM = false; 8216 }); 8217 } 8218 swiper.recalcSlides(); 8219 if (params.slidesPerView === 'auto') { 8220 swiper.updateSlides(); 8221 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 8222 swiper.slides.forEach((slide, slideIndex) => { 8223 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 8224 }); 8225 } 8226 if (params.watchSlidesProgress) { 8227 swiper.updateSlidesOffset(); 8228 } 8229 if (slideTo) { 8230 if (prependSlidesIndexes.length > 0 && isPrev) { 8231 if (typeof slideRealIndex === 'undefined') { 8232 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8233 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 8234 const diff = newSlideTranslate - currentSlideTranslate; 8235 if (byMousewheel) { 8236 swiper.setTranslate(swiper.translate - diff); 8237 } else { 8238 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 8239 if (setTranslate) { 8240 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8241 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8242 } 8243 } 8244 } else { 8245 if (setTranslate) { 8246 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 8247 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 8248 swiper.touchEventsData.currentTranslate = swiper.translate; 8249 } 8250 } 8251 } else if (appendSlidesIndexes.length > 0 && isNext) { 8252 if (typeof slideRealIndex === 'undefined') { 8253 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8254 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 8255 const diff = newSlideTranslate - currentSlideTranslate; 8256 if (byMousewheel) { 8257 swiper.setTranslate(swiper.translate - diff); 8258 } else { 8259 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 8260 if (setTranslate) { 8261 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8262 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8263 } 8264 } 8265 } else { 8266 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 8267 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 8268 } 8269 } 8270 } 8271 swiper.allowSlidePrev = allowSlidePrev; 8272 swiper.allowSlideNext = allowSlideNext; 8273 if (swiper.controller && swiper.controller.control && !byController) { 8274 const loopParams = { 8275 slideRealIndex, 8276 direction, 8277 setTranslate, 8278 activeSlideIndex, 8279 byController: true 8280 }; 8281 if (Array.isArray(swiper.controller.control)) { 8282 swiper.controller.control.forEach(c => { 8283 if (!c.destroyed && c.params.loop) c.loopFix({ 8284 ...loopParams, 8285 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 8286 }); 8287 }); 8288 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 8289 swiper.controller.control.loopFix({ 8290 ...loopParams, 8291 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 8292 }); 8293 } 8294 } 8295 swiper.emit('loopFix'); 8296} 8297 8298function loopDestroy() { 8299 const swiper = this; 8300 const { 8301 params, 8302 slidesEl 8303 } = swiper; 8304 if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; 8305 swiper.recalcSlides(); 8306 const newSlidesOrder = []; 8307 swiper.slides.forEach(slideEl => { 8308 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 8309 newSlidesOrder[index] = slideEl; 8310 }); 8311 swiper.slides.forEach(slideEl => { 8312 slideEl.removeAttribute('data-swiper-slide-index'); 8313 }); 8314 newSlidesOrder.forEach(slideEl => { 8315 slidesEl.append(slideEl); 8316 }); 8317 swiper.recalcSlides(); 8318 swiper.slideTo(swiper.realIndex, 0); 8319} 8320 8321var loop = { 8322 loopCreate, 8323 loopFix, 8324 loopDestroy 8325}; 8326 8327function setGrabCursor(moving) { 8328 const swiper = this; 8329 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 8330 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 8331 if (swiper.isElement) { 8332 swiper.__preventObserver__ = true; 8333 } 8334 el.style.cursor = 'move'; 8335 el.style.cursor = moving ? 'grabbing' : 'grab'; 8336 if (swiper.isElement) { 8337 requestAnimationFrame(() => { 8338 swiper.__preventObserver__ = false; 8339 }); 8340 } 8341} 8342 8343function unsetGrabCursor() { 8344 const swiper = this; 8345 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 8346 return; 8347 } 8348 if (swiper.isElement) { 8349 swiper.__preventObserver__ = true; 8350 } 8351 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 8352 if (swiper.isElement) { 8353 requestAnimationFrame(() => { 8354 swiper.__preventObserver__ = false; 8355 }); 8356 } 8357} 8358 8359var grabCursor = { 8360 setGrabCursor, 8361 unsetGrabCursor 8362}; 8363 8364// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 8365function closestElement(selector, base) { 8366 if (base === void 0) { 8367 base = this; 8368 } 8369 function __closestFrom(el) { 8370 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; 8371 if (el.assignedSlot) el = el.assignedSlot; 8372 const found = el.closest(selector); 8373 if (!found && !el.getRootNode) { 8374 return null; 8375 } 8376 return found || __closestFrom(el.getRootNode().host); 8377 } 8378 return __closestFrom(base); 8379} 8380function preventEdgeSwipe(swiper, event, startX) { 8381 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8382 const { 8383 params 8384 } = swiper; 8385 const edgeSwipeDetection = params.edgeSwipeDetection; 8386 const edgeSwipeThreshold = params.edgeSwipeThreshold; 8387 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 8388 if (edgeSwipeDetection === 'prevent') { 8389 event.preventDefault(); 8390 return true; 8391 } 8392 return false; 8393 } 8394 return true; 8395} 8396function onTouchStart(event) { 8397 const swiper = this; 8398 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8399 let e = event; 8400 if (e.originalEvent) e = e.originalEvent; 8401 const data = swiper.touchEventsData; 8402 if (e.type === 'pointerdown') { 8403 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 8404 return; 8405 } 8406 data.pointerId = e.pointerId; 8407 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 8408 data.touchId = e.targetTouches[0].identifier; 8409 } 8410 if (e.type === 'touchstart') { 8411 // don't proceed touch event 8412 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 8413 return; 8414 } 8415 const { 8416 params, 8417 touches, 8418 enabled 8419 } = swiper; 8420 if (!enabled) return; 8421 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8422 if (swiper.animating && params.preventInteractionOnTransition) { 8423 return; 8424 } 8425 if (!swiper.animating && params.cssMode && params.loop) { 8426 swiper.loopFix(); 8427 } 8428 let targetEl = e.target; 8429 if (params.touchEventsTarget === 'wrapper') { 8430 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return; 8431 } 8432 if ('which' in e && e.which === 3) return; 8433 if ('button' in e && e.button > 0) return; 8434 if (data.isTouched && data.isMoved) return; 8435 8436 // change target el for shadow root component 8437 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 8438 // eslint-disable-next-line 8439 const eventPath = e.composedPath ? e.composedPath() : e.path; 8440 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 8441 targetEl = eventPath[0]; 8442 } 8443 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 8444 const isTargetShadow = !!(e.target && e.target.shadowRoot); 8445 8446 // use closestElement for shadow root element to get the actual closest for nested shadow root element 8447 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 8448 swiper.allowClick = true; 8449 return; 8450 } 8451 if (params.swipeHandler) { 8452 if (!targetEl.closest(params.swipeHandler)) return; 8453 } 8454 touches.currentX = e.pageX; 8455 touches.currentY = e.pageY; 8456 const startX = touches.currentX; 8457 const startY = touches.currentY; 8458 8459 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 8460 8461 if (!preventEdgeSwipe(swiper, e, startX)) { 8462 return; 8463 } 8464 Object.assign(data, { 8465 isTouched: true, 8466 isMoved: false, 8467 allowTouchCallbacks: true, 8468 isScrolling: undefined, 8469 startMoving: undefined 8470 }); 8471 touches.startX = startX; 8472 touches.startY = startY; 8473 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8474 swiper.allowClick = true; 8475 swiper.updateSize(); 8476 swiper.swipeDirection = undefined; 8477 if (params.threshold > 0) data.allowThresholdMove = false; 8478 let preventDefault = true; 8479 if (targetEl.matches(data.focusableElements)) { 8480 preventDefault = false; 8481 if (targetEl.nodeName === 'SELECT') { 8482 data.isTouched = false; 8483 } 8484 } 8485 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { 8486 document.activeElement.blur(); 8487 } 8488 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 8489 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 8490 e.preventDefault(); 8491 } 8492 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 8493 swiper.freeMode.onTouchStart(); 8494 } 8495 swiper.emit('touchStart', e); 8496} 8497 8498function onTouchMove(event) { 8499 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8500 const swiper = this; 8501 const data = swiper.touchEventsData; 8502 const { 8503 params, 8504 touches, 8505 rtlTranslate: rtl, 8506 enabled 8507 } = swiper; 8508 if (!enabled) return; 8509 if (!params.simulateTouch && event.pointerType === 'mouse') return; 8510 let e = event; 8511 if (e.originalEvent) e = e.originalEvent; 8512 if (e.type === 'pointermove') { 8513 if (data.touchId !== null) return; // return from pointer if we use touch 8514 const id = e.pointerId; 8515 if (id !== data.pointerId) return; 8516 } 8517 let targetTouch; 8518 if (e.type === 'touchmove') { 8519 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 8520 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8521 } else { 8522 targetTouch = e; 8523 } 8524 if (!data.isTouched) { 8525 if (data.startMoving && data.isScrolling) { 8526 swiper.emit('touchMoveOpposite', e); 8527 } 8528 return; 8529 } 8530 const pageX = targetTouch.pageX; 8531 const pageY = targetTouch.pageY; 8532 if (e.preventedByNestedSwiper) { 8533 touches.startX = pageX; 8534 touches.startY = pageY; 8535 return; 8536 } 8537 if (!swiper.allowTouchMove) { 8538 if (!e.target.matches(data.focusableElements)) { 8539 swiper.allowClick = false; 8540 } 8541 if (data.isTouched) { 8542 Object.assign(touches, { 8543 startX: pageX, 8544 startY: pageY, 8545 currentX: pageX, 8546 currentY: pageY 8547 }); 8548 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8549 } 8550 return; 8551 } 8552 if (params.touchReleaseOnEdges && !params.loop) { 8553 if (swiper.isVertical()) { 8554 // Vertical 8555 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 8556 data.isTouched = false; 8557 data.isMoved = false; 8558 return; 8559 } 8560 } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { 8561 return; 8562 } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { 8563 return; 8564 } 8565 } 8566 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { 8567 document.activeElement.blur(); 8568 } 8569 if (document.activeElement) { 8570 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 8571 data.isMoved = true; 8572 swiper.allowClick = false; 8573 return; 8574 } 8575 } 8576 if (data.allowTouchCallbacks) { 8577 swiper.emit('touchMove', e); 8578 } 8579 touches.previousX = touches.currentX; 8580 touches.previousY = touches.currentY; 8581 touches.currentX = pageX; 8582 touches.currentY = pageY; 8583 const diffX = touches.currentX - touches.startX; 8584 const diffY = touches.currentY - touches.startY; 8585 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 8586 if (typeof data.isScrolling === 'undefined') { 8587 let touchAngle; 8588 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 8589 data.isScrolling = false; 8590 } else { 8591 // eslint-disable-next-line 8592 if (diffX * diffX + diffY * diffY >= 25) { 8593 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 8594 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 8595 } 8596 } 8597 } 8598 if (data.isScrolling) { 8599 swiper.emit('touchMoveOpposite', e); 8600 } 8601 if (typeof data.startMoving === 'undefined') { 8602 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 8603 data.startMoving = true; 8604 } 8605 } 8606 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 8607 data.isTouched = false; 8608 return; 8609 } 8610 if (!data.startMoving) { 8611 return; 8612 } 8613 swiper.allowClick = false; 8614 if (!params.cssMode && e.cancelable) { 8615 e.preventDefault(); 8616 } 8617 if (params.touchMoveStopPropagation && !params.nested) { 8618 e.stopPropagation(); 8619 } 8620 let diff = swiper.isHorizontal() ? diffX : diffY; 8621 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 8622 if (params.oneWayMovement) { 8623 diff = Math.abs(diff) * (rtl ? 1 : -1); 8624 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 8625 } 8626 touches.diff = diff; 8627 diff *= params.touchRatio; 8628 if (rtl) { 8629 diff = -diff; 8630 touchesDiff = -touchesDiff; 8631 } 8632 const prevTouchesDirection = swiper.touchesDirection; 8633 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 8634 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 8635 const isLoop = swiper.params.loop && !params.cssMode; 8636 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 8637 if (!data.isMoved) { 8638 if (isLoop && allowLoopFix) { 8639 swiper.loopFix({ 8640 direction: swiper.swipeDirection 8641 }); 8642 } 8643 data.startTranslate = swiper.getTranslate(); 8644 swiper.setTransition(0); 8645 if (swiper.animating) { 8646 const evt = new window.CustomEvent('transitionend', { 8647 bubbles: true, 8648 cancelable: true, 8649 detail: { 8650 bySwiperTouchMove: true 8651 } 8652 }); 8653 swiper.wrapperEl.dispatchEvent(evt); 8654 } 8655 data.allowMomentumBounce = false; 8656 // Grab Cursor 8657 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8658 swiper.setGrabCursor(true); 8659 } 8660 swiper.emit('sliderFirstMove', e); 8661 } 8662 let loopFixed; 8663 new Date().getTime(); 8664 if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 8665 Object.assign(touches, { 8666 startX: pageX, 8667 startY: pageY, 8668 currentX: pageX, 8669 currentY: pageY, 8670 startTranslate: data.currentTranslate 8671 }); 8672 data.loopSwapReset = true; 8673 data.startTranslate = data.currentTranslate; 8674 return; 8675 } 8676 swiper.emit('sliderMove', e); 8677 data.isMoved = true; 8678 data.currentTranslate = diff + data.startTranslate; 8679 let disableParentSwiper = true; 8680 let resistanceRatio = params.resistanceRatio; 8681 if (params.touchReleaseOnEdges) { 8682 resistanceRatio = 0; 8683 } 8684 if (diff > 0) { 8685 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())) { 8686 swiper.loopFix({ 8687 direction: 'prev', 8688 setTranslate: true, 8689 activeSlideIndex: 0 8690 }); 8691 } 8692 if (data.currentTranslate > swiper.minTranslate()) { 8693 disableParentSwiper = false; 8694 if (params.resistance) { 8695 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 8696 } 8697 } 8698 } else if (diff < 0) { 8699 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())) { 8700 swiper.loopFix({ 8701 direction: 'next', 8702 setTranslate: true, 8703 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 8704 }); 8705 } 8706 if (data.currentTranslate < swiper.maxTranslate()) { 8707 disableParentSwiper = false; 8708 if (params.resistance) { 8709 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 8710 } 8711 } 8712 } 8713 if (disableParentSwiper) { 8714 e.preventedByNestedSwiper = true; 8715 } 8716 8717 // Directions locks 8718 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 8719 data.currentTranslate = data.startTranslate; 8720 } 8721 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 8722 data.currentTranslate = data.startTranslate; 8723 } 8724 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 8725 data.currentTranslate = data.startTranslate; 8726 } 8727 8728 // Threshold 8729 if (params.threshold > 0) { 8730 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 8731 if (!data.allowThresholdMove) { 8732 data.allowThresholdMove = true; 8733 touches.startX = touches.currentX; 8734 touches.startY = touches.currentY; 8735 data.currentTranslate = data.startTranslate; 8736 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 8737 return; 8738 } 8739 } else { 8740 data.currentTranslate = data.startTranslate; 8741 return; 8742 } 8743 } 8744 if (!params.followFinger || params.cssMode) return; 8745 8746 // Update active index in free mode 8747 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 8748 swiper.updateActiveIndex(); 8749 swiper.updateSlidesClasses(); 8750 } 8751 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 8752 swiper.freeMode.onTouchMove(); 8753 } 8754 // Update progress 8755 swiper.updateProgress(data.currentTranslate); 8756 // Update translate 8757 swiper.setTranslate(data.currentTranslate); 8758} 8759 8760function onTouchEnd(event) { 8761 const swiper = this; 8762 const data = swiper.touchEventsData; 8763 let e = event; 8764 if (e.originalEvent) e = e.originalEvent; 8765 let targetTouch; 8766 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 8767 if (!isTouchEvent) { 8768 if (data.touchId !== null) return; // return from pointer if we use touch 8769 if (e.pointerId !== data.pointerId) return; 8770 targetTouch = e; 8771 } else { 8772 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 8773 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8774 } 8775 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 8776 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 8777 if (!proceed) { 8778 return; 8779 } 8780 } 8781 data.pointerId = null; 8782 data.touchId = null; 8783 const { 8784 params, 8785 touches, 8786 rtlTranslate: rtl, 8787 slidesGrid, 8788 enabled 8789 } = swiper; 8790 if (!enabled) return; 8791 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8792 if (data.allowTouchCallbacks) { 8793 swiper.emit('touchEnd', e); 8794 } 8795 data.allowTouchCallbacks = false; 8796 if (!data.isTouched) { 8797 if (data.isMoved && params.grabCursor) { 8798 swiper.setGrabCursor(false); 8799 } 8800 data.isMoved = false; 8801 data.startMoving = false; 8802 return; 8803 } 8804 8805 // Return Grab Cursor 8806 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8807 swiper.setGrabCursor(false); 8808 } 8809 8810 // Time diff 8811 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8812 const timeDiff = touchEndTime - data.touchStartTime; 8813 8814 // Tap, doubleTap, Click 8815 if (swiper.allowClick) { 8816 const pathTree = e.path || e.composedPath && e.composedPath(); 8817 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 8818 swiper.emit('tap click', e); 8819 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 8820 swiper.emit('doubleTap doubleClick', e); 8821 } 8822 } 8823 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 8824 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 8825 if (!swiper.destroyed) swiper.allowClick = true; 8826 }); 8827 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 8828 data.isTouched = false; 8829 data.isMoved = false; 8830 data.startMoving = false; 8831 return; 8832 } 8833 data.isTouched = false; 8834 data.isMoved = false; 8835 data.startMoving = false; 8836 let currentPos; 8837 if (params.followFinger) { 8838 currentPos = rtl ? swiper.translate : -swiper.translate; 8839 } else { 8840 currentPos = -data.currentTranslate; 8841 } 8842 if (params.cssMode) { 8843 return; 8844 } 8845 if (params.freeMode && params.freeMode.enabled) { 8846 swiper.freeMode.onTouchEnd({ 8847 currentPos 8848 }); 8849 return; 8850 } 8851 8852 // Find current slide 8853 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 8854 let stopIndex = 0; 8855 let groupSize = swiper.slidesSizesGrid[0]; 8856 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 8857 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 8858 if (typeof slidesGrid[i + increment] !== 'undefined') { 8859 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 8860 stopIndex = i; 8861 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 8862 } 8863 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 8864 stopIndex = i; 8865 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 8866 } 8867 } 8868 let rewindFirstIndex = null; 8869 let rewindLastIndex = null; 8870 if (params.rewind) { 8871 if (swiper.isBeginning) { 8872 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 8873 } else if (swiper.isEnd) { 8874 rewindFirstIndex = 0; 8875 } 8876 } 8877 // Find current slide size 8878 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 8879 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 8880 if (timeDiff > params.longSwipesMs) { 8881 // Long touches 8882 if (!params.longSwipes) { 8883 swiper.slideTo(swiper.activeIndex); 8884 return; 8885 } 8886 if (swiper.swipeDirection === 'next') { 8887 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 8888 } 8889 if (swiper.swipeDirection === 'prev') { 8890 if (ratio > 1 - params.longSwipesRatio) { 8891 swiper.slideTo(stopIndex + increment); 8892 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 8893 swiper.slideTo(rewindLastIndex); 8894 } else { 8895 swiper.slideTo(stopIndex); 8896 } 8897 } 8898 } else { 8899 // Short swipes 8900 if (!params.shortSwipes) { 8901 swiper.slideTo(swiper.activeIndex); 8902 return; 8903 } 8904 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 8905 if (!isNavButtonTarget) { 8906 if (swiper.swipeDirection === 'next') { 8907 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 8908 } 8909 if (swiper.swipeDirection === 'prev') { 8910 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 8911 } 8912 } else if (e.target === swiper.navigation.nextEl) { 8913 swiper.slideTo(stopIndex + increment); 8914 } else { 8915 swiper.slideTo(stopIndex); 8916 } 8917 } 8918} 8919 8920function onResize() { 8921 const swiper = this; 8922 const { 8923 params, 8924 el 8925 } = swiper; 8926 if (el && el.offsetWidth === 0) return; 8927 8928 // Breakpoints 8929 if (params.breakpoints) { 8930 swiper.setBreakpoint(); 8931 } 8932 8933 // Save locks 8934 const { 8935 allowSlideNext, 8936 allowSlidePrev, 8937 snapGrid 8938 } = swiper; 8939 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 8940 8941 // Disable locks on resize 8942 swiper.allowSlideNext = true; 8943 swiper.allowSlidePrev = true; 8944 swiper.updateSize(); 8945 swiper.updateSlides(); 8946 swiper.updateSlidesClasses(); 8947 const isVirtualLoop = isVirtual && params.loop; 8948 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 8949 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 8950 } else { 8951 if (swiper.params.loop && !isVirtual) { 8952 swiper.slideToLoop(swiper.realIndex, 0, false, true); 8953 } else { 8954 swiper.slideTo(swiper.activeIndex, 0, false, true); 8955 } 8956 } 8957 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 8958 clearTimeout(swiper.autoplay.resizeTimeout); 8959 swiper.autoplay.resizeTimeout = setTimeout(() => { 8960 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 8961 swiper.autoplay.resume(); 8962 } 8963 }, 500); 8964 } 8965 // Return locks after resize 8966 swiper.allowSlidePrev = allowSlidePrev; 8967 swiper.allowSlideNext = allowSlideNext; 8968 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 8969 swiper.checkOverflow(); 8970 } 8971} 8972 8973function onClick(e) { 8974 const swiper = this; 8975 if (!swiper.enabled) return; 8976 if (!swiper.allowClick) { 8977 if (swiper.params.preventClicks) e.preventDefault(); 8978 if (swiper.params.preventClicksPropagation && swiper.animating) { 8979 e.stopPropagation(); 8980 e.stopImmediatePropagation(); 8981 } 8982 } 8983} 8984 8985function onScroll() { 8986 const swiper = this; 8987 const { 8988 wrapperEl, 8989 rtlTranslate, 8990 enabled 8991 } = swiper; 8992 if (!enabled) return; 8993 swiper.previousTranslate = swiper.translate; 8994 if (swiper.isHorizontal()) { 8995 swiper.translate = -wrapperEl.scrollLeft; 8996 } else { 8997 swiper.translate = -wrapperEl.scrollTop; 8998 } 8999 // eslint-disable-next-line 9000 if (swiper.translate === 0) swiper.translate = 0; 9001 swiper.updateActiveIndex(); 9002 swiper.updateSlidesClasses(); 9003 let newProgress; 9004 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 9005 if (translatesDiff === 0) { 9006 newProgress = 0; 9007 } else { 9008 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 9009 } 9010 if (newProgress !== swiper.progress) { 9011 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 9012 } 9013 swiper.emit('setTranslate', swiper.translate, false); 9014} 9015 9016function onLoad(e) { 9017 const swiper = this; 9018 processLazyPreloader(swiper, e.target); 9019 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 9020 return; 9021 } 9022 swiper.update(); 9023} 9024 9025function onDocumentTouchStart() { 9026 const swiper = this; 9027 if (swiper.documentTouchHandlerProceeded) return; 9028 swiper.documentTouchHandlerProceeded = true; 9029 if (swiper.params.touchReleaseOnEdges) { 9030 swiper.el.style.touchAction = 'auto'; 9031 } 9032} 9033 9034const events = (swiper, method) => { 9035 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9036 const { 9037 params, 9038 el, 9039 wrapperEl, 9040 device 9041 } = swiper; 9042 const capture = !!params.nested; 9043 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 9044 const swiperMethod = method; 9045 if (!el || typeof el === 'string') return; 9046 9047 // Touch Events 9048 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 9049 passive: false, 9050 capture 9051 }); 9052 el[domMethod]('touchstart', swiper.onTouchStart, { 9053 passive: false 9054 }); 9055 el[domMethod]('pointerdown', swiper.onTouchStart, { 9056 passive: false 9057 }); 9058 document[domMethod]('touchmove', swiper.onTouchMove, { 9059 passive: false, 9060 capture 9061 }); 9062 document[domMethod]('pointermove', swiper.onTouchMove, { 9063 passive: false, 9064 capture 9065 }); 9066 document[domMethod]('touchend', swiper.onTouchEnd, { 9067 passive: true 9068 }); 9069 document[domMethod]('pointerup', swiper.onTouchEnd, { 9070 passive: true 9071 }); 9072 document[domMethod]('pointercancel', swiper.onTouchEnd, { 9073 passive: true 9074 }); 9075 document[domMethod]('touchcancel', swiper.onTouchEnd, { 9076 passive: true 9077 }); 9078 document[domMethod]('pointerout', swiper.onTouchEnd, { 9079 passive: true 9080 }); 9081 document[domMethod]('pointerleave', swiper.onTouchEnd, { 9082 passive: true 9083 }); 9084 document[domMethod]('contextmenu', swiper.onTouchEnd, { 9085 passive: true 9086 }); 9087 9088 // Prevent Links Clicks 9089 if (params.preventClicks || params.preventClicksPropagation) { 9090 el[domMethod]('click', swiper.onClick, true); 9091 } 9092 if (params.cssMode) { 9093 wrapperEl[domMethod]('scroll', swiper.onScroll); 9094 } 9095 9096 // Resize handler 9097 if (params.updateOnWindowResize) { 9098 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 9099 } else { 9100 swiper[swiperMethod]('observerUpdate', onResize, true); 9101 } 9102 9103 // Images loader 9104 el[domMethod]('load', swiper.onLoad, { 9105 capture: true 9106 }); 9107}; 9108function attachEvents() { 9109 const swiper = this; 9110 const { 9111 params 9112 } = swiper; 9113 swiper.onTouchStart = onTouchStart.bind(swiper); 9114 swiper.onTouchMove = onTouchMove.bind(swiper); 9115 swiper.onTouchEnd = onTouchEnd.bind(swiper); 9116 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 9117 if (params.cssMode) { 9118 swiper.onScroll = onScroll.bind(swiper); 9119 } 9120 swiper.onClick = onClick.bind(swiper); 9121 swiper.onLoad = onLoad.bind(swiper); 9122 events(swiper, 'on'); 9123} 9124function detachEvents() { 9125 const swiper = this; 9126 events(swiper, 'off'); 9127} 9128var events$1 = { 9129 attachEvents, 9130 detachEvents 9131}; 9132 9133const isGridEnabled = (swiper, params) => { 9134 return swiper.grid && params.grid && params.grid.rows > 1; 9135}; 9136function setBreakpoint() { 9137 const swiper = this; 9138 const { 9139 realIndex, 9140 initialized, 9141 params, 9142 el 9143 } = swiper; 9144 const breakpoints = params.breakpoints; 9145 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 9146 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9147 9148 // Get breakpoint for window/container width and update parameters 9149 const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; 9150 const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); 9151 const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); 9152 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 9153 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 9154 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 9155 const wasMultiRow = isGridEnabled(swiper, params); 9156 const isMultiRow = isGridEnabled(swiper, breakpointParams); 9157 const wasGrabCursor = swiper.params.grabCursor; 9158 const isGrabCursor = breakpointParams.grabCursor; 9159 const wasEnabled = params.enabled; 9160 if (wasMultiRow && !isMultiRow) { 9161 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 9162 swiper.emitContainerClasses(); 9163 } else if (!wasMultiRow && isMultiRow) { 9164 el.classList.add(`${params.containerModifierClass}grid`); 9165 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 9166 el.classList.add(`${params.containerModifierClass}grid-column`); 9167 } 9168 swiper.emitContainerClasses(); 9169 } 9170 if (wasGrabCursor && !isGrabCursor) { 9171 swiper.unsetGrabCursor(); 9172 } else if (!wasGrabCursor && isGrabCursor) { 9173 swiper.setGrabCursor(); 9174 } 9175 9176 // Toggle navigation, pagination, scrollbar 9177 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 9178 if (typeof breakpointParams[prop] === 'undefined') return; 9179 const wasModuleEnabled = params[prop] && params[prop].enabled; 9180 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 9181 if (wasModuleEnabled && !isModuleEnabled) { 9182 swiper[prop].disable(); 9183 } 9184 if (!wasModuleEnabled && isModuleEnabled) { 9185 swiper[prop].enable(); 9186 } 9187 }); 9188 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 9189 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 9190 const wasLoop = params.loop; 9191 if (directionChanged && initialized) { 9192 swiper.changeDirection(); 9193 } 9194 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams); 9195 const isEnabled = swiper.params.enabled; 9196 const hasLoop = swiper.params.loop; 9197 Object.assign(swiper, { 9198 allowTouchMove: swiper.params.allowTouchMove, 9199 allowSlideNext: swiper.params.allowSlideNext, 9200 allowSlidePrev: swiper.params.allowSlidePrev 9201 }); 9202 if (wasEnabled && !isEnabled) { 9203 swiper.disable(); 9204 } else if (!wasEnabled && isEnabled) { 9205 swiper.enable(); 9206 } 9207 swiper.currentBreakpoint = breakpoint; 9208 swiper.emit('_beforeBreakpoint', breakpointParams); 9209 if (initialized) { 9210 if (needsReLoop) { 9211 swiper.loopDestroy(); 9212 swiper.loopCreate(realIndex); 9213 swiper.updateSlides(); 9214 } else if (!wasLoop && hasLoop) { 9215 swiper.loopCreate(realIndex); 9216 swiper.updateSlides(); 9217 } else if (wasLoop && !hasLoop) { 9218 swiper.loopDestroy(); 9219 } 9220 } 9221 swiper.emit('breakpoint', breakpointParams); 9222} 9223 9224function getBreakpoint(breakpoints, base, containerEl) { 9225 if (base === void 0) { 9226 base = 'window'; 9227 } 9228 if (!breakpoints || base === 'container' && !containerEl) return undefined; 9229 let breakpoint = false; 9230 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 9231 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 9232 const points = Object.keys(breakpoints).map(point => { 9233 if (typeof point === 'string' && point.indexOf('@') === 0) { 9234 const minRatio = parseFloat(point.substr(1)); 9235 const value = currentHeight * minRatio; 9236 return { 9237 value, 9238 point 9239 }; 9240 } 9241 return { 9242 value: point, 9243 point 9244 }; 9245 }); 9246 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 9247 for (let i = 0; i < points.length; i += 1) { 9248 const { 9249 point, 9250 value 9251 } = points[i]; 9252 if (base === 'window') { 9253 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 9254 breakpoint = point; 9255 } 9256 } else if (value <= containerEl.clientWidth) { 9257 breakpoint = point; 9258 } 9259 } 9260 return breakpoint || 'max'; 9261} 9262 9263var breakpoints = { 9264 setBreakpoint, 9265 getBreakpoint 9266}; 9267 9268function prepareClasses(entries, prefix) { 9269 const resultClasses = []; 9270 entries.forEach(item => { 9271 if (typeof item === 'object') { 9272 Object.keys(item).forEach(classNames => { 9273 if (item[classNames]) { 9274 resultClasses.push(prefix + classNames); 9275 } 9276 }); 9277 } else if (typeof item === 'string') { 9278 resultClasses.push(prefix + item); 9279 } 9280 }); 9281 return resultClasses; 9282} 9283function addClasses() { 9284 const swiper = this; 9285 const { 9286 classNames, 9287 params, 9288 rtl, 9289 el, 9290 device 9291 } = swiper; 9292 // prettier-ignore 9293 const suffixes = prepareClasses(['initialized', params.direction, { 9294 'free-mode': swiper.params.freeMode && params.freeMode.enabled 9295 }, { 9296 'autoheight': params.autoHeight 9297 }, { 9298 'rtl': rtl 9299 }, { 9300 'grid': params.grid && params.grid.rows > 1 9301 }, { 9302 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 9303 }, { 9304 'android': device.android 9305 }, { 9306 'ios': device.ios 9307 }, { 9308 'css-mode': params.cssMode 9309 }, { 9310 'centered': params.cssMode && params.centeredSlides 9311 }, { 9312 'watch-progress': params.watchSlidesProgress 9313 }], params.containerModifierClass); 9314 classNames.push(...suffixes); 9315 el.classList.add(...classNames); 9316 swiper.emitContainerClasses(); 9317} 9318 9319function removeClasses() { 9320 const swiper = this; 9321 const { 9322 el, 9323 classNames 9324 } = swiper; 9325 if (!el || typeof el === 'string') return; 9326 el.classList.remove(...classNames); 9327 swiper.emitContainerClasses(); 9328} 9329 9330var classes = { 9331 addClasses, 9332 removeClasses 9333}; 9334 9335function checkOverflow() { 9336 const swiper = this; 9337 const { 9338 isLocked: wasLocked, 9339 params 9340 } = swiper; 9341 const { 9342 slidesOffsetBefore 9343 } = params; 9344 if (slidesOffsetBefore) { 9345 const lastSlideIndex = swiper.slides.length - 1; 9346 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 9347 swiper.isLocked = swiper.size > lastSlideRightEdge; 9348 } else { 9349 swiper.isLocked = swiper.snapGrid.length === 1; 9350 } 9351 if (params.allowSlideNext === true) { 9352 swiper.allowSlideNext = !swiper.isLocked; 9353 } 9354 if (params.allowSlidePrev === true) { 9355 swiper.allowSlidePrev = !swiper.isLocked; 9356 } 9357 if (wasLocked && wasLocked !== swiper.isLocked) { 9358 swiper.isEnd = false; 9359 } 9360 if (wasLocked !== swiper.isLocked) { 9361 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 9362 } 9363} 9364var checkOverflow$1 = { 9365 checkOverflow 9366}; 9367 9368var defaults = { 9369 init: true, 9370 direction: 'horizontal', 9371 oneWayMovement: false, 9372 swiperElementNodeName: 'SWIPER-CONTAINER', 9373 touchEventsTarget: 'wrapper', 9374 initialSlide: 0, 9375 speed: 300, 9376 cssMode: false, 9377 updateOnWindowResize: true, 9378 resizeObserver: true, 9379 nested: false, 9380 createElements: false, 9381 eventsPrefix: 'swiper', 9382 enabled: true, 9383 focusableElements: 'input, select, option, textarea, button, video, label', 9384 // Overrides 9385 width: null, 9386 height: null, 9387 // 9388 preventInteractionOnTransition: false, 9389 // ssr 9390 userAgent: null, 9391 url: null, 9392 // To support iOS's swipe-to-go-back gesture (when being used in-app). 9393 edgeSwipeDetection: false, 9394 edgeSwipeThreshold: 20, 9395 // Autoheight 9396 autoHeight: false, 9397 // Set wrapper width 9398 setWrapperSize: false, 9399 // Virtual Translate 9400 virtualTranslate: false, 9401 // Effects 9402 effect: 'slide', 9403 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 9404 9405 // Breakpoints 9406 breakpoints: undefined, 9407 breakpointsBase: 'window', 9408 // Slides grid 9409 spaceBetween: 0, 9410 slidesPerView: 1, 9411 slidesPerGroup: 1, 9412 slidesPerGroupSkip: 0, 9413 slidesPerGroupAuto: false, 9414 centeredSlides: false, 9415 centeredSlidesBounds: false, 9416 slidesOffsetBefore: 0, 9417 // in px 9418 slidesOffsetAfter: 0, 9419 // in px 9420 normalizeSlideIndex: true, 9421 centerInsufficientSlides: false, 9422 // Disable swiper and hide navigation when container not overflow 9423 watchOverflow: true, 9424 // Round length 9425 roundLengths: false, 9426 // Touches 9427 touchRatio: 1, 9428 touchAngle: 45, 9429 simulateTouch: true, 9430 shortSwipes: true, 9431 longSwipes: true, 9432 longSwipesRatio: 0.5, 9433 longSwipesMs: 300, 9434 followFinger: true, 9435 allowTouchMove: true, 9436 threshold: 5, 9437 touchMoveStopPropagation: false, 9438 touchStartPreventDefault: true, 9439 touchStartForcePreventDefault: false, 9440 touchReleaseOnEdges: false, 9441 // Unique Navigation Elements 9442 uniqueNavElements: true, 9443 // Resistance 9444 resistance: true, 9445 resistanceRatio: 0.85, 9446 // Progress 9447 watchSlidesProgress: false, 9448 // Cursor 9449 grabCursor: false, 9450 // Clicks 9451 preventClicks: true, 9452 preventClicksPropagation: true, 9453 slideToClickedSlide: false, 9454 // loop 9455 loop: false, 9456 loopAddBlankSlides: true, 9457 loopAdditionalSlides: 0, 9458 loopPreventsSliding: true, 9459 // rewind 9460 rewind: false, 9461 // Swiping/no swiping 9462 allowSlidePrev: true, 9463 allowSlideNext: true, 9464 swipeHandler: null, 9465 // '.swipe-handler', 9466 noSwiping: true, 9467 noSwipingClass: 'swiper-no-swiping', 9468 noSwipingSelector: null, 9469 // Passive Listeners 9470 passiveListeners: true, 9471 maxBackfaceHiddenSlides: 10, 9472 // NS 9473 containerModifierClass: 'swiper-', 9474 // NEW 9475 slideClass: 'swiper-slide', 9476 slideBlankClass: 'swiper-slide-blank', 9477 slideActiveClass: 'swiper-slide-active', 9478 slideVisibleClass: 'swiper-slide-visible', 9479 slideFullyVisibleClass: 'swiper-slide-fully-visible', 9480 slideNextClass: 'swiper-slide-next', 9481 slidePrevClass: 'swiper-slide-prev', 9482 wrapperClass: 'swiper-wrapper', 9483 lazyPreloaderClass: 'swiper-lazy-preloader', 9484 lazyPreloadPrevNext: 0, 9485 // Callbacks 9486 runCallbacksOnInit: true, 9487 // Internals 9488 _emitClasses: false 9489}; 9490 9491function moduleExtendParams(params, allModulesParams) { 9492 return function extendParams(obj) { 9493 if (obj === void 0) { 9494 obj = {}; 9495 } 9496 const moduleParamName = Object.keys(obj)[0]; 9497 const moduleParams = obj[moduleParamName]; 9498 if (typeof moduleParams !== 'object' || moduleParams === null) { 9499 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9500 return; 9501 } 9502 if (params[moduleParamName] === true) { 9503 params[moduleParamName] = { 9504 enabled: true 9505 }; 9506 } 9507 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 9508 params[moduleParamName].auto = true; 9509 } 9510 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 9511 params[moduleParamName].auto = true; 9512 } 9513 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 9514 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9515 return; 9516 } 9517 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 9518 params[moduleParamName].enabled = true; 9519 } 9520 if (!params[moduleParamName]) params[moduleParamName] = { 9521 enabled: false 9522 }; 9523 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 9524 }; 9525} 9526 9527/* eslint no-param-reassign: "off" */ 9528const prototypes = { 9529 eventsEmitter, 9530 update, 9531 translate, 9532 transition, 9533 slide, 9534 loop, 9535 grabCursor, 9536 events: events$1, 9537 breakpoints, 9538 checkOverflow: checkOverflow$1, 9539 classes 9540}; 9541const extendedDefaults = {}; 9542class Swiper { 9543 constructor() { 9544 let el; 9545 let params; 9546 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 9547 args[_key] = arguments[_key]; 9548 } 9549 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 9550 params = args[0]; 9551 } else { 9552 [el, params] = args; 9553 } 9554 if (!params) params = {}; 9555 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 9556 if (el && !params.el) params.el = el; 9557 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9558 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 9559 const swipers = []; 9560 document.querySelectorAll(params.el).forEach(containerEl => { 9561 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, { 9562 el: containerEl 9563 }); 9564 swipers.push(new Swiper(newParams)); 9565 }); 9566 // eslint-disable-next-line no-constructor-return 9567 return swipers; 9568 } 9569 9570 // Swiper Instance 9571 const swiper = this; 9572 swiper.__swiper__ = true; 9573 swiper.support = getSupport(); 9574 swiper.device = getDevice({ 9575 userAgent: params.userAgent 9576 }); 9577 swiper.browser = getBrowser(); 9578 swiper.eventsListeners = {}; 9579 swiper.eventsAnyListeners = []; 9580 swiper.modules = [...swiper.__modules__]; 9581 if (params.modules && Array.isArray(params.modules)) { 9582 swiper.modules.push(...params.modules); 9583 } 9584 const allModulesParams = {}; 9585 swiper.modules.forEach(mod => { 9586 mod({ 9587 params, 9588 swiper, 9589 extendParams: moduleExtendParams(params, allModulesParams), 9590 on: swiper.on.bind(swiper), 9591 once: swiper.once.bind(swiper), 9592 off: swiper.off.bind(swiper), 9593 emit: swiper.emit.bind(swiper) 9594 }); 9595 }); 9596 9597 // Extend defaults with modules params 9598 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams); 9599 9600 // Extend defaults with passed params 9601 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params); 9602 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params); 9603 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 9604 9605 // add event listeners 9606 if (swiper.params && swiper.params.on) { 9607 Object.keys(swiper.params.on).forEach(eventName => { 9608 swiper.on(eventName, swiper.params.on[eventName]); 9609 }); 9610 } 9611 if (swiper.params && swiper.params.onAny) { 9612 swiper.onAny(swiper.params.onAny); 9613 } 9614 9615 // Extend Swiper 9616 Object.assign(swiper, { 9617 enabled: swiper.params.enabled, 9618 el, 9619 // Classes 9620 classNames: [], 9621 // Slides 9622 slides: [], 9623 slidesGrid: [], 9624 snapGrid: [], 9625 slidesSizesGrid: [], 9626 // isDirection 9627 isHorizontal() { 9628 return swiper.params.direction === 'horizontal'; 9629 }, 9630 isVertical() { 9631 return swiper.params.direction === 'vertical'; 9632 }, 9633 // Indexes 9634 activeIndex: 0, 9635 realIndex: 0, 9636 // 9637 isBeginning: true, 9638 isEnd: false, 9639 // Props 9640 translate: 0, 9641 previousTranslate: 0, 9642 progress: 0, 9643 velocity: 0, 9644 animating: false, 9645 cssOverflowAdjustment() { 9646 // Returns 0 unless `translate` is > 2**23 9647 // Should be subtracted from css values to prevent overflow 9648 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 9649 }, 9650 // Locks 9651 allowSlideNext: swiper.params.allowSlideNext, 9652 allowSlidePrev: swiper.params.allowSlidePrev, 9653 // Touch Events 9654 touchEventsData: { 9655 isTouched: undefined, 9656 isMoved: undefined, 9657 allowTouchCallbacks: undefined, 9658 touchStartTime: undefined, 9659 isScrolling: undefined, 9660 currentTranslate: undefined, 9661 startTranslate: undefined, 9662 allowThresholdMove: undefined, 9663 // Form elements to match 9664 focusableElements: swiper.params.focusableElements, 9665 // Last click time 9666 lastClickTime: 0, 9667 clickTimeout: undefined, 9668 // Velocities 9669 velocities: [], 9670 allowMomentumBounce: undefined, 9671 startMoving: undefined, 9672 pointerId: null, 9673 touchId: null 9674 }, 9675 // Clicks 9676 allowClick: true, 9677 // Touches 9678 allowTouchMove: swiper.params.allowTouchMove, 9679 touches: { 9680 startX: 0, 9681 startY: 0, 9682 currentX: 0, 9683 currentY: 0, 9684 diff: 0 9685 }, 9686 // Images 9687 imagesToLoad: [], 9688 imagesLoaded: 0 9689 }); 9690 swiper.emit('_swiper'); 9691 9692 // Init 9693 if (swiper.params.init) { 9694 swiper.init(); 9695 } 9696 9697 // Return app instance 9698 // eslint-disable-next-line no-constructor-return 9699 return swiper; 9700 } 9701 getDirectionLabel(property) { 9702 if (this.isHorizontal()) { 9703 return property; 9704 } 9705 // prettier-ignore 9706 return { 9707 'width': 'height', 9708 'margin-top': 'margin-left', 9709 'margin-bottom ': 'margin-right', 9710 'margin-left': 'margin-top', 9711 'margin-right': 'margin-bottom', 9712 'padding-left': 'padding-top', 9713 'padding-right': 'padding-bottom', 9714 'marginRight': 'marginBottom' 9715 }[property]; 9716 } 9717 getSlideIndex(slideEl) { 9718 const { 9719 slidesEl, 9720 params 9721 } = this; 9722 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 9723 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]); 9724 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex; 9725 } 9726 getSlideIndexByData(index) { 9727 return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); 9728 } 9729 recalcSlides() { 9730 const swiper = this; 9731 const { 9732 slidesEl, 9733 params 9734 } = swiper; 9735 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 9736 } 9737 enable() { 9738 const swiper = this; 9739 if (swiper.enabled) return; 9740 swiper.enabled = true; 9741 if (swiper.params.grabCursor) { 9742 swiper.setGrabCursor(); 9743 } 9744 swiper.emit('enable'); 9745 } 9746 disable() { 9747 const swiper = this; 9748 if (!swiper.enabled) return; 9749 swiper.enabled = false; 9750 if (swiper.params.grabCursor) { 9751 swiper.unsetGrabCursor(); 9752 } 9753 swiper.emit('disable'); 9754 } 9755 setProgress(progress, speed) { 9756 const swiper = this; 9757 progress = Math.min(Math.max(progress, 0), 1); 9758 const min = swiper.minTranslate(); 9759 const max = swiper.maxTranslate(); 9760 const current = (max - min) * progress + min; 9761 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 9762 swiper.updateActiveIndex(); 9763 swiper.updateSlidesClasses(); 9764 } 9765 emitContainerClasses() { 9766 const swiper = this; 9767 if (!swiper.params._emitClasses || !swiper.el) return; 9768 const cls = swiper.el.className.split(' ').filter(className => { 9769 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 9770 }); 9771 swiper.emit('_containerClasses', cls.join(' ')); 9772 } 9773 getSlideClasses(slideEl) { 9774 const swiper = this; 9775 if (swiper.destroyed) return ''; 9776 return slideEl.className.split(' ').filter(className => { 9777 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 9778 }).join(' '); 9779 } 9780 emitSlidesClasses() { 9781 const swiper = this; 9782 if (!swiper.params._emitClasses || !swiper.el) return; 9783 const updates = []; 9784 swiper.slides.forEach(slideEl => { 9785 const classNames = swiper.getSlideClasses(slideEl); 9786 updates.push({ 9787 slideEl, 9788 classNames 9789 }); 9790 swiper.emit('_slideClass', slideEl, classNames); 9791 }); 9792 swiper.emit('_slideClasses', updates); 9793 } 9794 slidesPerViewDynamic(view, exact) { 9795 if (view === void 0) { 9796 view = 'current'; 9797 } 9798 if (exact === void 0) { 9799 exact = false; 9800 } 9801 const swiper = this; 9802 const { 9803 params, 9804 slides, 9805 slidesGrid, 9806 slidesSizesGrid, 9807 size: swiperSize, 9808 activeIndex 9809 } = swiper; 9810 let spv = 1; 9811 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 9812 if (params.centeredSlides) { 9813 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 9814 let breakLoop; 9815 for (let i = activeIndex + 1; i < slides.length; i += 1) { 9816 if (slides[i] && !breakLoop) { 9817 slideSize += Math.ceil(slides[i].swiperSlideSize); 9818 spv += 1; 9819 if (slideSize > swiperSize) breakLoop = true; 9820 } 9821 } 9822 for (let i = activeIndex - 1; i >= 0; i -= 1) { 9823 if (slides[i] && !breakLoop) { 9824 slideSize += slides[i].swiperSlideSize; 9825 spv += 1; 9826 if (slideSize > swiperSize) breakLoop = true; 9827 } 9828 } 9829 } else { 9830 // eslint-disable-next-line 9831 if (view === 'current') { 9832 for (let i = activeIndex + 1; i < slides.length; i += 1) { 9833 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 9834 if (slideInView) { 9835 spv += 1; 9836 } 9837 } 9838 } else { 9839 // previous 9840 for (let i = activeIndex - 1; i >= 0; i -= 1) { 9841 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 9842 if (slideInView) { 9843 spv += 1; 9844 } 9845 } 9846 } 9847 } 9848 return spv; 9849 } 9850 update() { 9851 const swiper = this; 9852 if (!swiper || swiper.destroyed) return; 9853 const { 9854 snapGrid, 9855 params 9856 } = swiper; 9857 // Breakpoints 9858 if (params.breakpoints) { 9859 swiper.setBreakpoint(); 9860 } 9861 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 9862 if (imageEl.complete) { 9863 processLazyPreloader(swiper, imageEl); 9864 } 9865 }); 9866 swiper.updateSize(); 9867 swiper.updateSlides(); 9868 swiper.updateProgress(); 9869 swiper.updateSlidesClasses(); 9870 function setTranslate() { 9871 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 9872 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 9873 swiper.setTranslate(newTranslate); 9874 swiper.updateActiveIndex(); 9875 swiper.updateSlidesClasses(); 9876 } 9877 let translated; 9878 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 9879 setTranslate(); 9880 if (params.autoHeight) { 9881 swiper.updateAutoHeight(); 9882 } 9883 } else { 9884 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 9885 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 9886 translated = swiper.slideTo(slides.length - 1, 0, false, true); 9887 } else { 9888 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 9889 } 9890 if (!translated) { 9891 setTranslate(); 9892 } 9893 } 9894 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 9895 swiper.checkOverflow(); 9896 } 9897 swiper.emit('update'); 9898 } 9899 changeDirection(newDirection, needUpdate) { 9900 if (needUpdate === void 0) { 9901 needUpdate = true; 9902 } 9903 const swiper = this; 9904 const currentDirection = swiper.params.direction; 9905 if (!newDirection) { 9906 // eslint-disable-next-line 9907 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 9908 } 9909 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 9910 return swiper; 9911 } 9912 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 9913 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 9914 swiper.emitContainerClasses(); 9915 swiper.params.direction = newDirection; 9916 swiper.slides.forEach(slideEl => { 9917 if (newDirection === 'vertical') { 9918 slideEl.style.width = ''; 9919 } else { 9920 slideEl.style.height = ''; 9921 } 9922 }); 9923 swiper.emit('changeDirection'); 9924 if (needUpdate) swiper.update(); 9925 return swiper; 9926 } 9927 changeLanguageDirection(direction) { 9928 const swiper = this; 9929 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 9930 swiper.rtl = direction === 'rtl'; 9931 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 9932 if (swiper.rtl) { 9933 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 9934 swiper.el.dir = 'rtl'; 9935 } else { 9936 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 9937 swiper.el.dir = 'ltr'; 9938 } 9939 swiper.update(); 9940 } 9941 mount(element) { 9942 const swiper = this; 9943 if (swiper.mounted) return true; 9944 9945 // Find el 9946 let el = element || swiper.params.el; 9947 if (typeof el === 'string') { 9948 el = document.querySelector(el); 9949 } 9950 if (!el) { 9951 return false; 9952 } 9953 el.swiper = swiper; 9954 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 9955 swiper.isElement = true; 9956 } 9957 const getWrapperSelector = () => { 9958 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 9959 }; 9960 const getWrapper = () => { 9961 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 9962 const res = el.shadowRoot.querySelector(getWrapperSelector()); 9963 // Children needs to return slot items 9964 return res; 9965 } 9966 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 9967 }; 9968 // Find Wrapper 9969 let wrapperEl = getWrapper(); 9970 if (!wrapperEl && swiper.params.createElements) { 9971 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 9972 el.append(wrapperEl); 9973 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 9974 wrapperEl.append(slideEl); 9975 }); 9976 } 9977 Object.assign(swiper, { 9978 el, 9979 wrapperEl, 9980 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 9981 hostEl: swiper.isElement ? el.parentNode.host : el, 9982 mounted: true, 9983 // RTL 9984 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl', 9985 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'), 9986 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box' 9987 }); 9988 return true; 9989 } 9990 init(el) { 9991 const swiper = this; 9992 if (swiper.initialized) return swiper; 9993 const mounted = swiper.mount(el); 9994 if (mounted === false) return swiper; 9995 swiper.emit('beforeInit'); 9996 9997 // Set breakpoint 9998 if (swiper.params.breakpoints) { 9999 swiper.setBreakpoint(); 10000 } 10001 10002 // Add Classes 10003 swiper.addClasses(); 10004 10005 // Update size 10006 swiper.updateSize(); 10007 10008 // Update slides 10009 swiper.updateSlides(); 10010 if (swiper.params.watchOverflow) { 10011 swiper.checkOverflow(); 10012 } 10013 10014 // Set Grab Cursor 10015 if (swiper.params.grabCursor && swiper.enabled) { 10016 swiper.setGrabCursor(); 10017 } 10018 10019 // Slide To Initial Slide 10020 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 10021 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 10022 } else { 10023 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 10024 } 10025 10026 // Create loop 10027 if (swiper.params.loop) { 10028 swiper.loopCreate(undefined, true); 10029 } 10030 10031 // Attach events 10032 swiper.attachEvents(); 10033 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 10034 if (swiper.isElement) { 10035 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 10036 } 10037 lazyElements.forEach(imageEl => { 10038 if (imageEl.complete) { 10039 processLazyPreloader(swiper, imageEl); 10040 } else { 10041 imageEl.addEventListener('load', e => { 10042 processLazyPreloader(swiper, e.target); 10043 }); 10044 } 10045 }); 10046 preload(swiper); 10047 10048 // Init Flag 10049 swiper.initialized = true; 10050 preload(swiper); 10051 10052 // Emit 10053 swiper.emit('init'); 10054 swiper.emit('afterInit'); 10055 return swiper; 10056 } 10057 destroy(deleteInstance, cleanStyles) { 10058 if (deleteInstance === void 0) { 10059 deleteInstance = true; 10060 } 10061 if (cleanStyles === void 0) { 10062 cleanStyles = true; 10063 } 10064 const swiper = this; 10065 const { 10066 params, 10067 el, 10068 wrapperEl, 10069 slides 10070 } = swiper; 10071 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 10072 return null; 10073 } 10074 swiper.emit('beforeDestroy'); 10075 10076 // Init Flag 10077 swiper.initialized = false; 10078 10079 // Detach events 10080 swiper.detachEvents(); 10081 10082 // Destroy loop 10083 if (params.loop) { 10084 swiper.loopDestroy(); 10085 } 10086 10087 // Cleanup styles 10088 if (cleanStyles) { 10089 swiper.removeClasses(); 10090 if (el && typeof el !== 'string') { 10091 el.removeAttribute('style'); 10092 } 10093 if (wrapperEl) { 10094 wrapperEl.removeAttribute('style'); 10095 } 10096 if (slides && slides.length) { 10097 slides.forEach(slideEl => { 10098 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 10099 slideEl.removeAttribute('style'); 10100 slideEl.removeAttribute('data-swiper-slide-index'); 10101 }); 10102 } 10103 } 10104 swiper.emit('destroy'); 10105 10106 // Detach emitter events 10107 Object.keys(swiper.eventsListeners).forEach(eventName => { 10108 swiper.off(eventName); 10109 }); 10110 if (deleteInstance !== false) { 10111 if (swiper.el && typeof swiper.el !== 'string') { 10112 swiper.el.swiper = null; 10113 } 10114 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper); 10115 } 10116 swiper.destroyed = true; 10117 return null; 10118 } 10119 static extendDefaults(newDefaults) { 10120 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults); 10121 } 10122 static get extendedDefaults() { 10123 return extendedDefaults; 10124 } 10125 static get defaults() { 10126 return defaults; 10127 } 10128 static installModule(mod) { 10129 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 10130 const modules = Swiper.prototype.__modules__; 10131 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 10132 modules.push(mod); 10133 } 10134 } 10135 static use(module) { 10136 if (Array.isArray(module)) { 10137 module.forEach(m => Swiper.installModule(m)); 10138 return Swiper; 10139 } 10140 Swiper.installModule(module); 10141 return Swiper; 10142 } 10143} 10144Object.keys(prototypes).forEach(prototypeGroup => { 10145 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 10146 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 10147 }); 10148}); 10149Swiper.use([Resize, Observer]); 10150 10151 10152 10153 10154/***/ }), 10155
vendor: 13,147 bytes, lines 10156-10524
10156/***/ "./node_modules/swiper/shared/utils.mjs": 10157/*!**********************************************!*\ 10158 !*** ./node_modules/swiper/shared/utils.mjs ***! 10159 \**********************************************/ 10160/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10161 10162__webpack_require__.r(__webpack_exports__); 10163/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10164/* harmony export */ a: () => (/* binding */ elementParents), 10165/* harmony export */ b: () => (/* binding */ elementOffset), 10166/* harmony export */ c: () => (/* binding */ createElement), 10167/* harmony export */ d: () => (/* binding */ now), 10168/* harmony export */ e: () => (/* binding */ elementChildren), 10169/* harmony export */ f: () => (/* binding */ elementOuterSize), 10170/* harmony export */ g: () => (/* binding */ getSlideTransformEl), 10171/* harmony export */ h: () => (/* binding */ elementIndex), 10172/* harmony export */ i: () => (/* binding */ classesToTokens), 10173/* harmony export */ j: () => (/* binding */ getTranslate), 10174/* harmony export */ k: () => (/* binding */ elementTransitionEnd), 10175/* harmony export */ l: () => (/* binding */ isObject), 10176/* harmony export */ m: () => (/* binding */ makeElementsArray), 10177/* harmony export */ n: () => (/* binding */ nextTick), 10178/* harmony export */ o: () => (/* binding */ getRotateFix), 10179/* harmony export */ p: () => (/* binding */ elementStyle), 10180/* harmony export */ q: () => (/* binding */ elementNextAll), 10181/* harmony export */ r: () => (/* binding */ elementPrevAll), 10182/* harmony export */ s: () => (/* binding */ setCSSProperty), 10183/* harmony export */ t: () => (/* binding */ animateCSSModeScroll), 10184/* harmony export */ u: () => (/* binding */ showWarning), 10185/* harmony export */ v: () => (/* binding */ elementIsChildOf), 10186/* harmony export */ w: () => (/* binding */ extend), 10187/* harmony export */ x: () => (/* binding */ deleteProps) 10188/* harmony export */ }); 10189/* 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"); 10190 10191 10192function classesToTokens(classes) { 10193 if (classes === void 0) { 10194 classes = ''; 10195 } 10196 return classes.trim().split(' ').filter(c => !!c.trim()); 10197} 10198 10199function deleteProps(obj) { 10200 const object = obj; 10201 Object.keys(object).forEach(key => { 10202 try { 10203 object[key] = null; 10204 } catch (e) { 10205 // no getter for object 10206 } 10207 try { 10208 delete object[key]; 10209 } catch (e) { 10210 // something got wrong 10211 } 10212 }); 10213} 10214function nextTick(callback, delay) { 10215 if (delay === void 0) { 10216 delay = 0; 10217 } 10218 return setTimeout(callback, delay); 10219} 10220function now() { 10221 return Date.now(); 10222} 10223function getComputedStyle(el) { 10224 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10225 let style; 10226 if (window.getComputedStyle) { 10227 style = window.getComputedStyle(el, null); 10228 } 10229 if (!style && el.currentStyle) { 10230 style = el.currentStyle; 10231 } 10232 if (!style) { 10233 style = el.style; 10234 } 10235 return style; 10236} 10237function getTranslate(el, axis) { 10238 if (axis === void 0) { 10239 axis = 'x'; 10240 } 10241 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10242 let matrix; 10243 let curTransform; 10244 let transformMatrix; 10245 const curStyle = getComputedStyle(el); 10246 if (window.WebKitCSSMatrix) { 10247 curTransform = curStyle.transform || curStyle.webkitTransform; 10248 if (curTransform.split(',').length > 6) { 10249 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 10250 } 10251 // Some old versions of Webkit choke when 'none' is passed; pass 10252 // empty string instead in this case 10253 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 10254 } else { 10255 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 10256 matrix = transformMatrix.toString().split(','); 10257 } 10258 if (axis === 'x') { 10259 // Latest Chrome and webkits Fix 10260 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 10261 // Crazy IE10 Matrix 10262 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 10263 // Normal Browsers 10264 else curTransform = parseFloat(matrix[4]); 10265 } 10266 if (axis === 'y') { 10267 // Latest Chrome and webkits Fix 10268 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 10269 // Crazy IE10 Matrix 10270 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 10271 // Normal Browsers 10272 else curTransform = parseFloat(matrix[5]); 10273 } 10274 return curTransform || 0; 10275} 10276function isObject(o) { 10277 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 10278} 10279function isNode(node) { 10280 // eslint-disable-next-line 10281 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 10282 return node instanceof HTMLElement; 10283 } 10284 return node && (node.nodeType === 1 || node.nodeType === 11); 10285} 10286function extend() { 10287 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 10288 const noExtend = ['__proto__', 'constructor', 'prototype']; 10289 for (let i = 1; i < arguments.length; i += 1) { 10290 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 10291 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 10292 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 10293 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 10294 const nextKey = keysArray[nextIndex]; 10295 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 10296 if (desc !== undefined && desc.enumerable) { 10297 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10298 if (nextSource[nextKey].__swiper__) { 10299 to[nextKey] = nextSource[nextKey]; 10300 } else { 10301 extend(to[nextKey], nextSource[nextKey]); 10302 } 10303 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10304 to[nextKey] = {}; 10305 if (nextSource[nextKey].__swiper__) { 10306 to[nextKey] = nextSource[nextKey]; 10307 } else { 10308 extend(to[nextKey], nextSource[nextKey]); 10309 } 10310 } else { 10311 to[nextKey] = nextSource[nextKey]; 10312 } 10313 } 10314 } 10315 } 10316 } 10317 return to; 10318} 10319function setCSSProperty(el, varName, varValue) { 10320 el.style.setProperty(varName, varValue); 10321} 10322function animateCSSModeScroll(_ref) { 10323 let { 10324 swiper, 10325 targetPosition, 10326 side 10327 } = _ref; 10328 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10329 const startPosition = -swiper.translate; 10330 let startTime = null; 10331 let time; 10332 const duration = swiper.params.speed; 10333 swiper.wrapperEl.style.scrollSnapType = 'none'; 10334 window.cancelAnimationFrame(swiper.cssModeFrameID); 10335 const dir = targetPosition > startPosition ? 'next' : 'prev'; 10336 const isOutOfBound = (current, target) => { 10337 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 10338 }; 10339 const animate = () => { 10340 time = new Date().getTime(); 10341 if (startTime === null) { 10342 startTime = time; 10343 } 10344 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 10345 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 10346 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 10347 if (isOutOfBound(currentPosition, targetPosition)) { 10348 currentPosition = targetPosition; 10349 } 10350 swiper.wrapperEl.scrollTo({ 10351 [side]: currentPosition 10352 }); 10353 if (isOutOfBound(currentPosition, targetPosition)) { 10354 swiper.wrapperEl.style.overflow = 'hidden'; 10355 swiper.wrapperEl.style.scrollSnapType = ''; 10356 setTimeout(() => { 10357 swiper.wrapperEl.style.overflow = ''; 10358 swiper.wrapperEl.scrollTo({ 10359 [side]: currentPosition 10360 }); 10361 }); 10362 window.cancelAnimationFrame(swiper.cssModeFrameID); 10363 return; 10364 } 10365 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 10366 }; 10367 animate(); 10368} 10369function getSlideTransformEl(slideEl) { 10370 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 10371} 10372function elementChildren(element, selector) { 10373 if (selector === void 0) { 10374 selector = ''; 10375 } 10376 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10377 const children = [...element.children]; 10378 if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { 10379 children.push(...element.assignedElements()); 10380 } 10381 if (!selector) { 10382 return children; 10383 } 10384 return children.filter(el => el.matches(selector)); 10385} 10386function elementIsChildOfSlot(el, slot) { 10387 // Breadth-first search through all parent's children and assigned elements 10388 const elementsQueue = [slot]; 10389 while (elementsQueue.length > 0) { 10390 const elementToCheck = elementsQueue.shift(); 10391 if (el === elementToCheck) { 10392 return true; 10393 } 10394 elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); 10395 } 10396} 10397function elementIsChildOf(el, parent) { 10398 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10399 let isChild = parent.contains(el); 10400 if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { 10401 const children = [...parent.assignedElements()]; 10402 isChild = children.includes(el); 10403 if (!isChild) { 10404 isChild = elementIsChildOfSlot(el, parent); 10405 } 10406 } 10407 return isChild; 10408} 10409function showWarning(text) { 10410 try { 10411 console.warn(text); 10412 return; 10413 } catch (err) { 10414 // err 10415 } 10416} 10417function createElement(tag, classes) { 10418 if (classes === void 0) { 10419 classes = []; 10420 } 10421 const el = document.createElement(tag); 10422 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 10423 return el; 10424} 10425function elementOffset(el) { 10426 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10427 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 10428 const box = el.getBoundingClientRect(); 10429 const body = document.body; 10430 const clientTop = el.clientTop || body.clientTop || 0; 10431 const clientLeft = el.clientLeft || body.clientLeft || 0; 10432 const scrollTop = el === window ? window.scrollY : el.scrollTop; 10433 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 10434 return { 10435 top: box.top + scrollTop - clientTop, 10436 left: box.left + scrollLeft - clientLeft 10437 }; 10438} 10439function elementPrevAll(el, selector) { 10440 const prevEls = []; 10441 while (el.previousElementSibling) { 10442 const prev = el.previousElementSibling; // eslint-disable-line 10443 if (selector) { 10444 if (prev.matches(selector)) prevEls.push(prev); 10445 } else prevEls.push(prev); 10446 el = prev; 10447 } 10448 return prevEls; 10449} 10450function elementNextAll(el, selector) { 10451 const nextEls = []; 10452 while (el.nextElementSibling) { 10453 const next = el.nextElementSibling; // eslint-disable-line 10454 if (selector) { 10455 if (next.matches(selector)) nextEls.push(next); 10456 } else nextEls.push(next); 10457 el = next; 10458 } 10459 return nextEls; 10460} 10461function elementStyle(el, prop) { 10462 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10463 return window.getComputedStyle(el, null).getPropertyValue(prop); 10464} 10465function elementIndex(el) { 10466 let child = el; 10467 let i; 10468 if (child) { 10469 i = 0; 10470 // eslint-disable-next-line 10471 while ((child = child.previousSibling) !== null) { 10472 if (child.nodeType === 1) i += 1; 10473 } 10474 return i; 10475 } 10476 return undefined; 10477} 10478function elementParents(el, selector) { 10479 const parents = []; // eslint-disable-line 10480 let parent = el.parentElement; // eslint-disable-line 10481 while (parent) { 10482 if (selector) { 10483 if (parent.matches(selector)) parents.push(parent); 10484 } else { 10485 parents.push(parent); 10486 } 10487 parent = parent.parentElement; 10488 } 10489 return parents; 10490} 10491function elementTransitionEnd(el, callback) { 10492 function fireCallBack(e) { 10493 if (e.target !== el) return; 10494 callback.call(el, e); 10495 el.removeEventListener('transitionend', fireCallBack); 10496 } 10497 if (callback) { 10498 el.addEventListener('transitionend', fireCallBack); 10499 } 10500} 10501function elementOuterSize(el, size, includeMargins) { 10502 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10503 if (includeMargins) { 10504 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')); 10505 } 10506 return el.offsetWidth; 10507} 10508function makeElementsArray(el) { 10509 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 10510} 10511function getRotateFix(swiper) { 10512 return v => { 10513 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 10514 return v + 0.001; 10515 } 10516 return v; 10517 }; 10518} 10519 10520 10521 10522 10523/***/ }), 10524
vendor: 385 bytes, lines 10525-10536
10525/***/ "./node_modules/swiper/swiper-bundle.css": 10526/*!***********************************************!*\ 10527 !*** ./node_modules/swiper/swiper-bundle.css ***! 10528 \***********************************************/ 10529/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10530 10531__webpack_require__.r(__webpack_exports__); 10532// extracted by mini-css-extract-plugin 10533 10534 10535/***/ }), 10536
vendor: 6,877 bytes, lines 10537-10616
10537/***/ "./node_modules/swiper/swiper-bundle.mjs": 10538/*!***********************************************!*\ 10539 !*** ./node_modules/swiper/swiper-bundle.mjs ***! 10540 \***********************************************/ 10541/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10542 10543__webpack_require__.r(__webpack_exports__); 10544/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10545/* harmony export */ Swiper: () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S), 10546/* harmony export */ "default": () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S) 10547/* harmony export */ }); 10548/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 10549/* harmony import */ var _modules_virtual_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 10550/* harmony import */ var _modules_keyboard_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 10551/* harmony import */ var _modules_mousewheel_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 10552/* harmony import */ var _modules_navigation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 10553/* harmony import */ var _modules_pagination_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 10554/* harmony import */ var _modules_scrollbar_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 10555/* harmony import */ var _modules_parallax_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 10556/* harmony import */ var _modules_zoom_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 10557/* harmony import */ var _modules_controller_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 10558/* harmony import */ var _modules_a11y_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 10559/* harmony import */ var _modules_history_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/history.mjs */ "./node_modules/swiper/modules/history.mjs"); 10560/* harmony import */ var _modules_hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 10561/* harmony import */ var _modules_autoplay_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 10562/* harmony import */ var _modules_thumbs_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 10563/* harmony import */ var _modules_free_mode_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 10564/* harmony import */ var _modules_grid_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 10565/* harmony import */ var _modules_manipulation_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 10566/* harmony import */ var _modules_effect_fade_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 10567/* harmony import */ var _modules_effect_cube_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 10568/* harmony import */ var _modules_effect_flip_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 10569/* harmony import */ var _modules_effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 10570/* harmony import */ var _modules_effect_creative_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 10571/* harmony import */ var _modules_effect_cards_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 10572/** 10573 * Swiper 11.2.6 10574 * Most modern mobile touch slider and framework with hardware accelerated transitions 10575 * https://swiperjs.com 10576 * 10577 * Copyright 2014-2025 Vladimir Kharlampidi 10578 * 10579 * Released under the MIT License 10580 * 10581 * Released on: March 19, 2025 10582 */ 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609// Swiper Class 10610const modules = [_modules_virtual_mjs__WEBPACK_IMPORTED_MODULE_1__["default"], _modules_keyboard_mjs__WEBPACK_IMPORTED_MODULE_2__["default"], _modules_mousewheel_mjs__WEBPACK_IMPORTED_MODULE_3__["default"], _modules_navigation_mjs__WEBPACK_IMPORTED_MODULE_4__["default"], _modules_pagination_mjs__WEBPACK_IMPORTED_MODULE_5__["default"], _modules_scrollbar_mjs__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_parallax_mjs__WEBPACK_IMPORTED_MODULE_7__["default"], _modules_zoom_mjs__WEBPACK_IMPORTED_MODULE_8__["default"], _modules_controller_mjs__WEBPACK_IMPORTED_MODULE_9__["default"], _modules_a11y_mjs__WEBPACK_IMPORTED_MODULE_10__["default"], _modules_history_mjs__WEBPACK_IMPORTED_MODULE_11__["default"], _modules_hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_12__["default"], _modules_autoplay_mjs__WEBPACK_IMPORTED_MODULE_13__["default"], _modules_thumbs_mjs__WEBPACK_IMPORTED_MODULE_14__["default"], _modules_free_mode_mjs__WEBPACK_IMPORTED_MODULE_15__["default"], _modules_grid_mjs__WEBPACK_IMPORTED_MODULE_16__["default"], _modules_manipulation_mjs__WEBPACK_IMPORTED_MODULE_17__["default"], _modules_effect_fade_mjs__WEBPACK_IMPORTED_MODULE_18__["default"], _modules_effect_cube_mjs__WEBPACK_IMPORTED_MODULE_19__["default"], _modules_effect_flip_mjs__WEBPACK_IMPORTED_MODULE_20__["default"], _modules_effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_21__["default"], _modules_effect_creative_mjs__WEBPACK_IMPORTED_MODULE_22__["default"], _modules_effect_cards_mjs__WEBPACK_IMPORTED_MODULE_23__["default"]]; 10611_shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S.use(modules); 10612 10613 10614 10615 10616/***/ })
10616 10617 10618}]); 10619//# sourceMappingURL=swiper.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.