1/******/ (() => { // webpackBootstrap 2/******/ "use strict"; 3/******/ var __webpack_modules__ = ({ 4 5/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[2]!./node_modules/swiper/swiper-bundle.css": 6/*!***********************************************************************************************************************************************************************************************************!*\ 7 !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[2]!./node_modules/swiper/swiper-bundle.css ***! 8 \***********************************************************************************************************************************************************************************************************/ 9/***/ ((module, __webpack_exports__, __webpack_require__) => { 10 11__webpack_require__.r(__webpack_exports__); 12/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 14/* harmony export */ }); 15/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); 16/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); 17// Imports 18 19var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); 20// Module 21___CSS_LOADER_EXPORT___.push([module.id, "/**\n * Swiper 11.2.10\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 28, 2025\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}
21\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}
21\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n -o-object-fit: contain;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n
21content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform,\n 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform,\n 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform,\n 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);
21\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n -o-object-fit: contain;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n backface-visibility: hidden;\n overflow: hidden;\n}\n", ""]); 22// Exports 23/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_
23LOADER_EXPORT___); 24 25 26/***/ }), 27
vendor: 1,858 bytes, lines 28-102
28/***/ "./node_modules/css-loader/dist/runtime/api.js": 29/*!*****************************************************!*\ 30 !*** ./node_modules/css-loader/dist/runtime/api.js ***! 31 \*****************************************************/ 32/***/ ((module) => { 33 34 35 36/* 37 MIT License http://www.opensource.org/licenses/mit-license.php 38 Author Tobias Koppers @sokra 39*/ 40// css base code, injected by the css-loader 41// eslint-disable-next-line func-names 42module.exports = function (cssWithMappingToString) { 43 var list = []; // return the list of modules as css string 44 45 list.toString = function toString() { 46 return this.map(function (item) { 47 var content = cssWithMappingToString(item); 48 49 if (item[2]) { 50 return "@media ".concat(item[2], " {").concat(content, "}"); 51 } 52 53 return content; 54 }).join(""); 55 }; // import a list of modules into the list 56 // eslint-disable-next-line func-names 57 58 59 list.i = function (modules, mediaQuery, dedupe) { 60 if (typeof modules === "string") { 61 // eslint-disable-next-line no-param-reassign 62 modules = [[null, modules, ""]]; 63 } 64 65 var alreadyImportedModules = {}; 66 67 if (dedupe) { 68 for (var i = 0; i < this.length; i++) { 69 // eslint-disable-next-line prefer-destructuring 70 var id = this[i][0]; 71 72 if (id != null) { 73 alreadyImportedModules[id] = true; 74 } 75 } 76 } 77 78 for (var _i = 0; _i < modules.length; _i++) { 79 var item = [].concat(modules[_i]); 80 81 if (dedupe && alreadyImportedModules[item[0]]) { 82 // eslint-disable-next-line no-continue 83 continue; 84 } 85 86 if (mediaQuery) { 87 if (!item[2]) { 88 item[2] = mediaQuery; 89 } else { 90 item[2] = "".concat(mediaQuery, " and ").concat(item[2]); 91 } 92 } 93 94 list.push(item); 95 } 96 }; 97 98 return list; 99}; 100 101/***/ }), 102
vendor: 7,186 bytes, lines 103-380
103/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": 104/*!****************************************************************************!*\ 105 !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! 106 \****************************************************************************/ 107/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 108 109 110 111var isOldIE = function isOldIE() { 112 var memo; 113 return function memorize() { 114 if (typeof memo === 'undefined') { 115 // Test for IE <= 9 as proposed by Browserhacks 116 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 117 // Tests for existence of standard globals is to allow style-loader 118 // to operate correctly into non-standard environments 119 // @see https://github.com/webpack-contrib/style-loader/issues/177 120 memo = Boolean(window && document && document.all && !window.atob); 121 } 122 123 return memo; 124 }; 125}(); 126 127var getTarget = function getTarget() { 128 var memo = {}; 129 return function memorize(target) { 130 if (typeof memo[target] === 'undefined') { 131 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself 132 133 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { 134 try { 135 // This will throw an exception if access to iframe is blocked 136 // due to cross-origin restrictions 137 styleTarget = styleTarget.contentDocument.head; 138 } catch (e) { 139 // istanbul ignore next 140 styleTarget = null; 141 } 142 } 143 144 memo[target] = styleTarget; 145 } 146 147 return memo[target]; 148 }; 149}(); 150 151var stylesInDom = []; 152 153function getIndexByIdentifier(identifier) { 154 var result = -1; 155 156 for (var i = 0; i < stylesInDom.length; i++) { 157 if (stylesInDom[i].identifier === identifier) { 158 result = i; 159 break; 160 } 161 } 162 163 return result; 164} 165 166function modulesToDom(list, options) { 167 var idCountMap = {}; 168 var identifiers = []; 169 170 for (var i = 0; i < list.length; i++) { 171 var item = list[i]; 172 var id = options.base ? item[0] + options.base : item[0]; 173 var count = idCountMap[id] || 0; 174 var identifier = "".concat(id, " ").concat(count); 175 idCountMap[id] = count + 1; 176 var index = getIndexByIdentifier(identifier); 177 var obj = { 178 css: item[1], 179 media: item[2], 180 sourceMap: item[3] 181 }; 182 183 if (index !== -1) { 184 stylesInDom[index].references++; 185 stylesInDom[index].updater(obj); 186 } else { 187 stylesInDom.push({ 188 identifier: identifier, 189 updater: addStyle(obj, options), 190 references: 1 191 }); 192 } 193 194 identifiers.push(identifier); 195 } 196 197 return identifiers; 198} 199 200function insertStyleElement(options) { 201 var style = document.createElement('style'); 202 var attributes = options.attributes || {}; 203 204 if (typeof attributes.nonce === 'undefined') { 205 var nonce = true ? __webpack_require__.nc : 0; 206 207 if (nonce) { 208 attributes.nonce = nonce; 209 } 210 } 211 212 Object.keys(attributes).forEach(function (key) { 213 style.setAttribute(key, attributes[key]); 214 }); 215 216 if (typeof options.insert === 'function') { 217 options.insert(style); 218 } else { 219 var target = getTarget(options.insert || 'head'); 220 221 if (!target) { 222 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); 223 } 224 225 target.appendChild(style); 226 } 227 228 return style; 229} 230 231function removeStyleElement(style) { 232 // istanbul ignore if 233 if (style.parentNode === null) { 234 return false; 235 } 236 237 style.parentNode.removeChild(style); 238} 239/* istanbul ignore next */ 240 241 242var replaceText = function replaceText() { 243 var textStore = []; 244 return function replace(index, replacement) { 245 textStore[index] = replacement; 246 return textStore.filter(Boolean).join('\n'); 247 }; 248}(); 249 250function applyToSingletonTag(style, index, remove, obj) { 251 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE 252 253 /* istanbul ignore if */ 254 255 if (style.styleSheet) { 256 style.styleSheet.cssText = replaceText(index, css); 257 } else { 258 var cssNode = document.createTextNode(css); 259 var childNodes = style.childNodes; 260 261 if (childNodes[index]) { 262 style.removeChild(childNodes[index]); 263 } 264 265 if (childNodes.length) { 266 style.insertBefore(cssNode, childNodes[index]); 267 } else { 268 style.appendChild(cssNode); 269 } 270 } 271} 272 273function applyToTag(style, options, obj) { 274 var css = obj.css; 275 var media = obj.media; 276 var sourceMap = obj.sourceMap; 277 278 if (media) { 279 style.setAttribute('media', media); 280 } else { 281 style.removeAttribute('media'); 282 } 283 284 if (sourceMap && typeof btoa !== 'undefined') { 285 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); 286 } // For old IE 287 288 /* istanbul ignore if */ 289 290 291 if (style.styleSheet) { 292 style.styleSheet.cssText = css; 293 } else { 294 while (style.firstChild) { 295 style.removeChild(style.firstChild); 296 } 297 298 style.appendChild(document.createTextNode(css)); 299 } 300} 301 302var singleton = null; 303var singletonCounter = 0; 304 305function addStyle(obj, options) { 306 var style; 307 var update; 308 var remove; 309 310 if (options.singleton) { 311 var styleIndex = singletonCounter++; 312 style = singleton || (singleton = insertStyleElement(options)); 313 update = applyToSingletonTag.bind(null, style, styleIndex, false); 314 remove = applyToSingletonTag.bind(null, style, styleIndex, true); 315 } else { 316 style = insertStyleElement(options); 317 update = applyToTag.bind(null, style, options); 318 319 remove = function remove() { 320 removeStyleElement(style); 321 }; 322 } 323 324 update(obj); 325 return function updateStyle(newObj) { 326 if (newObj) { 327 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { 328 return; 329 } 330 331 update(obj = newObj); 332 } else { 333 remove(); 334 } 335 }; 336} 337 338module.exports = function (list, options) { 339 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style> 340 // tags it will allow on a page 341 342 if (!options.singleton && typeof options.singleton !== 'boolean') { 343 options.singleton = isOldIE(); 344 } 345 346 list = list || []; 347 var lastIdentifiers = modulesToDom(list, options); 348 return function update(newList) { 349 newList = newList || []; 350 351 if (Object.prototype.toString.call(newList) !== '[object Array]') { 352 return; 353 } 354 355 for (var i = 0; i < lastIdentifiers.length; i++) { 356 var identifier = lastIdentifiers[i]; 357 var index = getIndexByIdentifier(identifier); 358 stylesInDom[index].references--; 359 } 360 361 var newLastIdentifiers = modulesToDom(newList, options); 362 363 for (var _i = 0; _i < lastIdentifiers.length; _i++) { 364 var _identifier = lastIdentifiers[_i]; 365 366 var _index = getIndexByIdentifier(_identifier); 367 368 if (stylesInDom[_index].references === 0) { 369 stylesInDom[_index].updater(); 370 371 stylesInDom.splice(_index, 1); 372 } 373 } 374 375 lastIdentifiers = newLastIdentifiers; 376 }; 377}; 378 379/***/ }), 380
vendor: 14,148 bytes, lines 381-774
381/***/ "./node_modules/swiper/modules/a11y.mjs": 382/*!**********************************************!*\ 383 !*** ./node_modules/swiper/modules/a11y.mjs ***! 384 \**********************************************/ 385/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 386 387__webpack_require__.r(__webpack_exports__); 388/* harmony export */ __webpack_require__.d(__webpack_exports__, { 389/* harmony export */ "default": () => (/* binding */ A11y) 390/* harmony export */ }); 391/* 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"); 392/* 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"); 393/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 394 395 396 397 398function A11y(_ref) { 399 let { 400 swiper, 401 extendParams, 402 on 403 } = _ref; 404 extendParams({ 405 a11y: { 406 enabled: true, 407 notificationClass: 'swiper-notification', 408 prevSlideMessage: 'Previous slide', 409 nextSlideMessage: 'Next slide', 410 firstSlideMessage: 'This is the first slide', 411 lastSlideMessage: 'This is the last slide', 412 paginationBulletMessage: 'Go to slide {{index}}', 413 slideLabelMessage: '{{index}} / {{slidesLength}}', 414 containerMessage: null, 415 containerRoleDescriptionMessage: null, 416 containerRole: null, 417 itemRoleDescriptionMessage: null, 418 slideRole: 'group', 419 id: null, 420 scrollOnFocus: true 421 } 422 }); 423 swiper.a11y = { 424 clicked: false 425 }; 426 let liveRegion = null; 427 let preventFocusHandler; 428 let focusTargetSlideEl; 429 let visibilityChangedTimestamp = new Date().getTime(); 430 function notify(message) { 431 const notification = liveRegion; 432 if (notification.length === 0) return; 433 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(notification, message); 434 } 435 function getRandomNumber(size) { 436 if (size === void 0) { 437 size = 16; 438 } 439 const randomChar = () => Math.round(16 * Math.random()).toString(16); 440 return 'x'.repeat(size).replace(/x/g, randomChar); 441 } 442 function makeElFocusable(el) { 443 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 444 el.forEach(subEl => { 445 subEl.setAttribute('tabIndex', '0'); 446 }); 447 } 448 function makeElNotFocusable(el) { 449 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 450 el.forEach(subEl => { 451 subEl.setAttribute('tabIndex', '-1'); 452 }); 453 } 454 function addElRole(el, role) { 455 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 456 el.forEach(subEl => { 457 subEl.setAttribute('role', role); 458 }); 459 } 460 function addElRoleDescription(el, description) { 461 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 462 el.forEach(subEl => { 463 subEl.setAttribute('aria-roledescription', description); 464 }); 465 } 466 function addElControls(el, controls) { 467 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 468 el.forEach(subEl => { 469 subEl.setAttribute('aria-controls', controls); 470 }); 471 } 472 function addElLabel(el, label) { 473 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 474 el.forEach(subEl => { 475 subEl.setAttribute('aria-label', label); 476 }); 477 } 478 function addElId(el, id) { 479 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 480 el.forEach(subEl => { 481 subEl.setAttribute('id', id); 482 }); 483 } 484 function addElLive(el, live) { 485 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 486 el.forEach(subEl => { 487 subEl.setAttribute('aria-live', live); 488 }); 489 } 490 function disableEl(el) { 491 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 492 el.forEach(subEl => { 493 subEl.setAttribute('aria-disabled', true); 494 }); 495 } 496 function enableEl(el) { 497 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 498 el.forEach(subEl => { 499 subEl.setAttribute('aria-disabled', false); 500 }); 501 } 502 function onEnterOrSpaceKey(e) { 503 if (e.keyCode !== 13 && e.keyCode !== 32) return; 504 const params = swiper.params.a11y; 505 const targetEl = e.target; 506 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 507 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 508 } 509 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 510 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 511 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 512 if (nextEls.includes(targetEl)) { 513 if (!(swiper.isEnd && !swiper.params.loop)) { 514 swiper.slideNext(); 515 } 516 if (swiper.isEnd) { 517 notify(params.lastSlideMessage); 518 } else { 519 notify(params.nextSlideMessage); 520 } 521 } 522 if (prevEls.includes(targetEl)) { 523 if (!(swiper.isBeginning && !swiper.params.loop)) { 524 swiper.slidePrev(); 525 } 526 if (swiper.isBeginning) { 527 notify(params.firstSlideMessage); 528 } else { 529 notify(params.prevSlideMessage); 530 } 531 } 532 } 533 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 534 targetEl.click(); 535 } 536 } 537 function updateNavigation() { 538 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 539 const { 540 nextEl, 541 prevEl 542 } = swiper.navigation; 543 if (prevEl) { 544 if (swiper.isBeginning) { 545 disableEl(prevEl); 546 makeElNotFocusable(prevEl); 547 } else { 548 enableEl(prevEl); 549 makeElFocusable(prevEl); 550 } 551 } 552 if (nextEl) { 553 if (swiper.isEnd) { 554 disableEl(nextEl); 555 makeElNotFocusable(nextEl); 556 } else { 557 enableEl(nextEl); 558 makeElFocusable(nextEl); 559 } 560 } 561 } 562 function hasPagination() { 563 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 564 } 565 function hasClickablePagination() { 566 return hasPagination() && swiper.params.pagination.clickable; 567 } 568 function updatePagination() { 569 const params = swiper.params.a11y; 570 if (!hasPagination()) return; 571 swiper.pagination.bullets.forEach(bulletEl => { 572 if (swiper.params.pagination.clickable) { 573 makeElFocusable(bulletEl); 574 if (!swiper.params.pagination.renderBullet) { 575 addElRole(bulletEl, 'button'); 576 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) + 1)); 577 } 578 } 579 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 580 bulletEl.setAttribute('aria-current', 'true'); 581 } else { 582 bulletEl.removeAttribute('aria-current'); 583 } 584 }); 585 } 586 const initNavEl = (el, wrapperId, message) => { 587 makeElFocusable(el); 588 if (el.tagName !== 'BUTTON') { 589 addElRole(el, 'button'); 590 el.addEventListener('keydown', onEnterOrSpaceKey); 591 } 592 addElLabel(el, message); 593 addElControls(el, wrapperId); 594 }; 595 const handlePointerDown = e => { 596 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 597 preventFocusHandler = true; 598 } 599 swiper.a11y.clicked = true; 600 }; 601 const handlePointerUp = () => { 602 preventFocusHandler = false; 603 requestAnimationFrame(() => { 604 requestAnimationFrame(() => { 605 if (!swiper.destroyed) { 606 swiper.a11y.clicked = false; 607 } 608 }); 609 }); 610 }; 611 const onVisibilityChange = e => { 612 visibilityChangedTimestamp = new Date().getTime(); 613 }; 614 const handleFocus = e => { 615 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 616 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 617 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 618 if (!slideEl || !swiper.slides.includes(slideEl)) return; 619 focusTargetSlideEl = slideEl; 620 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 621 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 622 if (isActive || isVisible) return; 623 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 624 if (swiper.isHorizontal()) { 625 swiper.el.scrollLeft = 0; 626 } else { 627 swiper.el.scrollTop = 0; 628 } 629 requestAnimationFrame(() => { 630 if (preventFocusHandler) return; 631 if (swiper.params.loop) { 632 swiper.slideToLoop(swiper.getSlideIndexWhenGrid(parseInt(slideEl.getAttribute('data-swiper-slide-index'))), 0); 633 } else { 634 swiper.slideTo(swiper.getSlideIndexWhenGrid(swiper.slides.indexOf(slideEl)), 0); 635 } 636 preventFocusHandler = false; 637 }); 638 }; 639 const initSlides = () => { 640 const params = swiper.params.a11y; 641 if (params.itemRoleDescriptionMessage) { 642 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 643 } 644 if (params.slideRole) { 645 addElRole(swiper.slides, params.slideRole); 646 } 647 const slidesLength = swiper.slides.length; 648 if (params.slideLabelMessage) { 649 swiper.slides.forEach((slideEl, index) => { 650 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 651 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 652 addElLabel(slideEl, ariaLabelMessage); 653 }); 654 } 655 }; 656 const init = () => { 657 const params = swiper.params.a11y; 658 swiper.el.append(liveRegion); 659 660 // Container 661 const containerEl = swiper.el; 662 if (params.containerRoleDescriptionMessage) { 663 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 664 } 665 if (params.containerMessage) { 666 addElLabel(containerEl, params.containerMessage); 667 } 668 if (params.containerRole) { 669 addElRole(containerEl, params.containerRole); 670 } 671 672 // Wrapper 673 const wrapperEl = swiper.wrapperEl; 674 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 675 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 676 addElId(wrapperEl, wrapperId); 677 addElLive(wrapperEl, live); 678 679 // Slide 680 initSlides(); 681 682 // Navigation 683 let { 684 nextEl, 685 prevEl 686 } = swiper.navigation ? swiper.navigation : {}; 687 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 688 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 689 if (nextEl) { 690 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 691 } 692 if (prevEl) { 693 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 694 } 695 696 // Pagination 697 if (hasClickablePagination()) { 698 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 699 paginationEl.forEach(el => { 700 el.addEventListener('keydown', onEnterOrSpaceKey); 701 }); 702 } 703 704 // Tab focus 705 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 706 document.addEventListener('visibilitychange', onVisibilityChange); 707 swiper.el.addEventListener('focus', handleFocus, true); 708 swiper.el.addEventListener('focus', handleFocus, true); 709 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 710 swiper.el.addEventListener('pointerup', handlePointerUp, true); 711 }; 712 function destroy() { 713 if (liveRegion) liveRegion.remove(); 714 let { 715 nextEl, 716 prevEl 717 } = swiper.navigation ? swiper.navigation : {}; 718 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 719 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 720 if (nextEl) { 721 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 722 } 723 if (prevEl) { 724 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 725 } 726 727 // Pagination 728 if (hasClickablePagination()) { 729 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 730 paginationEl.forEach(el => { 731 el.removeEventListener('keydown', onEnterOrSpaceKey); 732 }); 733 } 734 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 735 document.removeEventListener('visibilitychange', onVisibilityChange); 736 // Tab focus 737 if (swiper.el && typeof swiper.el !== 'string') { 738 swiper.el.removeEventListener('focus', handleFocus, true); 739 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 740 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 741 } 742 } 743 on('beforeInit', () => { 744 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 745 liveRegion.setAttribute('aria-live', 'assertive'); 746 liveRegion.setAttribute('aria-atomic', 'true'); 747 }); 748 on('afterInit', () => { 749 if (!swiper.params.a11y.enabled) return; 750 init(); 751 }); 752 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 753 if (!swiper.params.a11y.enabled) return; 754 initSlides(); 755 }); 756 on('fromEdge toEdge afterInit lock unlock', () => { 757 if (!swiper.params.a11y.enabled) return; 758 updateNavigation(); 759 }); 760 on('paginationUpdate', () => { 761 if (!swiper.params.a11y.enabled) return; 762 updatePagination(); 763 }); 764 on('destroy', () => { 765 if (!swiper.params.a11y.enabled) return; 766 destroy(); 767 }); 768} 769 770 771 772 773/***/ }), 774
vendor: 10,030 bytes, lines 775-1093
775/***/ "./node_modules/swiper/modules/autoplay.mjs": 776/*!**************************************************!*\ 777 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 778 \**************************************************/ 779/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 780 781__webpack_require__.r(__webpack_exports__); 782/* harmony export */ __webpack_require__.d(__webpack_exports__, { 783/* harmony export */ "default": () => (/* binding */ Autoplay) 784/* harmony export */ }); 785/* 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"); 786 787 788/* eslint no-underscore-dangle: "off" */ 789/* eslint no-use-before-define: "off" */ 790function Autoplay(_ref) { 791 let { 792 swiper, 793 extendParams, 794 on, 795 emit, 796 params 797 } = _ref; 798 swiper.autoplay = { 799 running: false, 800 paused: false, 801 timeLeft: 0 802 }; 803 extendParams({ 804 autoplay: { 805 enabled: false, 806 delay: 3000, 807 waitForTransition: true, 808 disableOnInteraction: false, 809 stopOnLastSlide: false, 810 reverseDirection: false, 811 pauseOnMouseEnter: false 812 } 813 }); 814 let timeout; 815 let raf; 816 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 817 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 818 let autoplayTimeLeft; 819 let autoplayStartTime = new Date().getTime(); 820 let wasPaused; 821 let isTouched; 822 let pausedByTouch; 823 let touchStartTimeout; 824 let slideChanged; 825 let pausedByInteraction; 826 let pausedByPointerEnter; 827 function onTransitionEnd(e) { 828 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 829 if (e.target !== swiper.wrapperEl) return; 830 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 831 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 832 return; 833 } 834 resume(); 835 } 836 const calcTimeLeft = () => { 837 if (swiper.destroyed || !swiper.autoplay.running) return; 838 if (swiper.autoplay.paused) { 839 wasPaused = true; 840 } else if (wasPaused) { 841 autoplayDelayCurrent = autoplayTimeLeft; 842 wasPaused = false; 843 } 844 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 845 swiper.autoplay.timeLeft = timeLeft; 846 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 847 raf = requestAnimationFrame(() => { 848 calcTimeLeft(); 849 }); 850 }; 851 const getSlideDelay = () => { 852 let activeSlideEl; 853 if (swiper.virtual && swiper.params.virtual.enabled) { 854 activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active')); 855 } else { 856 activeSlideEl = swiper.slides[swiper.activeIndex]; 857 } 858 if (!activeSlideEl) return undefined; 859 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 860 return currentSlideDelay; 861 }; 862 const run = delayForce => { 863 if (swiper.destroyed || !swiper.autoplay.running) return; 864 cancelAnimationFrame(raf); 865 calcTimeLeft(); 866 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 867 autoplayDelayTotal = swiper.params.autoplay.delay; 868 autoplayDelayCurrent = swiper.params.autoplay.delay; 869 const currentSlideDelay = getSlideDelay(); 870 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 871 delay = currentSlideDelay; 872 autoplayDelayTotal = currentSlideDelay; 873 autoplayDelayCurrent = currentSlideDelay; 874 } 875 autoplayTimeLeft = delay; 876 const speed = swiper.params.speed; 877 const proceed = () => { 878 if (!swiper || swiper.destroyed) return; 879 if (swiper.params.autoplay.reverseDirection) { 880 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 881 swiper.slidePrev(speed, true, true); 882 emit('autoplay'); 883 } else if (!swiper.params.autoplay.stopOnLastSlide) { 884 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 885 emit('autoplay'); 886 } 887 } else { 888 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 889 swiper.slideNext(speed, true, true); 890 emit('autoplay'); 891 } else if (!swiper.params.autoplay.stopOnLastSlide) { 892 swiper.slideTo(0, speed, true, true); 893 emit('autoplay'); 894 } 895 } 896 if (swiper.params.cssMode) { 897 autoplayStartTime = new Date().getTime(); 898 requestAnimationFrame(() => { 899 run(); 900 }); 901 } 902 }; 903 if (delay > 0) { 904 clearTimeout(timeout); 905 timeout = setTimeout(() => { 906 proceed(); 907 }, delay); 908 } else { 909 requestAnimationFrame(() => { 910 proceed(); 911 }); 912 } 913 914 // eslint-disable-next-line 915 return delay; 916 }; 917 const start = () => { 918 autoplayStartTime = new Date().getTime(); 919 swiper.autoplay.running = true; 920 run(); 921 emit('autoplayStart'); 922 }; 923 const stop = () => { 924 swiper.autoplay.running = false; 925 clearTimeout(timeout); 926 cancelAnimationFrame(raf); 927 emit('autoplayStop'); 928 }; 929 const pause = (internal, reset) => { 930 if (swiper.destroyed || !swiper.autoplay.running) return; 931 clearTimeout(timeout); 932 if (!internal) { 933 pausedByInteraction = true; 934 } 935 const proceed = () => { 936 emit('autoplayPause'); 937 if (swiper.params.autoplay.waitForTransition) { 938 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 939 } else { 940 resume(); 941 } 942 }; 943 swiper.autoplay.paused = true; 944 if (reset) { 945 if (slideChanged) { 946 autoplayTimeLeft = swiper.params.autoplay.delay; 947 } 948 slideChanged = false; 949 proceed(); 950 return; 951 } 952 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 953 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 954 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 955 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 956 proceed(); 957 }; 958 const resume = () => { 959 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 960 autoplayStartTime = new Date().getTime(); 961 if (pausedByInteraction) { 962 pausedByInteraction = false; 963 run(autoplayTimeLeft); 964 } else { 965 run(); 966 } 967 swiper.autoplay.paused = false; 968 emit('autoplayResume'); 969 }; 970 const onVisibilityChange = () => { 971 if (swiper.destroyed || !swiper.autoplay.running) return; 972 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 973 if (document.visibilityState === 'hidden') { 974 pausedByInteraction = true; 975 pause(true); 976 } 977 if (document.visibilityState === 'visible') { 978 resume(); 979 } 980 }; 981 const onPointerEnter = e => { 982 if (e.pointerType !== 'mouse') return; 983 pausedByInteraction = true; 984 pausedByPointerEnter = true; 985 if (swiper.animating || swiper.autoplay.paused) return; 986 pause(true); 987 }; 988 const onPointerLeave = e => { 989 if (e.pointerType !== 'mouse') return; 990 pausedByPointerEnter = false; 991 if (swiper.autoplay.paused) { 992 resume(); 993 } 994 }; 995 const attachMouseEvents = () => { 996 if (swiper.params.autoplay.pauseOnMouseEnter) { 997 swiper.el.addEventListener('pointerenter', onPointerEnter); 998 swiper.el.addEventListener('pointerleave', onPointerLeave); 999 } 1000 }; 1001 const detachMouseEvents = () => { 1002 if (swiper.el && typeof swiper.el !== 'string') { 1003 swiper.el.removeEventListener('pointerenter', onPointerEnter); 1004 swiper.el.removeEventListener('pointerleave', onPointerLeave); 1005 } 1006 }; 1007 const attachDocumentEvents = () => { 1008 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 1009 document.addEventListener('visibilitychange', onVisibilityChange); 1010 }; 1011 const detachDocumentEvents = () => { 1012 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 1013 document.removeEventListener('visibilitychange', onVisibilityChange); 1014 }; 1015 on('init', () => { 1016 if (swiper.params.autoplay.enabled) { 1017 attachMouseEvents(); 1018 attachDocumentEvents(); 1019 start(); 1020 } 1021 }); 1022 on('destroy', () => { 1023 detachMouseEvents(); 1024 detachDocumentEvents(); 1025 if (swiper.autoplay.running) { 1026 stop(); 1027 } 1028 }); 1029 on('_freeModeStaticRelease', () => { 1030 if (pausedByTouch || pausedByInteraction) { 1031 resume(); 1032 } 1033 }); 1034 on('_freeModeNoMomentumRelease', () => { 1035 if (!swiper.params.autoplay.disableOnInteraction) { 1036 pause(true, true); 1037 } else { 1038 stop(); 1039 } 1040 }); 1041 on('beforeTransitionStart', (_s, speed, internal) => { 1042 if (swiper.destroyed || !swiper.autoplay.running) return; 1043 if (internal || !swiper.params.autoplay.disableOnInteraction) { 1044 pause(true, true); 1045 } else { 1046 stop(); 1047 } 1048 }); 1049 on('sliderFirstMove', () => { 1050 if (swiper.destroyed || !swiper.autoplay.running) return; 1051 if (swiper.params.autoplay.disableOnInteraction) { 1052 stop(); 1053 return; 1054 } 1055 isTouched = true; 1056 pausedByTouch = false; 1057 pausedByInteraction = false; 1058 touchStartTimeout = setTimeout(() => { 1059 pausedByInteraction = true; 1060 pausedByTouch = true; 1061 pause(true); 1062 }, 200); 1063 }); 1064 on('touchEnd', () => { 1065 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 1066 clearTimeout(touchStartTimeout); 1067 clearTimeout(timeout); 1068 if (swiper.params.autoplay.disableOnInteraction) { 1069 pausedByTouch = false; 1070 isTouched = false; 1071 return; 1072 } 1073 if (pausedByTouch && swiper.params.cssMode) resume(); 1074 pausedByTouch = false; 1075 isTouched = false; 1076 }); 1077 on('slideChange', () => { 1078 if (swiper.destroyed || !swiper.autoplay.running) return; 1079 slideChanged = true; 1080 }); 1081 Object.assign(swiper.autoplay, { 1082 start, 1083 stop, 1084 pause, 1085 resume 1086 }); 1087} 1088 1089 1090 1091 1092/***/ }), 1093
vendor: 7,499 bytes, lines 1094-1299
1094/***/ "./node_modules/swiper/modules/controller.mjs": 1095/*!****************************************************!*\ 1096 !*** ./node_modules/swiper/modules/controller.mjs ***! 1097 \****************************************************/ 1098/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1099 1100__webpack_require__.r(__webpack_exports__); 1101/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1102/* harmony export */ "default": () => (/* binding */ Controller) 1103/* harmony export */ }); 1104/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1105 1106 1107/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 1108function Controller(_ref) { 1109 let { 1110 swiper, 1111 extendParams, 1112 on 1113 } = _ref; 1114 extendParams({ 1115 controller: { 1116 control: undefined, 1117 inverse: false, 1118 by: 'slide' // or 'container' 1119 } 1120 }); 1121 1122 swiper.controller = { 1123 control: undefined 1124 }; 1125 function LinearSpline(x, y) { 1126 const binarySearch = function search() { 1127 let maxIndex; 1128 let minIndex; 1129 let guess; 1130 return (array, val) => { 1131 minIndex = -1; 1132 maxIndex = array.length; 1133 while (maxIndex - minIndex > 1) { 1134 guess = maxIndex + minIndex >> 1; 1135 if (array[guess] <= val) { 1136 minIndex = guess; 1137 } else { 1138 maxIndex = guess; 1139 } 1140 } 1141 return maxIndex; 1142 }; 1143 }(); 1144 this.x = x; 1145 this.y = y; 1146 this.lastIndex = x.length - 1; 1147 // Given an x value (x2), return the expected y2 value: 1148 // (x1,y1) is the known point before given value, 1149 // (x3,y3) is the known point after given value. 1150 let i1; 1151 let i3; 1152 this.interpolate = function interpolate(x2) { 1153 if (!x2) return 0; 1154 1155 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 1156 i3 = binarySearch(this.x, x2); 1157 i1 = i3 - 1; 1158 1159 // We have our indexes i1 & i3, so we can calculate already: 1160 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 1161 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 1162 }; 1163 return this; 1164 } 1165 function getInterpolateFunction(c) { 1166 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 1167 } 1168 function setTranslate(_t, byController) { 1169 const controlled = swiper.controller.control; 1170 let multiplier; 1171 let controlledTranslate; 1172 const Swiper = swiper.constructor; 1173 function setControlledTranslate(c) { 1174 if (c.destroyed) return; 1175 1176 // this will create an Interpolate function based on the snapGrids 1177 // x is the Grid of the scrolled scroller and y will be the controlled scroller 1178 // it makes sense to create this only once and recall it for the interpolation 1179 // the function does a lot of value caching for performance 1180 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 1181 if (swiper.params.controller.by === 'slide') { 1182 getInterpolateFunction(c); 1183 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 1184 // but it did not work out 1185 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 1186 } 1187 if (!controlledTranslate || swiper.params.controller.by === 'container') { 1188 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 1189 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 1190 multiplier = 1; 1191 } 1192 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 1193 } 1194 if (swiper.params.controller.inverse) { 1195 controlledTranslate = c.maxTranslate() - controlledTranslate; 1196 } 1197 c.updateProgress(controlledTranslate); 1198 c.setTranslate(controlledTranslate, swiper); 1199 c.updateActiveIndex(); 1200 c.updateSlidesClasses(); 1201 } 1202 if (Array.isArray(controlled)) { 1203 for (let i = 0; i < controlled.length; i += 1) { 1204 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 1205 setControlledTranslate(controlled[i]); 1206 } 1207 } 1208 } else if (controlled instanceof Swiper && byController !== controlled) { 1209 setControlledTranslate(controlled); 1210 } 1211 } 1212 function setTransition(duration, byController) { 1213 const Swiper = swiper.constructor; 1214 const controlled = swiper.controller.control; 1215 let i; 1216 function setControlledTransition(c) { 1217 if (c.destroyed) return; 1218 c.setTransition(duration, swiper); 1219 if (duration !== 0) { 1220 c.transitionStart(); 1221 if (c.params.autoHeight) { 1222 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 1223 c.updateAutoHeight(); 1224 }); 1225 } 1226 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(c.wrapperEl, () => { 1227 if (!controlled) return; 1228 c.transitionEnd(); 1229 }); 1230 } 1231 } 1232 if (Array.isArray(controlled)) { 1233 for (i = 0; i < controlled.length; i += 1) { 1234 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 1235 setControlledTransition(controlled[i]); 1236 } 1237 } 1238 } else if (controlled instanceof Swiper && byController !== controlled) { 1239 setControlledTransition(controlled); 1240 } 1241 } 1242 function removeSpline() { 1243 if (!swiper.controller.control) return; 1244 if (swiper.controller.spline) { 1245 swiper.controller.spline = undefined; 1246 delete swiper.controller.spline; 1247 } 1248 } 1249 on('beforeInit', () => { 1250 if (typeof window !== 'undefined' && ( 1251 // eslint-disable-line 1252 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 1253 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 1254 controlElements.forEach(controlElement => { 1255 if (!swiper.controller.control) swiper.controller.control = []; 1256 if (controlElement && controlElement.swiper) { 1257 swiper.controller.control.push(controlElement.swiper); 1258 } else if (controlElement) { 1259 const eventName = `${swiper.params.eventsPrefix}init`; 1260 const onControllerSwiper = e => { 1261 swiper.controller.control.push(e.detail[0]); 1262 swiper.update(); 1263 controlElement.removeEventListener(eventName, onControllerSwiper); 1264 }; 1265 controlElement.addEventListener(eventName, onControllerSwiper); 1266 } 1267 }); 1268 return; 1269 } 1270 swiper.controller.control = swiper.params.controller.control; 1271 }); 1272 on('update', () => { 1273 removeSpline(); 1274 }); 1275 on('resize', () => { 1276 removeSpline(); 1277 }); 1278 on('observerUpdate', () => { 1279 removeSpline(); 1280 }); 1281 on('setTranslate', (_s, translate, byController) => { 1282 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 1283 swiper.controller.setTranslate(translate, byController); 1284 }); 1285 on('setTransition', (_s, duration, byController) => { 1286 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 1287 swiper.controller.setTransition(duration, byController); 1288 }); 1289 Object.assign(swiper.controller, { 1290 setTranslate, 1291 setTransition 1292 }); 1293} 1294 1295 1296 1297 1298/***/ }), 1299
vendor: 6,023 bytes, lines 1300-1446
1300/***/ "./node_modules/swiper/modules/effect-cards.mjs": 1301/*!******************************************************!*\ 1302 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 1303 \******************************************************/ 1304/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1305 1306__webpack_require__.r(__webpack_exports__); 1307/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1308/* harmony export */ "default": () => (/* binding */ EffectCards) 1309/* harmony export */ }); 1310/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1311/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1312/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1313/* 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"); 1314/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1315 1316 1317 1318 1319 1320 1321function EffectCards(_ref) { 1322 let { 1323 swiper, 1324 extendParams, 1325 on 1326 } = _ref; 1327 extendParams({ 1328 cardsEffect: { 1329 slideShadows: true, 1330 rotate: true, 1331 perSlideRotate: 2, 1332 perSlideOffset: 8 1333 } 1334 }); 1335 const setTranslate = () => { 1336 const { 1337 slides, 1338 activeIndex, 1339 rtlTranslate: rtl 1340 } = swiper; 1341 const params = swiper.params.cardsEffect; 1342 const { 1343 startTranslate, 1344 isTouched 1345 } = swiper.touchEventsData; 1346 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 1347 for (let i = 0; i < slides.length; i += 1) { 1348 const slideEl = slides[i]; 1349 const slideProgress = slideEl.progress; 1350 const progress = Math.min(Math.max(slideProgress, -4), 4); 1351 let offset = slideEl.swiperSlideOffset; 1352 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 1353 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 1354 } 1355 if (swiper.params.centeredSlides && swiper.params.cssMode) { 1356 offset -= slides[0].swiperSlideOffset; 1357 } 1358 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 1359 let tY = 0; 1360 const tZ = -100 * Math.abs(progress); 1361 let scale = 1; 1362 let rotate = -params.perSlideRotate * progress; 1363 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 1364 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 1365 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 1366 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 1367 if (isSwipeToNext || isSwipeToPrev) { 1368 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 1369 rotate += -28 * progress * subProgress; 1370 scale += -0.5 * subProgress; 1371 tXAdd += 96 * subProgress; 1372 tY = `${-25 * subProgress * Math.abs(progress)}%`; 1373 } 1374 if (progress < 0) { 1375 // next 1376 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 1377 } else if (progress > 0) { 1378 // prev 1379 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 1380 } else { 1381 tX = `${tX}px`; 1382 } 1383 if (!swiper.isHorizontal()) { 1384 const prevY = tY; 1385 tY = tX; 1386 tX = prevY; 1387 } 1388 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 1389 1390 /* eslint-disable */ 1391 const transform = ` 1392 translate3d(${tX}, ${tY}, ${tZ}px) 1393 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 1394 scale(${scaleString}) 1395 `; 1396 /* eslint-enable */ 1397 1398 if (params.slideShadows) { 1399 // Set shadows 1400 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1401 if (!shadowEl) { 1402 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 1403 } 1404 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 1405 } 1406 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1407 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1408 targetEl.style.transform = transform; 1409 } 1410 }; 1411 const setTransition = duration => { 1412 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1413 transformElements.forEach(el => { 1414 el.style.transitionDuration = `${duration}ms`; 1415 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1416 shadowEl.style.transitionDuration = `${duration}ms`; 1417 }); 1418 }); 1419 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1420 swiper, 1421 duration, 1422 transformElements 1423 }); 1424 }; 1425 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1426 effect: 'cards', 1427 swiper, 1428 on, 1429 setTranslate, 1430 setTransition, 1431 perspective: () => true, 1432 overwriteParams: () => ({ 1433 _loopSwapReset: false, 1434 watchSlidesProgress: true, 1435 loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2, 1436 centeredSlides: true, 1437 virtualTranslate: !swiper.params.cssMode 1438 }) 1439 }); 1440} 1441 1442 1443 1444 1445/***/ }), 1446
vendor: 5,680 bytes, lines 1447-1568
1447/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 1448/*!**********************************************************!*\ 1449 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 1450 \**********************************************************/ 1451/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1452 1453__webpack_require__.r(__webpack_exports__); 1454/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1455/* harmony export */ "default": () => (/* binding */ EffectCoverflow) 1456/* harmony export */ }); 1457/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1458/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1459/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1460/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1461 1462 1463 1464 1465 1466function EffectCoverflow(_ref) { 1467 let { 1468 swiper, 1469 extendParams, 1470 on 1471 } = _ref; 1472 extendParams({ 1473 coverflowEffect: { 1474 rotate: 50, 1475 stretch: 0, 1476 depth: 100, 1477 scale: 1, 1478 modifier: 1, 1479 slideShadows: true 1480 } 1481 }); 1482 const setTranslate = () => { 1483 const { 1484 width: swiperWidth, 1485 height: swiperHeight, 1486 slides, 1487 slidesSizesGrid 1488 } = swiper; 1489 const params = swiper.params.coverflowEffect; 1490 const isHorizontal = swiper.isHorizontal(); 1491 const transform = swiper.translate; 1492 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 1493 const rotate = isHorizontal ? params.rotate : -params.rotate; 1494 const translate = params.depth; 1495 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.p)(swiper); 1496 // Each slide offset from center 1497 for (let i = 0, length = slides.length; i < length; i += 1) { 1498 const slideEl = slides[i]; 1499 const slideSize = slidesSizesGrid[i]; 1500 const slideOffset = slideEl.swiperSlideOffset; 1501 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 1502 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 1503 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 1504 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 1505 // var rotateZ = 0 1506 let translateZ = -translate * Math.abs(offsetMultiplier); 1507 let stretch = params.stretch; 1508 // Allow percentage to make a relative stretch for responsive sliders 1509 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 1510 stretch = parseFloat(params.stretch) / 100 * slideSize; 1511 } 1512 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 1513 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 1514 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 1515 1516 // Fix for ultra small values 1517 if (Math.abs(translateX) < 0.001) translateX = 0; 1518 if (Math.abs(translateY) < 0.001) translateY = 0; 1519 if (Math.abs(translateZ) < 0.001) translateZ = 0; 1520 if (Math.abs(rotateY) < 0.001) rotateY = 0; 1521 if (Math.abs(rotateX) < 0.001) rotateX = 0; 1522 if (Math.abs(scale) < 0.001) scale = 0; 1523 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 1524 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1525 targetEl.style.transform = slideTransform; 1526 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 1527 if (params.slideShadows) { 1528 // Set shadows 1529 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1530 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1531 if (!shadowBeforeEl) { 1532 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 1533 } 1534 if (!shadowAfterEl) { 1535 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 1536 } 1537 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 1538 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 1539 } 1540 } 1541 }; 1542 const setTransition = duration => { 1543 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1544 transformElements.forEach(el => { 1545 el.style.transitionDuration = `${duration}ms`; 1546 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 1547 shadowEl.style.transitionDuration = `${duration}ms`; 1548 }); 1549 }); 1550 }; 1551 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1552 effect: 'coverflow', 1553 swiper, 1554 on, 1555 setTranslate, 1556 setTransition, 1557 perspective: () => true, 1558 overwriteParams: () => ({ 1559 watchSlidesProgress: true 1560 }) 1561 }); 1562} 1563 1564 1565 1566 1567/***/ }), 1568
vendor: 6,449 bytes, lines 1569-1733
1569/***/ "./node_modules/swiper/modules/effect-creative.mjs": 1570/*!*********************************************************!*\ 1571 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 1572 \*********************************************************/ 1573/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1574 1575__webpack_require__.r(__webpack_exports__); 1576/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1577/* harmony export */ "default": () => (/* binding */ EffectCreative) 1578/* harmony export */ }); 1579/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 1580/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1581/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1582/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs"); 1583/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1584 1585 1586 1587 1588 1589 1590function EffectCreative(_ref) { 1591 let { 1592 swiper, 1593 extendParams, 1594 on 1595 } = _ref; 1596 extendParams({ 1597 creativeEffect: { 1598 limitProgress: 1, 1599 shadowPerProgress: false, 1600 progressMultiplier: 1, 1601 perspective: true, 1602 prev: { 1603 translate: [0, 0, 0], 1604 rotate: [0, 0, 0], 1605 opacity: 1, 1606 scale: 1 1607 }, 1608 next: { 1609 translate: [0, 0, 0], 1610 rotate: [0, 0, 0], 1611 opacity: 1, 1612 scale: 1 1613 } 1614 } 1615 }); 1616 const getTranslateValue = value => { 1617 if (typeof value === 'string') return value; 1618 return `${value}px`; 1619 }; 1620 const setTranslate = () => { 1621 const { 1622 slides, 1623 wrapperEl, 1624 slidesSizesGrid 1625 } = swiper; 1626 const params = swiper.params.creativeEffect; 1627 const { 1628 progressMultiplier: multiplier 1629 } = params; 1630 const isCenteredSlides = swiper.params.centeredSlides; 1631 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper); 1632 if (isCenteredSlides) { 1633 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 1634 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 1635 } 1636 for (let i = 0; i < slides.length; i += 1) { 1637 const slideEl = slides[i]; 1638 const slideProgress = slideEl.progress; 1639 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 1640 let originalProgress = progress; 1641 if (!isCenteredSlides) { 1642 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 1643 } 1644 const offset = slideEl.swiperSlideOffset; 1645 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 1646 const r = [0, 0, 0]; 1647 let custom = false; 1648 if (!swiper.isHorizontal()) { 1649 t[1] = t[0]; 1650 t[0] = 0; 1651 } 1652 let data = { 1653 translate: [0, 0, 0], 1654 rotate: [0, 0, 0], 1655 scale: 1, 1656 opacity: 1 1657 }; 1658 if (progress < 0) { 1659 data = params.next; 1660 custom = true; 1661 } else if (progress > 0) { 1662 data = params.prev; 1663 custom = true; 1664 } 1665 // set translate 1666 t.forEach((value, index) => { 1667 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 1668 }); 1669 // set rotates 1670 r.forEach((value, index) => { 1671 let val = data.rotate[index] * Math.abs(progress * multiplier); 1672 r[index] = val; 1673 }); 1674 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 1675 const translateString = t.join(', '); 1676 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 1677 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 1678 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 1679 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 1680 1681 // Set shadows 1682 if (custom && data.shadow || !custom) { 1683 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 1684 if (!shadowEl && data.shadow) { 1685 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 1686 } 1687 if (shadowEl) { 1688 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 1689 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 1690 } 1691 } 1692 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 1693 targetEl.style.transform = transform; 1694 targetEl.style.opacity = opacityString; 1695 if (data.origin) { 1696 targetEl.style.transformOrigin = data.origin; 1697 } 1698 } 1699 }; 1700 const setTransition = duration => { 1701 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 1702 transformElements.forEach(el => { 1703 el.style.transitionDuration = `${duration}ms`; 1704 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 1705 shadowEl.style.transitionDuration = `${duration}ms`; 1706 }); 1707 }); 1708 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 1709 swiper, 1710 duration, 1711 transformElements, 1712 allSlides: true 1713 }); 1714 }; 1715 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 1716 effect: 'creative', 1717 swiper, 1718 on, 1719 setTranslate, 1720 setTransition, 1721 perspective: () => swiper.params.creativeEffect.perspective, 1722 overwriteParams: () => ({ 1723 watchSlidesProgress: true, 1724 virtualTranslate: !swiper.params.cssMode 1725 }) 1726 }); 1727} 1728 1729 1730 1731 1732/***/ }), 1733
vendor: 7,602 bytes, lines 1734-1923
1734/***/ "./node_modules/swiper/modules/effect-cube.mjs": 1735/*!*****************************************************!*\ 1736 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 1737 \*****************************************************/ 1738/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1739 1740__webpack_require__.r(__webpack_exports__); 1741/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1742/* harmony export */ "default": () => (/* binding */ EffectCube) 1743/* harmony export */ }); 1744/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1745/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1746 1747 1748 1749function EffectCube(_ref) { 1750 let { 1751 swiper, 1752 extendParams, 1753 on 1754 } = _ref; 1755 extendParams({ 1756 cubeEffect: { 1757 slideShadows: true, 1758 shadow: true, 1759 shadowOffset: 20, 1760 shadowScale: 0.94 1761 } 1762 }); 1763 const createSlideShadows = (slideEl, progress, isHorizontal) => { 1764 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 1765 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 1766 if (!shadowBefore) { 1767 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 1768 slideEl.append(shadowBefore); 1769 } 1770 if (!shadowAfter) { 1771 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 1772 slideEl.append(shadowAfter); 1773 } 1774 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 1775 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 1776 }; 1777 const recreateShadows = () => { 1778 // create new ones 1779 const isHorizontal = swiper.isHorizontal(); 1780 swiper.slides.forEach(slideEl => { 1781 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1782 createSlideShadows(slideEl, progress, isHorizontal); 1783 }); 1784 }; 1785 const setTranslate = () => { 1786 const { 1787 el, 1788 wrapperEl, 1789 slides, 1790 width: swiperWidth, 1791 height: swiperHeight, 1792 rtlTranslate: rtl, 1793 size: swiperSize, 1794 browser 1795 } = swiper; 1796 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(swiper); 1797 const params = swiper.params.cubeEffect; 1798 const isHorizontal = swiper.isHorizontal(); 1799 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 1800 let wrapperRotate = 0; 1801 let cubeShadowEl; 1802 if (params.shadow) { 1803 if (isHorizontal) { 1804 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 1805 if (!cubeShadowEl) { 1806 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1807 swiper.wrapperEl.append(cubeShadowEl); 1808 } 1809 cubeShadowEl.style.height = `${swiperWidth}px`; 1810 } else { 1811 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 1812 if (!cubeShadowEl) { 1813 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 1814 el.append(cubeShadowEl); 1815 } 1816 } 1817 } 1818 for (let i = 0; i < slides.length; i += 1) { 1819 const slideEl = slides[i]; 1820 let slideIndex = i; 1821 if (isVirtual) { 1822 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 1823 } 1824 let slideAngle = slideIndex * 90; 1825 let round = Math.floor(slideAngle / 360); 1826 if (rtl) { 1827 slideAngle = -slideAngle; 1828 round = Math.floor(-slideAngle / 360); 1829 } 1830 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 1831 let tx = 0; 1832 let ty = 0; 1833 let tz = 0; 1834 if (slideIndex % 4 === 0) { 1835 tx = -round * 4 * swiperSize; 1836 tz = 0; 1837 } else if ((slideIndex - 1) % 4 === 0) { 1838 tx = 0; 1839 tz = -round * 4 * swiperSize; 1840 } else if ((slideIndex - 2) % 4 === 0) { 1841 tx = swiperSize + round * 4 * swiperSize; 1842 tz = swiperSize; 1843 } else if ((slideIndex - 3) % 4 === 0) { 1844 tx = -swiperSize; 1845 tz = 3 * swiperSize + swiperSize * 4 * round; 1846 } 1847 if (rtl) { 1848 tx = -tx; 1849 } 1850 if (!isHorizontal) { 1851 ty = tx; 1852 tx = 0; 1853 } 1854 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 1855 if (progress <= 1 && progress > -1) { 1856 wrapperRotate = slideIndex * 90 + progress * 90; 1857 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 1858 } 1859 slideEl.style.transform = transform; 1860 if (params.slideShadows) { 1861 createSlideShadows(slideEl, progress, isHorizontal); 1862 } 1863 } 1864 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 1865 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 1866 if (params.shadow) { 1867 if (isHorizontal) { 1868 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 1869 } else { 1870 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 1871 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 1872 const scale1 = params.shadowScale; 1873 const scale2 = params.shadowScale / multiplier; 1874 const offset = params.shadowOffset; 1875 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 1876 } 1877 } 1878 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 1879 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 1880 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 1881 }; 1882 const setTransition = duration => { 1883 const { 1884 el, 1885 slides 1886 } = swiper; 1887 slides.forEach(slideEl => { 1888 slideEl.style.transitionDuration = `${duration}ms`; 1889 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 1890 subEl.style.transitionDuration = `${duration}ms`; 1891 }); 1892 }); 1893 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 1894 const shadowEl = el.querySelector('.swiper-cube-shadow'); 1895 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 1896 } 1897 }; 1898 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1899 effect: 'cube', 1900 swiper, 1901 on, 1902 setTranslate, 1903 setTransition, 1904 recreateShadows, 1905 getEffectParams: () => swiper.params.cubeEffect, 1906 perspective: () => true, 1907 overwriteParams: () => ({ 1908 slidesPerView: 1, 1909 slidesPerGroup: 1, 1910 watchSlidesProgress: true, 1911 resistanceRatio: 0, 1912 spaceBetween: 0, 1913 centeredSlides: false, 1914 virtualTranslate: true 1915 }) 1916 }); 1917} 1918 1919 1920 1921 1922/***/ }), 1923
vendor: 3,069 bytes, lines 1924-2007
1924/***/ "./node_modules/swiper/modules/effect-fade.mjs": 1925/*!*****************************************************!*\ 1926 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 1927 \*****************************************************/ 1928/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1929 1930__webpack_require__.r(__webpack_exports__); 1931/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1932/* harmony export */ "default": () => (/* binding */ EffectFade) 1933/* harmony export */ }); 1934/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 1935/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 1936/* 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"); 1937/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 1938 1939 1940 1941 1942 1943function EffectFade(_ref) { 1944 let { 1945 swiper, 1946 extendParams, 1947 on 1948 } = _ref; 1949 extendParams({ 1950 fadeEffect: { 1951 crossFade: false 1952 } 1953 }); 1954 const setTranslate = () => { 1955 const { 1956 slides 1957 } = swiper; 1958 const params = swiper.params.fadeEffect; 1959 for (let i = 0; i < slides.length; i += 1) { 1960 const slideEl = swiper.slides[i]; 1961 const offset = slideEl.swiperSlideOffset; 1962 let tx = -offset; 1963 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 1964 let ty = 0; 1965 if (!swiper.isHorizontal()) { 1966 ty = tx; 1967 tx = 0; 1968 } 1969 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 1970 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 1971 targetEl.style.opacity = slideOpacity; 1972 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 1973 } 1974 }; 1975 const setTransition = duration => { 1976 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 1977 transformElements.forEach(el => { 1978 el.style.transitionDuration = `${duration}ms`; 1979 }); 1980 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 1981 swiper, 1982 duration, 1983 transformElements, 1984 allSlides: true 1985 }); 1986 }; 1987 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 1988 effect: 'fade', 1989 swiper, 1990 on, 1991 setTranslate, 1992 setTransition, 1993 overwriteParams: () => ({ 1994 slidesPerView: 1, 1995 slidesPerGroup: 1, 1996 watchSlidesProgress: true, 1997 spaceBetween: 0, 1998 virtualTranslate: !swiper.params.cssMode 1999 }) 2000 }); 2001} 2002 2003 2004 2005 2006/***/ }), 2007
vendor: 5,302 bytes, lines 2008-2137
2008/***/ "./node_modules/swiper/modules/effect-flip.mjs": 2009/*!*****************************************************!*\ 2010 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 2011 \*****************************************************/ 2012/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2013 2014__webpack_require__.r(__webpack_exports__); 2015/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2016/* harmony export */ "default": () => (/* binding */ EffectFlip) 2017/* harmony export */ }); 2018/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 2019/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 2020/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 2021/* 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"); 2022/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2023 2024 2025 2026 2027 2028 2029function EffectFlip(_ref) { 2030 let { 2031 swiper, 2032 extendParams, 2033 on 2034 } = _ref; 2035 extendParams({ 2036 flipEffect: { 2037 slideShadows: true, 2038 limitRotation: true 2039 } 2040 }); 2041 const createSlideShadows = (slideEl, progress) => { 2042 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 2043 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 2044 if (!shadowBefore) { 2045 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 2046 } 2047 if (!shadowAfter) { 2048 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 2049 } 2050 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 2051 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 2052 }; 2053 const recreateShadows = () => { 2054 // Set shadows 2055 swiper.params.flipEffect; 2056 swiper.slides.forEach(slideEl => { 2057 let progress = slideEl.progress; 2058 if (swiper.params.flipEffect.limitRotation) { 2059 progress = Math.max(Math.min(slideEl.progress, 1), -1); 2060 } 2061 createSlideShadows(slideEl, progress); 2062 }); 2063 }; 2064 const setTranslate = () => { 2065 const { 2066 slides, 2067 rtlTranslate: rtl 2068 } = swiper; 2069 const params = swiper.params.flipEffect; 2070 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.p)(swiper); 2071 for (let i = 0; i < slides.length; i += 1) { 2072 const slideEl = slides[i]; 2073 let progress = slideEl.progress; 2074 if (swiper.params.flipEffect.limitRotation) { 2075 progress = Math.max(Math.min(slideEl.progress, 1), -1); 2076 } 2077 const offset = slideEl.swiperSlideOffset; 2078 const rotate = -180 * progress; 2079 let rotateY = rotate; 2080 let rotateX = 0; 2081 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 2082 let ty = 0; 2083 if (!swiper.isHorizontal()) { 2084 ty = tx; 2085 tx = 0; 2086 rotateX = -rotateY; 2087 rotateY = 0; 2088 } else if (rtl) { 2089 rotateY = -rotateY; 2090 } 2091 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 2092 if (params.slideShadows) { 2093 createSlideShadows(slideEl, progress); 2094 } 2095 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 2096 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 2097 targetEl.style.transform = transform; 2098 } 2099 }; 2100 const setTransition = duration => { 2101 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 2102 transformElements.forEach(el => { 2103 el.style.transitionDuration = `${duration}ms`; 2104 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 2105 shadowEl.style.transitionDuration = `${duration}ms`; 2106 }); 2107 }); 2108 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 2109 swiper, 2110 duration, 2111 transformElements 2112 }); 2113 }; 2114 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 2115 effect: 'flip', 2116 swiper, 2117 on, 2118 setTranslate, 2119 setTransition, 2120 recreateShadows, 2121 getEffectParams: () => swiper.params.flipEffect, 2122 perspective: () => true, 2123 overwriteParams: () => ({ 2124 slidesPerView: 1, 2125 slidesPerGroup: 1, 2126 watchSlidesProgress: true, 2127 spaceBetween: 0, 2128 virtualTranslate: !swiper.params.cssMode 2129 }) 2130 }); 2131} 2132 2133 2134 2135 2136/***/ }), 2137
vendor: 9,227 bytes, lines 2138-2389
2138/***/ "./node_modules/swiper/modules/free-mode.mjs": 2139/*!***************************************************!*\ 2140 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 2141 \***************************************************/ 2142/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2143 2144__webpack_require__.r(__webpack_exports__); 2145/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2146/* harmony export */ "default": () => (/* binding */ freeMode) 2147/* harmony export */ }); 2148/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2149 2150 2151function freeMode(_ref) { 2152 let { 2153 swiper, 2154 extendParams, 2155 emit, 2156 once 2157 } = _ref; 2158 extendParams({ 2159 freeMode: { 2160 enabled: false, 2161 momentum: true, 2162 momentumRatio: 1, 2163 momentumBounce: true, 2164 momentumBounceRatio: 1, 2165 momentumVelocityRatio: 1, 2166 sticky: false, 2167 minimumVelocity: 0.02 2168 } 2169 }); 2170 function onTouchStart() { 2171 if (swiper.params.cssMode) return; 2172 const translate = swiper.getTranslate(); 2173 swiper.setTranslate(translate); 2174 swiper.setTransition(0); 2175 swiper.touchEventsData.velocities.length = 0; 2176 swiper.freeMode.onTouchEnd({ 2177 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 2178 }); 2179 } 2180 function onTouchMove() { 2181 if (swiper.params.cssMode) return; 2182 const { 2183 touchEventsData: data, 2184 touches 2185 } = swiper; 2186 // Velocity 2187 if (data.velocities.length === 0) { 2188 data.velocities.push({ 2189 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 2190 time: data.touchStartTime 2191 }); 2192 } 2193 data.velocities.push({ 2194 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 2195 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)() 2196 }); 2197 } 2198 function onTouchEnd(_ref2) { 2199 let { 2200 currentPos 2201 } = _ref2; 2202 if (swiper.params.cssMode) return; 2203 const { 2204 params, 2205 wrapperEl, 2206 rtlTranslate: rtl, 2207 snapGrid, 2208 touchEventsData: data 2209 } = swiper; 2210 // Time diff 2211 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)(); 2212 const timeDiff = touchEndTime - data.touchStartTime; 2213 if (currentPos < -swiper.minTranslate()) { 2214 swiper.slideTo(swiper.activeIndex); 2215 return; 2216 } 2217 if (currentPos > -swiper.maxTranslate()) { 2218 if (swiper.slides.length < snapGrid.length) { 2219 swiper.slideTo(snapGrid.length - 1); 2220 } else { 2221 swiper.slideTo(swiper.slides.length - 1); 2222 } 2223 return; 2224 } 2225 if (params.freeMode.momentum) { 2226 if (data.velocities.length > 1) { 2227 const lastMoveEvent = data.velocities.pop(); 2228 const velocityEvent = data.velocities.pop(); 2229 const distance = lastMoveEvent.position - velocityEvent.position; 2230 const time = lastMoveEvent.time - velocityEvent.time; 2231 swiper.velocity = distance / time; 2232 swiper.velocity /= 2; 2233 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 2234 swiper.velocity = 0; 2235 } 2236 // this implies that the user stopped moving a finger then released. 2237 // There would be no events with distance zero, so the last event is stale. 2238 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.f)() - lastMoveEvent.time > 300) { 2239 swiper.velocity = 0; 2240 } 2241 } else { 2242 swiper.velocity = 0; 2243 } 2244 swiper.velocity *= params.freeMode.momentumVelocityRatio; 2245 data.velocities.length = 0; 2246 let momentumDuration = 1000 * params.freeMode.momentumRatio; 2247 const momentumDistance = swiper.velocity * momentumDuration; 2248 let newPosition = swiper.translate + momentumDistance; 2249 if (rtl) newPosition = -newPosition; 2250 let doBounce = false; 2251 let afterBouncePosition; 2252 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 2253 let needsLoopFix; 2254 if (newPosition < swiper.maxTranslate()) { 2255 if (params.freeMode.momentumBounce) { 2256 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 2257 newPosition = swiper.maxTranslate() - bounceAmount; 2258 } 2259 afterBouncePosition = swiper.maxTranslate(); 2260 doBounce = true; 2261 data.allowMomentumBounce = true; 2262 } else { 2263 newPosition = swiper.maxTranslate(); 2264 } 2265 if (params.loop && params.centeredSlides) needsLoopFix = true; 2266 } else if (newPosition > swiper.minTranslate()) { 2267 if (params.freeMode.momentumBounce) { 2268 if (newPosition - swiper.minTranslate() > bounceAmount) { 2269 newPosition = swiper.minTranslate() + bounceAmount; 2270 } 2271 afterBouncePosition = swiper.minTranslate(); 2272 doBounce = true; 2273 data.allowMomentumBounce = true; 2274 } else { 2275 newPosition = swiper.minTranslate(); 2276 } 2277 if (params.loop && params.centeredSlides) needsLoopFix = true; 2278 } else if (params.freeMode.sticky) { 2279 let nextSlide; 2280 for (let j = 0; j < snapGrid.length; j += 1) { 2281 if (snapGrid[j] > -newPosition) { 2282 nextSlide = j; 2283 break; 2284 } 2285 } 2286 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 2287 newPosition = snapGrid[nextSlide]; 2288 } else { 2289 newPosition = snapGrid[nextSlide - 1]; 2290 } 2291 newPosition = -newPosition; 2292 } 2293 if (needsLoopFix) { 2294 once('transitionEnd', () => { 2295 swiper.loopFix(); 2296 }); 2297 } 2298 // Fix duration 2299 if (swiper.velocity !== 0) { 2300 if (rtl) { 2301 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 2302 } else { 2303 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 2304 } 2305 if (params.freeMode.sticky) { 2306 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 2307 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 2308 // It's easy to see this when simulating touch with mouse events. To fix this, 2309 // limit single-slide swipes to the default slide duration. This also has the 2310 // nice side effect of matching slide speed if the user stopped moving before 2311 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 2312 // For faster swipes, also apply limits (albeit higher ones). 2313 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 2314 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 2315 if (moveDistance < currentSlideSize) { 2316 momentumDuration = params.speed; 2317 } else if (moveDistance < 2 * currentSlideSize) { 2318 momentumDuration = params.speed * 1.5; 2319 } else { 2320 momentumDuration = params.speed * 2.5; 2321 } 2322 } 2323 } else if (params.freeMode.sticky) { 2324 swiper.slideToClosest(); 2325 return; 2326 } 2327 if (params.freeMode.momentumBounce && doBounce) { 2328 swiper.updateProgress(afterBouncePosition); 2329 swiper.setTransition(momentumDuration); 2330 swiper.setTranslate(newPosition); 2331 swiper.transitionStart(true, swiper.swipeDirection); 2332 swiper.animating = true; 2333 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2334 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 2335 emit('momentumBounce'); 2336 swiper.setTransition(params.speed); 2337 setTimeout(() => { 2338 swiper.setTranslate(afterBouncePosition); 2339 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2340 if (!swiper || swiper.destroyed) return; 2341 swiper.transitionEnd(); 2342 }); 2343 }, 0); 2344 }); 2345 } else if (swiper.velocity) { 2346 emit('_freeModeNoMomentumRelease'); 2347 swiper.updateProgress(newPosition); 2348 swiper.setTransition(momentumDuration); 2349 swiper.setTranslate(newPosition); 2350 swiper.transitionStart(true, swiper.swipeDirection); 2351 if (!swiper.animating) { 2352 swiper.animating = true; 2353 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(wrapperEl, () => { 2354 if (!swiper || swiper.destroyed) return; 2355 swiper.transitionEnd(); 2356 }); 2357 } 2358 } else { 2359 swiper.updateProgress(newPosition); 2360 } 2361 swiper.updateActiveIndex(); 2362 swiper.updateSlidesClasses(); 2363 } else if (params.freeMode.sticky) { 2364 swiper.slideToClosest(); 2365 return; 2366 } else if (params.freeMode) { 2367 emit('_freeModeNoMomentumRelease'); 2368 } 2369 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 2370 emit('_freeModeStaticRelease'); 2371 swiper.updateProgress(); 2372 swiper.updateActiveIndex(); 2373 swiper.updateSlidesClasses(); 2374 } 2375 } 2376 Object.assign(swiper, { 2377 freeMode: { 2378 onTouchStart, 2379 onTouchMove, 2380 onTouchEnd 2381 } 2382 }); 2383} 2384 2385 2386 2387 2388/***/ }), 2389
vendor: 5,697 bytes, lines 2390-2558
2390/***/ "./node_modules/swiper/modules/grid.mjs": 2391/*!**********************************************!*\ 2392 !*** ./node_modules/swiper/modules/grid.mjs ***! 2393 \**********************************************/ 2394/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2395 2396__webpack_require__.r(__webpack_exports__); 2397/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2398/* harmony export */ "default": () => (/* binding */ Grid) 2399/* harmony export */ }); 2400function Grid(_ref) { 2401 let { 2402 swiper, 2403 extendParams, 2404 on 2405 } = _ref; 2406 extendParams({ 2407 grid: { 2408 rows: 1, 2409 fill: 'column' 2410 } 2411 }); 2412 let slidesNumberEvenToRows; 2413 let slidesPerRow; 2414 let numFullColumns; 2415 let wasMultiRow; 2416 const getSpaceBetween = () => { 2417 let spaceBetween = swiper.params.spaceBetween; 2418 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 2419 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 2420 } else if (typeof spaceBetween === 'string') { 2421 spaceBetween = parseFloat(spaceBetween); 2422 } 2423 return spaceBetween; 2424 }; 2425 const initSlides = slides => { 2426 const { 2427 slidesPerView 2428 } = swiper.params; 2429 const { 2430 rows, 2431 fill 2432 } = swiper.params.grid; 2433 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2434 numFullColumns = Math.floor(slidesLength / rows); 2435 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 2436 slidesNumberEvenToRows = slidesLength; 2437 } else { 2438 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 2439 } 2440 if (slidesPerView !== 'auto' && fill === 'row') { 2441 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 2442 } 2443 slidesPerRow = slidesNumberEvenToRows / rows; 2444 }; 2445 const unsetSlides = () => { 2446 if (swiper.slides) { 2447 swiper.slides.forEach(slide => { 2448 if (slide.swiperSlideGridSet) { 2449 slide.style.height = ''; 2450 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 2451 } 2452 }); 2453 } 2454 }; 2455 const updateSlide = (i, slide, slides) => { 2456 const { 2457 slidesPerGroup 2458 } = swiper.params; 2459 const spaceBetween = getSpaceBetween(); 2460 const { 2461 rows, 2462 fill 2463 } = swiper.params.grid; 2464 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 2465 // Set slides order 2466 let newSlideOrderIndex; 2467 let column; 2468 let row; 2469 if (fill === 'row' && slidesPerGroup > 1) { 2470 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 2471 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 2472 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 2473 row = Math.floor(slideIndexInGroup / columnsInGroup); 2474 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 2475 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 2476 slide.style.order = newSlideOrderIndex; 2477 } else if (fill === 'column') { 2478 column = Math.floor(i / rows); 2479 row = i - column * rows; 2480 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 2481 row += 1; 2482 if (row >= rows) { 2483 row = 0; 2484 column += 1; 2485 } 2486 } 2487 } else { 2488 row = Math.floor(i / slidesPerRow); 2489 column = i - row * slidesPerRow; 2490 } 2491 slide.row = row; 2492 slide.column = column; 2493 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 2494 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 2495 slide.swiperSlideGridSet = true; 2496 }; 2497 const updateWrapperSize = (slideSize, snapGrid) => { 2498 const { 2499 centeredSlides, 2500 roundLengths 2501 } = swiper.params; 2502 const spaceBetween = getSpaceBetween(); 2503 const { 2504 rows 2505 } = swiper.params.grid; 2506 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 2507 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 2508 if (!swiper.params.cssMode) { 2509 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 2510 } 2511 if (centeredSlides) { 2512 const newSlidesGrid = []; 2513 for (let i = 0; i < snapGrid.length; i += 1) { 2514 let slidesGridItem = snapGrid[i]; 2515 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 2516 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 2517 } 2518 snapGrid.splice(0, snapGrid.length); 2519 snapGrid.push(...newSlidesGrid); 2520 } 2521 }; 2522 const onInit = () => { 2523 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 2524 }; 2525 const onUpdate = () => { 2526 const { 2527 params, 2528 el 2529 } = swiper; 2530 const isMultiRow = params.grid && params.grid.rows > 1; 2531 if (wasMultiRow && !isMultiRow) { 2532 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 2533 numFullColumns = 1; 2534 swiper.emitContainerClasses(); 2535 } else if (!wasMultiRow && isMultiRow) { 2536 el.classList.add(`${params.containerModifierClass}grid`); 2537 if (params.grid.fill === 'column') { 2538 el.classList.add(`${params.containerModifierClass}grid-column`); 2539 } 2540 swiper.emitContainerClasses(); 2541 } 2542 wasMultiRow = isMultiRow; 2543 }; 2544 on('init', onInit); 2545 on('update', onUpdate); 2546 swiper.grid = { 2547 initSlides, 2548 unsetSlides, 2549 updateSlide, 2550 updateWrapperSize 2551 }; 2552} 2553 2554 2555 2556 2557/***/ }), 2558
vendor: 4,393 bytes, lines 2559-2667
2559/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 2560/*!*********************************************************!*\ 2561 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 2562 \*********************************************************/ 2563/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2564 2565__webpack_require__.r(__webpack_exports__); 2566/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2567/* harmony export */ "default": () => (/* binding */ HashNavigation) 2568/* harmony export */ }); 2569/* 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"); 2570/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2571 2572 2573 2574function HashNavigation(_ref) { 2575 let { 2576 swiper, 2577 extendParams, 2578 emit, 2579 on 2580 } = _ref; 2581 let initialized = false; 2582 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2583 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2584 extendParams({ 2585 hashNavigation: { 2586 enabled: false, 2587 replaceState: false, 2588 watchState: false, 2589 getSlideIndex(_s, hash) { 2590 if (swiper.virtual && swiper.params.virtual.enabled) { 2591 const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash); 2592 if (!slideWithHash) return 0; 2593 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 2594 return index; 2595 } 2596 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]); 2597 } 2598 } 2599 }); 2600 const onHashChange = () => { 2601 emit('hashChange'); 2602 const newHash = document.location.hash.replace('#', ''); 2603 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2604 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 2605 if (newHash !== activeSlideHash) { 2606 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 2607 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 2608 swiper.slideTo(newIndex); 2609 } 2610 }; 2611 const setHash = () => { 2612 if (!initialized || !swiper.params.hashNavigation.enabled) return; 2613 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 2614 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 2615 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 2616 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 2617 emit('hashSet'); 2618 } else { 2619 document.location.hash = activeSlideHash || ''; 2620 emit('hashSet'); 2621 } 2622 }; 2623 const init = () => { 2624 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 2625 initialized = true; 2626 const hash = document.location.hash.replace('#', ''); 2627 if (hash) { 2628 const speed = 0; 2629 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 2630 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 2631 } 2632 if (swiper.params.hashNavigation.watchState) { 2633 window.addEventListener('hashchange', onHashChange); 2634 } 2635 }; 2636 const destroy = () => { 2637 if (swiper.params.hashNavigation.watchState) { 2638 window.removeEventListener('hashchange', onHashChange); 2639 } 2640 }; 2641 on('init', () => { 2642 if (swiper.params.hashNavigation.enabled) { 2643 init(); 2644 } 2645 }); 2646 on('destroy', () => { 2647 if (swiper.params.hashNavigation.enabled) { 2648 destroy(); 2649 } 2650 }); 2651 on('transitionEnd _freeModeNoMomentumRelease', () => { 2652 if (initialized) { 2653 setHash(); 2654 } 2655 }); 2656 on('slideChange', () => { 2657 if (initialized && swiper.params.cssMode) { 2658 setHash(); 2659 } 2660 }); 2661} 2662 2663 2664 2665 2666/***/ }), 2667
vendor: 5,110 bytes, lines 2668-2824
2668/***/ "./node_modules/swiper/modules/history.mjs": 2669/*!*************************************************!*\ 2670 !*** ./node_modules/swiper/modules/history.mjs ***! 2671 \*************************************************/ 2672/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2673 2674__webpack_require__.r(__webpack_exports__); 2675/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2676/* harmony export */ "default": () => (/* binding */ History) 2677/* harmony export */ }); 2678/* 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"); 2679 2680 2681function History(_ref) { 2682 let { 2683 swiper, 2684 extendParams, 2685 on 2686 } = _ref; 2687 extendParams({ 2688 history: { 2689 enabled: false, 2690 root: '', 2691 replaceState: false, 2692 key: 'slides', 2693 keepQuery: false 2694 } 2695 }); 2696 let initialized = false; 2697 let paths = {}; 2698 const slugify = text => { 2699 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 2700 }; 2701 const getPathValues = urlOverride => { 2702 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2703 let location; 2704 if (urlOverride) { 2705 location = new URL(urlOverride); 2706 } else { 2707 location = window.location; 2708 } 2709 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 2710 const total = pathArray.length; 2711 const key = pathArray[total - 2]; 2712 const value = pathArray[total - 1]; 2713 return { 2714 key, 2715 value 2716 }; 2717 }; 2718 const setHistory = (key, index) => { 2719 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2720 if (!initialized || !swiper.params.history.enabled) return; 2721 let location; 2722 if (swiper.params.url) { 2723 location = new URL(swiper.params.url); 2724 } else { 2725 location = window.location; 2726 } 2727 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 2728 let value = slugify(slide.getAttribute('data-history')); 2729 if (swiper.params.history.root.length > 0) { 2730 let root = swiper.params.history.root; 2731 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 2732 value = `${root}/${key ? `${key}/` : ''}${value}`; 2733 } else if (!location.pathname.includes(key)) { 2734 value = `${key ? `${key}/` : ''}${value}`; 2735 } 2736 if (swiper.params.history.keepQuery) { 2737 value += location.search; 2738 } 2739 const currentState = window.history.state; 2740 if (currentState && currentState.value === value) { 2741 return; 2742 } 2743 if (swiper.params.history.replaceState) { 2744 window.history.replaceState({ 2745 value 2746 }, null, value); 2747 } else { 2748 window.history.pushState({ 2749 value 2750 }, null, value); 2751 } 2752 }; 2753 const scrollToSlide = (speed, value, runCallbacks) => { 2754 if (value) { 2755 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 2756 const slide = swiper.slides[i]; 2757 const slideHistory = slugify(slide.getAttribute('data-history')); 2758 if (slideHistory === value) { 2759 const index = swiper.getSlideIndex(slide); 2760 swiper.slideTo(index, speed, runCallbacks); 2761 } 2762 } 2763 } else { 2764 swiper.slideTo(0, speed, runCallbacks); 2765 } 2766 }; 2767 const setHistoryPopState = () => { 2768 paths = getPathValues(swiper.params.url); 2769 scrollToSlide(swiper.params.speed, paths.value, false); 2770 }; 2771 const init = () => { 2772 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2773 if (!swiper.params.history) return; 2774 if (!window.history || !window.history.pushState) { 2775 swiper.params.history.enabled = false; 2776 swiper.params.hashNavigation.enabled = true; 2777 return; 2778 } 2779 initialized = true; 2780 paths = getPathValues(swiper.params.url); 2781 if (!paths.key && !paths.value) { 2782 if (!swiper.params.history.replaceState) { 2783 window.addEventListener('popstate', setHistoryPopState); 2784 } 2785 return; 2786 } 2787 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 2788 if (!swiper.params.history.replaceState) { 2789 window.addEventListener('popstate', setHistoryPopState); 2790 } 2791 }; 2792 const destroy = () => { 2793 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2794 if (!swiper.params.history.replaceState) { 2795 window.removeEventListener('popstate', setHistoryPopState); 2796 } 2797 }; 2798 on('init', () => { 2799 if (swiper.params.history.enabled) { 2800 init(); 2801 } 2802 }); 2803 on('destroy', () => { 2804 if (swiper.params.history.enabled) { 2805 destroy(); 2806 } 2807 }); 2808 on('transitionEnd _freeModeNoMomentumRelease', () => { 2809 if (initialized) { 2810 setHistory(swiper.params.history.key, swiper.activeIndex); 2811 } 2812 }); 2813 on('slideChange', () => { 2814 if (initialized && swiper.params.cssMode) { 2815 setHistory(swiper.params.history.key, swiper.activeIndex); 2816 } 2817 }); 2818} 2819 2820 2821 2822 2823/***/ }), 2824
vendor: 5,305 bytes, lines 2825-2957
2825/***/ "./node_modules/swiper/modules/keyboard.mjs": 2826/*!**************************************************!*\ 2827 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 2828 \**************************************************/ 2829/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2830 2831__webpack_require__.r(__webpack_exports__); 2832/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2833/* harmony export */ "default": () => (/* binding */ Keyboard) 2834/* harmony export */ }); 2835/* 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"); 2836/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2837 2838 2839 2840/* eslint-disable consistent-return */ 2841function Keyboard(_ref) { 2842 let { 2843 swiper, 2844 extendParams, 2845 on, 2846 emit 2847 } = _ref; 2848 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2849 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 2850 swiper.keyboard = { 2851 enabled: false 2852 }; 2853 extendParams({ 2854 keyboard: { 2855 enabled: false, 2856 onlyInViewport: true, 2857 pageUpDown: true 2858 } 2859 }); 2860 function handle(event) { 2861 if (!swiper.enabled) return; 2862 const { 2863 rtlTranslate: rtl 2864 } = swiper; 2865 let e = event; 2866 if (e.originalEvent) e = e.originalEvent; // jquery fix 2867 const kc = e.keyCode || e.charCode; 2868 const pageUpDown = swiper.params.keyboard.pageUpDown; 2869 const isPageUp = pageUpDown && kc === 33; 2870 const isPageDown = pageUpDown && kc === 34; 2871 const isArrowLeft = kc === 37; 2872 const isArrowRight = kc === 39; 2873 const isArrowUp = kc === 38; 2874 const isArrowDown = kc === 40; 2875 // Directions locks 2876 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 2877 return false; 2878 } 2879 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 2880 return false; 2881 } 2882 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 2883 return undefined; 2884 } 2885 if (document.activeElement && (document.activeElement.isContentEditable || document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea'))) { 2886 return undefined; 2887 } 2888 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 2889 let inView = false; 2890 // Check that swiper should be inside of visible area of window 2891 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { 2892 return undefined; 2893 } 2894 const el = swiper.el; 2895 const swiperWidth = el.clientWidth; 2896 const swiperHeight = el.clientHeight; 2897 const windowWidth = window.innerWidth; 2898 const windowHeight = window.innerHeight; 2899 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el); 2900 if (rtl) swiperOffset.left -= el.scrollLeft; 2901 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 2902 for (let i = 0; i < swiperCoord.length; i += 1) { 2903 const point = swiperCoord[i]; 2904 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 2905 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 2906 inView = true; 2907 } 2908 } 2909 if (!inView) return undefined; 2910 } 2911 if (swiper.isHorizontal()) { 2912 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 2913 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2914 } 2915 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 2916 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 2917 } else { 2918 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 2919 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 2920 } 2921 if (isPageDown || isArrowDown) swiper.slideNext(); 2922 if (isPageUp || isArrowUp) swiper.slidePrev(); 2923 } 2924 emit('keyPress', kc); 2925 return undefined; 2926 } 2927 function enable() { 2928 if (swiper.keyboard.enabled) return; 2929 document.addEventListener('keydown', handle); 2930 swiper.keyboard.enabled = true; 2931 } 2932 function disable() { 2933 if (!swiper.keyboard.enabled) return; 2934 document.removeEventListener('keydown', handle); 2935 swiper.keyboard.enabled = false; 2936 } 2937 on('init', () => { 2938 if (swiper.params.keyboard.enabled) { 2939 enable(); 2940 } 2941 }); 2942 on('destroy', () => { 2943 if (swiper.keyboard.enabled) { 2944 disable(); 2945 } 2946 }); 2947 Object.assign(swiper.keyboard, { 2948 enable, 2949 disable 2950 }); 2951} 2952 2953 2954 2955 2956/***/ }), 2957
vendor: 5,841 bytes, lines 2958-3165
2958/***/ "./node_modules/swiper/modules/manipulation.mjs": 2959/*!******************************************************!*\ 2960 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 2961 \******************************************************/ 2962/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2963 2964__webpack_require__.r(__webpack_exports__); 2965/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2966/* harmony export */ "default": () => (/* binding */ Manipulation) 2967/* harmony export */ }); 2968/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2969 2970 2971function appendSlide(slides) { 2972 const swiper = this; 2973 const { 2974 params, 2975 slidesEl 2976 } = swiper; 2977 if (params.loop) { 2978 swiper.loopDestroy(); 2979 } 2980 const appendElement = slideEl => { 2981 if (typeof slideEl === 'string') { 2982 const tempDOM = document.createElement('div'); 2983 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl); 2984 slidesEl.append(tempDOM.children[0]); 2985 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, ''); 2986 } else { 2987 slidesEl.append(slideEl); 2988 } 2989 }; 2990 if (typeof slides === 'object' && 'length' in slides) { 2991 for (let i = 0; i < slides.length; i += 1) { 2992 if (slides[i]) appendElement(slides[i]); 2993 } 2994 } else { 2995 appendElement(slides); 2996 } 2997 swiper.recalcSlides(); 2998 if (params.loop) { 2999 swiper.loopCreate(); 3000 } 3001 if (!params.observer || swiper.isElement) { 3002 swiper.update(); 3003 } 3004} 3005 3006function prependSlide(slides) { 3007 const swiper = this; 3008 const { 3009 params, 3010 activeIndex, 3011 slidesEl 3012 } = swiper; 3013 if (params.loop) { 3014 swiper.loopDestroy(); 3015 } 3016 let newActiveIndex = activeIndex + 1; 3017 const prependElement = slideEl => { 3018 if (typeof slideEl === 'string') { 3019 const tempDOM = document.createElement('div'); 3020 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, slideEl); 3021 slidesEl.prepend(tempDOM.children[0]); 3022 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.s)(tempDOM, ''); 3023 } else { 3024 slidesEl.prepend(slideEl); 3025 } 3026 }; 3027 if (typeof slides === 'object' && 'length' in slides) { 3028 for (let i = 0; i < slides.length; i += 1) { 3029 if (slides[i]) prependElement(slides[i]); 3030 } 3031 newActiveIndex = activeIndex + slides.length; 3032 } else { 3033 prependElement(slides); 3034 } 3035 swiper.recalcSlides(); 3036 if (params.loop) { 3037 swiper.loopCreate(); 3038 } 3039 if (!params.observer || swiper.isElement) { 3040 swiper.update(); 3041 } 3042 swiper.slideTo(newActiveIndex, 0, false); 3043} 3044 3045function addSlide(index, slides) { 3046 const swiper = this; 3047 const { 3048 params, 3049 activeIndex, 3050 slidesEl 3051 } = swiper; 3052 let activeIndexBuffer = activeIndex; 3053 if (params.loop) { 3054 activeIndexBuffer -= swiper.loopedSlides; 3055 swiper.loopDestroy(); 3056 swiper.recalcSlides(); 3057 } 3058 const baseLength = swiper.slides.length; 3059 if (index <= 0) { 3060 swiper.prependSlide(slides); 3061 return; 3062 } 3063 if (index >= baseLength) { 3064 swiper.appendSlide(slides); 3065 return; 3066 } 3067 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 3068 const slidesBuffer = []; 3069 for (let i = baseLength - 1; i >= index; i -= 1) { 3070 const currentSlide = swiper.slides[i]; 3071 currentSlide.remove(); 3072 slidesBuffer.unshift(currentSlide); 3073 } 3074 if (typeof slides === 'object' && 'length' in slides) { 3075 for (let i = 0; i < slides.length; i += 1) { 3076 if (slides[i]) slidesEl.append(slides[i]); 3077 } 3078 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 3079 } else { 3080 slidesEl.append(slides); 3081 } 3082 for (let i = 0; i < slidesBuffer.length; i += 1) { 3083 slidesEl.append(slidesBuffer[i]); 3084 } 3085 swiper.recalcSlides(); 3086 if (params.loop) { 3087 swiper.loopCreate(); 3088 } 3089 if (!params.observer || swiper.isElement) { 3090 swiper.update(); 3091 } 3092 if (params.loop) { 3093 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 3094 } else { 3095 swiper.slideTo(newActiveIndex, 0, false); 3096 } 3097} 3098 3099function removeSlide(slidesIndexes) { 3100 const swiper = this; 3101 const { 3102 params, 3103 activeIndex 3104 } = swiper; 3105 let activeIndexBuffer = activeIndex; 3106 if (params.loop) { 3107 activeIndexBuffer -= swiper.loopedSlides; 3108 swiper.loopDestroy(); 3109 } 3110 let newActiveIndex = activeIndexBuffer; 3111 let indexToRemove; 3112 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 3113 for (let i = 0; i < slidesIndexes.length; i += 1) { 3114 indexToRemove = slidesIndexes[i]; 3115 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 3116 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 3117 } 3118 newActiveIndex = Math.max(newActiveIndex, 0); 3119 } else { 3120 indexToRemove = slidesIndexes; 3121 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 3122 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 3123 newActiveIndex = Math.max(newActiveIndex, 0); 3124 } 3125 swiper.recalcSlides(); 3126 if (params.loop) { 3127 swiper.loopCreate(); 3128 } 3129 if (!params.observer || swiper.isElement) { 3130 swiper.update(); 3131 } 3132 if (params.loop) { 3133 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 3134 } else { 3135 swiper.slideTo(newActiveIndex, 0, false); 3136 } 3137} 3138 3139function removeAllSlides() { 3140 const swiper = this; 3141 const slidesIndexes = []; 3142 for (let i = 0; i < swiper.slides.length; i += 1) { 3143 slidesIndexes.push(i); 3144 } 3145 swiper.removeSlide(slidesIndexes); 3146} 3147 3148function Manipulation(_ref) { 3149 let { 3150 swiper 3151 } = _ref; 3152 Object.assign(swiper, { 3153 appendSlide: appendSlide.bind(swiper), 3154 prependSlide: prependSlide.bind(swiper), 3155 addSlide: addSlide.bind(swiper), 3156 removeSlide: removeSlide.bind(swiper), 3157 removeAllSlides: removeAllSlides.bind(swiper) 3158 }); 3159} 3160 3161 3162 3163 3164/***/ }), 3165
vendor: 15,995 bytes, lines 3166-3576
3166/***/ "./node_modules/swiper/modules/mousewheel.mjs": 3167/*!****************************************************!*\ 3168 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 3169 \****************************************************/ 3170/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3171 3172__webpack_require__.r(__webpack_exports__); 3173/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3174/* harmony export */ "default": () => (/* binding */ Mousewheel) 3175/* harmony export */ }); 3176/* 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"); 3177/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3178 3179 3180 3181/* eslint-disable consistent-return */ 3182function Mousewheel(_ref) { 3183 let { 3184 swiper, 3185 extendParams, 3186 on, 3187 emit 3188 } = _ref; 3189 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 3190 extendParams({ 3191 mousewheel: { 3192 enabled: false, 3193 releaseOnEdges: false, 3194 invert: false, 3195 forceToAxis: false, 3196 sensitivity: 1, 3197 eventsTarget: 'container', 3198 thresholdDelta: null, 3199 thresholdTime: null, 3200 noMousewheelClass: 'swiper-no-mousewheel' 3201 } 3202 }); 3203 swiper.mousewheel = { 3204 enabled: false 3205 }; 3206 let timeout; 3207 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 3208 let lastEventBeforeSnap; 3209 const recentWheelEvents = []; 3210 function normalize(e) { 3211 // Reasonable defaults 3212 const PIXEL_STEP = 10; 3213 const LINE_HEIGHT = 40; 3214 const PAGE_HEIGHT = 800; 3215 let sX = 0; 3216 let sY = 0; // spinX, spinY 3217 let pX = 0; 3218 let pY = 0; // pixelX, pixelY 3219 3220 // Legacy 3221 if ('detail' in e) { 3222 sY = e.detail; 3223 } 3224 if ('wheelDelta' in e) { 3225 sY = -e.wheelDelta / 120; 3226 } 3227 if ('wheelDeltaY' in e) { 3228 sY = -e.wheelDeltaY / 120; 3229 } 3230 if ('wheelDeltaX' in e) { 3231 sX = -e.wheelDeltaX / 120; 3232 } 3233 3234 // side scrolling on FF with DOMMouseScroll 3235 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 3236 sX = sY; 3237 sY = 0; 3238 } 3239 pX = sX * PIXEL_STEP; 3240 pY = sY * PIXEL_STEP; 3241 if ('deltaY' in e) { 3242 pY = e.deltaY; 3243 } 3244 if ('deltaX' in e) { 3245 pX = e.deltaX; 3246 } 3247 if (e.shiftKey && !pX) { 3248 // if user scrolls with shift he wants horizontal scroll 3249 pX = pY; 3250 pY = 0; 3251 } 3252 if ((pX || pY) && e.deltaMode) { 3253 if (e.deltaMode === 1) { 3254 // delta in LINE units 3255 pX *= LINE_HEIGHT; 3256 pY *= LINE_HEIGHT; 3257 } else { 3258 // delta in PAGE units 3259 pX *= PAGE_HEIGHT; 3260 pY *= PAGE_HEIGHT; 3261 } 3262 } 3263 3264 // Fall-back if spin cannot be determined 3265 if (pX && !sX) { 3266 sX = pX < 1 ? -1 : 1; 3267 } 3268 if (pY && !sY) { 3269 sY = pY < 1 ? -1 : 1; 3270 } 3271 return { 3272 spinX: sX, 3273 spinY: sY, 3274 pixelX: pX, 3275 pixelY: pY 3276 }; 3277 } 3278 function handleMouseEnter() { 3279 if (!swiper.enabled) return; 3280 swiper.mouseEntered = true; 3281 } 3282 function handleMouseLeave() { 3283 if (!swiper.enabled) return; 3284 swiper.mouseEntered = false; 3285 } 3286 function animateSlider(newEvent) { 3287 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 3288 // Prevent if delta of wheel scroll delta is below configured threshold 3289 return false; 3290 } 3291 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 3292 // Prevent if time between scrolls is below configured threshold 3293 return false; 3294 } 3295 3296 // If the movement is NOT big enough and 3297 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 3298 // Don't go any further (avoid insignificant scroll movement). 3299 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)() - lastScrollTime < 60) { 3300 // Return false as a default 3301 return true; 3302 } 3303 // If user is scrolling towards the end: 3304 // If the slider hasn't hit the latest slide or 3305 // if the slider is a loop and 3306 // if the slider isn't moving right now: 3307 // Go to next slide and 3308 // emit a scroll event. 3309 // Else (the user is scrolling towards the beginning) and 3310 // if the slider hasn't hit the first slide or 3311 // if the slider is a loop and 3312 // if the slider isn't moving right now: 3313 // Go to prev slide and 3314 // emit a scroll event. 3315 if (newEvent.direction < 0) { 3316 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 3317 swiper.slideNext(); 3318 emit('scroll', newEvent.raw); 3319 } 3320 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 3321 swiper.slidePrev(); 3322 emit('scroll', newEvent.raw); 3323 } 3324 // If you got here is because an animation has been triggered so store the current time 3325 lastScrollTime = new window.Date().getTime(); 3326 // Return false as a default 3327 return false; 3328 } 3329 function releaseScroll(newEvent) { 3330 const params = swiper.params.mousewheel; 3331 if (newEvent.direction < 0) { 3332 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 3333 // Return true to animate scroll on edges 3334 return true; 3335 } 3336 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 3337 // Return true to animate scroll on edges 3338 return true; 3339 } 3340 return false; 3341 } 3342 function handle(event) { 3343 let e = event; 3344 let disableParentSwiper = true; 3345 if (!swiper.enabled) return; 3346 3347 // Ignore event if the target or its parents have the swiper-no-mousewheel class 3348 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 3349 const params = swiper.params.mousewheel; 3350 if (swiper.params.cssMode) { 3351 e.preventDefault(); 3352 } 3353 let targetEl = swiper.el; 3354 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3355 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3356 } 3357 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 3358 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 3359 if (e.originalEvent) e = e.originalEvent; // jquery fix 3360 let delta = 0; 3361 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 3362 const data = normalize(e); 3363 if (params.forceToAxis) { 3364 if (swiper.isHorizontal()) { 3365 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 3366 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 3367 } else { 3368 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 3369 } 3370 if (delta === 0) return true; 3371 if (params.invert) delta = -delta; 3372 3373 // Get the scroll positions 3374 let positions = swiper.getTranslate() + delta * params.sensitivity; 3375 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 3376 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 3377 3378 // When loop is true: 3379 // the disableParentSwiper will be true. 3380 // When loop is false: 3381 // if the scroll positions is not on edge, 3382 // then the disableParentSwiper will be true. 3383 // if the scroll on edge positions, 3384 // then the disableParentSwiper will be false. 3385 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 3386 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 3387 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 3388 // Register the new event in a variable which stores the relevant data 3389 const newEvent = { 3390 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(), 3391 delta: Math.abs(delta), 3392 direction: Math.sign(delta), 3393 raw: event 3394 }; 3395 3396 // Keep the most recent events 3397 if (recentWheelEvents.length >= 2) { 3398 recentWheelEvents.shift(); // only store the last N events 3399 } 3400 3401 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3402 recentWheelEvents.push(newEvent); 3403 3404 // If there is at least one previous recorded event: 3405 // If direction has changed or 3406 // if the scroll is quicker than the previous one: 3407 // Animate the slider. 3408 // Else (this is the first time the wheel is moved): 3409 // Animate the slider. 3410 if (prevEvent) { 3411 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 3412 animateSlider(newEvent); 3413 } 3414 } else { 3415 animateSlider(newEvent); 3416 } 3417 3418 // If it's time to release the scroll: 3419 // Return now so you don't hit the preventDefault. 3420 if (releaseScroll(newEvent)) { 3421 return true; 3422 } 3423 } else { 3424 // Freemode or scrollContainer: 3425 3426 // If we recently snapped after a momentum scroll, then ignore wheel events 3427 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 3428 // or if it's a new scroll (larger delta or inverse sign as last event before 3429 // an end-of-momentum snap). 3430 const newEvent = { 3431 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(), 3432 delta: Math.abs(delta), 3433 direction: Math.sign(delta) 3434 }; 3435 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 3436 if (!ignoreWheelEvents) { 3437 lastEventBeforeSnap = undefined; 3438 let position = swiper.getTranslate() + delta * params.sensitivity; 3439 const wasBeginning = swiper.isBeginning; 3440 const wasEnd = swiper.isEnd; 3441 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 3442 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 3443 swiper.setTransition(0); 3444 swiper.setTranslate(position); 3445 swiper.updateProgress(); 3446 swiper.updateActiveIndex(); 3447 swiper.updateSlidesClasses(); 3448 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 3449 swiper.updateSlidesClasses(); 3450 } 3451 if (swiper.params.loop) { 3452 swiper.loopFix({ 3453 direction: newEvent.direction < 0 ? 'next' : 'prev', 3454 byMousewheel: true 3455 }); 3456 } 3457 if (swiper.params.freeMode.sticky) { 3458 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 3459 // the end of a momentum scroll by storing recent (N=15?) wheel events. 3460 // 1. do all N events have decreasing or same (absolute value) delta? 3461 // 2. did all N events arrive in the last M (M=500?) msecs? 3462 // 3. does the earliest event have an (absolute value) delta that's 3463 // at least P (P=1?) larger than the most recent event's delta? 3464 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 3465 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 3466 // Snap immediately and ignore remaining wheel events in this scroll. 3467 // See comment above for "remaining wheel events in this scroll" determination. 3468 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 3469 clearTimeout(timeout); 3470 timeout = undefined; 3471 if (recentWheelEvents.length >= 15) { 3472 recentWheelEvents.shift(); // only store the last N events 3473 } 3474 3475 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 3476 const firstEvent = recentWheelEvents[0]; 3477 recentWheelEvents.push(newEvent); 3478 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 3479 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 3480 recentWheelEvents.splice(0); 3481 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 3482 // We're at the end of the deceleration of a momentum scroll, so there's no need 3483 // to wait for more events. Snap ASAP on the next tick. 3484 // Also, because there's some remaining momentum we'll bias the snap in the 3485 // direction of the ongoing scroll because it's better UX for the scroll to snap 3486 // in the same direction as the scroll instead of reversing to snap. Therefore, 3487 // if it's already scrolled more than 20% in the current direction, keep going. 3488 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 3489 lastEventBeforeSnap = newEvent; 3490 recentWheelEvents.splice(0); 3491 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3492 if (swiper.destroyed || !swiper.params) return; 3493 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3494 }, 0); // no delay; move on next tick 3495 } 3496 3497 if (!timeout) { 3498 // if we get here, then we haven't detected the end of a momentum scroll, so 3499 // we'll consider a scroll "complete" when there haven't been any wheel events 3500 // for 500ms. 3501 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 3502 if (swiper.destroyed || !swiper.params) return; 3503 const snapToThreshold = 0.5; 3504 lastEventBeforeSnap = newEvent; 3505 recentWheelEvents.splice(0); 3506 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 3507 }, 500); 3508 } 3509 } 3510 3511 // Emit event 3512 if (!ignoreWheelEvents) emit('scroll', e); 3513 3514 // Stop autoplay 3515 if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop(); 3516 // Return page scroll on edge positions 3517 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 3518 return true; 3519 } 3520 } 3521 } 3522 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 3523 return false; 3524 } 3525 function events(method) { 3526 let targetEl = swiper.el; 3527 if (swiper.params.mousewheel.eventsTarget !== 'container') { 3528 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 3529 } 3530 targetEl[method]('mouseenter', handleMouseEnter); 3531 targetEl[method]('mouseleave', handleMouseLeave); 3532 targetEl[method]('wheel', handle); 3533 } 3534 function enable() { 3535 if (swiper.params.cssMode) { 3536 swiper.wrapperEl.removeEventListener('wheel', handle); 3537 return true; 3538 } 3539 if (swiper.mousewheel.enabled) return false; 3540 events('addEventListener'); 3541 swiper.mousewheel.enabled = true; 3542 return true; 3543 } 3544 function disable() { 3545 if (swiper.params.cssMode) { 3546 swiper.wrapperEl.addEventListener(event, handle); 3547 return true; 3548 } 3549 if (!swiper.mousewheel.enabled) return false; 3550 events('removeEventListener'); 3551 swiper.mousewheel.enabled = false; 3552 return true; 3553 } 3554 on('init', () => { 3555 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 3556 disable(); 3557 } 3558 if (swiper.params.mousewheel.enabled) enable(); 3559 }); 3560 on('destroy', () => { 3561 if (swiper.params.cssMode) { 3562 enable(); 3563 } 3564 if (swiper.mousewheel.enabled) disable(); 3565 }); 3566 Object.assign(swiper.mousewheel, { 3567 enable, 3568 disable 3569 }); 3570} 3571 3572 3573 3574 3575/***/ }), 3576
vendor: 7,408 bytes, lines 3577-3792
3577/***/ "./node_modules/swiper/modules/navigation.mjs": 3578/*!****************************************************!*\ 3579 !*** ./node_modules/swiper/modules/navigation.mjs ***! 3580 \****************************************************/ 3581/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3582 3583__webpack_require__.r(__webpack_exports__); 3584/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3585/* harmony export */ "default": () => (/* binding */ Navigation) 3586/* harmony export */ }); 3587/* 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"); 3588/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3589 3590 3591 3592function Navigation(_ref) { 3593 let { 3594 swiper, 3595 extendParams, 3596 on, 3597 emit 3598 } = _ref; 3599 extendParams({ 3600 navigation: { 3601 nextEl: null, 3602 prevEl: null, 3603 hideOnClick: false, 3604 disabledClass: 'swiper-button-disabled', 3605 hiddenClass: 'swiper-button-hidden', 3606 lockClass: 'swiper-button-lock', 3607 navigationDisabledClass: 'swiper-navigation-disabled' 3608 } 3609 }); 3610 swiper.navigation = { 3611 nextEl: null, 3612 prevEl: null 3613 }; 3614 function getEl(el) { 3615 let res; 3616 if (el && typeof el === 'string' && swiper.isElement) { 3617 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 3618 if (res) return res; 3619 } 3620 if (el) { 3621 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 3622 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 3623 res = swiper.el.querySelector(el); 3624 } else if (res && res.length === 1) { 3625 res = res[0]; 3626 } 3627 } 3628 if (el && !res) return el; 3629 // if (Array.isArray(res) && res.length === 1) res = res[0]; 3630 return res; 3631 } 3632 function toggleEl(el, disabled) { 3633 const params = swiper.params.navigation; 3634 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 3635 el.forEach(subEl => { 3636 if (subEl) { 3637 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 3638 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 3639 if (swiper.params.watchOverflow && swiper.enabled) { 3640 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 3641 } 3642 } 3643 }); 3644 } 3645 function update() { 3646 // Update Navigation Buttons 3647 const { 3648 nextEl, 3649 prevEl 3650 } = swiper.navigation; 3651 if (swiper.params.loop) { 3652 toggleEl(prevEl, false); 3653 toggleEl(nextEl, false); 3654 return; 3655 } 3656 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 3657 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 3658 } 3659 function onPrevClick(e) { 3660 e.preventDefault(); 3661 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 3662 swiper.slidePrev(); 3663 emit('navigationPrev'); 3664 } 3665 function onNextClick(e) { 3666 e.preventDefault(); 3667 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 3668 swiper.slideNext(); 3669 emit('navigationNext'); 3670 } 3671 function init() { 3672 const params = swiper.params.navigation; 3673 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 3674 nextEl: 'swiper-button-next', 3675 prevEl: 'swiper-button-prev' 3676 }); 3677 if (!(params.nextEl || params.prevEl)) return; 3678 let nextEl = getEl(params.nextEl); 3679 let prevEl = getEl(params.prevEl); 3680 Object.assign(swiper.navigation, { 3681 nextEl, 3682 prevEl 3683 }); 3684 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3685 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3686 const initButton = (el, dir) => { 3687 if (el) { 3688 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3689 } 3690 if (!swiper.enabled && el) { 3691 el.classList.add(...params.lockClass.split(' ')); 3692 } 3693 }; 3694 nextEl.forEach(el => initButton(el, 'next')); 3695 prevEl.forEach(el => initButton(el, 'prev')); 3696 } 3697 function destroy() { 3698 let { 3699 nextEl, 3700 prevEl 3701 } = swiper.navigation; 3702 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3703 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3704 const destroyButton = (el, dir) => { 3705 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 3706 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 3707 }; 3708 nextEl.forEach(el => destroyButton(el, 'next')); 3709 prevEl.forEach(el => destroyButton(el, 'prev')); 3710 } 3711 on('init', () => { 3712 if (swiper.params.navigation.enabled === false) { 3713 // eslint-disable-next-line 3714 disable(); 3715 } else { 3716 init(); 3717 update(); 3718 } 3719 }); 3720 on('toEdge fromEdge lock unlock', () => { 3721 update(); 3722 }); 3723 on('destroy', () => { 3724 destroy(); 3725 }); 3726 on('enable disable', () => { 3727 let { 3728 nextEl, 3729 prevEl 3730 } = swiper.navigation; 3731 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3732 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3733 if (swiper.enabled) { 3734 update(); 3735 return; 3736 } 3737 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 3738 }); 3739 on('click', (_s, e) => { 3740 let { 3741 nextEl, 3742 prevEl 3743 } = swiper.navigation; 3744 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 3745 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 3746 const targetEl = e.target; 3747 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 3748 if (swiper.isElement && !targetIsButton) { 3749 const path = e.path || e.composedPath && e.composedPath(); 3750 if (path) { 3751 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 3752 } 3753 } 3754 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 3755 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 3756 let isHidden; 3757 if (nextEl.length) { 3758 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3759 } else if (prevEl.length) { 3760 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 3761 } 3762 if (isHidden === true) { 3763 emit('navigationShow'); 3764 } else { 3765 emit('navigationHide'); 3766 } 3767 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 3768 } 3769 }); 3770 const enable = () => { 3771 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3772 init(); 3773 update(); 3774 }; 3775 const disable = () => { 3776 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 3777 destroy(); 3778 }; 3779 Object.assign(swiper.navigation, { 3780 enable, 3781 disable, 3782 update, 3783 init, 3784 destroy 3785 }); 3786} 3787 3788 3789 3790 3791/***/ }), 3792
vendor: 19,121 bytes, lines 3793-4269
3793/***/ "./node_modules/swiper/modules/pagination.mjs": 3794/*!****************************************************!*\ 3795 !*** ./node_modules/swiper/modules/pagination.mjs ***! 3796 \****************************************************/ 3797/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3798 3799__webpack_require__.r(__webpack_exports__); 3800/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3801/* harmony export */ "default": () => (/* binding */ Pagination) 3802/* harmony export */ }); 3803/* 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"); 3804/* 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"); 3805/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3806 3807 3808 3809 3810function Pagination(_ref) { 3811 let { 3812 swiper, 3813 extendParams, 3814 on, 3815 emit 3816 } = _ref; 3817 const pfx = 'swiper-pagination'; 3818 extendParams({ 3819 pagination: { 3820 el: null, 3821 bulletElement: 'span', 3822 clickable: false, 3823 hideOnClick: false, 3824 renderBullet: null, 3825 renderProgressbar: null, 3826 renderFraction: null, 3827 renderCustom: null, 3828 progressbarOpposite: false, 3829 type: 'bullets', 3830 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 3831 dynamicBullets: false, 3832 dynamicMainBullets: 1, 3833 formatFractionCurrent: number => number, 3834 formatFractionTotal: number => number, 3835 bulletClass: `${pfx}-bullet`, 3836 bulletActiveClass: `${pfx}-bullet-active`, 3837 modifierClass: `${pfx}-`, 3838 currentClass: `${pfx}-current`, 3839 totalClass: `${pfx}-total`, 3840 hiddenClass: `${pfx}-hidden`, 3841 progressbarFillClass: `${pfx}-progressbar-fill`, 3842 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 3843 clickableClass: `${pfx}-clickable`, 3844 lockClass: `${pfx}-lock`, 3845 horizontalClass: `${pfx}-horizontal`, 3846 verticalClass: `${pfx}-vertical`, 3847 paginationDisabledClass: `${pfx}-disabled` 3848 } 3849 }); 3850 swiper.pagination = { 3851 el: null, 3852 bullets: [] 3853 }; 3854 let bulletSize; 3855 let dynamicBulletIndex = 0; 3856 function isPaginationDisabled() { 3857 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 3858 } 3859 function setSideBullets(bulletEl, position) { 3860 const { 3861 bulletActiveClass 3862 } = swiper.params.pagination; 3863 if (!bulletEl) return; 3864 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3865 if (bulletEl) { 3866 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 3867 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 3868 if (bulletEl) { 3869 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 3870 } 3871 } 3872 } 3873 function getMoveDirection(prevIndex, nextIndex, length) { 3874 prevIndex = prevIndex % length; 3875 nextIndex = nextIndex % length; 3876 if (nextIndex === prevIndex + 1) { 3877 return 'next'; 3878 } else if (nextIndex === prevIndex - 1) { 3879 return 'previous'; 3880 } 3881 return; 3882 } 3883 function onBulletClick(e) { 3884 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 3885 if (!bulletEl) { 3886 return; 3887 } 3888 e.preventDefault(); 3889 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bulletEl) * swiper.params.slidesPerGroup; 3890 if (swiper.params.loop) { 3891 if (swiper.realIndex === index) return; 3892 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); 3893 if (moveDirection === 'next') { 3894 swiper.slideNext(); 3895 } else if (moveDirection === 'previous') { 3896 swiper.slidePrev(); 3897 } else { 3898 swiper.slideToLoop(index); 3899 } 3900 } else { 3901 swiper.slideTo(index); 3902 } 3903 } 3904 function update() { 3905 // Render || Update Pagination bullets/items 3906 const rtl = swiper.rtl; 3907 const params = swiper.params.pagination; 3908 if (isPaginationDisabled()) return; 3909 let el = swiper.pagination.el; 3910 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 3911 // Current/Total 3912 let current; 3913 let previousIndex; 3914 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 3915 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 3916 if (swiper.params.loop) { 3917 previousIndex = swiper.previousRealIndex || 0; 3918 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 3919 } else if (typeof swiper.snapIndex !== 'undefined') { 3920 current = swiper.snapIndex; 3921 previousIndex = swiper.previousSnapIndex; 3922 } else { 3923 previousIndex = swiper.previousIndex || 0; 3924 current = swiper.activeIndex || 0; 3925 } 3926 // Types 3927 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 3928 const bullets = swiper.pagination.bullets; 3929 let firstIndex; 3930 let lastIndex; 3931 let midIndex; 3932 if (params.dynamicBullets) { 3933 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 3934 el.forEach(subEl => { 3935 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 3936 }); 3937 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 3938 dynamicBulletIndex += current - (previousIndex || 0); 3939 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 3940 dynamicBulletIndex = params.dynamicMainBullets - 1; 3941 } else if (dynamicBulletIndex < 0) { 3942 dynamicBulletIndex = 0; 3943 } 3944 } 3945 firstIndex = Math.max(current - dynamicBulletIndex, 0); 3946 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 3947 midIndex = (lastIndex + firstIndex) / 2; 3948 } 3949 bullets.forEach(bulletEl => { 3950 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(); 3951 bulletEl.classList.remove(...classesToRemove); 3952 }); 3953 if (el.length > 1) { 3954 bullets.forEach(bullet => { 3955 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.i)(bullet); 3956 if (bulletIndex === current) { 3957 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3958 } else if (swiper.isElement) { 3959 bullet.setAttribute('part', 'bullet'); 3960 } 3961 if (params.dynamicBullets) { 3962 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 3963 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3964 } 3965 if (bulletIndex === firstIndex) { 3966 setSideBullets(bullet, 'prev'); 3967 } 3968 if (bulletIndex === lastIndex) { 3969 setSideBullets(bullet, 'next'); 3970 } 3971 } 3972 }); 3973 } else { 3974 const bullet = bullets[current]; 3975 if (bullet) { 3976 bullet.classList.add(...params.bulletActiveClass.split(' ')); 3977 } 3978 if (swiper.isElement) { 3979 bullets.forEach((bulletEl, bulletIndex) => { 3980 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 3981 }); 3982 } 3983 if (params.dynamicBullets) { 3984 const firstDisplayedBullet = bullets[firstIndex]; 3985 const lastDisplayedBullet = bullets[lastIndex]; 3986 for (let i = firstIndex; i <= lastIndex; i += 1) { 3987 if (bullets[i]) { 3988 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 3989 } 3990 } 3991 setSideBullets(firstDisplayedBullet, 'prev'); 3992 setSideBullets(lastDisplayedBullet, 'next'); 3993 } 3994 } 3995 if (params.dynamicBullets) { 3996 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 3997 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 3998 const offsetProp = rtl ? 'right' : 'left'; 3999 bullets.forEach(bullet => { 4000 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 4001 }); 4002 } 4003 } 4004 el.forEach((subEl, subElIndex) => { 4005 if (params.type === 'fraction') { 4006 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 4007 fractionEl.textContent = params.formatFractionCurrent(current + 1); 4008 }); 4009 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 4010 totalEl.textContent = params.formatFractionTotal(total); 4011 }); 4012 } 4013 if (params.type === 'progressbar') { 4014 let progressbarDirection; 4015 if (params.progressbarOpposite) { 4016 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 4017 } else { 4018 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 4019 } 4020 const scale = (current + 1) / total; 4021 let scaleX = 1; 4022 let scaleY = 1; 4023 if (progressbarDirection === 'horizontal') { 4024 scaleX = scale; 4025 } else { 4026 scaleY = scale; 4027 } 4028 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 4029 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 4030 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 4031 }); 4032 } 4033 if (params.type === 'custom' && params.renderCustom) { 4034 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, params.renderCustom(swiper, current + 1, total)); 4035 if (subElIndex === 0) emit('paginationRender', subEl); 4036 } else { 4037 if (subElIndex === 0) emit('paginationRender', subEl); 4038 emit('paginationUpdate', subEl); 4039 } 4040 if (swiper.params.watchOverflow && swiper.enabled) { 4041 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 4042 } 4043 }); 4044 } 4045 function render() { 4046 // Render Container 4047 const params = swiper.params.pagination; 4048 if (isPaginationDisabled()) return; 4049 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; 4050 let el = swiper.pagination.el; 4051 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4052 let paginationHTML = ''; 4053 if (params.type === 'bullets') { 4054 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 4055 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 4056 numberOfBullets = slidesLength; 4057 } 4058 for (let i = 0; i < numberOfBullets; i += 1) { 4059 if (params.renderBullet) { 4060 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 4061 } else { 4062 // prettier-ignore 4063 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 4064 } 4065 } 4066 } 4067 if (params.type === 'fraction') { 4068 if (params.renderFraction) { 4069 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 4070 } else { 4071 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 4072 } 4073 } 4074 if (params.type === 'progressbar') { 4075 if (params.renderProgressbar) { 4076 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 4077 } else { 4078 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 4079 } 4080 } 4081 swiper.pagination.bullets = []; 4082 el.forEach(subEl => { 4083 if (params.type !== 'custom') { 4084 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.s)(subEl, paginationHTML || ''); 4085 } 4086 if (params.type === 'bullets') { 4087 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 4088 } 4089 }); 4090 if (params.type !== 'custom') { 4091 emit('paginationRender', el[0]); 4092 } 4093 } 4094 function init() { 4095 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 4096 el: 'swiper-pagination' 4097 }); 4098 const params = swiper.params.pagination; 4099 if (!params.el) return; 4100 let el; 4101 if (typeof params.el === 'string' && swiper.isElement) { 4102 el = swiper.el.querySelector(params.el); 4103 } 4104 if (!el && typeof params.el === 'string') { 4105 el = [...document.querySelectorAll(params.el)]; 4106 } 4107 if (!el) { 4108 el = params.el; 4109 } 4110 if (!el || el.length === 0) return; 4111 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 4112 el = [...swiper.el.querySelectorAll(params.el)]; 4113 // check if it belongs to another nested Swiper 4114 if (el.length > 1) { 4115 el = el.find(subEl => { 4116 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.b)(subEl, '.swiper')[0] !== swiper.el) return false; 4117 return true; 4118 }); 4119 } 4120 } 4121 if (Array.isArray(el) && el.length === 1) el = el[0]; 4122 Object.assign(swiper.pagination, { 4123 el 4124 }); 4125 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4126 el.forEach(subEl => { 4127 if (params.type === 'bullets' && params.clickable) { 4128 subEl.classList.add(...(params.clickableClass || '').split(' ')); 4129 } 4130 subEl.classList.add(params.modifierClass + params.type); 4131 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4132 if (params.type === 'bullets' && params.dynamicBullets) { 4133 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 4134 dynamicBulletIndex = 0; 4135 if (params.dynamicMainBullets < 1) { 4136 params.dynamicMainBullets = 1; 4137 } 4138 } 4139 if (params.type === 'progressbar' && params.progressbarOpposite) { 4140 subEl.classList.add(params.progressbarOppositeClass); 4141 } 4142 if (params.clickable) { 4143 subEl.addEventListener('click', onBulletClick); 4144 } 4145 if (!swiper.enabled) { 4146 subEl.classList.add(params.lockClass); 4147 } 4148 }); 4149 } 4150 function destroy() { 4151 const params = swiper.params.pagination; 4152 if (isPaginationDisabled()) return; 4153 let el = swiper.pagination.el; 4154 if (el) { 4155 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4156 el.forEach(subEl => { 4157 subEl.classList.remove(params.hiddenClass); 4158 subEl.classList.remove(params.modifierClass + params.type); 4159 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4160 if (params.clickable) { 4161 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 4162 subEl.removeEventListener('click', onBulletClick); 4163 } 4164 }); 4165 } 4166 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 4167 } 4168 on('changeDirection', () => { 4169 if (!swiper.pagination || !swiper.pagination.el) return; 4170 const params = swiper.params.pagination; 4171 let { 4172 el 4173 } = swiper.pagination; 4174 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4175 el.forEach(subEl => { 4176 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4177 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4178 }); 4179 }); 4180 on('init', () => { 4181 if (swiper.params.pagination.enabled === false) { 4182 // eslint-disable-next-line 4183 disable(); 4184 } else { 4185 init(); 4186 render(); 4187 update(); 4188 } 4189 }); 4190 on('activeIndexChange', () => { 4191 if (typeof swiper.snapIndex === 'undefined') { 4192 update(); 4193 } 4194 }); 4195 on('snapIndexChange', () => { 4196 update(); 4197 }); 4198 on('snapGridLengthChange', () => { 4199 render(); 4200 update(); 4201 }); 4202 on('destroy', () => { 4203 destroy(); 4204 }); 4205 on('enable disable', () => { 4206 let { 4207 el 4208 } = swiper.pagination; 4209 if (el) { 4210 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4211 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 4212 } 4213 }); 4214 on('lock unlock', () => { 4215 update(); 4216 }); 4217 on('click', (_s, e) => { 4218 const targetEl = e.target; 4219 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 4220 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 4221 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 4222 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 4223 if (isHidden === true) { 4224 emit('paginationShow'); 4225 } else { 4226 emit('paginationHide'); 4227 } 4228 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 4229 } 4230 }); 4231 const enable = () => { 4232 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 4233 let { 4234 el 4235 } = swiper.pagination; 4236 if (el) { 4237 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4238 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 4239 } 4240 init(); 4241 render(); 4242 update(); 4243 }; 4244 const disable = () => { 4245 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 4246 let { 4247 el 4248 } = swiper.pagination; 4249 if (el) { 4250 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 4251 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 4252 } 4253 destroy(); 4254 }; 4255 Object.assign(swiper.pagination, { 4256 enable, 4257 disable, 4258 render, 4259 update, 4260 init, 4261 destroy 4262 }); 4263} 4264 4265 4266 4267 4268/***/ }), 4269
vendor: 4,684 bytes, lines 4270-4408
4270/***/ "./node_modules/swiper/modules/parallax.mjs": 4271/*!**************************************************!*\ 4272 !*** ./node_modules/swiper/modules/parallax.mjs ***! 4273 \**************************************************/ 4274/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4275 4276__webpack_require__.r(__webpack_exports__); 4277/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4278/* harmony export */ "default": () => (/* binding */ Parallax) 4279/* harmony export */ }); 4280/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4281 4282 4283function Parallax(_ref) { 4284 let { 4285 swiper, 4286 extendParams, 4287 on 4288 } = _ref; 4289 extendParams({ 4290 parallax: { 4291 enabled: false 4292 } 4293 }); 4294 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 4295 const setTransform = (el, progress) => { 4296 const { 4297 rtl 4298 } = swiper; 4299 const rtlFactor = rtl ? -1 : 1; 4300 const p = el.getAttribute('data-swiper-parallax') || '0'; 4301 let x = el.getAttribute('data-swiper-parallax-x'); 4302 let y = el.getAttribute('data-swiper-parallax-y'); 4303 const scale = el.getAttribute('data-swiper-parallax-scale'); 4304 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 4305 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 4306 if (x || y) { 4307 x = x || '0'; 4308 y = y || '0'; 4309 } else if (swiper.isHorizontal()) { 4310 x = p; 4311 y = '0'; 4312 } else { 4313 y = p; 4314 x = '0'; 4315 } 4316 if (x.indexOf('%') >= 0) { 4317 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 4318 } else { 4319 x = `${x * progress * rtlFactor}px`; 4320 } 4321 if (y.indexOf('%') >= 0) { 4322 y = `${parseInt(y, 10) * progress}%`; 4323 } else { 4324 y = `${y * progress}px`; 4325 } 4326 if (typeof opacity !== 'undefined' && opacity !== null) { 4327 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 4328 el.style.opacity = currentOpacity; 4329 } 4330 let transform = `translate3d(${x}, ${y}, 0px)`; 4331 if (typeof scale !== 'undefined' && scale !== null) { 4332 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 4333 transform += ` scale(${currentScale})`; 4334 } 4335 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 4336 const currentRotate = rotate * progress * -1; 4337 transform += ` rotate(${currentRotate}deg)`; 4338 } 4339 el.style.transform = transform; 4340 }; 4341 const setTranslate = () => { 4342 const { 4343 el, 4344 slides, 4345 progress, 4346 snapGrid, 4347 isElement 4348 } = swiper; 4349 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 4350 if (swiper.isElement) { 4351 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 4352 } 4353 elements.forEach(subEl => { 4354 setTransform(subEl, progress); 4355 }); 4356 slides.forEach((slideEl, slideIndex) => { 4357 let slideProgress = slideEl.progress; 4358 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 4359 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 4360 } 4361 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 4362 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 4363 setTransform(subEl, slideProgress); 4364 }); 4365 }); 4366 }; 4367 const setTransition = function (duration) { 4368 if (duration === void 0) { 4369 duration = swiper.params.speed; 4370 } 4371 const { 4372 el, 4373 hostEl 4374 } = swiper; 4375 const elements = [...el.querySelectorAll(elementsSelector)]; 4376 if (swiper.isElement) { 4377 elements.push(...hostEl.querySelectorAll(elementsSelector)); 4378 } 4379 elements.forEach(parallaxEl => { 4380 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 4381 if (duration === 0) parallaxDuration = 0; 4382 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 4383 }); 4384 }; 4385 on('beforeInit', () => { 4386 if (!swiper.params.parallax.enabled) return; 4387 swiper.params.watchSlidesProgress = true; 4388 swiper.originalParams.watchSlidesProgress = true; 4389 }); 4390 on('init', () => { 4391 if (!swiper.params.parallax.enabled) return; 4392 setTranslate(); 4393 }); 4394 on('setTranslate', () => { 4395 if (!swiper.params.parallax.enabled) return; 4396 setTranslate(); 4397 }); 4398 on('setTransition', (_swiper, duration) => { 4399 if (!swiper.params.parallax.enabled) return; 4400 setTransition(duration); 4401 }); 4402} 4403 4404 4405 4406 4407/***/ }), 4408
vendor: 12,517 bytes, lines 4409-4792
4409/***/ "./node_modules/swiper/modules/scrollbar.mjs": 4410/*!***************************************************!*\ 4411 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 4412 \***************************************************/ 4413/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4414 4415__webpack_require__.r(__webpack_exports__); 4416/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4417/* harmony export */ "default": () => (/* binding */ Scrollbar) 4418/* harmony export */ }); 4419/* 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"); 4420/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4421/* 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"); 4422/* 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"); 4423 4424 4425 4426 4427 4428function Scrollbar(_ref) { 4429 let { 4430 swiper, 4431 extendParams, 4432 on, 4433 emit 4434 } = _ref; 4435 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4436 let isTouched = false; 4437 let timeout = null; 4438 let dragTimeout = null; 4439 let dragStartPos; 4440 let dragSize; 4441 let trackSize; 4442 let divider; 4443 extendParams({ 4444 scrollbar: { 4445 el: null, 4446 dragSize: 'auto', 4447 hide: false, 4448 draggable: false, 4449 snapOnRelease: true, 4450 lockClass: 'swiper-scrollbar-lock', 4451 dragClass: 'swiper-scrollbar-drag', 4452 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 4453 horizontalClass: `swiper-scrollbar-horizontal`, 4454 verticalClass: `swiper-scrollbar-vertical` 4455 } 4456 }); 4457 swiper.scrollbar = { 4458 el: null, 4459 dragEl: null 4460 }; 4461 function setTranslate() { 4462 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4463 const { 4464 scrollbar, 4465 rtlTranslate: rtl 4466 } = swiper; 4467 const { 4468 dragEl, 4469 el 4470 } = scrollbar; 4471 const params = swiper.params.scrollbar; 4472 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 4473 let newSize = dragSize; 4474 let newPos = (trackSize - dragSize) * progress; 4475 if (rtl) { 4476 newPos = -newPos; 4477 if (newPos > 0) { 4478 newSize = dragSize - newPos; 4479 newPos = 0; 4480 } else if (-newPos + dragSize > trackSize) { 4481 newSize = trackSize + newPos; 4482 } 4483 } else if (newPos < 0) { 4484 newSize = dragSize + newPos; 4485 newPos = 0; 4486 } else if (newPos + dragSize > trackSize) { 4487 newSize = trackSize - newPos; 4488 } 4489 if (swiper.isHorizontal()) { 4490 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 4491 dragEl.style.width = `${newSize}px`; 4492 } else { 4493 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 4494 dragEl.style.height = `${newSize}px`; 4495 } 4496 if (params.hide) { 4497 clearTimeout(timeout); 4498 el.style.opacity = 1; 4499 timeout = setTimeout(() => { 4500 el.style.opacity = 0; 4501 el.style.transitionDuration = '400ms'; 4502 }, 1000); 4503 } 4504 } 4505 function setTransition(duration) { 4506 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4507 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 4508 } 4509 function updateSize() { 4510 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4511 const { 4512 scrollbar 4513 } = swiper; 4514 const { 4515 dragEl, 4516 el 4517 } = scrollbar; 4518 dragEl.style.width = ''; 4519 dragEl.style.height = ''; 4520 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 4521 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 4522 if (swiper.params.scrollbar.dragSize === 'auto') { 4523 dragSize = trackSize * divider; 4524 } else { 4525 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 4526 } 4527 if (swiper.isHorizontal()) { 4528 dragEl.style.width = `${dragSize}px`; 4529 } else { 4530 dragEl.style.height = `${dragSize}px`; 4531 } 4532 if (divider >= 1) { 4533 el.style.display = 'none'; 4534 } else { 4535 el.style.display = ''; 4536 } 4537 if (swiper.params.scrollbar.hide) { 4538 el.style.opacity = 0; 4539 } 4540 if (swiper.params.watchOverflow && swiper.enabled) { 4541 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 4542 } 4543 } 4544 function getPointerPosition(e) { 4545 return swiper.isHorizontal() ? e.clientX : e.clientY; 4546 } 4547 function setDragPosition(e) { 4548 const { 4549 scrollbar, 4550 rtlTranslate: rtl 4551 } = swiper; 4552 const { 4553 el 4554 } = scrollbar; 4555 let positionRatio; 4556 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 4557 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 4558 if (rtl) { 4559 positionRatio = 1 - positionRatio; 4560 } 4561 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 4562 swiper.updateProgress(position); 4563 swiper.setTranslate(position); 4564 swiper.updateActiveIndex(); 4565 swiper.updateSlidesClasses(); 4566 } 4567 function onDragStart(e) { 4568 const params = swiper.params.scrollbar; 4569 const { 4570 scrollbar, 4571 wrapperEl 4572 } = swiper; 4573 const { 4574 el, 4575 dragEl 4576 } = scrollbar; 4577 isTouched = true; 4578 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 4579 e.preventDefault(); 4580 e.stopPropagation(); 4581 wrapperEl.style.transitionDuration = '100ms'; 4582 dragEl.style.transitionDuration = '100ms'; 4583 setDragPosition(e); 4584 clearTimeout(dragTimeout); 4585 el.style.transitionDuration = '0ms'; 4586 if (params.hide) { 4587 el.style.opacity = 1; 4588 } 4589 if (swiper.params.cssMode) { 4590 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 4591 } 4592 emit('scrollbarDragStart', e); 4593 } 4594 function onDragMove(e) { 4595 const { 4596 scrollbar, 4597 wrapperEl 4598 } = swiper; 4599 const { 4600 el, 4601 dragEl 4602 } = scrollbar; 4603 if (!isTouched) return; 4604 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 4605 setDragPosition(e); 4606 wrapperEl.style.transitionDuration = '0ms'; 4607 el.style.transitionDuration = '0ms'; 4608 dragEl.style.transitionDuration = '0ms'; 4609 emit('scrollbarDragMove', e); 4610 } 4611 function onDragEnd(e) { 4612 const params = swiper.params.scrollbar; 4613 const { 4614 scrollbar, 4615 wrapperEl 4616 } = swiper; 4617 const { 4618 el 4619 } = scrollbar; 4620 if (!isTouched) return; 4621 isTouched = false; 4622 if (swiper.params.cssMode) { 4623 swiper.wrapperEl.style['scroll-snap-type'] = ''; 4624 wrapperEl.style.transitionDuration = ''; 4625 } 4626 if (params.hide) { 4627 clearTimeout(dragTimeout); 4628 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 4629 el.style.opacity = 0; 4630 el.style.transitionDuration = '400ms'; 4631 }, 1000); 4632 } 4633 emit('scrollbarDragEnd', e); 4634 if (params.snapOnRelease) { 4635 swiper.slideToClosest(); 4636 } 4637 } 4638 function events(method) { 4639 const { 4640 scrollbar, 4641 params 4642 } = swiper; 4643 const el = scrollbar.el; 4644 if (!el) return; 4645 const target = el; 4646 const activeListener = params.passiveListeners ? { 4647 passive: false, 4648 capture: false 4649 } : false; 4650 const passiveListener = params.passiveListeners ? { 4651 passive: true, 4652 capture: false 4653 } : false; 4654 if (!target) return; 4655 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 4656 target[eventMethod]('pointerdown', onDragStart, activeListener); 4657 document[eventMethod]('pointermove', onDragMove, activeListener); 4658 document[eventMethod]('pointerup', onDragEnd, passiveListener); 4659 } 4660 function enableDraggable() { 4661 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4662 events('on'); 4663 } 4664 function disableDraggable() { 4665 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 4666 events('off'); 4667 } 4668 function init() { 4669 const { 4670 scrollbar, 4671 el: swiperEl 4672 } = swiper; 4673 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 4674 el: 'swiper-scrollbar' 4675 }); 4676 const params = swiper.params.scrollbar; 4677 if (!params.el) return; 4678 let el; 4679 if (typeof params.el === 'string' && swiper.isElement) { 4680 el = swiper.el.querySelector(params.el); 4681 } 4682 if (!el && typeof params.el === 'string') { 4683 el = document.querySelectorAll(params.el); 4684 if (!el.length) return; 4685 } else if (!el) { 4686 el = params.el; 4687 } 4688 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 4689 el = swiperEl.querySelector(params.el); 4690 } 4691 if (el.length > 0) el = el[0]; 4692 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4693 let dragEl; 4694 if (el) { 4695 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 4696 if (!dragEl) { 4697 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 4698 el.append(dragEl); 4699 } 4700 } 4701 Object.assign(scrollbar, { 4702 el, 4703 dragEl 4704 }); 4705 if (params.draggable) { 4706 enableDraggable(); 4707 } 4708 if (el) { 4709 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass)); 4710 } 4711 } 4712 function destroy() { 4713 const params = swiper.params.scrollbar; 4714 const el = swiper.scrollbar.el; 4715 if (el) { 4716 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 4717 } 4718 disableDraggable(); 4719 } 4720 on('changeDirection', () => { 4721 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 4722 const params = swiper.params.scrollbar; 4723 let { 4724 el 4725 } = swiper.scrollbar; 4726 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 4727 el.forEach(subEl => { 4728 subEl.classList.remove(params.horizontalClass, params.verticalClass); 4729 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 4730 }); 4731 }); 4732 on('init', () => { 4733 if (swiper.params.scrollbar.enabled === false) { 4734 // eslint-disable-next-line 4735 disable(); 4736 } else { 4737 init(); 4738 updateSize(); 4739 setTranslate(); 4740 } 4741 }); 4742 on('update resize observerUpdate lock unlock changeDirection', () => { 4743 updateSize(); 4744 }); 4745 on('setTranslate', () => { 4746 setTranslate(); 4747 }); 4748 on('setTransition', (_s, duration) => { 4749 setTransition(duration); 4750 }); 4751 on('enable disable', () => { 4752 const { 4753 el 4754 } = swiper.scrollbar; 4755 if (el) { 4756 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.lockClass)); 4757 } 4758 }); 4759 on('destroy', () => { 4760 destroy(); 4761 }); 4762 const enable = () => { 4763 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4764 if (swiper.scrollbar.el) { 4765 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4766 } 4767 init(); 4768 updateSize(); 4769 setTranslate(); 4770 }; 4771 const disable = () => { 4772 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4773 if (swiper.scrollbar.el) { 4774 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(swiper.params.scrollbar.scrollbarDisabledClass)); 4775 } 4776 destroy(); 4777 }; 4778 Object.assign(swiper.scrollbar, { 4779 enable, 4780 disable, 4781 updateSize, 4782 setTranslate, 4783 init, 4784 destroy 4785 }); 4786} 4787 4788 4789 4790 4791/***/ }), 4792
vendor: 8,179 bytes, lines 4793-5005
4793/***/ "./node_modules/swiper/modules/thumbs.mjs": 4794/*!************************************************!*\ 4795 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 4796 \************************************************/ 4797/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4798 4799__webpack_require__.r(__webpack_exports__); 4800/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4801/* harmony export */ "default": () => (/* binding */ Thumb) 4802/* harmony export */ }); 4803/* 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"); 4804/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4805 4806 4807 4808function Thumb(_ref) { 4809 let { 4810 swiper, 4811 extendParams, 4812 on 4813 } = _ref; 4814 extendParams({ 4815 thumbs: { 4816 swiper: null, 4817 multipleActiveThumbs: true, 4818 autoScrollOffset: 0, 4819 slideThumbActiveClass: 'swiper-slide-thumb-active', 4820 thumbsContainerClass: 'swiper-thumbs' 4821 } 4822 }); 4823 let initialized = false; 4824 let swiperCreated = false; 4825 swiper.thumbs = { 4826 swiper: null 4827 }; 4828 function onThumbClick() { 4829 const thumbsSwiper = swiper.thumbs.swiper; 4830 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4831 const clickedIndex = thumbsSwiper.clickedIndex; 4832 const clickedSlide = thumbsSwiper.clickedSlide; 4833 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 4834 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 4835 let slideToIndex; 4836 if (thumbsSwiper.params.loop) { 4837 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 4838 } else { 4839 slideToIndex = clickedIndex; 4840 } 4841 if (swiper.params.loop) { 4842 swiper.slideToLoop(slideToIndex); 4843 } else { 4844 swiper.slideTo(slideToIndex); 4845 } 4846 } 4847 function init() { 4848 const { 4849 thumbs: thumbsParams 4850 } = swiper.params; 4851 if (initialized) return false; 4852 initialized = true; 4853 const SwiperClass = swiper.constructor; 4854 if (thumbsParams.swiper instanceof SwiperClass) { 4855 if (thumbsParams.swiper.destroyed) { 4856 initialized = false; 4857 return false; 4858 } 4859 swiper.thumbs.swiper = thumbsParams.swiper; 4860 Object.assign(swiper.thumbs.swiper.originalParams, { 4861 watchSlidesProgress: true, 4862 slideToClickedSlide: false 4863 }); 4864 Object.assign(swiper.thumbs.swiper.params, { 4865 watchSlidesProgress: true, 4866 slideToClickedSlide: false 4867 }); 4868 swiper.thumbs.swiper.update(); 4869 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(thumbsParams.swiper)) { 4870 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 4871 Object.assign(thumbsSwiperParams, { 4872 watchSlidesProgress: true, 4873 slideToClickedSlide: false 4874 }); 4875 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 4876 swiperCreated = true; 4877 } 4878 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 4879 swiper.thumbs.swiper.on('tap', onThumbClick); 4880 return true; 4881 } 4882 function update(initial) { 4883 const thumbsSwiper = swiper.thumbs.swiper; 4884 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4885 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 4886 4887 // Activate thumbs 4888 let thumbsToActivate = 1; 4889 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 4890 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 4891 thumbsToActivate = swiper.params.slidesPerView; 4892 } 4893 if (!swiper.params.thumbs.multipleActiveThumbs) { 4894 thumbsToActivate = 1; 4895 } 4896 thumbsToActivate = Math.floor(thumbsToActivate); 4897 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 4898 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 4899 for (let i = 0; i < thumbsToActivate; i += 1) { 4900 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 4901 slideEl.classList.add(thumbActiveClass); 4902 }); 4903 } 4904 } else { 4905 for (let i = 0; i < thumbsToActivate; i += 1) { 4906 if (thumbsSwiper.slides[swiper.realIndex + i]) { 4907 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 4908 } 4909 } 4910 } 4911 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 4912 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 4913 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 4914 const currentThumbsIndex = thumbsSwiper.activeIndex; 4915 let newThumbsIndex; 4916 let direction; 4917 if (thumbsSwiper.params.loop) { 4918 const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`); 4919 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 4920 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 4921 } else { 4922 newThumbsIndex = swiper.realIndex; 4923 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 4924 } 4925 if (useOffset) { 4926 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 4927 } 4928 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 4929 if (thumbsSwiper.params.centeredSlides) { 4930 if (newThumbsIndex > currentThumbsIndex) { 4931 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 4932 } else { 4933 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 4934 } 4935 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 4936 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 4937 } 4938 } 4939 } 4940 on('beforeInit', () => { 4941 const { 4942 thumbs 4943 } = swiper.params; 4944 if (!thumbs || !thumbs.swiper) return; 4945 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 4946 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4947 const getThumbsElementAndInit = () => { 4948 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 4949 if (thumbsElement && thumbsElement.swiper) { 4950 thumbs.swiper = thumbsElement.swiper; 4951 init(); 4952 update(true); 4953 } else if (thumbsElement) { 4954 const eventName = `${swiper.params.eventsPrefix}init`; 4955 const onThumbsSwiper = e => { 4956 thumbs.swiper = e.detail[0]; 4957 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 4958 init(); 4959 update(true); 4960 thumbs.swiper.update(); 4961 swiper.update(); 4962 }; 4963 thumbsElement.addEventListener(eventName, onThumbsSwiper); 4964 } 4965 return thumbsElement; 4966 }; 4967 const watchForThumbsToAppear = () => { 4968 if (swiper.destroyed) return; 4969 const thumbsElement = getThumbsElementAndInit(); 4970 if (!thumbsElement) { 4971 requestAnimationFrame(watchForThumbsToAppear); 4972 } 4973 }; 4974 requestAnimationFrame(watchForThumbsToAppear); 4975 } else { 4976 init(); 4977 update(true); 4978 } 4979 }); 4980 on('slideChange update resize observerUpdate', () => { 4981 update(); 4982 }); 4983 on('setTransition', (_s, duration) => { 4984 const thumbsSwiper = swiper.thumbs.swiper; 4985 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4986 thumbsSwiper.setTransition(duration); 4987 }); 4988 on('beforeDestroy', () => { 4989 const thumbsSwiper = swiper.thumbs.swiper; 4990 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 4991 if (swiperCreated) { 4992 thumbsSwiper.destroy(); 4993 } 4994 }); 4995 Object.assign(swiper.thumbs, { 4996 init, 4997 update 4998 }); 4999} 5000 5001 5002 5003 5004/***/ }), 5005
vendor: 12,554 bytes, lines 5006-5370
5006/***/ "./node_modules/swiper/modules/virtual.mjs": 5007/*!*************************************************!*\ 5008 !*** ./node_modules/swiper/modules/virtual.mjs ***! 5009 \*************************************************/ 5010/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5011 5012__webpack_require__.r(__webpack_exports__); 5013/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5014/* harmony export */ "default": () => (/* binding */ Virtual) 5015/* harmony export */ }); 5016/* 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"); 5017/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5018 5019 5020 5021function Virtual(_ref) { 5022 let { 5023 swiper, 5024 extendParams, 5025 on, 5026 emit 5027 } = _ref; 5028 extendParams({ 5029 virtual: { 5030 enabled: false, 5031 slides: [], 5032 cache: true, 5033 renderSlide: null, 5034 renderExternal: null, 5035 renderExternalUpdate: true, 5036 addSlidesBefore: 0, 5037 addSlidesAfter: 0 5038 } 5039 }); 5040 let cssModeTimeout; 5041 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 5042 swiper.virtual = { 5043 cache: {}, 5044 from: undefined, 5045 to: undefined, 5046 slides: [], 5047 offset: 0, 5048 slidesGrid: [] 5049 }; 5050 const tempDOM = document.createElement('div'); 5051 function renderSlide(slide, index) { 5052 const params = swiper.params.virtual; 5053 if (params.cache && swiper.virtual.cache[index]) { 5054 return swiper.virtual.cache[index]; 5055 } 5056 // eslint-disable-next-line 5057 let slideEl; 5058 if (params.renderSlide) { 5059 slideEl = params.renderSlide.call(swiper, slide, index); 5060 if (typeof slideEl === 'string') { 5061 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(tempDOM, slideEl); 5062 slideEl = tempDOM.children[0]; 5063 } 5064 } else if (swiper.isElement) { 5065 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 5066 } else { 5067 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 5068 } 5069 slideEl.setAttribute('data-swiper-slide-index', index); 5070 if (!params.renderSlide) { 5071 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(slideEl, slide); 5072 } 5073 if (params.cache) { 5074 swiper.virtual.cache[index] = slideEl; 5075 } 5076 return slideEl; 5077 } 5078 function update(force, beforeInit, forceActiveIndex) { 5079 const { 5080 slidesPerView, 5081 slidesPerGroup, 5082 centeredSlides, 5083 loop: isLoop, 5084 initialSlide 5085 } = swiper.params; 5086 if (beforeInit && !isLoop && initialSlide > 0) { 5087 return; 5088 } 5089 const { 5090 addSlidesBefore, 5091 addSlidesAfter 5092 } = swiper.params.virtual; 5093 const { 5094 from: previousFrom, 5095 to: previousTo, 5096 slides, 5097 slidesGrid: previousSlidesGrid, 5098 offset: previousOffset 5099 } = swiper.virtual; 5100 if (!swiper.params.cssMode) { 5101 swiper.updateActiveIndex(); 5102 } 5103 const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex; 5104 let offsetProp; 5105 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 5106 let slidesAfter; 5107 let slidesBefore; 5108 if (centeredSlides) { 5109 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 5110 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 5111 } else { 5112 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 5113 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 5114 } 5115 let from = activeIndex - slidesBefore; 5116 let to = activeIndex + slidesAfter; 5117 if (!isLoop) { 5118 from = Math.max(from, 0); 5119 to = Math.min(to, slides.length - 1); 5120 } 5121 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 5122 if (isLoop && activeIndex >= slidesBefore) { 5123 from -= slidesBefore; 5124 if (!centeredSlides) offset += swiper.slidesGrid[0]; 5125 } else if (isLoop && activeIndex < slidesBefore) { 5126 from = -slidesBefore; 5127 if (centeredSlides) offset += swiper.slidesGrid[0]; 5128 } 5129 Object.assign(swiper.virtual, { 5130 from, 5131 to, 5132 offset, 5133 slidesGrid: swiper.slidesGrid, 5134 slidesBefore, 5135 slidesAfter 5136 }); 5137 function onRendered() { 5138 swiper.updateSlides(); 5139 swiper.updateProgress(); 5140 swiper.updateSlidesClasses(); 5141 emit('virtualUpdate'); 5142 } 5143 if (previousFrom === from && previousTo === to && !force) { 5144 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 5145 swiper.slides.forEach(slideEl => { 5146 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 5147 }); 5148 } 5149 swiper.updateProgress(); 5150 emit('virtualUpdate'); 5151 return; 5152 } 5153 if (swiper.params.virtual.renderExternal) { 5154 swiper.params.virtual.renderExternal.call(swiper, { 5155 offset, 5156 from, 5157 to, 5158 slides: function getSlides() { 5159 const slidesToRender = []; 5160 for (let i = from; i <= to; i += 1) { 5161 slidesToRender.push(slides[i]); 5162 } 5163 return slidesToRender; 5164 }() 5165 }); 5166 if (swiper.params.virtual.renderExternalUpdate) { 5167 onRendered(); 5168 } else { 5169 emit('virtualUpdate'); 5170 } 5171 return; 5172 } 5173 const prependIndexes = []; 5174 const appendIndexes = []; 5175 const getSlideIndex = index => { 5176 let slideIndex = index; 5177 if (index < 0) { 5178 slideIndex = slides.length + index; 5179 } else if (slideIndex >= slides.length) { 5180 // eslint-disable-next-line 5181 slideIndex = slideIndex - slides.length; 5182 } 5183 return slideIndex; 5184 }; 5185 if (force) { 5186 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 5187 slideEl.remove(); 5188 }); 5189 } else { 5190 for (let i = previousFrom; i <= previousTo; i += 1) { 5191 if (i < from || i > to) { 5192 const slideIndex = getSlideIndex(i); 5193 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 5194 slideEl.remove(); 5195 }); 5196 } 5197 } 5198 } 5199 const loopFrom = isLoop ? -slides.length : 0; 5200 const loopTo = isLoop ? slides.length * 2 : slides.length; 5201 for (let i = loopFrom; i < loopTo; i += 1) { 5202 if (i >= from && i <= to) { 5203 const slideIndex = getSlideIndex(i); 5204 if (typeof previousTo === 'undefined' || force) { 5205 appendIndexes.push(slideIndex); 5206 } else { 5207 if (i > previousTo) appendIndexes.push(slideIndex); 5208 if (i < previousFrom) prependIndexes.push(slideIndex); 5209 } 5210 } 5211 } 5212 appendIndexes.forEach(index => { 5213 swiper.slidesEl.append(renderSlide(slides[index], index)); 5214 }); 5215 if (isLoop) { 5216 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 5217 const index = prependIndexes[i]; 5218 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 5219 } 5220 } else { 5221 prependIndexes.sort((a, b) => b - a); 5222 prependIndexes.forEach(index => { 5223 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 5224 }); 5225 } 5226 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 5227 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 5228 }); 5229 onRendered(); 5230 } 5231 function appendSlide(slides) { 5232 if (typeof slides === 'object' && 'length' in slides) { 5233 for (let i = 0; i < slides.length; i += 1) { 5234 if (slides[i]) swiper.virtual.slides.push(slides[i]); 5235 } 5236 } else { 5237 swiper.virtual.slides.push(slides); 5238 } 5239 update(true); 5240 } 5241 function prependSlide(slides) { 5242 const activeIndex = swiper.activeIndex; 5243 let newActiveIndex = activeIndex + 1; 5244 let numberOfNewSlides = 1; 5245 if (Array.isArray(slides)) { 5246 for (let i = 0; i < slides.length; i += 1) { 5247 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 5248 } 5249 newActiveIndex = activeIndex + slides.length; 5250 numberOfNewSlides = slides.length; 5251 } else { 5252 swiper.virtual.slides.unshift(slides); 5253 } 5254 if (swiper.params.virtual.cache) { 5255 const cache = swiper.virtual.cache; 5256 const newCache = {}; 5257 Object.keys(cache).forEach(cachedIndex => { 5258 const cachedEl = cache[cachedIndex]; 5259 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 5260 if (cachedElIndex) { 5261 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 5262 } 5263 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 5264 }); 5265 swiper.virtual.cache = newCache; 5266 } 5267 update(true); 5268 swiper.slideTo(newActiveIndex, 0); 5269 } 5270 function removeSlide(slidesIndexes) { 5271 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 5272 let activeIndex = swiper.activeIndex; 5273 if (Array.isArray(slidesIndexes)) { 5274 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 5275 if (swiper.params.virtual.cache) { 5276 delete swiper.virtual.cache[slidesIndexes[i]]; 5277 // shift cache indexes 5278 Object.keys(swiper.virtual.cache).forEach(key => { 5279 if (key > slidesIndexes) { 5280 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5281 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5282 delete swiper.virtual.cache[key]; 5283 } 5284 }); 5285 } 5286 swiper.virtual.slides.splice(slidesIndexes[i], 1); 5287 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 5288 activeIndex = Math.max(activeIndex, 0); 5289 } 5290 } else { 5291 if (swiper.params.virtual.cache) { 5292 delete swiper.virtual.cache[slidesIndexes]; 5293 // shift cache indexes 5294 Object.keys(swiper.virtual.cache).forEach(key => { 5295 if (key > slidesIndexes) { 5296 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 5297 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 5298 delete swiper.virtual.cache[key]; 5299 } 5300 }); 5301 } 5302 swiper.virtual.slides.splice(slidesIndexes, 1); 5303 if (slidesIndexes < activeIndex) activeIndex -= 1; 5304 activeIndex = Math.max(activeIndex, 0); 5305 } 5306 update(true); 5307 swiper.slideTo(activeIndex, 0); 5308 } 5309 function removeAllSlides() { 5310 swiper.virtual.slides = []; 5311 if (swiper.params.virtual.cache) { 5312 swiper.virtual.cache = {}; 5313 } 5314 update(true); 5315 swiper.slideTo(0, 0); 5316 } 5317 on('beforeInit', () => { 5318 if (!swiper.params.virtual.enabled) return; 5319 let domSlidesAssigned; 5320 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 5321 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 5322 if (slides && slides.length) { 5323 swiper.virtual.slides = [...slides]; 5324 domSlidesAssigned = true; 5325 slides.forEach((slideEl, slideIndex) => { 5326 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 5327 swiper.virtual.cache[slideIndex] = slideEl; 5328 slideEl.remove(); 5329 }); 5330 } 5331 } 5332 if (!domSlidesAssigned) { 5333 swiper.virtual.slides = swiper.params.virtual.slides; 5334 } 5335 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 5336 swiper.params.watchSlidesProgress = true; 5337 swiper.originalParams.watchSlidesProgress = true; 5338 update(false, true); 5339 }); 5340 on('setTranslate', () => { 5341 if (!swiper.params.virtual.enabled) return; 5342 if (swiper.params.cssMode && !swiper._immediateVirtual) { 5343 clearTimeout(cssModeTimeout); 5344 cssModeTimeout = setTimeout(() => { 5345 update(); 5346 }, 100); 5347 } else { 5348 update(); 5349 } 5350 }); 5351 on('init update resize', () => { 5352 if (!swiper.params.virtual.enabled) return; 5353 if (swiper.params.cssMode) { 5354 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 5355 } 5356 }); 5357 Object.assign(swiper.virtual, { 5358 appendSlide, 5359 prependSlide, 5360 removeSlide, 5361 removeAllSlides, 5362 update 5363 }); 5364} 5365 5366 5367 5368 5369/***/ }), 5370
vendor: 26,487 bytes, lines 5371-6087
5371/***/ "./node_modules/swiper/modules/zoom.mjs": 5372/*!**********************************************!*\ 5373 !*** ./node_modules/swiper/modules/zoom.mjs ***! 5374 \**********************************************/ 5375/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 5376 5377__webpack_require__.r(__webpack_exports__); 5378/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5379/* harmony export */ "default": () => (/* binding */ Zoom) 5380/* harmony export */ }); 5381/* 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"); 5382/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5383 5384 5385 5386function Zoom(_ref) { 5387 let { 5388 swiper, 5389 extendParams, 5390 on, 5391 emit 5392 } = _ref; 5393 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5394 extendParams({ 5395 zoom: { 5396 enabled: false, 5397 limitToOriginalSize: false, 5398 maxRatio: 3, 5399 minRatio: 1, 5400 panOnMouseMove: false, 5401 toggle: true, 5402 containerClass: 'swiper-zoom-container', 5403 zoomedSlideClass: 'swiper-slide-zoomed' 5404 } 5405 }); 5406 swiper.zoom = { 5407 enabled: false 5408 }; 5409 let currentScale = 1; 5410 let isScaling = false; 5411 let isPanningWithMouse = false; 5412 let mousePanStart = { 5413 x: 0, 5414 y: 0 5415 }; 5416 const mousePanSensitivity = -3; // Negative to invert pan direction 5417 let fakeGestureTouched; 5418 let fakeGestureMoved; 5419 const evCache = []; 5420 const gesture = { 5421 originX: 0, 5422 originY: 0, 5423 slideEl: undefined, 5424 slideWidth: undefined, 5425 slideHeight: undefined, 5426 imageEl: undefined, 5427 imageWrapEl: undefined, 5428 maxRatio: 3 5429 }; 5430 const image = { 5431 isTouched: undefined, 5432 isMoved: undefined, 5433 currentX: undefined, 5434 currentY: undefined, 5435 minX: undefined, 5436 minY: undefined, 5437 maxX: undefined, 5438 maxY: undefined, 5439 width: undefined, 5440 height: undefined, 5441 startX: undefined, 5442 startY: undefined, 5443 touchesStart: {}, 5444 touchesCurrent: {} 5445 }; 5446 const velocity = { 5447 x: undefined, 5448 y: undefined, 5449 prevPositionX: undefined, 5450 prevPositionY: undefined, 5451 prevTime: undefined 5452 }; 5453 let scale = 1; 5454 Object.defineProperty(swiper.zoom, 'scale', { 5455 get() { 5456 return scale; 5457 }, 5458 set(value) { 5459 if (scale !== value) { 5460 const imageEl = gesture.imageEl; 5461 const slideEl = gesture.slideEl; 5462 emit('zoomChange', value, imageEl, slideEl); 5463 } 5464 scale = value; 5465 } 5466 }); 5467 function getDistanceBetweenTouches() { 5468 if (evCache.length < 2) return 1; 5469 const x1 = evCache[0].pageX; 5470 const y1 = evCache[0].pageY; 5471 const x2 = evCache[1].pageX; 5472 const y2 = evCache[1].pageY; 5473 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 5474 return distance; 5475 } 5476 function getMaxRatio() { 5477 const params = swiper.params.zoom; 5478 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 5479 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 5480 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 5481 return Math.min(imageMaxRatio, maxRatio); 5482 } 5483 return maxRatio; 5484 } 5485 function getScaleOrigin() { 5486 if (evCache.length < 2) return { 5487 x: null, 5488 y: null 5489 }; 5490 const box = gesture.imageEl.getBoundingClientRect(); 5491 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]; 5492 } 5493 function getSlideSelector() { 5494 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 5495 } 5496 function eventWithinSlide(e) { 5497 const slideSelector = getSlideSelector(); 5498 if (e.target.matches(slideSelector)) return true; 5499 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 5500 return false; 5501 } 5502 function eventWithinZoomContainer(e) { 5503 const selector = `.${swiper.params.zoom.containerClass}`; 5504 if (e.target.matches(selector)) return true; 5505 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 5506 return false; 5507 } 5508 5509 // Events 5510 function onGestureStart(e) { 5511 if (e.pointerType === 'mouse') { 5512 evCache.splice(0, evCache.length); 5513 } 5514 if (!eventWithinSlide(e)) return; 5515 const params = swiper.params.zoom; 5516 fakeGestureTouched = false; 5517 fakeGestureMoved = false; 5518 evCache.push(e); 5519 if (evCache.length < 2) { 5520 return; 5521 } 5522 fakeGestureTouched = true; 5523 gesture.scaleStart = getDistanceBetweenTouches(); 5524 if (!gesture.slideEl) { 5525 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5526 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 5527 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5528 if (imageEl) { 5529 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5530 } 5531 gesture.imageEl = imageEl; 5532 if (imageEl) { 5533 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5534 } else { 5535 gesture.imageWrapEl = undefined; 5536 } 5537 if (!gesture.imageWrapEl) { 5538 gesture.imageEl = undefined; 5539 return; 5540 } 5541 gesture.maxRatio = getMaxRatio(); 5542 } 5543 if (gesture.imageEl) { 5544 const [originX, originY] = getScaleOrigin(); 5545 gesture.originX = originX; 5546 gesture.originY = originY; 5547 gesture.imageEl.style.transitionDuration = '0ms'; 5548 } 5549 isScaling = true; 5550 } 5551 function onGestureChange(e) { 5552 if (!eventWithinSlide(e)) return; 5553 const params = swiper.params.zoom; 5554 const zoom = swiper.zoom; 5555 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5556 if (pointerIndex >= 0) evCache[pointerIndex] = e; 5557 if (evCache.length < 2) { 5558 return; 5559 } 5560 fakeGestureMoved = true; 5561 gesture.scaleMove = getDistanceBetweenTouches(); 5562 if (!gesture.imageEl) { 5563 return; 5564 } 5565 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 5566 if (zoom.scale > gesture.maxRatio) { 5567 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 5568 } 5569 if (zoom.scale < params.minRatio) { 5570 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 5571 } 5572 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5573 } 5574 function onGestureEnd(e) { 5575 if (!eventWithinSlide(e)) return; 5576 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 5577 const params = swiper.params.zoom; 5578 const zoom = swiper.zoom; 5579 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 5580 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 5581 if (!fakeGestureTouched || !fakeGestureMoved) { 5582 return; 5583 } 5584 fakeGestureTouched = false; 5585 fakeGestureMoved = false; 5586 if (!gesture.imageEl) return; 5587 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 5588 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 5589 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5590 currentScale = zoom.scale; 5591 isScaling = false; 5592 if (zoom.scale > 1 && gesture.slideEl) { 5593 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5594 } else if (zoom.scale <= 1 && gesture.slideEl) { 5595 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5596 } 5597 if (zoom.scale === 1) { 5598 gesture.originX = 0; 5599 gesture.originY = 0; 5600 gesture.slideEl = undefined; 5601 } 5602 } 5603 let allowTouchMoveTimeout; 5604 function allowTouchMove() { 5605 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 5606 } 5607 function preventTouchMove() { 5608 clearTimeout(allowTouchMoveTimeout); 5609 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 5610 allowTouchMoveTimeout = setTimeout(() => { 5611 if (swiper.destroyed) return; 5612 allowTouchMove(); 5613 }); 5614 } 5615 function onTouchStart(e) { 5616 const device = swiper.device; 5617 if (!gesture.imageEl) return; 5618 if (image.isTouched) return; 5619 if (device.android && e.cancelable) e.preventDefault(); 5620 image.isTouched = true; 5621 const event = evCache.length > 0 ? evCache[0] : e; 5622 image.touchesStart.x = event.pageX; 5623 image.touchesStart.y = event.pageY; 5624 } 5625 function onTouchMove(e) { 5626 const isMouseEvent = e.pointerType === 'mouse'; 5627 const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove; 5628 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 5629 return; 5630 } 5631 const zoom = swiper.zoom; 5632 if (!gesture.imageEl) { 5633 return; 5634 } 5635 if (!image.isTouched || !gesture.slideEl) { 5636 if (isMousePan) onMouseMove(e); 5637 return; 5638 } 5639 if (isMousePan) { 5640 onMouseMove(e); 5641 return; 5642 } 5643 if (!image.isMoved) { 5644 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5645 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5646 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'x') || 0; 5647 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(gesture.imageWrapEl, 'y') || 0; 5648 gesture.slideWidth = gesture.slideEl.offsetWidth; 5649 gesture.slideHeight = gesture.slideEl.offsetHeight; 5650 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5651 } 5652 // Define if we need image drag 5653 const scaledWidth = image.width * zoom.scale; 5654 const scaledHeight = image.height * zoom.scale; 5655 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5656 image.maxX = -image.minX; 5657 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5658 image.maxY = -image.minY; 5659 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 5660 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 5661 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 5662 if (touchesDiff > 5) { 5663 swiper.allowClick = false; 5664 } 5665 if (!image.isMoved && !isScaling) { 5666 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)) { 5667 image.isTouched = false; 5668 allowTouchMove(); 5669 return; 5670 } 5671 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)) { 5672 image.isTouched = false; 5673 allowTouchMove(); 5674 return; 5675 } 5676 } 5677 if (e.cancelable) { 5678 e.preventDefault(); 5679 } 5680 e.stopPropagation(); 5681 preventTouchMove(); 5682 image.isMoved = true; 5683 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 5684 const { 5685 originX, 5686 originY 5687 } = gesture; 5688 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 5689 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 5690 if (image.currentX < image.minX) { 5691 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 5692 } 5693 if (image.currentX > image.maxX) { 5694 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 5695 } 5696 if (image.currentY < image.minY) { 5697 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 5698 } 5699 if (image.currentY > image.maxY) { 5700 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 5701 } 5702 5703 // Velocity 5704 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 5705 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 5706 if (!velocity.prevTime) velocity.prevTime = Date.now(); 5707 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 5708 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 5709 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 5710 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 5711 velocity.prevPositionX = image.touchesCurrent.x; 5712 velocity.prevPositionY = image.touchesCurrent.y; 5713 velocity.prevTime = Date.now(); 5714 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5715 } 5716 function onTouchEnd() { 5717 const zoom = swiper.zoom; 5718 evCache.length = 0; 5719 if (!gesture.imageEl) return; 5720 if (!image.isTouched || !image.isMoved) { 5721 image.isTouched = false; 5722 image.isMoved = false; 5723 return; 5724 } 5725 image.isTouched = false; 5726 image.isMoved = false; 5727 let momentumDurationX = 300; 5728 let momentumDurationY = 300; 5729 const momentumDistanceX = velocity.x * momentumDurationX; 5730 const newPositionX = image.currentX + momentumDistanceX; 5731 const momentumDistanceY = velocity.y * momentumDurationY; 5732 const newPositionY = image.currentY + momentumDistanceY; 5733 5734 // Fix duration 5735 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 5736 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 5737 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 5738 image.currentX = newPositionX; 5739 image.currentY = newPositionY; 5740 // Define if we need image drag 5741 const scaledWidth = image.width * zoom.scale; 5742 const scaledHeight = image.height * zoom.scale; 5743 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 5744 image.maxX = -image.minX; 5745 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 5746 image.maxY = -image.minY; 5747 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 5748 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 5749 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 5750 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 5751 } 5752 function onTransitionEnd() { 5753 const zoom = swiper.zoom; 5754 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 5755 if (gesture.imageEl) { 5756 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5757 } 5758 if (gesture.imageWrapEl) { 5759 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5760 } 5761 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 5762 zoom.scale = 1; 5763 currentScale = 1; 5764 gesture.slideEl = undefined; 5765 gesture.imageEl = undefined; 5766 gesture.imageWrapEl = undefined; 5767 gesture.originX = 0; 5768 gesture.originY = 0; 5769 } 5770 } 5771 function onMouseMove(e) { 5772 // Only pan if zoomed in and mouse panning is enabled 5773 if (currentScale <= 1 || !gesture.imageWrapEl) return; 5774 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; 5775 const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform; 5776 const matrix = new window.DOMMatrix(currentTransform); 5777 if (!isPanningWithMouse) { 5778 isPanningWithMouse = true; 5779 mousePanStart.x = e.clientX; 5780 mousePanStart.y = e.clientY; 5781 image.startX = matrix.e; 5782 image.startY = matrix.f; 5783 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5784 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5785 gesture.slideWidth = gesture.slideEl.offsetWidth; 5786 gesture.slideHeight = gesture.slideEl.offsetHeight; 5787 return; 5788 } 5789 const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity; 5790 const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity; 5791 const scaledWidth = image.width * currentScale; 5792 const scaledHeight = image.height * currentScale; 5793 const slideWidth = gesture.slideWidth; 5794 const slideHeight = gesture.slideHeight; 5795 const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5796 const maxX = -minX; 5797 const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5798 const maxY = -minY; 5799 const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX); 5800 const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY); 5801 gesture.imageWrapEl.style.transitionDuration = '0ms'; 5802 gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`; 5803 mousePanStart.x = e.clientX; 5804 mousePanStart.y = e.clientY; 5805 image.startX = newX; 5806 image.startY = newY; 5807 image.currentX = newX; 5808 image.currentY = newY; 5809 } 5810 function zoomIn(e) { 5811 const zoom = swiper.zoom; 5812 const params = swiper.params.zoom; 5813 if (!gesture.slideEl) { 5814 if (e && e.target) { 5815 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 5816 } 5817 if (!gesture.slideEl) { 5818 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5819 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5820 } else { 5821 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5822 } 5823 } 5824 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5825 if (imageEl) { 5826 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5827 } 5828 gesture.imageEl = imageEl; 5829 if (imageEl) { 5830 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5831 } else { 5832 gesture.imageWrapEl = undefined; 5833 } 5834 } 5835 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5836 if (swiper.params.cssMode) { 5837 swiper.wrapperEl.style.overflow = 'hidden'; 5838 swiper.wrapperEl.style.touchAction = 'none'; 5839 } 5840 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 5841 let touchX; 5842 let touchY; 5843 let offsetX; 5844 let offsetY; 5845 let diffX; 5846 let diffY; 5847 let translateX; 5848 let translateY; 5849 let imageWidth; 5850 let imageHeight; 5851 let scaledWidth; 5852 let scaledHeight; 5853 let translateMinX; 5854 let translateMinY; 5855 let translateMaxX; 5856 let translateMaxY; 5857 let slideWidth; 5858 let slideHeight; 5859 if (typeof image.touchesStart.x === 'undefined' && e) { 5860 touchX = e.pageX; 5861 touchY = e.pageY; 5862 } else { 5863 touchX = image.touchesStart.x; 5864 touchY = image.touchesStart.y; 5865 } 5866 const prevScale = currentScale; 5867 const forceZoomRatio = typeof e === 'number' ? e : null; 5868 if (currentScale === 1 && forceZoomRatio) { 5869 touchX = undefined; 5870 touchY = undefined; 5871 image.touchesStart.x = undefined; 5872 image.touchesStart.y = undefined; 5873 } 5874 const maxRatio = getMaxRatio(); 5875 zoom.scale = forceZoomRatio || maxRatio; 5876 currentScale = forceZoomRatio || maxRatio; 5877 if (e && !(currentScale === 1 && forceZoomRatio)) { 5878 slideWidth = gesture.slideEl.offsetWidth; 5879 slideHeight = gesture.slideEl.offsetHeight; 5880 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).left + window.scrollX; 5881 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(gesture.slideEl).top + window.scrollY; 5882 diffX = offsetX + slideWidth / 2 - touchX; 5883 diffY = offsetY + slideHeight / 2 - touchY; 5884 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 5885 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 5886 scaledWidth = imageWidth * zoom.scale; 5887 scaledHeight = imageHeight * zoom.scale; 5888 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 5889 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 5890 translateMaxX = -translateMinX; 5891 translateMaxY = -translateMinY; 5892 if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') { 5893 translateX = image.currentX * zoom.scale / prevScale; 5894 translateY = image.currentY * zoom.scale / prevScale; 5895 } else { 5896 translateX = diffX * zoom.scale; 5897 translateY = diffY * zoom.scale; 5898 } 5899 if (translateX < translateMinX) { 5900 translateX = translateMinX; 5901 } 5902 if (translateX > translateMaxX) { 5903 translateX = translateMaxX; 5904 } 5905 if (translateY < translateMinY) { 5906 translateY = translateMinY; 5907 } 5908 if (translateY > translateMaxY) { 5909 translateY = translateMaxY; 5910 } 5911 } else { 5912 translateX = 0; 5913 translateY = 0; 5914 } 5915 if (forceZoomRatio && zoom.scale === 1) { 5916 gesture.originX = 0; 5917 gesture.originY = 0; 5918 } 5919 image.currentX = translateX; 5920 image.currentY = translateY; 5921 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5922 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 5923 gesture.imageEl.style.transitionDuration = '300ms'; 5924 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 5925 } 5926 function zoomOut() { 5927 const zoom = swiper.zoom; 5928 const params = swiper.params.zoom; 5929 if (!gesture.slideEl) { 5930 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 5931 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 5932 } else { 5933 gesture.slideEl = swiper.slides[swiper.activeIndex]; 5934 } 5935 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 5936 if (imageEl) { 5937 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 5938 } 5939 gesture.imageEl = imageEl; 5940 if (imageEl) { 5941 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.imageEl, `.${params.containerClass}`)[0]; 5942 } else { 5943 gesture.imageWrapEl = undefined; 5944 } 5945 } 5946 if (!gesture.imageEl || !gesture.imageWrapEl) return; 5947 if (swiper.params.cssMode) { 5948 swiper.wrapperEl.style.overflow = ''; 5949 swiper.wrapperEl.style.touchAction = ''; 5950 } 5951 zoom.scale = 1; 5952 currentScale = 1; 5953 image.currentX = undefined; 5954 image.currentY = undefined; 5955 image.touchesStart.x = undefined; 5956 image.touchesStart.y = undefined; 5957 gesture.imageWrapEl.style.transitionDuration = '300ms'; 5958 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 5959 gesture.imageEl.style.transitionDuration = '300ms'; 5960 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 5961 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 5962 gesture.slideEl = undefined; 5963 gesture.originX = 0; 5964 gesture.originY = 0; 5965 if (swiper.params.zoom.panOnMouseMove) { 5966 mousePanStart = { 5967 x: 0, 5968 y: 0 5969 }; 5970 if (isPanningWithMouse) { 5971 isPanningWithMouse = false; 5972 image.startX = 0; 5973 image.startY = 0; 5974 } 5975 } 5976 } 5977 5978 // Toggle Zoom 5979 function zoomToggle(e) { 5980 const zoom = swiper.zoom; 5981 if (zoom.scale && zoom.scale !== 1) { 5982 // Zoom Out 5983 zoomOut(); 5984 } else { 5985 // Zoom In 5986 zoomIn(e); 5987 } 5988 } 5989 function getListeners() { 5990 const passiveListener = swiper.params.passiveListeners ? { 5991 passive: true, 5992 capture: false 5993 } : false; 5994 const activeListenerWithCapture = swiper.params.passiveListeners ? { 5995 passive: false, 5996 capture: true 5997 } : true; 5998 return { 5999 passiveListener, 6000 activeListenerWithCapture 6001 }; 6002 } 6003 6004 // Attach/Detach Events 6005 function enable() { 6006 const zoom = swiper.zoom; 6007 if (zoom.enabled) return; 6008 zoom.enabled = true; 6009 const { 6010 passiveListener, 6011 activeListenerWithCapture 6012 } = getListeners(); 6013 6014 // Scale image 6015 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 6016 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 6017 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 6018 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 6019 }); 6020 6021 // Move image 6022 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 6023 } 6024 function disable() { 6025 const zoom = swiper.zoom; 6026 if (!zoom.enabled) return; 6027 zoom.enabled = false; 6028 const { 6029 passiveListener, 6030 activeListenerWithCapture 6031 } = getListeners(); 6032 6033 // Scale image 6034 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 6035 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 6036 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 6037 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 6038 }); 6039 6040 // Move image 6041 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 6042 } 6043 on('init', () => { 6044 if (swiper.params.zoom.enabled) { 6045 enable(); 6046 } 6047 }); 6048 on('destroy', () => { 6049 disable(); 6050 }); 6051 on('touchStart', (_s, e) => { 6052 if (!swiper.zoom.enabled) return; 6053 onTouchStart(e); 6054 }); 6055 on('touchEnd', (_s, e) => { 6056 if (!swiper.zoom.enabled) return; 6057 onTouchEnd(); 6058 }); 6059 on('doubleTap', (_s, e) => { 6060 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 6061 zoomToggle(e); 6062 } 6063 }); 6064 on('transitionEnd', () => { 6065 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 6066 onTransitionEnd(); 6067 } 6068 }); 6069 on('slideChange', () => { 6070 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 6071 onTransitionEnd(); 6072 } 6073 }); 6074 Object.assign(swiper.zoom, { 6075 enable, 6076 disable, 6077 in: zoomIn, 6078 out: zoomOut, 6079 toggle: zoomToggle 6080 }); 6081} 6082 6083 6084 6085 6086/***/ }), 6087
vendor: 771 bytes, lines 6088-6110
6088/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 6089/*!************************************************************!*\ 6090 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 6091 \************************************************************/ 6092/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6093 6094__webpack_require__.r(__webpack_exports__); 6095/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6096/* harmony export */ c: () => (/* binding */ classesToSelector) 6097/* harmony export */ }); 6098function classesToSelector(classes) { 6099 if (classes === void 0) { 6100 classes = ''; 6101 } 6102 return `.${classes.trim().replace(/([\.:!+\/()[\]])/g, '\\$1') // eslint-disable-line 6103 .replace(/ /g, '.')}`; 6104} 6105 6106 6107 6108 6109/***/ }), 6110
vendor: 1,405 bytes, lines 6111-6146
6111/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 6112/*!**********************************************************************!*\ 6113 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 6114 \**********************************************************************/ 6115/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6116 6117__webpack_require__.r(__webpack_exports__); 6118/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6119/* harmony export */ c: () => (/* binding */ createElementIfNotDefined) 6120/* harmony export */ }); 6121/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6122 6123 6124function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 6125 if (swiper.params.createElements) { 6126 Object.keys(checkProps).forEach(key => { 6127 if (!params[key] && params.auto === true) { 6128 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 6129 if (!element) { 6130 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 6131 element.className = checkProps[key]; 6132 swiper.el.append(element); 6133 } 6134 params[key] = element; 6135 originalParams[key] = element; 6136 } 6137 }); 6138 } 6139 return params; 6140} 6141 6142 6143 6144 6145/***/ }), 6146
vendor: 1,201 bytes, lines 6147-6175
6147/***/ "./node_modules/swiper/shared/create-shadow.mjs": 6148/*!******************************************************!*\ 6149 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 6150 \******************************************************/ 6151/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6152 6153__webpack_require__.r(__webpack_exports__); 6154/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6155/* harmony export */ c: () => (/* binding */ createShadow) 6156/* harmony export */ }); 6157/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6158 6159 6160function createShadow(suffix, slideEl, side) { 6161 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 6162 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 6163 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 6164 if (!shadowEl) { 6165 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 6166 shadowContainer.append(shadowEl); 6167 } 6168 return shadowEl; 6169} 6170 6171 6172 6173 6174/***/ }), 6175
vendor: 2,340 bytes, lines 6176-6247
6176/***/ "./node_modules/swiper/shared/effect-init.mjs": 6177/*!****************************************************!*\ 6178 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 6179 \****************************************************/ 6180/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6181 6182__webpack_require__.r(__webpack_exports__); 6183/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6184/* harmony export */ e: () => (/* binding */ effectInit) 6185/* harmony export */ }); 6186function effectInit(params) { 6187 const { 6188 effect, 6189 swiper, 6190 on, 6191 setTranslate, 6192 setTransition, 6193 overwriteParams, 6194 perspective, 6195 recreateShadows, 6196 getEffectParams 6197 } = params; 6198 on('beforeInit', () => { 6199 if (swiper.params.effect !== effect) return; 6200 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 6201 if (perspective && perspective()) { 6202 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 6203 } 6204 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 6205 Object.assign(swiper.params, overwriteParamsResult); 6206 Object.assign(swiper.originalParams, overwriteParamsResult); 6207 }); 6208 on('setTranslate _virtualUpdated', () => { 6209 if (swiper.params.effect !== effect) return; 6210 setTranslate(); 6211 }); 6212 on('setTransition', (_s, duration) => { 6213 if (swiper.params.effect !== effect) return; 6214 setTransition(duration); 6215 }); 6216 on('transitionEnd', () => { 6217 if (swiper.params.effect !== effect) return; 6218 if (recreateShadows) { 6219 if (!getEffectParams || !getEffectParams().slideShadows) return; 6220 // remove shadows 6221 swiper.slides.forEach(slideEl => { 6222 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 6223 }); 6224 // create new one 6225 recreateShadows(); 6226 } 6227 }); 6228 let requireUpdateOnVirtual; 6229 on('virtualUpdate', () => { 6230 if (swiper.params.effect !== effect) return; 6231 if (!swiper.slides.length) { 6232 requireUpdateOnVirtual = true; 6233 } 6234 requestAnimationFrame(() => { 6235 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 6236 setTranslate(); 6237 requireUpdateOnVirtual = false; 6238 } 6239 }); 6240 }); 6241} 6242 6243 6244 6245 6246/***/ }), 6247
vendor: 994 bytes, lines 6248-6274
6248/***/ "./node_modules/swiper/shared/effect-target.mjs": 6249/*!******************************************************!*\ 6250 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 6251 \******************************************************/ 6252/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6253 6254__webpack_require__.r(__webpack_exports__); 6255/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6256/* harmony export */ e: () => (/* binding */ effectTarget) 6257/* harmony export */ }); 6258/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6259 6260 6261function effectTarget(effectParams, slideEl) { 6262 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 6263 if (transformEl !== slideEl) { 6264 transformEl.style.backfaceVisibility = 'hidden'; 6265 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 6266 } 6267 return transformEl; 6268} 6269 6270 6271 6272 6273/***/ }), 6274
vendor: 2,097 bytes, lines 6275-6337
6275/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 6276/*!**********************************************************************!*\ 6277 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 6278 \**********************************************************************/ 6279/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6280 6281__webpack_require__.r(__webpack_exports__); 6282/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6283/* harmony export */ e: () => (/* binding */ effectVirtualTransitionEnd) 6284/* harmony export */ }); 6285/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6286 6287 6288function effectVirtualTransitionEnd(_ref) { 6289 let { 6290 swiper, 6291 duration, 6292 transformElements, 6293 allSlides 6294 } = _ref; 6295 const { 6296 activeIndex 6297 } = swiper; 6298 const getSlide = el => { 6299 if (!el.parentElement) { 6300 // assume shadow root 6301 const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode); 6302 return slide; 6303 } 6304 return el.parentElement; 6305 }; 6306 if (swiper.params.virtualTranslate && duration !== 0) { 6307 let eventTriggered = false; 6308 let transitionEndTarget; 6309 if (allSlides) { 6310 transitionEndTarget = transformElements; 6311 } else { 6312 transitionEndTarget = transformElements.filter(transformEl => { 6313 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 6314 return swiper.getSlideIndex(el) === activeIndex; 6315 }); 6316 } 6317 transitionEndTarget.forEach(el => { 6318 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.l)(el, () => { 6319 if (eventTriggered) return; 6320 if (!swiper || swiper.destroyed) return; 6321 eventTriggered = true; 6322 swiper.animating = false; 6323 const evt = new window.CustomEvent('transitionend', { 6324 bubbles: true, 6325 cancelable: true 6326 }); 6327 swiper.wrapperEl.dispatchEvent(evt); 6328 }); 6329 }); 6330 } 6331} 6332 6333 6334 6335 6336/***/ }), 6337
vendor: 3,419 bytes, lines 6338-6498
6338/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 6339/*!*******************************************************!*\ 6340 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 6341 \*******************************************************/ 6342/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6343 6344__webpack_require__.r(__webpack_exports__); 6345/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6346/* harmony export */ a: () => (/* binding */ getWindow), 6347/* harmony export */ g: () => (/* binding */ getDocument) 6348/* harmony export */ }); 6349/** 6350 * SSR Window 5.0.1 6351 * Better handling for window object in SSR environment 6352 * https://github.com/nolimits4web/ssr-window 6353 * 6354 * Copyright 2025, Vladimir Kharlampidi 6355 * 6356 * Licensed under MIT 6357 * 6358 * Released on: June 27, 2025 6359 */ 6360/* eslint-disable no-param-reassign */ 6361function isObject(obj) { 6362 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 6363} 6364function extend(target, src) { 6365 if (target === void 0) { 6366 target = {}; 6367 } 6368 if (src === void 0) { 6369 src = {}; 6370 } 6371 const noExtend = ['__proto__', 'constructor', 'prototype']; 6372 Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { 6373 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 6374 extend(target[key], src[key]); 6375 } 6376 }); 6377} 6378const ssrDocument = { 6379 body: {}, 6380 addEventListener() {}, 6381 removeEventListener() {}, 6382 activeElement: { 6383 blur() {}, 6384 nodeName: '' 6385 }, 6386 querySelector() { 6387 return null; 6388 }, 6389 querySelectorAll() { 6390 return []; 6391 }, 6392 getElementById() { 6393 return null; 6394 }, 6395 createEvent() { 6396 return { 6397 initEvent() {} 6398 }; 6399 }, 6400 createElement() { 6401 return { 6402 children: [], 6403 childNodes: [], 6404 style: {}, 6405 setAttribute() {}, 6406 getElementsByTagName() { 6407 return []; 6408 } 6409 }; 6410 }, 6411 createElementNS() { 6412 return {}; 6413 }, 6414 importNode() { 6415 return null; 6416 }, 6417 location: { 6418 hash: '', 6419 host: '', 6420 hostname: '', 6421 href: '', 6422 origin: '', 6423 pathname: '', 6424 protocol: '', 6425 search: '' 6426 } 6427}; 6428function getDocument() { 6429 const doc = typeof document !== 'undefined' ? document : {}; 6430 extend(doc, ssrDocument); 6431 return doc; 6432} 6433const ssrWindow = { 6434 document: ssrDocument, 6435 navigator: { 6436 userAgent: '' 6437 }, 6438 location: { 6439 hash: '', 6440 host: '', 6441 hostname: '', 6442 href: '', 6443 origin: '', 6444 pathname: '', 6445 protocol: '', 6446 search: '' 6447 }, 6448 history: { 6449 replaceState() {}, 6450 pushState() {}, 6451 go() {}, 6452 back() {} 6453 }, 6454 CustomEvent: function CustomEvent() { 6455 return this; 6456 }, 6457 addEventListener() {}, 6458 removeEventListener() {}, 6459 getComputedStyle() { 6460 return { 6461 getPropertyValue() { 6462 return ''; 6463 } 6464 }; 6465 }, 6466 Image() {}, 6467 Date() {}, 6468 screen: {}, 6469 setTimeout() {}, 6470 clearTimeout() {}, 6471 matchMedia() { 6472 return {}; 6473 }, 6474 requestAnimationFrame(callback) { 6475 if (typeof setTimeout === 'undefined') { 6476 callback(); 6477 return null; 6478 } 6479 return setTimeout(callback, 0); 6480 }, 6481 cancelAnimationFrame(id) { 6482 if (typeof setTimeout === 'undefined') { 6483 return; 6484 } 6485 clearTimeout(id); 6486 } 6487}; 6488function getWindow() { 6489 const win = typeof window !== 'undefined' ? window : {}; 6490 extend(win, ssrWindow); 6491 return win; 6492} 6493 6494 6495 6496 6497/***/ }), 6498
vendor: 135,038 bytes, lines 6499-10467
6499/***/ "./node_modules/swiper/shared/swiper-core.mjs": 6500/*!****************************************************!*\ 6501 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 6502 \****************************************************/ 6503/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6504 6505__webpack_require__.r(__webpack_exports__); 6506/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6507/* harmony export */ S: () => (/* binding */ Swiper), 6508/* harmony export */ d: () => (/* binding */ defaults) 6509/* harmony export */ }); 6510/* 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"); 6511/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6512 6513 6514 6515let support; 6516function calcSupport() { 6517 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6518 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 6519 return { 6520 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 6521 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 6522 }; 6523} 6524function getSupport() { 6525 if (!support) { 6526 support = calcSupport(); 6527 } 6528 return support; 6529} 6530 6531let deviceCached; 6532function calcDevice(_temp) { 6533 let { 6534 userAgent 6535 } = _temp === void 0 ? {} : _temp; 6536 const support = getSupport(); 6537 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6538 const platform = window.navigator.platform; 6539 const ua = userAgent || window.navigator.userAgent; 6540 const device = { 6541 ios: false, 6542 android: false 6543 }; 6544 const screenWidth = window.screen.width; 6545 const screenHeight = window.screen.height; 6546 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 6547 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 6548 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 6549 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 6550 const windows = platform === 'Win32'; 6551 let macos = platform === 'MacIntel'; 6552 6553 // iPadOs 13 fix 6554 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 6555 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 6556 ipad = ua.match(/(Version)\/([\d.]+)/); 6557 if (!ipad) ipad = [0, 1, '13_0_0']; 6558 macos = false; 6559 } 6560 6561 // Android 6562 if (android && !windows) { 6563 device.os = 'android'; 6564 device.android = true; 6565 } 6566 if (ipad || iphone || ipod) { 6567 device.os = 'ios'; 6568 device.ios = true; 6569 } 6570 6571 // Export object 6572 return device; 6573} 6574function getDevice(overrides) { 6575 if (overrides === void 0) { 6576 overrides = {}; 6577 } 6578 if (!deviceCached) { 6579 deviceCached = calcDevice(overrides); 6580 } 6581 return deviceCached; 6582} 6583 6584let browser; 6585function calcBrowser() { 6586 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6587 const device = getDevice(); 6588 let needPerspectiveFix = false; 6589 function isSafari() { 6590 const ua = window.navigator.userAgent.toLowerCase(); 6591 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 6592 } 6593 if (isSafari()) { 6594 const ua = String(window.navigator.userAgent); 6595 if (ua.includes('Version/')) { 6596 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 6597 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 6598 } 6599 } 6600 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 6601 const isSafariBrowser = isSafari(); 6602 const need3dFix = isSafariBrowser || isWebView && device.ios; 6603 return { 6604 isSafari: needPerspectiveFix || isSafariBrowser, 6605 needPerspectiveFix, 6606 need3dFix, 6607 isWebView 6608 }; 6609} 6610function getBrowser() { 6611 if (!browser) { 6612 browser = calcBrowser(); 6613 } 6614 return browser; 6615} 6616 6617function Resize(_ref) { 6618 let { 6619 swiper, 6620 on, 6621 emit 6622 } = _ref; 6623 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6624 let observer = null; 6625 let animationFrame = null; 6626 const resizeHandler = () => { 6627 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6628 emit('beforeResize'); 6629 emit('resize'); 6630 }; 6631 const createObserver = () => { 6632 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6633 observer = new ResizeObserver(entries => { 6634 animationFrame = window.requestAnimationFrame(() => { 6635 const { 6636 width, 6637 height 6638 } = swiper; 6639 let newWidth = width; 6640 let newHeight = height; 6641 entries.forEach(_ref2 => { 6642 let { 6643 contentBoxSize, 6644 contentRect, 6645 target 6646 } = _ref2; 6647 if (target && target !== swiper.el) return; 6648 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 6649 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 6650 }); 6651 if (newWidth !== width || newHeight !== height) { 6652 resizeHandler(); 6653 } 6654 }); 6655 }); 6656 observer.observe(swiper.el); 6657 }; 6658 const removeObserver = () => { 6659 if (animationFrame) { 6660 window.cancelAnimationFrame(animationFrame); 6661 } 6662 if (observer && observer.unobserve && swiper.el) { 6663 observer.unobserve(swiper.el); 6664 observer = null; 6665 } 6666 }; 6667 const orientationChangeHandler = () => { 6668 if (!swiper || swiper.destroyed || !swiper.initialized) return; 6669 emit('orientationchange'); 6670 }; 6671 on('init', () => { 6672 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 6673 createObserver(); 6674 return; 6675 } 6676 window.addEventListener('resize', resizeHandler); 6677 window.addEventListener('orientationchange', orientationChangeHandler); 6678 }); 6679 on('destroy', () => { 6680 removeObserver(); 6681 window.removeEventListener('resize', resizeHandler); 6682 window.removeEventListener('orientationchange', orientationChangeHandler); 6683 }); 6684} 6685 6686function Observer(_ref) { 6687 let { 6688 swiper, 6689 extendParams, 6690 on, 6691 emit 6692 } = _ref; 6693 const observers = []; 6694 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 6695 const attach = function (target, options) { 6696 if (options === void 0) { 6697 options = {}; 6698 } 6699 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 6700 const observer = new ObserverFunc(mutations => { 6701 // The observerUpdate event should only be triggered 6702 // once despite the number of mutations. Additional 6703 // triggers are redundant and are very costly 6704 if (swiper.__preventObserver__) return; 6705 if (mutations.length === 1) { 6706 emit('observerUpdate', mutations[0]); 6707 return; 6708 } 6709 const observerUpdate = function observerUpdate() { 6710 emit('observerUpdate', mutations[0]); 6711 }; 6712 if (window.requestAnimationFrame) { 6713 window.requestAnimationFrame(observerUpdate); 6714 } else { 6715 window.setTimeout(observerUpdate, 0); 6716 } 6717 }); 6718 observer.observe(target, { 6719 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 6720 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 6721 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 6722 }); 6723 observers.push(observer); 6724 }; 6725 const init = () => { 6726 if (!swiper.params.observer) return; 6727 if (swiper.params.observeParents) { 6728 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(swiper.hostEl); 6729 for (let i = 0; i < containerParents.length; i += 1) { 6730 attach(containerParents[i]); 6731 } 6732 } 6733 // Observe container 6734 attach(swiper.hostEl, { 6735 childList: swiper.params.observeSlideChildren 6736 }); 6737 6738 // Observe wrapper 6739 attach(swiper.wrapperEl, { 6740 attributes: false 6741 }); 6742 }; 6743 const destroy = () => { 6744 observers.forEach(observer => { 6745 observer.disconnect(); 6746 }); 6747 observers.splice(0, observers.length); 6748 }; 6749 extendParams({ 6750 observer: false, 6751 observeParents: false, 6752 observeSlideChildren: false 6753 }); 6754 on('init', init); 6755 on('destroy', destroy); 6756} 6757 6758/* eslint-disable no-underscore-dangle */ 6759 6760var eventsEmitter = { 6761 on(events, handler, priority) { 6762 const self = this; 6763 if (!self.eventsListeners || self.destroyed) return self; 6764 if (typeof handler !== 'function') return self; 6765 const method = priority ? 'unshift' : 'push'; 6766 events.split(' ').forEach(event => { 6767 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 6768 self.eventsListeners[event][method](handler); 6769 }); 6770 return self; 6771 }, 6772 once(events, handler, priority) { 6773 const self = this; 6774 if (!self.eventsListeners || self.destroyed) return self; 6775 if (typeof handler !== 'function') return self; 6776 function onceHandler() { 6777 self.off(events, onceHandler); 6778 if (onceHandler.__emitterProxy) { 6779 delete onceHandler.__emitterProxy; 6780 } 6781 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6782 args[_key] = arguments[_key]; 6783 } 6784 handler.apply(self, args); 6785 } 6786 onceHandler.__emitterProxy = handler; 6787 return self.on(events, onceHandler, priority); 6788 }, 6789 onAny(handler, priority) { 6790 const self = this; 6791 if (!self.eventsListeners || self.destroyed) return self; 6792 if (typeof handler !== 'function') return self; 6793 const method = priority ? 'unshift' : 'push'; 6794 if (self.eventsAnyListeners.indexOf(handler) < 0) { 6795 self.eventsAnyListeners[method](handler); 6796 } 6797 return self; 6798 }, 6799 offAny(handler) { 6800 const self = this; 6801 if (!self.eventsListeners || self.destroyed) return self; 6802 if (!self.eventsAnyListeners) return self; 6803 const index = self.eventsAnyListeners.indexOf(handler); 6804 if (index >= 0) { 6805 self.eventsAnyListeners.splice(index, 1); 6806 } 6807 return self; 6808 }, 6809 off(events, handler) { 6810 const self = this; 6811 if (!self.eventsListeners || self.destroyed) return self; 6812 if (!self.eventsListeners) return self; 6813 events.split(' ').forEach(event => { 6814 if (typeof handler === 'undefined') { 6815 self.eventsListeners[event] = []; 6816 } else if (self.eventsListeners[event]) { 6817 self.eventsListeners[event].forEach((eventHandler, index) => { 6818 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 6819 self.eventsListeners[event].splice(index, 1); 6820 } 6821 }); 6822 } 6823 }); 6824 return self; 6825 }, 6826 emit() { 6827 const self = this; 6828 if (!self.eventsListeners || self.destroyed) return self; 6829 if (!self.eventsListeners) return self; 6830 let events; 6831 let data; 6832 let context; 6833 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 6834 args[_key2] = arguments[_key2]; 6835 } 6836 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 6837 events = args[0]; 6838 data = args.slice(1, args.length); 6839 context = self; 6840 } else { 6841 events = args[0].events; 6842 data = args[0].data; 6843 context = args[0].context || self; 6844 } 6845 data.unshift(context); 6846 const eventsArray = Array.isArray(events) ? events : events.split(' '); 6847 eventsArray.forEach(event => { 6848 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 6849 self.eventsAnyListeners.forEach(eventHandler => { 6850 eventHandler.apply(context, [event, ...data]); 6851 }); 6852 } 6853 if (self.eventsListeners && self.eventsListeners[event]) { 6854 self.eventsListeners[event].forEach(eventHandler => { 6855 eventHandler.apply(context, data); 6856 }); 6857 } 6858 }); 6859 return self; 6860 } 6861}; 6862 6863function updateSize() { 6864 const swiper = this; 6865 let width; 6866 let height; 6867 const el = swiper.el; 6868 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 6869 width = swiper.params.width; 6870 } else { 6871 width = el.clientWidth; 6872 } 6873 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 6874 height = swiper.params.height; 6875 } else { 6876 height = el.clientHeight; 6877 } 6878 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 6879 return; 6880 } 6881 6882 // Subtract paddings 6883 width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-right') || 0, 10); 6884 height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'padding-bottom') || 0, 10); 6885 if (Number.isNaN(width)) width = 0; 6886 if (Number.isNaN(height)) height = 0; 6887 Object.assign(swiper, { 6888 width, 6889 height, 6890 size: swiper.isHorizontal() ? width : height 6891 }); 6892} 6893 6894function updateSlides() { 6895 const swiper = this; 6896 function getDirectionPropertyValue(node, label) { 6897 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 6898 } 6899 const params = swiper.params; 6900 const { 6901 wrapperEl, 6902 slidesEl, 6903 size: swiperSize, 6904 rtlTranslate: rtl, 6905 wrongRTL 6906 } = swiper; 6907 const isVirtual = swiper.virtual && params.virtual.enabled; 6908 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 6909 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 6910 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 6911 let snapGrid = []; 6912 const slidesGrid = []; 6913 const slidesSizesGrid = []; 6914 let offsetBefore = params.slidesOffsetBefore; 6915 if (typeof offsetBefore === 'function') { 6916 offsetBefore = params.slidesOffsetBefore.call(swiper); 6917 } 6918 let offsetAfter = params.slidesOffsetAfter; 6919 if (typeof offsetAfter === 'function') { 6920 offsetAfter = params.slidesOffsetAfter.call(swiper); 6921 } 6922 const previousSnapGridLength = swiper.snapGrid.length; 6923 const previousSlidesGridLength = swiper.slidesGrid.length; 6924 let spaceBetween = params.spaceBetween; 6925 let slidePosition = -offsetBefore; 6926 let prevSlideSize = 0; 6927 let index = 0; 6928 if (typeof swiperSize === 'undefined') { 6929 return; 6930 } 6931 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 6932 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 6933 } else if (typeof spaceBetween === 'string') { 6934 spaceBetween = parseFloat(spaceBetween); 6935 } 6936 swiper.virtualSize = -spaceBetween; 6937 6938 // reset margins 6939 slides.forEach(slideEl => { 6940 if (rtl) { 6941 slideEl.style.marginLeft = ''; 6942 } else { 6943 slideEl.style.marginRight = ''; 6944 } 6945 slideEl.style.marginBottom = ''; 6946 slideEl.style.marginTop = ''; 6947 }); 6948 6949 // reset cssMode offsets 6950 if (params.centeredSlides && params.cssMode) { 6951 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', ''); 6952 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', ''); 6953 } 6954 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 6955 if (gridEnabled) { 6956 swiper.grid.initSlides(slides); 6957 } else if (swiper.grid) { 6958 swiper.grid.unsetSlides(); 6959 } 6960 6961 // Calc slides 6962 let slideSize; 6963 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 6964 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 6965 }).length > 0; 6966 for (let i = 0; i < slidesLength; i += 1) { 6967 slideSize = 0; 6968 let slide; 6969 if (slides[i]) slide = slides[i]; 6970 if (gridEnabled) { 6971 swiper.grid.updateSlide(i, slide, slides); 6972 } 6973 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(slide, 'display') === 'none') continue; // eslint-disable-line 6974 6975 if (params.slidesPerView === 'auto') { 6976 if (shouldResetSlideSize) { 6977 slides[i].style[swiper.getDirectionLabel('width')] = ``; 6978 } 6979 const slideStyles = getComputedStyle(slide); 6980 const currentTransform = slide.style.transform; 6981 const currentWebKitTransform = slide.style.webkitTransform; 6982 if (currentTransform) { 6983 slide.style.transform = 'none'; 6984 } 6985 if (currentWebKitTransform) { 6986 slide.style.webkitTransform = 'none'; 6987 } 6988 if (params.roundLengths) { 6989 slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slide, 'height', true); 6990 } else { 6991 // eslint-disable-next-line 6992 const width = getDirectionPropertyValue(slideStyles, 'width'); 6993 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 6994 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 6995 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 6996 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 6997 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 6998 if (boxSizing && boxSizing === 'border-box') { 6999 slideSize = width + marginLeft + marginRight; 7000 } else { 7001 const { 7002 clientWidth, 7003 offsetWidth 7004 } = slide; 7005 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 7006 } 7007 } 7008 if (currentTransform) { 7009 slide.style.transform = currentTransform; 7010 } 7011 if (currentWebKitTransform) { 7012 slide.style.webkitTransform = currentWebKitTransform; 7013 } 7014 if (params.roundLengths) slideSize = Math.floor(slideSize); 7015 } else { 7016 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 7017 if (params.roundLengths) slideSize = Math.floor(slideSize); 7018 if (slides[i]) { 7019 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 7020 } 7021 } 7022 if (slides[i]) { 7023 slides[i].swiperSlideSize = slideSize; 7024 } 7025 slidesSizesGrid.push(slideSize); 7026 if (params.centeredSlides) { 7027 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 7028 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 7029 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 7030 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 7031 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 7032 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 7033 slidesGrid.push(slidePosition); 7034 } else { 7035 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 7036 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 7037 slidesGrid.push(slidePosition); 7038 slidePosition = slidePosition + slideSize + spaceBetween; 7039 } 7040 swiper.virtualSize += slideSize + spaceBetween; 7041 prevSlideSize = slideSize; 7042 index += 1; 7043 } 7044 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 7045 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 7046 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 7047 } 7048 if (params.setWrapperSize) { 7049 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 7050 } 7051 if (gridEnabled) { 7052 swiper.grid.updateWrapperSize(slideSize, snapGrid); 7053 } 7054 7055 // Remove last grid elements depending on width 7056 if (!params.centeredSlides) { 7057 const newSlidesGrid = []; 7058 for (let i = 0; i < snapGrid.length; i += 1) { 7059 let slidesGridItem = snapGrid[i]; 7060 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 7061 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 7062 newSlidesGrid.push(slidesGridItem); 7063 } 7064 } 7065 snapGrid = newSlidesGrid; 7066 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 7067 snapGrid.push(swiper.virtualSize - swiperSize); 7068 } 7069 } 7070 if (isVirtual && params.loop) { 7071 const size = slidesSizesGrid[0] + spaceBetween; 7072 if (params.slidesPerGroup > 1) { 7073 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 7074 const groupSize = size * params.slidesPerGroup; 7075 for (let i = 0; i < groups; i += 1) { 7076 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 7077 } 7078 } 7079 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 7080 if (params.slidesPerGroup === 1) { 7081 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 7082 } 7083 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 7084 swiper.virtualSize += size; 7085 } 7086 } 7087 if (snapGrid.length === 0) snapGrid = [0]; 7088 if (spaceBetween !== 0) { 7089 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 7090 slides.filter((_, slideIndex) => { 7091 if (!params.cssMode || params.loop) return true; 7092 if (slideIndex === slides.length - 1) { 7093 return false; 7094 } 7095 return true; 7096 }).forEach(slideEl => { 7097 slideEl.style[key] = `${spaceBetween}px`; 7098 }); 7099 } 7100 if (params.centeredSlides && params.centeredSlidesBounds) { 7101 let allSlidesSize = 0; 7102 slidesSizesGrid.forEach(slideSizeValue => { 7103 allSlidesSize += slideSizeValue + (spaceBetween || 0); 7104 }); 7105 allSlidesSize -= spaceBetween; 7106 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 7107 snapGrid = snapGrid.map(snap => { 7108 if (snap <= 0) return -offsetBefore; 7109 if (snap > maxSnap) return maxSnap + offsetAfter; 7110 return snap; 7111 }); 7112 } 7113 if (params.centerInsufficientSlides) { 7114 let allSlidesSize = 0; 7115 slidesSizesGrid.forEach(slideSizeValue => { 7116 allSlidesSize += slideSizeValue + (spaceBetween || 0); 7117 }); 7118 allSlidesSize -= spaceBetween; 7119 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 7120 if (allSlidesSize + offsetSize < swiperSize) { 7121 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 7122 snapGrid.forEach((snap, snapIndex) => { 7123 snapGrid[snapIndex] = snap - allSlidesOffset; 7124 }); 7125 slidesGrid.forEach((snap, snapIndex) => { 7126 slidesGrid[snapIndex] = snap + allSlidesOffset; 7127 }); 7128 } 7129 } 7130 Object.assign(swiper, { 7131 slides, 7132 snapGrid, 7133 slidesGrid, 7134 slidesSizesGrid 7135 }); 7136 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 7137 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 7138 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 7139 const addToSnapGrid = -swiper.snapGrid[0]; 7140 const addToSlidesGrid = -swiper.slidesGrid[0]; 7141 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 7142 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 7143 } 7144 if (slidesLength !== previousSlidesLength) { 7145 swiper.emit('slidesLengthChange'); 7146 } 7147 if (snapGrid.length !== previousSnapGridLength) { 7148 if (swiper.params.watchOverflow) swiper.checkOverflow(); 7149 swiper.emit('snapGridLengthChange'); 7150 } 7151 if (slidesGrid.length !== previousSlidesGridLength) { 7152 swiper.emit('slidesGridLengthChange'); 7153 } 7154 if (params.watchSlidesProgress) { 7155 swiper.updateSlidesOffset(); 7156 } 7157 swiper.emit('slidesUpdated'); 7158 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 7159 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 7160 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 7161 if (slidesLength <= params.maxBackfaceHiddenSlides) { 7162 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 7163 } else if (hasClassBackfaceClassAdded) { 7164 swiper.el.classList.remove(backFaceHiddenClass); 7165 } 7166 } 7167} 7168 7169function updateAutoHeight(speed) { 7170 const swiper = this; 7171 const activeSlides = []; 7172 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7173 let newHeight = 0; 7174 let i; 7175 if (typeof speed === 'number') { 7176 swiper.setTransition(speed); 7177 } else if (speed === true) { 7178 swiper.setTransition(swiper.params.speed); 7179 } 7180 const getSlideByIndex = index => { 7181 if (isVirtual) { 7182 return swiper.slides[swiper.getSlideIndexByData(index)]; 7183 } 7184 return swiper.slides[index]; 7185 }; 7186 // Find slides currently in view 7187 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 7188 if (swiper.params.centeredSlides) { 7189 (swiper.visibleSlides || []).forEach(slide => { 7190 activeSlides.push(slide); 7191 }); 7192 } else { 7193 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 7194 const index = swiper.activeIndex + i; 7195 if (index > swiper.slides.length && !isVirtual) break; 7196 activeSlides.push(getSlideByIndex(index)); 7197 } 7198 } 7199 } else { 7200 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 7201 } 7202 7203 // Find new height from highest slide in view 7204 for (i = 0; i < activeSlides.length; i += 1) { 7205 if (typeof activeSlides[i] !== 'undefined') { 7206 const height = activeSlides[i].offsetHeight; 7207 newHeight = height > newHeight ? height : newHeight; 7208 } 7209 } 7210 7211 // Update Height 7212 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 7213} 7214 7215function updateSlidesOffset() { 7216 const swiper = this; 7217 const slides = swiper.slides; 7218 // eslint-disable-next-line 7219 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 7220 for (let i = 0; i < slides.length; i += 1) { 7221 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 7222 } 7223} 7224 7225const toggleSlideClasses$1 = (slideEl, condition, className) => { 7226 if (condition && !slideEl.classList.contains(className)) { 7227 slideEl.classList.add(className); 7228 } else if (!condition && slideEl.classList.contains(className)) { 7229 slideEl.classList.remove(className); 7230 } 7231}; 7232function updateSlidesProgress(translate) { 7233 if (translate === void 0) { 7234 translate = this && this.translate || 0; 7235 } 7236 const swiper = this; 7237 const params = swiper.params; 7238 const { 7239 slides, 7240 rtlTranslate: rtl, 7241 snapGrid 7242 } = swiper; 7243 if (slides.length === 0) return; 7244 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 7245 let offsetCenter = -translate; 7246 if (rtl) offsetCenter = translate; 7247 swiper.visibleSlidesIndexes = []; 7248 swiper.visibleSlides = []; 7249 let spaceBetween = params.spaceBetween; 7250 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 7251 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 7252 } else if (typeof spaceBetween === 'string') { 7253 spaceBetween = parseFloat(spaceBetween); 7254 } 7255 for (let i = 0; i < slides.length; i += 1) { 7256 const slide = slides[i]; 7257 let slideOffset = slide.swiperSlideOffset; 7258 if (params.cssMode && params.centeredSlides) { 7259 slideOffset -= slides[0].swiperSlideOffset; 7260 } 7261 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 7262 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 7263 const slideBefore = -(offsetCenter - slideOffset); 7264 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 7265 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 7266 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 7267 if (isVisible) { 7268 swiper.visibleSlides.push(slide); 7269 swiper.visibleSlidesIndexes.push(i); 7270 } 7271 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 7272 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 7273 slide.progress = rtl ? -slideProgress : slideProgress; 7274 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 7275 } 7276} 7277 7278function updateProgress(translate) { 7279 const swiper = this; 7280 if (typeof translate === 'undefined') { 7281 const multiplier = swiper.rtlTranslate ? -1 : 1; 7282 // eslint-disable-next-line 7283 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 7284 } 7285 const params = swiper.params; 7286 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7287 let { 7288 progress, 7289 isBeginning, 7290 isEnd, 7291 progressLoop 7292 } = swiper; 7293 const wasBeginning = isBeginning; 7294 const wasEnd = isEnd; 7295 if (translatesDiff === 0) { 7296 progress = 0; 7297 isBeginning = true; 7298 isEnd = true; 7299 } else { 7300 progress = (translate - swiper.minTranslate()) / translatesDiff; 7301 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 7302 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 7303 isBeginning = isBeginningRounded || progress <= 0; 7304 isEnd = isEndRounded || progress >= 1; 7305 if (isBeginningRounded) progress = 0; 7306 if (isEndRounded) progress = 1; 7307 } 7308 if (params.loop) { 7309 const firstSlideIndex = swiper.getSlideIndexByData(0); 7310 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 7311 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 7312 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 7313 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 7314 const translateAbs = Math.abs(translate); 7315 if (translateAbs >= firstSlideTranslate) { 7316 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 7317 } else { 7318 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 7319 } 7320 if (progressLoop > 1) progressLoop -= 1; 7321 } 7322 Object.assign(swiper, { 7323 progress, 7324 progressLoop, 7325 isBeginning, 7326 isEnd 7327 }); 7328 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 7329 if (isBeginning && !wasBeginning) { 7330 swiper.emit('reachBeginning toEdge'); 7331 } 7332 if (isEnd && !wasEnd) { 7333 swiper.emit('reachEnd toEdge'); 7334 } 7335 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 7336 swiper.emit('fromEdge'); 7337 } 7338 swiper.emit('progress', progress); 7339} 7340 7341const toggleSlideClasses = (slideEl, condition, className) => { 7342 if (condition && !slideEl.classList.contains(className)) { 7343 slideEl.classList.add(className); 7344 } else if (!condition && slideEl.classList.contains(className)) { 7345 slideEl.classList.remove(className); 7346 } 7347}; 7348function updateSlidesClasses() { 7349 const swiper = this; 7350 const { 7351 slides, 7352 params, 7353 slidesEl, 7354 activeIndex 7355 } = swiper; 7356 const isVirtual = swiper.virtual && params.virtual.enabled; 7357 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7358 const getFilteredSlide = selector => { 7359 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 7360 }; 7361 let activeSlide; 7362 let prevSlide; 7363 let nextSlide; 7364 if (isVirtual) { 7365 if (params.loop) { 7366 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 7367 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 7368 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 7369 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 7370 } else { 7371 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 7372 } 7373 } else { 7374 if (gridEnabled) { 7375 activeSlide = slides.find(slideEl => slideEl.column === activeIndex); 7376 nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1); 7377 prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1); 7378 } else { 7379 activeSlide = slides[activeIndex]; 7380 } 7381 } 7382 if (activeSlide) { 7383 if (!gridEnabled) { 7384 // Next Slide 7385 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7386 if (params.loop && !nextSlide) { 7387 nextSlide = slides[0]; 7388 } 7389 7390 // Prev Slide 7391 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 7392 if (params.loop && !prevSlide === 0) { 7393 prevSlide = slides[slides.length - 1]; 7394 } 7395 } 7396 } 7397 slides.forEach(slideEl => { 7398 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 7399 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 7400 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 7401 }); 7402 swiper.emitSlidesClasses(); 7403} 7404 7405const processLazyPreloader = (swiper, imageEl) => { 7406 if (!swiper || swiper.destroyed || !swiper.params) return; 7407 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 7408 const slideEl = imageEl.closest(slideSelector()); 7409 if (slideEl) { 7410 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7411 if (!lazyEl && swiper.isElement) { 7412 if (slideEl.shadowRoot) { 7413 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7414 } else { 7415 // init later 7416 requestAnimationFrame(() => { 7417 if (slideEl.shadowRoot) { 7418 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 7419 if (lazyEl) lazyEl.remove(); 7420 } 7421 }); 7422 } 7423 } 7424 if (lazyEl) lazyEl.remove(); 7425 } 7426}; 7427const unlazy = (swiper, index) => { 7428 if (!swiper.slides[index]) return; 7429 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 7430 if (imageEl) imageEl.removeAttribute('loading'); 7431}; 7432const preload = swiper => { 7433 if (!swiper || swiper.destroyed || !swiper.params) return; 7434 let amount = swiper.params.lazyPreloadPrevNext; 7435 const len = swiper.slides.length; 7436 if (!len || !amount || amount < 0) return; 7437 amount = Math.min(amount, len); 7438 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 7439 const activeIndex = swiper.activeIndex; 7440 if (swiper.params.grid && swiper.params.grid.rows > 1) { 7441 const activeColumn = activeIndex; 7442 const preloadColumns = [activeColumn - amount]; 7443 preloadColumns.push(...Array.from({ 7444 length: amount 7445 }).map((_, i) => { 7446 return activeColumn + slidesPerView + i; 7447 })); 7448 swiper.slides.forEach((slideEl, i) => { 7449 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 7450 }); 7451 return; 7452 } 7453 const slideIndexLastInView = activeIndex + slidesPerView - 1; 7454 if (swiper.params.rewind || swiper.params.loop) { 7455 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 7456 const realIndex = (i % len + len) % len; 7457 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 7458 } 7459 } else { 7460 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 7461 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 7462 unlazy(swiper, i); 7463 } 7464 } 7465 } 7466}; 7467 7468function getActiveIndexByTranslate(swiper) { 7469 const { 7470 slidesGrid, 7471 params 7472 } = swiper; 7473 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7474 let activeIndex; 7475 for (let i = 0; i < slidesGrid.length; i += 1) { 7476 if (typeof slidesGrid[i + 1] !== 'undefined') { 7477 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 7478 activeIndex = i; 7479 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 7480 activeIndex = i + 1; 7481 } 7482 } else if (translate >= slidesGrid[i]) { 7483 activeIndex = i; 7484 } 7485 } 7486 // Normalize slideIndex 7487 if (params.normalizeSlideIndex) { 7488 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 7489 } 7490 return activeIndex; 7491} 7492function updateActiveIndex(newActiveIndex) { 7493 const swiper = this; 7494 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 7495 const { 7496 snapGrid, 7497 params, 7498 activeIndex: previousIndex, 7499 realIndex: previousRealIndex, 7500 snapIndex: previousSnapIndex 7501 } = swiper; 7502 let activeIndex = newActiveIndex; 7503 let snapIndex; 7504 const getVirtualRealIndex = aIndex => { 7505 let realIndex = aIndex - swiper.virtual.slidesBefore; 7506 if (realIndex < 0) { 7507 realIndex = swiper.virtual.slides.length + realIndex; 7508 } 7509 if (realIndex >= swiper.virtual.slides.length) { 7510 realIndex -= swiper.virtual.slides.length; 7511 } 7512 return realIndex; 7513 }; 7514 if (typeof activeIndex === 'undefined') { 7515 activeIndex = getActiveIndexByTranslate(swiper); 7516 } 7517 if (snapGrid.indexOf(translate) >= 0) { 7518 snapIndex = snapGrid.indexOf(translate); 7519 } else { 7520 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 7521 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 7522 } 7523 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7524 if (activeIndex === previousIndex && !swiper.params.loop) { 7525 if (snapIndex !== previousSnapIndex) { 7526 swiper.snapIndex = snapIndex; 7527 swiper.emit('snapIndexChange'); 7528 } 7529 return; 7530 } 7531 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 7532 swiper.realIndex = getVirtualRealIndex(activeIndex); 7533 return; 7534 } 7535 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 7536 7537 // Get real index 7538 let realIndex; 7539 if (swiper.virtual && params.virtual.enabled && params.loop) { 7540 realIndex = getVirtualRealIndex(activeIndex); 7541 } else if (gridEnabled) { 7542 const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex); 7543 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 7544 if (Number.isNaN(activeSlideIndex)) { 7545 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 7546 } 7547 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 7548 } else if (swiper.slides[activeIndex]) { 7549 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 7550 if (slideIndex) { 7551 realIndex = parseInt(slideIndex, 10); 7552 } else { 7553 realIndex = activeIndex; 7554 } 7555 } else { 7556 realIndex = activeIndex; 7557 } 7558 Object.assign(swiper, { 7559 previousSnapIndex, 7560 snapIndex, 7561 previousRealIndex, 7562 realIndex, 7563 previousIndex, 7564 activeIndex 7565 }); 7566 if (swiper.initialized) { 7567 preload(swiper); 7568 } 7569 swiper.emit('activeIndexChange'); 7570 swiper.emit('snapIndexChange'); 7571 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 7572 if (previousRealIndex !== realIndex) { 7573 swiper.emit('realIndexChange'); 7574 } 7575 swiper.emit('slideChange'); 7576 } 7577} 7578 7579function updateClickedSlide(el, path) { 7580 const swiper = this; 7581 const params = swiper.params; 7582 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 7583 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 7584 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 7585 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 7586 slide = pathEl; 7587 } 7588 }); 7589 } 7590 let slideFound = false; 7591 let slideIndex; 7592 if (slide) { 7593 for (let i = 0; i < swiper.slides.length; i += 1) { 7594 if (swiper.slides[i] === slide) { 7595 slideFound = true; 7596 slideIndex = i; 7597 break; 7598 } 7599 } 7600 } 7601 if (slide && slideFound) { 7602 swiper.clickedSlide = slide; 7603 if (swiper.virtual && swiper.params.virtual.enabled) { 7604 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 7605 } else { 7606 swiper.clickedIndex = slideIndex; 7607 } 7608 } else { 7609 swiper.clickedSlide = undefined; 7610 swiper.clickedIndex = undefined; 7611 return; 7612 } 7613 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 7614 swiper.slideToClickedSlide(); 7615 } 7616} 7617 7618var update = { 7619 updateSize, 7620 updateSlides, 7621 updateAutoHeight, 7622 updateSlidesOffset, 7623 updateSlidesProgress, 7624 updateProgress, 7625 updateSlidesClasses, 7626 updateActiveIndex, 7627 updateClickedSlide 7628}; 7629 7630function getSwiperTranslate(axis) { 7631 if (axis === void 0) { 7632 axis = this.isHorizontal() ? 'x' : 'y'; 7633 } 7634 const swiper = this; 7635 const { 7636 params, 7637 rtlTranslate: rtl, 7638 translate, 7639 wrapperEl 7640 } = swiper; 7641 if (params.virtualTranslate) { 7642 return rtl ? -translate : translate; 7643 } 7644 if (params.cssMode) { 7645 return translate; 7646 } 7647 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.k)(wrapperEl, axis); 7648 currentTranslate += swiper.cssOverflowAdjustment(); 7649 if (rtl) currentTranslate = -currentTranslate; 7650 return currentTranslate || 0; 7651} 7652 7653function setTranslate(translate, byController) { 7654 const swiper = this; 7655 const { 7656 rtlTranslate: rtl, 7657 params, 7658 wrapperEl, 7659 progress 7660 } = swiper; 7661 let x = 0; 7662 let y = 0; 7663 const z = 0; 7664 if (swiper.isHorizontal()) { 7665 x = rtl ? -translate : translate; 7666 } else { 7667 y = translate; 7668 } 7669 if (params.roundLengths) { 7670 x = Math.floor(x); 7671 y = Math.floor(y); 7672 } 7673 swiper.previousTranslate = swiper.translate; 7674 swiper.translate = swiper.isHorizontal() ? x : y; 7675 if (params.cssMode) { 7676 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 7677 } else if (!params.virtualTranslate) { 7678 if (swiper.isHorizontal()) { 7679 x -= swiper.cssOverflowAdjustment(); 7680 } else { 7681 y -= swiper.cssOverflowAdjustment(); 7682 } 7683 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 7684 } 7685 7686 // Check if we need to update progress 7687 let newProgress; 7688 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 7689 if (translatesDiff === 0) { 7690 newProgress = 0; 7691 } else { 7692 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 7693 } 7694 if (newProgress !== progress) { 7695 swiper.updateProgress(translate); 7696 } 7697 swiper.emit('setTranslate', swiper.translate, byController); 7698} 7699 7700function minTranslate() { 7701 return -this.snapGrid[0]; 7702} 7703 7704function maxTranslate() { 7705 return -this.snapGrid[this.snapGrid.length - 1]; 7706} 7707 7708function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 7709 if (translate === void 0) { 7710 translate = 0; 7711 } 7712 if (speed === void 0) { 7713 speed = this.params.speed; 7714 } 7715 if (runCallbacks === void 0) { 7716 runCallbacks = true; 7717 } 7718 if (translateBounds === void 0) { 7719 translateBounds = true; 7720 } 7721 const swiper = this; 7722 const { 7723 params, 7724 wrapperEl 7725 } = swiper; 7726 if (swiper.animating && params.preventInteractionOnTransition) { 7727 return false; 7728 } 7729 const minTranslate = swiper.minTranslate(); 7730 const maxTranslate = swiper.maxTranslate(); 7731 let newTranslate; 7732 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 7733 7734 // Update progress 7735 swiper.updateProgress(newTranslate); 7736 if (params.cssMode) { 7737 const isH = swiper.isHorizontal(); 7738 if (speed === 0) { 7739 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 7740 } else { 7741 if (!swiper.support.smoothScroll) { 7742 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)({ 7743 swiper, 7744 targetPosition: -newTranslate, 7745 side: isH ? 'left' : 'top' 7746 }); 7747 return true; 7748 } 7749 wrapperEl.scrollTo({ 7750 [isH ? 'left' : 'top']: -newTranslate, 7751 behavior: 'smooth' 7752 }); 7753 } 7754 return true; 7755 } 7756 if (speed === 0) { 7757 swiper.setTransition(0); 7758 swiper.setTranslate(newTranslate); 7759 if (runCallbacks) { 7760 swiper.emit('beforeTransitionStart', speed, internal); 7761 swiper.emit('transitionEnd'); 7762 } 7763 } else { 7764 swiper.setTransition(speed); 7765 swiper.setTranslate(newTranslate); 7766 if (runCallbacks) { 7767 swiper.emit('beforeTransitionStart', speed, internal); 7768 swiper.emit('transitionStart'); 7769 } 7770 if (!swiper.animating) { 7771 swiper.animating = true; 7772 if (!swiper.onTranslateToWrapperTransitionEnd) { 7773 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 7774 if (!swiper || swiper.destroyed) return; 7775 if (e.target !== this) return; 7776 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7777 swiper.onTranslateToWrapperTransitionEnd = null; 7778 delete swiper.onTranslateToWrapperTransitionEnd; 7779 swiper.animating = false; 7780 if (runCallbacks) { 7781 swiper.emit('transitionEnd'); 7782 } 7783 }; 7784 } 7785 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 7786 } 7787 } 7788 return true; 7789} 7790 7791var translate = { 7792 getTranslate: getSwiperTranslate, 7793 setTranslate, 7794 minTranslate, 7795 maxTranslate, 7796 translateTo 7797}; 7798 7799function setTransition(duration, byController) { 7800 const swiper = this; 7801 if (!swiper.params.cssMode) { 7802 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 7803 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 7804 } 7805 swiper.emit('setTransition', duration, byController); 7806} 7807 7808function transitionEmit(_ref) { 7809 let { 7810 swiper, 7811 runCallbacks, 7812 direction, 7813 step 7814 } = _ref; 7815 const { 7816 activeIndex, 7817 previousIndex 7818 } = swiper; 7819 let dir = direction; 7820 if (!dir) { 7821 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 7822 } 7823 swiper.emit(`transition${step}`); 7824 if (runCallbacks && dir === 'reset') { 7825 swiper.emit(`slideResetTransition${step}`); 7826 } else if (runCallbacks && activeIndex !== previousIndex) { 7827 swiper.emit(`slideChangeTransition${step}`); 7828 if (dir === 'next') { 7829 swiper.emit(`slideNextTransition${step}`); 7830 } else { 7831 swiper.emit(`slidePrevTransition${step}`); 7832 } 7833 } 7834} 7835 7836function transitionStart(runCallbacks, direction) { 7837 if (runCallbacks === void 0) { 7838 runCallbacks = true; 7839 } 7840 const swiper = this; 7841 const { 7842 params 7843 } = swiper; 7844 if (params.cssMode) return; 7845 if (params.autoHeight) { 7846 swiper.updateAutoHeight(); 7847 } 7848 transitionEmit({ 7849 swiper, 7850 runCallbacks, 7851 direction, 7852 step: 'Start' 7853 }); 7854} 7855 7856function transitionEnd(runCallbacks, direction) { 7857 if (runCallbacks === void 0) { 7858 runCallbacks = true; 7859 } 7860 const swiper = this; 7861 const { 7862 params 7863 } = swiper; 7864 swiper.animating = false; 7865 if (params.cssMode) return; 7866 swiper.setTransition(0); 7867 transitionEmit({ 7868 swiper, 7869 runCallbacks, 7870 direction, 7871 step: 'End' 7872 }); 7873} 7874 7875var transition = { 7876 setTransition, 7877 transitionStart, 7878 transitionEnd 7879}; 7880 7881function slideTo(index, speed, runCallbacks, internal, initial) { 7882 if (index === void 0) { 7883 index = 0; 7884 } 7885 if (runCallbacks === void 0) { 7886 runCallbacks = true; 7887 } 7888 if (typeof index === 'string') { 7889 index = parseInt(index, 10); 7890 } 7891 const swiper = this; 7892 let slideIndex = index; 7893 if (slideIndex < 0) slideIndex = 0; 7894 const { 7895 params, 7896 snapGrid, 7897 slidesGrid, 7898 previousIndex, 7899 activeIndex, 7900 rtlTranslate: rtl, 7901 wrapperEl, 7902 enabled 7903 } = swiper; 7904 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 7905 return false; 7906 } 7907 if (typeof speed === 'undefined') { 7908 speed = swiper.params.speed; 7909 } 7910 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 7911 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 7912 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 7913 const translate = -snapGrid[snapIndex]; 7914 // Normalize slideIndex 7915 if (params.normalizeSlideIndex) { 7916 for (let i = 0; i < slidesGrid.length; i += 1) { 7917 const normalizedTranslate = -Math.floor(translate * 100); 7918 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 7919 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 7920 if (typeof slidesGrid[i + 1] !== 'undefined') { 7921 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 7922 slideIndex = i; 7923 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 7924 slideIndex = i + 1; 7925 } 7926 } else if (normalizedTranslate >= normalizedGrid) { 7927 slideIndex = i; 7928 } 7929 } 7930 } 7931 // Directions locks 7932 if (swiper.initialized && slideIndex !== activeIndex) { 7933 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 7934 return false; 7935 } 7936 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 7937 if ((activeIndex || 0) !== slideIndex) { 7938 return false; 7939 } 7940 } 7941 } 7942 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 7943 swiper.emit('beforeSlideChangeStart'); 7944 } 7945 7946 // Update progress 7947 swiper.updateProgress(translate); 7948 let direction; 7949 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 7950 7951 // initial virtual 7952 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7953 const isInitialVirtual = isVirtual && initial; 7954 // Update Index 7955 if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { 7956 swiper.updateActiveIndex(slideIndex); 7957 // Update Height 7958 if (params.autoHeight) { 7959 swiper.updateAutoHeight(); 7960 } 7961 swiper.updateSlidesClasses(); 7962 if (params.effect !== 'slide') { 7963 swiper.setTranslate(translate); 7964 } 7965 if (direction !== 'reset') { 7966 swiper.transitionStart(runCallbacks, direction); 7967 swiper.transitionEnd(runCallbacks, direction); 7968 } 7969 return false; 7970 } 7971 if (params.cssMode) { 7972 const isH = swiper.isHorizontal(); 7973 const t = rtl ? translate : -translate; 7974 if (speed === 0) { 7975 if (isVirtual) { 7976 swiper.wrapperEl.style.scrollSnapType = 'none'; 7977 swiper._immediateVirtual = true; 7978 } 7979 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 7980 swiper._cssModeVirtualInitialSet = true; 7981 requestAnimationFrame(() => { 7982 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7983 }); 7984 } else { 7985 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 7986 } 7987 if (isVirtual) { 7988 requestAnimationFrame(() => { 7989 swiper.wrapperEl.style.scrollSnapType = ''; 7990 swiper._immediateVirtual = false; 7991 }); 7992 } 7993 } else { 7994 if (!swiper.support.smoothScroll) { 7995 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)({ 7996 swiper, 7997 targetPosition: t, 7998 side: isH ? 'left' : 'top' 7999 }); 8000 return true; 8001 } 8002 wrapperEl.scrollTo({ 8003 [isH ? 'left' : 'top']: t, 8004 behavior: 'smooth' 8005 }); 8006 } 8007 return true; 8008 } 8009 const browser = getBrowser(); 8010 const isSafari = browser.isSafari; 8011 if (isVirtual && !initial && isSafari && swiper.isElement) { 8012 swiper.virtual.update(false, false, slideIndex); 8013 } 8014 swiper.setTransition(speed); 8015 swiper.setTranslate(translate); 8016 swiper.updateActiveIndex(slideIndex); 8017 swiper.updateSlidesClasses(); 8018 swiper.emit('beforeTransitionStart', speed, internal); 8019 swiper.transitionStart(runCallbacks, direction); 8020 if (speed === 0) { 8021 swiper.transitionEnd(runCallbacks, direction); 8022 } else if (!swiper.animating) { 8023 swiper.animating = true; 8024 if (!swiper.onSlideToWrapperTransitionEnd) { 8025 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 8026 if (!swiper || swiper.destroyed) return; 8027 if (e.target !== this) return; 8028 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 8029 swiper.onSlideToWrapperTransitionEnd = null; 8030 delete swiper.onSlideToWrapperTransitionEnd; 8031 swiper.transitionEnd(runCallbacks, direction); 8032 }; 8033 } 8034 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 8035 } 8036 return true; 8037} 8038 8039function slideToLoop(index, speed, runCallbacks, internal) { 8040 if (index === void 0) { 8041 index = 0; 8042 } 8043 if (runCallbacks === void 0) { 8044 runCallbacks = true; 8045 } 8046 if (typeof index === 'string') { 8047 const indexAsNumber = parseInt(index, 10); 8048 index = indexAsNumber; 8049 } 8050 const swiper = this; 8051 if (swiper.destroyed) return; 8052 if (typeof speed === 'undefined') { 8053 speed = swiper.params.speed; 8054 } 8055 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 8056 let newIndex = index; 8057 if (swiper.params.loop) { 8058 if (swiper.virtual && swiper.params.virtual.enabled) { 8059 // eslint-disable-next-line 8060 newIndex = newIndex + swiper.virtual.slidesBefore; 8061 } else { 8062 let targetSlideIndex; 8063 if (gridEnabled) { 8064 const slideIndex = newIndex * swiper.params.grid.rows; 8065 targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 8066 } else { 8067 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 8068 } 8069 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 8070 const { 8071 centeredSlides 8072 } = swiper.params; 8073 let slidesPerView = swiper.params.slidesPerView; 8074 if (slidesPerView === 'auto') { 8075 slidesPerView = swiper.slidesPerViewDynamic(); 8076 } else { 8077 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 8078 if (centeredSlides && slidesPerView % 2 === 0) { 8079 slidesPerView = slidesPerView + 1; 8080 } 8081 } 8082 let needLoopFix = cols - targetSlideIndex < slidesPerView; 8083 if (centeredSlides) { 8084 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 8085 } 8086 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 8087 needLoopFix = false; 8088 } 8089 if (needLoopFix) { 8090 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 8091 swiper.loopFix({ 8092 direction, 8093 slideTo: true, 8094 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 8095 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 8096 }); 8097 } 8098 if (gridEnabled) { 8099 const slideIndex = newIndex * swiper.params.grid.rows; 8100 newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column; 8101 } else { 8102 newIndex = swiper.getSlideIndexByData(newIndex); 8103 } 8104 } 8105 } 8106 requestAnimationFrame(() => { 8107 swiper.slideTo(newIndex, speed, runCallbacks, internal); 8108 }); 8109 return swiper; 8110} 8111 8112/* eslint no-unused-vars: "off" */ 8113function slideNext(speed, runCallbacks, internal) { 8114 if (runCallbacks === void 0) { 8115 runCallbacks = true; 8116 } 8117 const swiper = this; 8118 const { 8119 enabled, 8120 params, 8121 animating 8122 } = swiper; 8123 if (!enabled || swiper.destroyed) return swiper; 8124 if (typeof speed === 'undefined') { 8125 speed = swiper.params.speed; 8126 } 8127 let perGroup = params.slidesPerGroup; 8128 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 8129 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 8130 } 8131 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 8132 const isVirtual = swiper.virtual && params.virtual.enabled; 8133 if (params.loop) { 8134 if (animating && !isVirtual && params.loopPreventsSliding) return false; 8135 swiper.loopFix({ 8136 direction: 'next' 8137 }); 8138 // eslint-disable-next-line 8139 swiper._clientLeft = swiper.wrapperEl.clientLeft; 8140 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 8141 requestAnimationFrame(() => { 8142 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 8143 }); 8144 return true; 8145 } 8146 } 8147 if (params.rewind && swiper.isEnd) { 8148 return swiper.slideTo(0, speed, runCallbacks, internal); 8149 } 8150 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 8151} 8152 8153/* eslint no-unused-vars: "off" */ 8154function slidePrev(speed, runCallbacks, internal) { 8155 if (runCallbacks === void 0) { 8156 runCallbacks = true; 8157 } 8158 const swiper = this; 8159 const { 8160 params, 8161 snapGrid, 8162 slidesGrid, 8163 rtlTranslate, 8164 enabled, 8165 animating 8166 } = swiper; 8167 if (!enabled || swiper.destroyed) return swiper; 8168 if (typeof speed === 'undefined') { 8169 speed = swiper.params.speed; 8170 } 8171 const isVirtual = swiper.virtual && params.virtual.enabled; 8172 if (params.loop) { 8173 if (animating && !isVirtual && params.loopPreventsSliding) return false; 8174 swiper.loopFix({ 8175 direction: 'prev' 8176 }); 8177 // eslint-disable-next-line 8178 swiper._clientLeft = swiper.wrapperEl.clientLeft; 8179 } 8180 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 8181 function normalize(val) { 8182 if (val < 0) return -Math.floor(Math.abs(val)); 8183 return Math.floor(val); 8184 } 8185 const normalizedTranslate = normalize(translate); 8186 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 8187 const isFreeMode = params.freeMode && params.freeMode.enabled; 8188 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 8189 if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) { 8190 let prevSnapIndex; 8191 snapGrid.forEach((snap, snapIndex) => { 8192 if (normalizedTranslate >= snap) { 8193 // prevSnap = snap; 8194 prevSnapIndex = snapIndex; 8195 } 8196 }); 8197 if (typeof prevSnapIndex !== 'undefined') { 8198 prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 8199 } 8200 } 8201 let prevIndex = 0; 8202 if (typeof prevSnap !== 'undefined') { 8203 prevIndex = slidesGrid.indexOf(prevSnap); 8204 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 8205 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 8206 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 8207 prevIndex = Math.max(prevIndex, 0); 8208 } 8209 } 8210 if (params.rewind && swiper.isBeginning) { 8211 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 8212 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 8213 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 8214 requestAnimationFrame(() => { 8215 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 8216 }); 8217 return true; 8218 } 8219 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 8220} 8221 8222/* eslint no-unused-vars: "off" */ 8223function slideReset(speed, runCallbacks, internal) { 8224 if (runCallbacks === void 0) { 8225 runCallbacks = true; 8226 } 8227 const swiper = this; 8228 if (swiper.destroyed) return; 8229 if (typeof speed === 'undefined') { 8230 speed = swiper.params.speed; 8231 } 8232 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 8233} 8234 8235/* eslint no-unused-vars: "off" */ 8236function slideToClosest(speed, runCallbacks, internal, threshold) { 8237 if (runCallbacks === void 0) { 8238 runCallbacks = true; 8239 } 8240 if (threshold === void 0) { 8241 threshold = 0.5; 8242 } 8243 const swiper = this; 8244 if (swiper.destroyed) return; 8245 if (typeof speed === 'undefined') { 8246 speed = swiper.params.speed; 8247 } 8248 let index = swiper.activeIndex; 8249 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 8250 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 8251 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 8252 if (translate >= swiper.snapGrid[snapIndex]) { 8253 // The current translate is on or after the current snap index, so the choice 8254 // is between the current index and the one after it. 8255 const currentSnap = swiper.snapGrid[snapIndex]; 8256 const nextSnap = swiper.snapGrid[snapIndex + 1]; 8257 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 8258 index += swiper.params.slidesPerGroup; 8259 } 8260 } else { 8261 // The current translate is before the current snap index, so the choice 8262 // is between the current index and the one before it. 8263 const prevSnap = swiper.snapGrid[snapIndex - 1]; 8264 const currentSnap = swiper.snapGrid[snapIndex]; 8265 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 8266 index -= swiper.params.slidesPerGroup; 8267 } 8268 } 8269 index = Math.max(index, 0); 8270 index = Math.min(index, swiper.slidesGrid.length - 1); 8271 return swiper.slideTo(index, speed, runCallbacks, internal); 8272} 8273 8274function slideToClickedSlide() { 8275 const swiper = this; 8276 if (swiper.destroyed) return; 8277 const { 8278 params, 8279 slidesEl 8280 } = swiper; 8281 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 8282 let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex); 8283 let realIndex; 8284 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 8285 const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 8286 if (params.loop) { 8287 if (swiper.animating) return; 8288 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 8289 if (params.centeredSlides) { 8290 swiper.slideToLoop(realIndex); 8291 } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) { 8292 swiper.loopFix(); 8293 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 8294 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 8295 swiper.slideTo(slideToIndex); 8296 }); 8297 } else { 8298 swiper.slideTo(slideToIndex); 8299 } 8300 } else { 8301 swiper.slideTo(slideToIndex); 8302 } 8303} 8304 8305var slide = { 8306 slideTo, 8307 slideToLoop, 8308 slideNext, 8309 slidePrev, 8310 slideReset, 8311 slideToClosest, 8312 slideToClickedSlide 8313}; 8314 8315function loopCreate(slideRealIndex, initial) { 8316 const swiper = this; 8317 const { 8318 params, 8319 slidesEl 8320 } = swiper; 8321 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 8322 const initSlides = () => { 8323 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 8324 slides.forEach((el, index) => { 8325 el.setAttribute('data-swiper-slide-index', index); 8326 }); 8327 }; 8328 const clearBlankSlides = () => { 8329 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideBlankClass}`); 8330 slides.forEach(el => { 8331 el.remove(); 8332 }); 8333 if (slides.length > 0) { 8334 swiper.recalcSlides(); 8335 swiper.updateSlides(); 8336 } 8337 }; 8338 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8339 if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) { 8340 clearBlankSlides(); 8341 } 8342 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 8343 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 8344 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 8345 const addBlankSlides = amountOfSlides => { 8346 for (let i = 0; i < amountOfSlides; i += 1) { 8347 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]); 8348 swiper.slidesEl.append(slideEl); 8349 } 8350 }; 8351 if (shouldFillGroup) { 8352 if (params.loopAddBlankSlides) { 8353 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 8354 addBlankSlides(slidesToAdd); 8355 swiper.recalcSlides(); 8356 swiper.updateSlides(); 8357 } else { 8358 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 8359 } 8360 initSlides(); 8361 } else if (shouldFillGrid) { 8362 if (params.loopAddBlankSlides) { 8363 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 8364 addBlankSlides(slidesToAdd); 8365 swiper.recalcSlides(); 8366 swiper.updateSlides(); 8367 } else { 8368 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 8369 } 8370 initSlides(); 8371 } else { 8372 initSlides(); 8373 } 8374 swiper.loopFix({ 8375 slideRealIndex, 8376 direction: params.centeredSlides ? undefined : 'next', 8377 initial 8378 }); 8379} 8380 8381function loopFix(_temp) { 8382 let { 8383 slideRealIndex, 8384 slideTo = true, 8385 direction, 8386 setTranslate, 8387 activeSlideIndex, 8388 initial, 8389 byController, 8390 byMousewheel 8391 } = _temp === void 0 ? {} : _temp; 8392 const swiper = this; 8393 if (!swiper.params.loop) return; 8394 swiper.emit('beforeLoopFix'); 8395 const { 8396 slides, 8397 allowSlidePrev, 8398 allowSlideNext, 8399 slidesEl, 8400 params 8401 } = swiper; 8402 const { 8403 centeredSlides, 8404 initialSlide 8405 } = params; 8406 swiper.allowSlidePrev = true; 8407 swiper.allowSlideNext = true; 8408 if (swiper.virtual && params.virtual.enabled) { 8409 if (slideTo) { 8410 if (!params.centeredSlides && swiper.snapIndex === 0) { 8411 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 8412 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 8413 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 8414 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 8415 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 8416 } 8417 } 8418 swiper.allowSlidePrev = allowSlidePrev; 8419 swiper.allowSlideNext = allowSlideNext; 8420 swiper.emit('loopFix'); 8421 return; 8422 } 8423 let slidesPerView = params.slidesPerView; 8424 if (slidesPerView === 'auto') { 8425 slidesPerView = swiper.slidesPerViewDynamic(); 8426 } else { 8427 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 8428 if (centeredSlides && slidesPerView % 2 === 0) { 8429 slidesPerView = slidesPerView + 1; 8430 } 8431 } 8432 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 8433 let loopedSlides = centeredSlides ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup; 8434 if (loopedSlides % slidesPerGroup !== 0) { 8435 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 8436 } 8437 loopedSlides += params.loopAdditionalSlides; 8438 swiper.loopedSlides = loopedSlides; 8439 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 8440 if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8441 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); 8442 } else if (gridEnabled && params.grid.fill === 'row') { 8443 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 8444 } 8445 const prependSlidesIndexes = []; 8446 const appendSlidesIndexes = []; 8447 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 8448 const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides; 8449 let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex; 8450 if (typeof activeSlideIndex === 'undefined') { 8451 activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass))); 8452 } else { 8453 activeIndex = activeSlideIndex; 8454 } 8455 const isNext = direction === 'next' || !direction; 8456 const isPrev = direction === 'prev' || !direction; 8457 let slidesPrepended = 0; 8458 let slidesAppended = 0; 8459 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 8460 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 8461 // prepend last slides before start 8462 if (activeColIndexWithShift < loopedSlides) { 8463 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 8464 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 8465 const index = i - Math.floor(i / cols) * cols; 8466 if (gridEnabled) { 8467 const colIndexToPrepend = cols - index - 1; 8468 for (let i = slides.length - 1; i >= 0; i -= 1) { 8469 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 8470 } 8471 // slides.forEach((slide, slideIndex) => { 8472 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 8473 // }); 8474 } else { 8475 prependSlidesIndexes.push(cols - index - 1); 8476 } 8477 } 8478 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 8479 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 8480 if (isInitialOverflow) { 8481 slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1); 8482 } 8483 for (let i = 0; i < slidesAppended; i += 1) { 8484 const index = i - Math.floor(i / cols) * cols; 8485 if (gridEnabled) { 8486 slides.forEach((slide, slideIndex) => { 8487 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 8488 }); 8489 } else { 8490 appendSlidesIndexes.push(index); 8491 } 8492 } 8493 } 8494 swiper.__preventObserver__ = true; 8495 requestAnimationFrame(() => { 8496 swiper.__preventObserver__ = false; 8497 }); 8498 if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) { 8499 if (appendSlidesIndexes.includes(activeSlideIndex)) { 8500 appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1); 8501 } 8502 if (prependSlidesIndexes.includes(activeSlideIndex)) { 8503 prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1); 8504 } 8505 } 8506 if (isPrev) { 8507 prependSlidesIndexes.forEach(index => { 8508 slides[index].swiperLoopMoveDOM = true; 8509 slidesEl.prepend(slides[index]); 8510 slides[index].swiperLoopMoveDOM = false; 8511 }); 8512 } 8513 if (isNext) { 8514 appendSlidesIndexes.forEach(index => { 8515 slides[index].swiperLoopMoveDOM = true; 8516 slidesEl.append(slides[index]); 8517 slides[index].swiperLoopMoveDOM = false; 8518 }); 8519 } 8520 swiper.recalcSlides(); 8521 if (params.slidesPerView === 'auto') { 8522 swiper.updateSlides(); 8523 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 8524 swiper.slides.forEach((slide, slideIndex) => { 8525 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 8526 }); 8527 } 8528 if (params.watchSlidesProgress) { 8529 swiper.updateSlidesOffset(); 8530 } 8531 if (slideTo) { 8532 if (prependSlidesIndexes.length > 0 && isPrev) { 8533 if (typeof slideRealIndex === 'undefined') { 8534 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8535 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 8536 const diff = newSlideTranslate - currentSlideTranslate; 8537 if (byMousewheel) { 8538 swiper.setTranslate(swiper.translate - diff); 8539 } else { 8540 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 8541 if (setTranslate) { 8542 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8543 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8544 } 8545 } 8546 } else { 8547 if (setTranslate) { 8548 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 8549 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 8550 swiper.touchEventsData.currentTranslate = swiper.translate; 8551 } 8552 } 8553 } else if (appendSlidesIndexes.length > 0 && isNext) { 8554 if (typeof slideRealIndex === 'undefined') { 8555 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 8556 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 8557 const diff = newSlideTranslate - currentSlideTranslate; 8558 if (byMousewheel) { 8559 swiper.setTranslate(swiper.translate - diff); 8560 } else { 8561 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 8562 if (setTranslate) { 8563 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 8564 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 8565 } 8566 } 8567 } else { 8568 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 8569 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 8570 } 8571 } 8572 } 8573 swiper.allowSlidePrev = allowSlidePrev; 8574 swiper.allowSlideNext = allowSlideNext; 8575 if (swiper.controller && swiper.controller.control && !byController) { 8576 const loopParams = { 8577 slideRealIndex, 8578 direction, 8579 setTranslate, 8580 activeSlideIndex, 8581 byController: true 8582 }; 8583 if (Array.isArray(swiper.controller.control)) { 8584 swiper.controller.control.forEach(c => { 8585 if (!c.destroyed && c.params.loop) c.loopFix({ 8586 ...loopParams, 8587 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 8588 }); 8589 }); 8590 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 8591 swiper.controller.control.loopFix({ 8592 ...loopParams, 8593 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 8594 }); 8595 } 8596 } 8597 swiper.emit('loopFix'); 8598} 8599 8600function loopDestroy() { 8601 const swiper = this; 8602 const { 8603 params, 8604 slidesEl 8605 } = swiper; 8606 if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return; 8607 swiper.recalcSlides(); 8608 const newSlidesOrder = []; 8609 swiper.slides.forEach(slideEl => { 8610 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 8611 newSlidesOrder[index] = slideEl; 8612 }); 8613 swiper.slides.forEach(slideEl => { 8614 slideEl.removeAttribute('data-swiper-slide-index'); 8615 }); 8616 newSlidesOrder.forEach(slideEl => { 8617 slidesEl.append(slideEl); 8618 }); 8619 swiper.recalcSlides(); 8620 swiper.slideTo(swiper.realIndex, 0); 8621} 8622 8623var loop = { 8624 loopCreate, 8625 loopFix, 8626 loopDestroy 8627}; 8628 8629function setGrabCursor(moving) { 8630 const swiper = this; 8631 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 8632 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 8633 if (swiper.isElement) { 8634 swiper.__preventObserver__ = true; 8635 } 8636 el.style.cursor = 'move'; 8637 el.style.cursor = moving ? 'grabbing' : 'grab'; 8638 if (swiper.isElement) { 8639 requestAnimationFrame(() => { 8640 swiper.__preventObserver__ = false; 8641 }); 8642 } 8643} 8644 8645function unsetGrabCursor() { 8646 const swiper = this; 8647 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 8648 return; 8649 } 8650 if (swiper.isElement) { 8651 swiper.__preventObserver__ = true; 8652 } 8653 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 8654 if (swiper.isElement) { 8655 requestAnimationFrame(() => { 8656 swiper.__preventObserver__ = false; 8657 }); 8658 } 8659} 8660 8661var grabCursor = { 8662 setGrabCursor, 8663 unsetGrabCursor 8664}; 8665 8666// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 8667function closestElement(selector, base) { 8668 if (base === void 0) { 8669 base = this; 8670 } 8671 function __closestFrom(el) { 8672 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; 8673 if (el.assignedSlot) el = el.assignedSlot; 8674 const found = el.closest(selector); 8675 if (!found && !el.getRootNode) { 8676 return null; 8677 } 8678 return found || __closestFrom(el.getRootNode().host); 8679 } 8680 return __closestFrom(base); 8681} 8682function preventEdgeSwipe(swiper, event, startX) { 8683 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8684 const { 8685 params 8686 } = swiper; 8687 const edgeSwipeDetection = params.edgeSwipeDetection; 8688 const edgeSwipeThreshold = params.edgeSwipeThreshold; 8689 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 8690 if (edgeSwipeDetection === 'prevent') { 8691 event.preventDefault(); 8692 return true; 8693 } 8694 return false; 8695 } 8696 return true; 8697} 8698function onTouchStart(event) { 8699 const swiper = this; 8700 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8701 let e = event; 8702 if (e.originalEvent) e = e.originalEvent; 8703 const data = swiper.touchEventsData; 8704 if (e.type === 'pointerdown') { 8705 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 8706 return; 8707 } 8708 data.pointerId = e.pointerId; 8709 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 8710 data.touchId = e.targetTouches[0].identifier; 8711 } 8712 if (e.type === 'touchstart') { 8713 // don't proceed touch event 8714 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 8715 return; 8716 } 8717 const { 8718 params, 8719 touches, 8720 enabled 8721 } = swiper; 8722 if (!enabled) return; 8723 if (!params.simulateTouch && e.pointerType === 'mouse') return; 8724 if (swiper.animating && params.preventInteractionOnTransition) { 8725 return; 8726 } 8727 if (!swiper.animating && params.cssMode && params.loop) { 8728 swiper.loopFix(); 8729 } 8730 let targetEl = e.target; 8731 if (params.touchEventsTarget === 'wrapper') { 8732 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(targetEl, swiper.wrapperEl)) return; 8733 } 8734 if ('which' in e && e.which === 3) return; 8735 if ('button' in e && e.button > 0) return; 8736 if (data.isTouched && data.isMoved) return; 8737 8738 // change target el for shadow root component 8739 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 8740 // eslint-disable-next-line 8741 const eventPath = e.composedPath ? e.composedPath() : e.path; 8742 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 8743 targetEl = eventPath[0]; 8744 } 8745 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 8746 const isTargetShadow = !!(e.target && e.target.shadowRoot); 8747 8748 // use closestElement for shadow root element to get the actual closest for nested shadow root element 8749 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 8750 swiper.allowClick = true; 8751 return; 8752 } 8753 if (params.swipeHandler) { 8754 if (!targetEl.closest(params.swipeHandler)) return; 8755 } 8756 touches.currentX = e.pageX; 8757 touches.currentY = e.pageY; 8758 const startX = touches.currentX; 8759 const startY = touches.currentY; 8760 8761 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 8762 8763 if (!preventEdgeSwipe(swiper, e, startX)) { 8764 return; 8765 } 8766 Object.assign(data, { 8767 isTouched: true, 8768 isMoved: false, 8769 allowTouchCallbacks: true, 8770 isScrolling: undefined, 8771 startMoving: undefined 8772 }); 8773 touches.startX = startX; 8774 touches.startY = startY; 8775 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 8776 swiper.allowClick = true; 8777 swiper.updateSize(); 8778 swiper.swipeDirection = undefined; 8779 if (params.threshold > 0) data.allowThresholdMove = false; 8780 let preventDefault = true; 8781 if (targetEl.matches(data.focusableElements)) { 8782 preventDefault = false; 8783 if (targetEl.nodeName === 'SELECT') { 8784 data.isTouched = false; 8785 } 8786 } 8787 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { 8788 document.activeElement.blur(); 8789 } 8790 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 8791 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 8792 e.preventDefault(); 8793 } 8794 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 8795 swiper.freeMode.onTouchStart(); 8796 } 8797 swiper.emit('touchStart', e); 8798} 8799 8800function onTouchMove(event) { 8801 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8802 const swiper = this; 8803 const data = swiper.touchEventsData; 8804 const { 8805 params, 8806 touches, 8807 rtlTranslate: rtl, 8808 enabled 8809 } = swiper; 8810 if (!enabled) return; 8811 if (!params.simulateTouch && event.pointerType === 'mouse') return; 8812 let e = event; 8813 if (e.originalEvent) e = e.originalEvent; 8814 if (e.type === 'pointermove') { 8815 if (data.touchId !== null) return; // return from pointer if we use touch 8816 const id = e.pointerId; 8817 if (id !== data.pointerId) return; 8818 } 8819 let targetTouch; 8820 if (e.type === 'touchmove') { 8821 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 8822 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 8823 } else { 8824 targetTouch = e; 8825 } 8826 if (!data.isTouched) { 8827 if (data.startMoving && data.isScrolling) { 8828 swiper.emit('touchMoveOpposite', e); 8829 } 8830 return; 8831 } 8832 const pageX = targetTouch.pageX; 8833 const pageY = targetTouch.pageY; 8834 if (e.preventedByNestedSwiper) { 8835 touches.startX = pageX; 8836 touches.startY = pageY; 8837 return; 8838 } 8839 if (!swiper.allowTouchMove) { 8840 if (!e.target.matches(data.focusableElements)) { 8841 swiper.allowClick = false; 8842 } 8843 if (data.isTouched) { 8844 Object.assign(touches, { 8845 startX: pageX, 8846 startY: pageY, 8847 currentX: pageX, 8848 currentY: pageY 8849 }); 8850 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 8851 } 8852 return; 8853 } 8854 if (params.touchReleaseOnEdges && !params.loop) { 8855 if (swiper.isVertical()) { 8856 // Vertical 8857 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 8858 data.isTouched = false; 8859 data.isMoved = false; 8860 return; 8861 } 8862 } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) { 8863 return; 8864 } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) { 8865 return; 8866 } 8867 } 8868 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { 8869 document.activeElement.blur(); 8870 } 8871 if (document.activeElement) { 8872 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 8873 data.isMoved = true; 8874 swiper.allowClick = false; 8875 return; 8876 } 8877 } 8878 if (data.allowTouchCallbacks) { 8879 swiper.emit('touchMove', e); 8880 } 8881 touches.previousX = touches.currentX; 8882 touches.previousY = touches.currentY; 8883 touches.currentX = pageX; 8884 touches.currentY = pageY; 8885 const diffX = touches.currentX - touches.startX; 8886 const diffY = touches.currentY - touches.startY; 8887 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 8888 if (typeof data.isScrolling === 'undefined') { 8889 let touchAngle; 8890 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 8891 data.isScrolling = false; 8892 } else { 8893 // eslint-disable-next-line 8894 if (diffX * diffX + diffY * diffY >= 25) { 8895 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 8896 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 8897 } 8898 } 8899 } 8900 if (data.isScrolling) { 8901 swiper.emit('touchMoveOpposite', e); 8902 } 8903 if (typeof data.startMoving === 'undefined') { 8904 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 8905 data.startMoving = true; 8906 } 8907 } 8908 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 8909 data.isTouched = false; 8910 return; 8911 } 8912 if (!data.startMoving) { 8913 return; 8914 } 8915 swiper.allowClick = false; 8916 if (!params.cssMode && e.cancelable) { 8917 e.preventDefault(); 8918 } 8919 if (params.touchMoveStopPropagation && !params.nested) { 8920 e.stopPropagation(); 8921 } 8922 let diff = swiper.isHorizontal() ? diffX : diffY; 8923 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 8924 if (params.oneWayMovement) { 8925 diff = Math.abs(diff) * (rtl ? 1 : -1); 8926 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 8927 } 8928 touches.diff = diff; 8929 diff *= params.touchRatio; 8930 if (rtl) { 8931 diff = -diff; 8932 touchesDiff = -touchesDiff; 8933 } 8934 const prevTouchesDirection = swiper.touchesDirection; 8935 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 8936 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 8937 const isLoop = swiper.params.loop && !params.cssMode; 8938 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 8939 if (!data.isMoved) { 8940 if (isLoop && allowLoopFix) { 8941 swiper.loopFix({ 8942 direction: swiper.swipeDirection 8943 }); 8944 } 8945 data.startTranslate = swiper.getTranslate(); 8946 swiper.setTransition(0); 8947 if (swiper.animating) { 8948 const evt = new window.CustomEvent('transitionend', { 8949 bubbles: true, 8950 cancelable: true, 8951 detail: { 8952 bySwiperTouchMove: true 8953 } 8954 }); 8955 swiper.wrapperEl.dispatchEvent(evt); 8956 } 8957 data.allowMomentumBounce = false; 8958 // Grab Cursor 8959 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 8960 swiper.setGrabCursor(true); 8961 } 8962 swiper.emit('sliderFirstMove', e); 8963 } 8964 let loopFixed; 8965 new Date().getTime(); 8966 if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 8967 Object.assign(touches, { 8968 startX: pageX, 8969 startY: pageY, 8970 currentX: pageX, 8971 currentY: pageY, 8972 startTranslate: data.currentTranslate 8973 }); 8974 data.loopSwapReset = true; 8975 data.startTranslate = data.currentTranslate; 8976 return; 8977 } 8978 swiper.emit('sliderMove', e); 8979 data.isMoved = true; 8980 data.currentTranslate = diff + data.startTranslate; 8981 let disableParentSwiper = true; 8982 let resistanceRatio = params.resistanceRatio; 8983 if (params.touchReleaseOnEdges) { 8984 resistanceRatio = 0; 8985 } 8986 if (diff > 0) { 8987 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())) { 8988 swiper.loopFix({ 8989 direction: 'prev', 8990 setTranslate: true, 8991 activeSlideIndex: 0 8992 }); 8993 } 8994 if (data.currentTranslate > swiper.minTranslate()) { 8995 disableParentSwiper = false; 8996 if (params.resistance) { 8997 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 8998 } 8999 } 9000 } else if (diff < 0) { 9001 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())) { 9002 swiper.loopFix({ 9003 direction: 'next', 9004 setTranslate: true, 9005 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 9006 }); 9007 } 9008 if (data.currentTranslate < swiper.maxTranslate()) { 9009 disableParentSwiper = false; 9010 if (params.resistance) { 9011 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 9012 } 9013 } 9014 } 9015 if (disableParentSwiper) { 9016 e.preventedByNestedSwiper = true; 9017 } 9018 9019 // Directions locks 9020 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 9021 data.currentTranslate = data.startTranslate; 9022 } 9023 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 9024 data.currentTranslate = data.startTranslate; 9025 } 9026 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 9027 data.currentTranslate = data.startTranslate; 9028 } 9029 9030 // Threshold 9031 if (params.threshold > 0) { 9032 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 9033 if (!data.allowThresholdMove) { 9034 data.allowThresholdMove = true; 9035 touches.startX = touches.currentX; 9036 touches.startY = touches.currentY; 9037 data.currentTranslate = data.startTranslate; 9038 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 9039 return; 9040 } 9041 } else { 9042 data.currentTranslate = data.startTranslate; 9043 return; 9044 } 9045 } 9046 if (!params.followFinger || params.cssMode) return; 9047 9048 // Update active index in free mode 9049 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 9050 swiper.updateActiveIndex(); 9051 swiper.updateSlidesClasses(); 9052 } 9053 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 9054 swiper.freeMode.onTouchMove(); 9055 } 9056 // Update progress 9057 swiper.updateProgress(data.currentTranslate); 9058 // Update translate 9059 swiper.setTranslate(data.currentTranslate); 9060} 9061 9062function onTouchEnd(event) { 9063 const swiper = this; 9064 const data = swiper.touchEventsData; 9065 let e = event; 9066 if (e.originalEvent) e = e.originalEvent; 9067 let targetTouch; 9068 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 9069 if (!isTouchEvent) { 9070 if (data.touchId !== null) return; // return from pointer if we use touch 9071 if (e.pointerId !== data.pointerId) return; 9072 targetTouch = e; 9073 } else { 9074 targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId); 9075 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 9076 } 9077 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 9078 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 9079 if (!proceed) { 9080 return; 9081 } 9082 } 9083 data.pointerId = null; 9084 data.touchId = null; 9085 const { 9086 params, 9087 touches, 9088 rtlTranslate: rtl, 9089 slidesGrid, 9090 enabled 9091 } = swiper; 9092 if (!enabled) return; 9093 if (!params.simulateTouch && e.pointerType === 'mouse') return; 9094 if (data.allowTouchCallbacks) { 9095 swiper.emit('touchEnd', e); 9096 } 9097 data.allowTouchCallbacks = false; 9098 if (!data.isTouched) { 9099 if (data.isMoved && params.grabCursor) { 9100 swiper.setGrabCursor(false); 9101 } 9102 data.isMoved = false; 9103 data.startMoving = false; 9104 return; 9105 } 9106 9107 // Return Grab Cursor 9108 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 9109 swiper.setGrabCursor(false); 9110 } 9111 9112 // Time diff 9113 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 9114 const timeDiff = touchEndTime - data.touchStartTime; 9115 9116 // Tap, doubleTap, Click 9117 if (swiper.allowClick) { 9118 const pathTree = e.path || e.composedPath && e.composedPath(); 9119 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 9120 swiper.emit('tap click', e); 9121 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 9122 swiper.emit('doubleTap doubleClick', e); 9123 } 9124 } 9125 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(); 9126 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 9127 if (!swiper.destroyed) swiper.allowClick = true; 9128 }); 9129 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 9130 data.isTouched = false; 9131 data.isMoved = false; 9132 data.startMoving = false; 9133 return; 9134 } 9135 data.isTouched = false; 9136 data.isMoved = false; 9137 data.startMoving = false; 9138 let currentPos; 9139 if (params.followFinger) { 9140 currentPos = rtl ? swiper.translate : -swiper.translate; 9141 } else { 9142 currentPos = -data.currentTranslate; 9143 } 9144 if (params.cssMode) { 9145 return; 9146 } 9147 if (params.freeMode && params.freeMode.enabled) { 9148 swiper.freeMode.onTouchEnd({ 9149 currentPos 9150 }); 9151 return; 9152 } 9153 9154 // Find current slide 9155 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 9156 let stopIndex = 0; 9157 let groupSize = swiper.slidesSizesGrid[0]; 9158 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 9159 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 9160 if (typeof slidesGrid[i + increment] !== 'undefined') { 9161 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 9162 stopIndex = i; 9163 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 9164 } 9165 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 9166 stopIndex = i; 9167 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 9168 } 9169 } 9170 let rewindFirstIndex = null; 9171 let rewindLastIndex = null; 9172 if (params.rewind) { 9173 if (swiper.isBeginning) { 9174 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 9175 } else if (swiper.isEnd) { 9176 rewindFirstIndex = 0; 9177 } 9178 } 9179 // Find current slide size 9180 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 9181 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 9182 if (timeDiff > params.longSwipesMs) { 9183 // Long touches 9184 if (!params.longSwipes) { 9185 swiper.slideTo(swiper.activeIndex); 9186 return; 9187 } 9188 if (swiper.swipeDirection === 'next') { 9189 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 9190 } 9191 if (swiper.swipeDirection === 'prev') { 9192 if (ratio > 1 - params.longSwipesRatio) { 9193 swiper.slideTo(stopIndex + increment); 9194 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 9195 swiper.slideTo(rewindLastIndex); 9196 } else { 9197 swiper.slideTo(stopIndex); 9198 } 9199 } 9200 } else { 9201 // Short swipes 9202 if (!params.shortSwipes) { 9203 swiper.slideTo(swiper.activeIndex); 9204 return; 9205 } 9206 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 9207 if (!isNavButtonTarget) { 9208 if (swiper.swipeDirection === 'next') { 9209 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 9210 } 9211 if (swiper.swipeDirection === 'prev') { 9212 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 9213 } 9214 } else if (e.target === swiper.navigation.nextEl) { 9215 swiper.slideTo(stopIndex + increment); 9216 } else { 9217 swiper.slideTo(stopIndex); 9218 } 9219 } 9220} 9221 9222function onResize() { 9223 const swiper = this; 9224 const { 9225 params, 9226 el 9227 } = swiper; 9228 if (el && el.offsetWidth === 0) return; 9229 9230 // Breakpoints 9231 if (params.breakpoints) { 9232 swiper.setBreakpoint(); 9233 } 9234 9235 // Save locks 9236 const { 9237 allowSlideNext, 9238 allowSlidePrev, 9239 snapGrid 9240 } = swiper; 9241 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 9242 9243 // Disable locks on resize 9244 swiper.allowSlideNext = true; 9245 swiper.allowSlidePrev = true; 9246 swiper.updateSize(); 9247 swiper.updateSlides(); 9248 swiper.updateSlidesClasses(); 9249 const isVirtualLoop = isVirtual && params.loop; 9250 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 9251 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 9252 } else { 9253 if (swiper.params.loop && !isVirtual) { 9254 swiper.slideToLoop(swiper.realIndex, 0, false, true); 9255 } else { 9256 swiper.slideTo(swiper.activeIndex, 0, false, true); 9257 } 9258 } 9259 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 9260 clearTimeout(swiper.autoplay.resizeTimeout); 9261 swiper.autoplay.resizeTimeout = setTimeout(() => { 9262 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 9263 swiper.autoplay.resume(); 9264 } 9265 }, 500); 9266 } 9267 // Return locks after resize 9268 swiper.allowSlidePrev = allowSlidePrev; 9269 swiper.allowSlideNext = allowSlideNext; 9270 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 9271 swiper.checkOverflow(); 9272 } 9273} 9274 9275function onClick(e) { 9276 const swiper = this; 9277 if (!swiper.enabled) return; 9278 if (!swiper.allowClick) { 9279 if (swiper.params.preventClicks) e.preventDefault(); 9280 if (swiper.params.preventClicksPropagation && swiper.animating) { 9281 e.stopPropagation(); 9282 e.stopImmediatePropagation(); 9283 } 9284 } 9285} 9286 9287function onScroll() { 9288 const swiper = this; 9289 const { 9290 wrapperEl, 9291 rtlTranslate, 9292 enabled 9293 } = swiper; 9294 if (!enabled) return; 9295 swiper.previousTranslate = swiper.translate; 9296 if (swiper.isHorizontal()) { 9297 swiper.translate = -wrapperEl.scrollLeft; 9298 } else { 9299 swiper.translate = -wrapperEl.scrollTop; 9300 } 9301 // eslint-disable-next-line 9302 if (swiper.translate === 0) swiper.translate = 0; 9303 swiper.updateActiveIndex(); 9304 swiper.updateSlidesClasses(); 9305 let newProgress; 9306 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 9307 if (translatesDiff === 0) { 9308 newProgress = 0; 9309 } else { 9310 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 9311 } 9312 if (newProgress !== swiper.progress) { 9313 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 9314 } 9315 swiper.emit('setTranslate', swiper.translate, false); 9316} 9317 9318function onLoad(e) { 9319 const swiper = this; 9320 processLazyPreloader(swiper, e.target); 9321 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 9322 return; 9323 } 9324 swiper.update(); 9325} 9326 9327function onDocumentTouchStart() { 9328 const swiper = this; 9329 if (swiper.documentTouchHandlerProceeded) return; 9330 swiper.documentTouchHandlerProceeded = true; 9331 if (swiper.params.touchReleaseOnEdges) { 9332 swiper.el.style.touchAction = 'auto'; 9333 } 9334} 9335 9336const events = (swiper, method) => { 9337 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9338 const { 9339 params, 9340 el, 9341 wrapperEl, 9342 device 9343 } = swiper; 9344 const capture = !!params.nested; 9345 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 9346 const swiperMethod = method; 9347 if (!el || typeof el === 'string') return; 9348 9349 // Touch Events 9350 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 9351 passive: false, 9352 capture 9353 }); 9354 el[domMethod]('touchstart', swiper.onTouchStart, { 9355 passive: false 9356 }); 9357 el[domMethod]('pointerdown', swiper.onTouchStart, { 9358 passive: false 9359 }); 9360 document[domMethod]('touchmove', swiper.onTouchMove, { 9361 passive: false, 9362 capture 9363 }); 9364 document[domMethod]('pointermove', swiper.onTouchMove, { 9365 passive: false, 9366 capture 9367 }); 9368 document[domMethod]('touchend', swiper.onTouchEnd, { 9369 passive: true 9370 }); 9371 document[domMethod]('pointerup', swiper.onTouchEnd, { 9372 passive: true 9373 }); 9374 document[domMethod]('pointercancel', swiper.onTouchEnd, { 9375 passive: true 9376 }); 9377 document[domMethod]('touchcancel', swiper.onTouchEnd, { 9378 passive: true 9379 }); 9380 document[domMethod]('pointerout', swiper.onTouchEnd, { 9381 passive: true 9382 }); 9383 document[domMethod]('pointerleave', swiper.onTouchEnd, { 9384 passive: true 9385 }); 9386 document[domMethod]('contextmenu', swiper.onTouchEnd, { 9387 passive: true 9388 }); 9389 9390 // Prevent Links Clicks 9391 if (params.preventClicks || params.preventClicksPropagation) { 9392 el[domMethod]('click', swiper.onClick, true); 9393 } 9394 if (params.cssMode) { 9395 wrapperEl[domMethod]('scroll', swiper.onScroll); 9396 } 9397 9398 // Resize handler 9399 if (params.updateOnWindowResize) { 9400 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 9401 } else { 9402 swiper[swiperMethod]('observerUpdate', onResize, true); 9403 } 9404 9405 // Images loader 9406 el[domMethod]('load', swiper.onLoad, { 9407 capture: true 9408 }); 9409}; 9410function attachEvents() { 9411 const swiper = this; 9412 const { 9413 params 9414 } = swiper; 9415 swiper.onTouchStart = onTouchStart.bind(swiper); 9416 swiper.onTouchMove = onTouchMove.bind(swiper); 9417 swiper.onTouchEnd = onTouchEnd.bind(swiper); 9418 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 9419 if (params.cssMode) { 9420 swiper.onScroll = onScroll.bind(swiper); 9421 } 9422 swiper.onClick = onClick.bind(swiper); 9423 swiper.onLoad = onLoad.bind(swiper); 9424 events(swiper, 'on'); 9425} 9426function detachEvents() { 9427 const swiper = this; 9428 events(swiper, 'off'); 9429} 9430var events$1 = { 9431 attachEvents, 9432 detachEvents 9433}; 9434 9435const isGridEnabled = (swiper, params) => { 9436 return swiper.grid && params.grid && params.grid.rows > 1; 9437}; 9438function setBreakpoint() { 9439 const swiper = this; 9440 const { 9441 realIndex, 9442 initialized, 9443 params, 9444 el 9445 } = swiper; 9446 const breakpoints = params.breakpoints; 9447 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 9448 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9449 9450 // Get breakpoint for window/container width and update parameters 9451 const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container'; 9452 const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase); 9453 const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer); 9454 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 9455 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 9456 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 9457 const wasMultiRow = isGridEnabled(swiper, params); 9458 const isMultiRow = isGridEnabled(swiper, breakpointParams); 9459 const wasGrabCursor = swiper.params.grabCursor; 9460 const isGrabCursor = breakpointParams.grabCursor; 9461 const wasEnabled = params.enabled; 9462 if (wasMultiRow && !isMultiRow) { 9463 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 9464 swiper.emitContainerClasses(); 9465 } else if (!wasMultiRow && isMultiRow) { 9466 el.classList.add(`${params.containerModifierClass}grid`); 9467 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 9468 el.classList.add(`${params.containerModifierClass}grid-column`); 9469 } 9470 swiper.emitContainerClasses(); 9471 } 9472 if (wasGrabCursor && !isGrabCursor) { 9473 swiper.unsetGrabCursor(); 9474 } else if (!wasGrabCursor && isGrabCursor) { 9475 swiper.setGrabCursor(); 9476 } 9477 9478 // Toggle navigation, pagination, scrollbar 9479 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 9480 if (typeof breakpointParams[prop] === 'undefined') return; 9481 const wasModuleEnabled = params[prop] && params[prop].enabled; 9482 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 9483 if (wasModuleEnabled && !isModuleEnabled) { 9484 swiper[prop].disable(); 9485 } 9486 if (!wasModuleEnabled && isModuleEnabled) { 9487 swiper[prop].enable(); 9488 } 9489 }); 9490 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 9491 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 9492 const wasLoop = params.loop; 9493 if (directionChanged && initialized) { 9494 swiper.changeDirection(); 9495 } 9496 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper.params, breakpointParams); 9497 const isEnabled = swiper.params.enabled; 9498 const hasLoop = swiper.params.loop; 9499 Object.assign(swiper, { 9500 allowTouchMove: swiper.params.allowTouchMove, 9501 allowSlideNext: swiper.params.allowSlideNext, 9502 allowSlidePrev: swiper.params.allowSlidePrev 9503 }); 9504 if (wasEnabled && !isEnabled) { 9505 swiper.disable(); 9506 } else if (!wasEnabled && isEnabled) { 9507 swiper.enable(); 9508 } 9509 swiper.currentBreakpoint = breakpoint; 9510 swiper.emit('_beforeBreakpoint', breakpointParams); 9511 if (initialized) { 9512 if (needsReLoop) { 9513 swiper.loopDestroy(); 9514 swiper.loopCreate(realIndex); 9515 swiper.updateSlides(); 9516 } else if (!wasLoop && hasLoop) { 9517 swiper.loopCreate(realIndex); 9518 swiper.updateSlides(); 9519 } else if (wasLoop && !hasLoop) { 9520 swiper.loopDestroy(); 9521 } 9522 } 9523 swiper.emit('breakpoint', breakpointParams); 9524} 9525 9526function getBreakpoint(breakpoints, base, containerEl) { 9527 if (base === void 0) { 9528 base = 'window'; 9529 } 9530 if (!breakpoints || base === 'container' && !containerEl) return undefined; 9531 let breakpoint = false; 9532 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 9533 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 9534 const points = Object.keys(breakpoints).map(point => { 9535 if (typeof point === 'string' && point.indexOf('@') === 0) { 9536 const minRatio = parseFloat(point.substr(1)); 9537 const value = currentHeight * minRatio; 9538 return { 9539 value, 9540 point 9541 }; 9542 } 9543 return { 9544 value: point, 9545 point 9546 }; 9547 }); 9548 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 9549 for (let i = 0; i < points.length; i += 1) { 9550 const { 9551 point, 9552 value 9553 } = points[i]; 9554 if (base === 'window') { 9555 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 9556 breakpoint = point; 9557 } 9558 } else if (value <= containerEl.clientWidth) { 9559 breakpoint = point; 9560 } 9561 } 9562 return breakpoint || 'max'; 9563} 9564 9565var breakpoints = { 9566 setBreakpoint, 9567 getBreakpoint 9568}; 9569 9570function prepareClasses(entries, prefix) { 9571 const resultClasses = []; 9572 entries.forEach(item => { 9573 if (typeof item === 'object') { 9574 Object.keys(item).forEach(classNames => { 9575 if (item[classNames]) { 9576 resultClasses.push(prefix + classNames); 9577 } 9578 }); 9579 } else if (typeof item === 'string') { 9580 resultClasses.push(prefix + item); 9581 } 9582 }); 9583 return resultClasses; 9584} 9585function addClasses() { 9586 const swiper = this; 9587 const { 9588 classNames, 9589 params, 9590 rtl, 9591 el, 9592 device 9593 } = swiper; 9594 // prettier-ignore 9595 const suffixes = prepareClasses(['initialized', params.direction, { 9596 'free-mode': swiper.params.freeMode && params.freeMode.enabled 9597 }, { 9598 'autoheight': params.autoHeight 9599 }, { 9600 'rtl': rtl 9601 }, { 9602 'grid': params.grid && params.grid.rows > 1 9603 }, { 9604 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 9605 }, { 9606 'android': device.android 9607 }, { 9608 'ios': device.ios 9609 }, { 9610 'css-mode': params.cssMode 9611 }, { 9612 'centered': params.cssMode && params.centeredSlides 9613 }, { 9614 'watch-progress': params.watchSlidesProgress 9615 }], params.containerModifierClass); 9616 classNames.push(...suffixes); 9617 el.classList.add(...classNames); 9618 swiper.emitContainerClasses(); 9619} 9620 9621function removeClasses() { 9622 const swiper = this; 9623 const { 9624 el, 9625 classNames 9626 } = swiper; 9627 if (!el || typeof el === 'string') return; 9628 el.classList.remove(...classNames); 9629 swiper.emitContainerClasses(); 9630} 9631 9632var classes = { 9633 addClasses, 9634 removeClasses 9635}; 9636 9637function checkOverflow() { 9638 const swiper = this; 9639 const { 9640 isLocked: wasLocked, 9641 params 9642 } = swiper; 9643 const { 9644 slidesOffsetBefore 9645 } = params; 9646 if (slidesOffsetBefore) { 9647 const lastSlideIndex = swiper.slides.length - 1; 9648 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 9649 swiper.isLocked = swiper.size > lastSlideRightEdge; 9650 } else { 9651 swiper.isLocked = swiper.snapGrid.length === 1; 9652 } 9653 if (params.allowSlideNext === true) { 9654 swiper.allowSlideNext = !swiper.isLocked; 9655 } 9656 if (params.allowSlidePrev === true) { 9657 swiper.allowSlidePrev = !swiper.isLocked; 9658 } 9659 if (wasLocked && wasLocked !== swiper.isLocked) { 9660 swiper.isEnd = false; 9661 } 9662 if (wasLocked !== swiper.isLocked) { 9663 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 9664 } 9665} 9666var checkOverflow$1 = { 9667 checkOverflow 9668}; 9669 9670var defaults = { 9671 init: true, 9672 direction: 'horizontal', 9673 oneWayMovement: false, 9674 swiperElementNodeName: 'SWIPER-CONTAINER', 9675 touchEventsTarget: 'wrapper', 9676 initialSlide: 0, 9677 speed: 300, 9678 cssMode: false, 9679 updateOnWindowResize: true, 9680 resizeObserver: true, 9681 nested: false, 9682 createElements: false, 9683 eventsPrefix: 'swiper', 9684 enabled: true, 9685 focusableElements: 'input, select, option, textarea, button, video, label', 9686 // Overrides 9687 width: null, 9688 height: null, 9689 // 9690 preventInteractionOnTransition: false, 9691 // ssr 9692 userAgent: null, 9693 url: null, 9694 // To support iOS's swipe-to-go-back gesture (when being used in-app). 9695 edgeSwipeDetection: false, 9696 edgeSwipeThreshold: 20, 9697 // Autoheight 9698 autoHeight: false, 9699 // Set wrapper width 9700 setWrapperSize: false, 9701 // Virtual Translate 9702 virtualTranslate: false, 9703 // Effects 9704 effect: 'slide', 9705 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 9706 9707 // Breakpoints 9708 breakpoints: undefined, 9709 breakpointsBase: 'window', 9710 // Slides grid 9711 spaceBetween: 0, 9712 slidesPerView: 1, 9713 slidesPerGroup: 1, 9714 slidesPerGroupSkip: 0, 9715 slidesPerGroupAuto: false, 9716 centeredSlides: false, 9717 centeredSlidesBounds: false, 9718 slidesOffsetBefore: 0, 9719 // in px 9720 slidesOffsetAfter: 0, 9721 // in px 9722 normalizeSlideIndex: true, 9723 centerInsufficientSlides: false, 9724 // Disable swiper and hide navigation when container not overflow 9725 watchOverflow: true, 9726 // Round length 9727 roundLengths: false, 9728 // Touches 9729 touchRatio: 1, 9730 touchAngle: 45, 9731 simulateTouch: true, 9732 shortSwipes: true, 9733 longSwipes: true, 9734 longSwipesRatio: 0.5, 9735 longSwipesMs: 300, 9736 followFinger: true, 9737 allowTouchMove: true, 9738 threshold: 5, 9739 touchMoveStopPropagation: false, 9740 touchStartPreventDefault: true, 9741 touchStartForcePreventDefault: false, 9742 touchReleaseOnEdges: false, 9743 // Unique Navigation Elements 9744 uniqueNavElements: true, 9745 // Resistance 9746 resistance: true, 9747 resistanceRatio: 0.85, 9748 // Progress 9749 watchSlidesProgress: false, 9750 // Cursor 9751 grabCursor: false, 9752 // Clicks 9753 preventClicks: true, 9754 preventClicksPropagation: true, 9755 slideToClickedSlide: false, 9756 // loop 9757 loop: false, 9758 loopAddBlankSlides: true, 9759 loopAdditionalSlides: 0, 9760 loopPreventsSliding: true, 9761 // rewind 9762 rewind: false, 9763 // Swiping/no swiping 9764 allowSlidePrev: true, 9765 allowSlideNext: true, 9766 swipeHandler: null, 9767 // '.swipe-handler', 9768 noSwiping: true, 9769 noSwipingClass: 'swiper-no-swiping', 9770 noSwipingSelector: null, 9771 // Passive Listeners 9772 passiveListeners: true, 9773 maxBackfaceHiddenSlides: 10, 9774 // NS 9775 containerModifierClass: 'swiper-', 9776 // NEW 9777 slideClass: 'swiper-slide', 9778 slideBlankClass: 'swiper-slide-blank', 9779 slideActiveClass: 'swiper-slide-active', 9780 slideVisibleClass: 'swiper-slide-visible', 9781 slideFullyVisibleClass: 'swiper-slide-fully-visible', 9782 slideNextClass: 'swiper-slide-next', 9783 slidePrevClass: 'swiper-slide-prev', 9784 wrapperClass: 'swiper-wrapper', 9785 lazyPreloaderClass: 'swiper-lazy-preloader', 9786 lazyPreloadPrevNext: 0, 9787 // Callbacks 9788 runCallbacksOnInit: true, 9789 // Internals 9790 _emitClasses: false 9791}; 9792 9793function moduleExtendParams(params, allModulesParams) { 9794 return function extendParams(obj) { 9795 if (obj === void 0) { 9796 obj = {}; 9797 } 9798 const moduleParamName = Object.keys(obj)[0]; 9799 const moduleParams = obj[moduleParamName]; 9800 if (typeof moduleParams !== 'object' || moduleParams === null) { 9801 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9802 return; 9803 } 9804 if (params[moduleParamName] === true) { 9805 params[moduleParamName] = { 9806 enabled: true 9807 }; 9808 } 9809 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 9810 params[moduleParamName].auto = true; 9811 } 9812 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 9813 params[moduleParamName].auto = true; 9814 } 9815 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 9816 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9817 return; 9818 } 9819 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 9820 params[moduleParamName].enabled = true; 9821 } 9822 if (!params[moduleParamName]) params[moduleParamName] = { 9823 enabled: false 9824 }; 9825 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(allModulesParams, obj); 9826 }; 9827} 9828 9829/* eslint no-param-reassign: "off" */ 9830const prototypes = { 9831 eventsEmitter, 9832 update, 9833 translate, 9834 transition, 9835 slide, 9836 loop, 9837 grabCursor, 9838 events: events$1, 9839 breakpoints, 9840 checkOverflow: checkOverflow$1, 9841 classes 9842}; 9843const extendedDefaults = {}; 9844class Swiper { 9845 constructor() { 9846 let el; 9847 let params; 9848 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 9849 args[_key] = arguments[_key]; 9850 } 9851 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 9852 params = args[0]; 9853 } else { 9854 [el, params] = args; 9855 } 9856 if (!params) params = {}; 9857 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params); 9858 if (el && !params.el) params.el = el; 9859 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 9860 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 9861 const swipers = []; 9862 document.querySelectorAll(params.el).forEach(containerEl => { 9863 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params, { 9864 el: containerEl 9865 }); 9866 swipers.push(new Swiper(newParams)); 9867 }); 9868 // eslint-disable-next-line no-constructor-return 9869 return swipers; 9870 } 9871 9872 // Swiper Instance 9873 const swiper = this; 9874 swiper.__swiper__ = true; 9875 swiper.support = getSupport(); 9876 swiper.device = getDevice({ 9877 userAgent: params.userAgent 9878 }); 9879 swiper.browser = getBrowser(); 9880 swiper.eventsListeners = {}; 9881 swiper.eventsAnyListeners = []; 9882 swiper.modules = [...swiper.__modules__]; 9883 if (params.modules && Array.isArray(params.modules)) { 9884 swiper.modules.push(...params.modules); 9885 } 9886 const allModulesParams = {}; 9887 swiper.modules.forEach(mod => { 9888 mod({ 9889 params, 9890 swiper, 9891 extendParams: moduleExtendParams(params, allModulesParams), 9892 on: swiper.on.bind(swiper), 9893 once: swiper.once.bind(swiper), 9894 off: swiper.off.bind(swiper), 9895 emit: swiper.emit.bind(swiper) 9896 }); 9897 }); 9898 9899 // Extend defaults with modules params 9900 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, defaults, allModulesParams); 9901 9902 // Extend defaults with passed params 9903 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiperParams, extendedDefaults, params); 9904 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, swiper.params); 9905 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)({}, params); 9906 9907 // add event listeners 9908 if (swiper.params && swiper.params.on) { 9909 Object.keys(swiper.params.on).forEach(eventName => { 9910 swiper.on(eventName, swiper.params.on[eventName]); 9911 }); 9912 } 9913 if (swiper.params && swiper.params.onAny) { 9914 swiper.onAny(swiper.params.onAny); 9915 } 9916 9917 // Extend Swiper 9918 Object.assign(swiper, { 9919 enabled: swiper.params.enabled, 9920 el, 9921 // Classes 9922 classNames: [], 9923 // Slides 9924 slides: [], 9925 slidesGrid: [], 9926 snapGrid: [], 9927 slidesSizesGrid: [], 9928 // isDirection 9929 isHorizontal() { 9930 return swiper.params.direction === 'horizontal'; 9931 }, 9932 isVertical() { 9933 return swiper.params.direction === 'vertical'; 9934 }, 9935 // Indexes 9936 activeIndex: 0, 9937 realIndex: 0, 9938 // 9939 isBeginning: true, 9940 isEnd: false, 9941 // Props 9942 translate: 0, 9943 previousTranslate: 0, 9944 progress: 0, 9945 velocity: 0, 9946 animating: false, 9947 cssOverflowAdjustment() { 9948 // Returns 0 unless `translate` is > 2**23 9949 // Should be subtracted from css values to prevent overflow 9950 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 9951 }, 9952 // Locks 9953 allowSlideNext: swiper.params.allowSlideNext, 9954 allowSlidePrev: swiper.params.allowSlidePrev, 9955 // Touch Events 9956 touchEventsData: { 9957 isTouched: undefined, 9958 isMoved: undefined, 9959 allowTouchCallbacks: undefined, 9960 touchStartTime: undefined, 9961 isScrolling: undefined, 9962 currentTranslate: undefined, 9963 startTranslate: undefined, 9964 allowThresholdMove: undefined, 9965 // Form elements to match 9966 focusableElements: swiper.params.focusableElements, 9967 // Last click time 9968 lastClickTime: 0, 9969 clickTimeout: undefined, 9970 // Velocities 9971 velocities: [], 9972 allowMomentumBounce: undefined, 9973 startMoving: undefined, 9974 pointerId: null, 9975 touchId: null 9976 }, 9977 // Clicks 9978 allowClick: true, 9979 // Touches 9980 allowTouchMove: swiper.params.allowTouchMove, 9981 touches: { 9982 startX: 0, 9983 startY: 0, 9984 currentX: 0, 9985 currentY: 0, 9986 diff: 0 9987 }, 9988 // Images 9989 imagesToLoad: [], 9990 imagesLoaded: 0 9991 }); 9992 swiper.emit('_swiper'); 9993 9994 // Init 9995 if (swiper.params.init) { 9996 swiper.init(); 9997 } 9998 9999 // Return app instance 10000 // eslint-disable-next-line no-constructor-return 10001 return swiper; 10002 } 10003 getDirectionLabel(property) { 10004 if (this.isHorizontal()) { 10005 return property; 10006 } 10007 // prettier-ignore 10008 return { 10009 'width': 'height', 10010 'margin-top': 'margin-left', 10011 'margin-bottom ': 'margin-right', 10012 'margin-left': 'margin-top', 10013 'margin-right': 'margin-bottom', 10014 'padding-left': 'padding-top', 10015 'padding-right': 'padding-bottom', 10016 'marginRight': 'marginBottom' 10017 }[property]; 10018 } 10019 getSlideIndex(slideEl) { 10020 const { 10021 slidesEl, 10022 params 10023 } = this; 10024 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 10025 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slides[0]); 10026 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(slideEl) - firstSlideIndex; 10027 } 10028 getSlideIndexByData(index) { 10029 return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)); 10030 } 10031 getSlideIndexWhenGrid(index) { 10032 if (this.grid && this.params.grid && this.params.grid.rows > 1) { 10033 if (this.params.grid.fill === 'column') { 10034 index = Math.floor(index / this.params.grid.rows); 10035 } else if (this.params.grid.fill === 'row') { 10036 index = index % Math.ceil(this.slides.length / this.params.grid.rows); 10037 } 10038 } 10039 return index; 10040 } 10041 recalcSlides() { 10042 const swiper = this; 10043 const { 10044 slidesEl, 10045 params 10046 } = swiper; 10047 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 10048 } 10049 enable() { 10050 const swiper = this; 10051 if (swiper.enabled) return; 10052 swiper.enabled = true; 10053 if (swiper.params.grabCursor) { 10054 swiper.setGrabCursor(); 10055 } 10056 swiper.emit('enable'); 10057 } 10058 disable() { 10059 const swiper = this; 10060 if (!swiper.enabled) return; 10061 swiper.enabled = false; 10062 if (swiper.params.grabCursor) { 10063 swiper.unsetGrabCursor(); 10064 } 10065 swiper.emit('disable'); 10066 } 10067 setProgress(progress, speed) { 10068 const swiper = this; 10069 progress = Math.min(Math.max(progress, 0), 1); 10070 const min = swiper.minTranslate(); 10071 const max = swiper.maxTranslate(); 10072 const current = (max - min) * progress + min; 10073 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 10074 swiper.updateActiveIndex(); 10075 swiper.updateSlidesClasses(); 10076 } 10077 emitContainerClasses() { 10078 const swiper = this; 10079 if (!swiper.params._emitClasses || !swiper.el) return; 10080 const cls = swiper.el.className.split(' ').filter(className => { 10081 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 10082 }); 10083 swiper.emit('_containerClasses', cls.join(' ')); 10084 } 10085 getSlideClasses(slideEl) { 10086 const swiper = this; 10087 if (swiper.destroyed) return ''; 10088 return slideEl.className.split(' ').filter(className => { 10089 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 10090 }).join(' '); 10091 } 10092 emitSlidesClasses() { 10093 const swiper = this; 10094 if (!swiper.params._emitClasses || !swiper.el) return; 10095 const updates = []; 10096 swiper.slides.forEach(slideEl => { 10097 const classNames = swiper.getSlideClasses(slideEl); 10098 updates.push({ 10099 slideEl, 10100 classNames 10101 }); 10102 swiper.emit('_slideClass', slideEl, classNames); 10103 }); 10104 swiper.emit('_slideClasses', updates); 10105 } 10106 slidesPerViewDynamic(view, exact) { 10107 if (view === void 0) { 10108 view = 'current'; 10109 } 10110 if (exact === void 0) { 10111 exact = false; 10112 } 10113 const swiper = this; 10114 const { 10115 params, 10116 slides, 10117 slidesGrid, 10118 slidesSizesGrid, 10119 size: swiperSize, 10120 activeIndex 10121 } = swiper; 10122 let spv = 1; 10123 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 10124 if (params.centeredSlides) { 10125 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 10126 let breakLoop; 10127 for (let i = activeIndex + 1; i < slides.length; i += 1) { 10128 if (slides[i] && !breakLoop) { 10129 slideSize += Math.ceil(slides[i].swiperSlideSize); 10130 spv += 1; 10131 if (slideSize > swiperSize) breakLoop = true; 10132 } 10133 } 10134 for (let i = activeIndex - 1; i >= 0; i -= 1) { 10135 if (slides[i] && !breakLoop) { 10136 slideSize += slides[i].swiperSlideSize; 10137 spv += 1; 10138 if (slideSize > swiperSize) breakLoop = true; 10139 } 10140 } 10141 } else { 10142 // eslint-disable-next-line 10143 if (view === 'current') { 10144 for (let i = activeIndex + 1; i < slides.length; i += 1) { 10145 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 10146 if (slideInView) { 10147 spv += 1; 10148 } 10149 } 10150 } else { 10151 // previous 10152 for (let i = activeIndex - 1; i >= 0; i -= 1) { 10153 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 10154 if (slideInView) { 10155 spv += 1; 10156 } 10157 } 10158 } 10159 } 10160 return spv; 10161 } 10162 update() { 10163 const swiper = this; 10164 if (!swiper || swiper.destroyed) return; 10165 const { 10166 snapGrid, 10167 params 10168 } = swiper; 10169 // Breakpoints 10170 if (params.breakpoints) { 10171 swiper.setBreakpoint(); 10172 } 10173 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 10174 if (imageEl.complete) { 10175 processLazyPreloader(swiper, imageEl); 10176 } 10177 }); 10178 swiper.updateSize(); 10179 swiper.updateSlides(); 10180 swiper.updateProgress(); 10181 swiper.updateSlidesClasses(); 10182 function setTranslate() { 10183 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 10184 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 10185 swiper.setTranslate(newTranslate); 10186 swiper.updateActiveIndex(); 10187 swiper.updateSlidesClasses(); 10188 } 10189 let translated; 10190 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 10191 setTranslate(); 10192 if (params.autoHeight) { 10193 swiper.updateAutoHeight(); 10194 } 10195 } else { 10196 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 10197 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 10198 translated = swiper.slideTo(slides.length - 1, 0, false, true); 10199 } else { 10200 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 10201 } 10202 if (!translated) { 10203 setTranslate(); 10204 } 10205 } 10206 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 10207 swiper.checkOverflow(); 10208 } 10209 swiper.emit('update'); 10210 } 10211 changeDirection(newDirection, needUpdate) { 10212 if (needUpdate === void 0) { 10213 needUpdate = true; 10214 } 10215 const swiper = this; 10216 const currentDirection = swiper.params.direction; 10217 if (!newDirection) { 10218 // eslint-disable-next-line 10219 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 10220 } 10221 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 10222 return swiper; 10223 } 10224 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 10225 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 10226 swiper.emitContainerClasses(); 10227 swiper.params.direction = newDirection; 10228 swiper.slides.forEach(slideEl => { 10229 if (newDirection === 'vertical') { 10230 slideEl.style.width = ''; 10231 } else { 10232 slideEl.style.height = ''; 10233 } 10234 }); 10235 swiper.emit('changeDirection'); 10236 if (needUpdate) swiper.update(); 10237 return swiper; 10238 } 10239 changeLanguageDirection(direction) { 10240 const swiper = this; 10241 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 10242 swiper.rtl = direction === 'rtl'; 10243 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 10244 if (swiper.rtl) { 10245 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 10246 swiper.el.dir = 'rtl'; 10247 } else { 10248 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 10249 swiper.el.dir = 'ltr'; 10250 } 10251 swiper.update(); 10252 } 10253 mount(element) { 10254 const swiper = this; 10255 if (swiper.mounted) return true; 10256 10257 // Find el 10258 let el = element || swiper.params.el; 10259 if (typeof el === 'string') { 10260 el = document.querySelector(el); 10261 } 10262 if (!el) { 10263 return false; 10264 } 10265 el.swiper = swiper; 10266 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 10267 swiper.isElement = true; 10268 } 10269 const getWrapperSelector = () => { 10270 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 10271 }; 10272 const getWrapper = () => { 10273 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 10274 const res = el.shadowRoot.querySelector(getWrapperSelector()); 10275 // Children needs to return slot items 10276 return res; 10277 } 10278 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 10279 }; 10280 // Find Wrapper 10281 let wrapperEl = getWrapper(); 10282 if (!wrapperEl && swiper.params.createElements) { 10283 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 10284 el.append(wrapperEl); 10285 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 10286 wrapperEl.append(slideEl); 10287 }); 10288 } 10289 Object.assign(swiper, { 10290 el, 10291 wrapperEl, 10292 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 10293 hostEl: swiper.isElement ? el.parentNode.host : el, 10294 mounted: true, 10295 // RTL 10296 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl', 10297 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(el, 'direction') === 'rtl'), 10298 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(wrapperEl, 'display') === '-webkit-box' 10299 }); 10300 return true; 10301 } 10302 init(el) { 10303 const swiper = this; 10304 if (swiper.initialized) return swiper; 10305 const mounted = swiper.mount(el); 10306 if (mounted === false) return swiper; 10307 swiper.emit('beforeInit'); 10308 10309 // Set breakpoint 10310 if (swiper.params.breakpoints) { 10311 swiper.setBreakpoint(); 10312 } 10313 10314 // Add Classes 10315 swiper.addClasses(); 10316 10317 // Update size 10318 swiper.updateSize(); 10319 10320 // Update slides 10321 swiper.updateSlides(); 10322 if (swiper.params.watchOverflow) { 10323 swiper.checkOverflow(); 10324 } 10325 10326 // Set Grab Cursor 10327 if (swiper.params.grabCursor && swiper.enabled) { 10328 swiper.setGrabCursor(); 10329 } 10330 10331 // Slide To Initial Slide 10332 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 10333 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 10334 } else { 10335 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 10336 } 10337 10338 // Create loop 10339 if (swiper.params.loop) { 10340 swiper.loopCreate(undefined, true); 10341 } 10342 10343 // Attach events 10344 swiper.attachEvents(); 10345 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 10346 if (swiper.isElement) { 10347 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 10348 } 10349 lazyElements.forEach(imageEl => { 10350 if (imageEl.complete) { 10351 processLazyPreloader(swiper, imageEl); 10352 } else { 10353 imageEl.addEventListener('load', e => { 10354 processLazyPreloader(swiper, e.target); 10355 }); 10356 } 10357 }); 10358 preload(swiper); 10359 10360 // Init Flag 10361 swiper.initialized = true; 10362 preload(swiper); 10363 10364 // Emit 10365 swiper.emit('init'); 10366 swiper.emit('afterInit'); 10367 return swiper; 10368 } 10369 destroy(deleteInstance, cleanStyles) { 10370 if (deleteInstance === void 0) { 10371 deleteInstance = true; 10372 } 10373 if (cleanStyles === void 0) { 10374 cleanStyles = true; 10375 } 10376 const swiper = this; 10377 const { 10378 params, 10379 el, 10380 wrapperEl, 10381 slides 10382 } = swiper; 10383 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 10384 return null; 10385 } 10386 swiper.emit('beforeDestroy'); 10387 10388 // Init Flag 10389 swiper.initialized = false; 10390 10391 // Detach events 10392 swiper.detachEvents(); 10393 10394 // Destroy loop 10395 if (params.loop) { 10396 swiper.loopDestroy(); 10397 } 10398 10399 // Cleanup styles 10400 if (cleanStyles) { 10401 swiper.removeClasses(); 10402 if (el && typeof el !== 'string') { 10403 el.removeAttribute('style'); 10404 } 10405 if (wrapperEl) { 10406 wrapperEl.removeAttribute('style'); 10407 } 10408 if (slides && slides.length) { 10409 slides.forEach(slideEl => { 10410 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 10411 slideEl.removeAttribute('style'); 10412 slideEl.removeAttribute('data-swiper-slide-index'); 10413 }); 10414 } 10415 } 10416 swiper.emit('destroy'); 10417 10418 // Detach emitter events 10419 Object.keys(swiper.eventsListeners).forEach(eventName => { 10420 swiper.off(eventName); 10421 }); 10422 if (deleteInstance !== false) { 10423 if (swiper.el && typeof swiper.el !== 'string') { 10424 swiper.el.swiper = null; 10425 } 10426 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.y)(swiper); 10427 } 10428 swiper.destroyed = true; 10429 return null; 10430 } 10431 static extendDefaults(newDefaults) { 10432 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(extendedDefaults, newDefaults); 10433 } 10434 static get extendedDefaults() { 10435 return extendedDefaults; 10436 } 10437 static get defaults() { 10438 return defaults; 10439 } 10440 static installModule(mod) { 10441 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 10442 const modules = Swiper.prototype.__modules__; 10443 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 10444 modules.push(mod); 10445 } 10446 } 10447 static use(module) { 10448 if (Array.isArray(module)) { 10449 module.forEach(m => Swiper.installModule(m)); 10450 return Swiper; 10451 } 10452 Swiper.installModule(module); 10453 return Swiper; 10454 } 10455} 10456Object.keys(prototypes).forEach(prototypeGroup => { 10457 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 10458 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 10459 }); 10460}); 10461Swiper.use([Resize, Observer]); 10462 10463 10464 10465 10466/***/ }), 10467
vendor: 13,479 bytes, lines 10468-10849
10468/***/ "./node_modules/swiper/shared/utils.mjs": 10469/*!**********************************************!*\ 10470 !*** ./node_modules/swiper/shared/utils.mjs ***! 10471 \**********************************************/ 10472/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10473 10474__webpack_require__.r(__webpack_exports__); 10475/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10476/* harmony export */ a: () => (/* binding */ setCSSProperty), 10477/* harmony export */ b: () => (/* binding */ elementParents), 10478/* harmony export */ c: () => (/* binding */ createElement), 10479/* harmony export */ d: () => (/* binding */ elementOffset), 10480/* harmony export */ e: () => (/* binding */ elementChildren), 10481/* harmony export */ f: () => (/* binding */ now), 10482/* harmony export */ g: () => (/* binding */ getSlideTransformEl), 10483/* harmony export */ h: () => (/* binding */ elementOuterSize), 10484/* harmony export */ i: () => (/* binding */ elementIndex), 10485/* harmony export */ j: () => (/* binding */ classesToTokens), 10486/* harmony export */ k: () => (/* binding */ getTranslate), 10487/* harmony export */ l: () => (/* binding */ elementTransitionEnd), 10488/* harmony export */ m: () => (/* binding */ makeElementsArray), 10489/* harmony export */ n: () => (/* binding */ nextTick), 10490/* harmony export */ o: () => (/* binding */ isObject), 10491/* harmony export */ p: () => (/* binding */ getRotateFix), 10492/* harmony export */ q: () => (/* binding */ elementStyle), 10493/* harmony export */ r: () => (/* binding */ elementNextAll), 10494/* harmony export */ s: () => (/* binding */ setInnerHTML), 10495/* harmony export */ t: () => (/* binding */ elementPrevAll), 10496/* harmony export */ u: () => (/* binding */ animateCSSModeScroll), 10497/* harmony export */ v: () => (/* binding */ showWarning), 10498/* harmony export */ w: () => (/* binding */ elementIsChildOf), 10499/* harmony export */ x: () => (/* binding */ extend), 10500/* harmony export */ y: () => (/* binding */ deleteProps) 10501/* harmony export */ }); 10502/* 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"); 10503 10504 10505function classesToTokens(classes) { 10506 if (classes === void 0) { 10507 classes = ''; 10508 } 10509 return classes.trim().split(' ').filter(c => !!c.trim()); 10510} 10511 10512function deleteProps(obj) { 10513 const object = obj; 10514 Object.keys(object).forEach(key => { 10515 try { 10516 object[key] = null; 10517 } catch (e) { 10518 // no getter for object 10519 } 10520 try { 10521 delete object[key]; 10522 } catch (e) { 10523 // something got wrong 10524 } 10525 }); 10526} 10527function nextTick(callback, delay) { 10528 if (delay === void 0) { 10529 delay = 0; 10530 } 10531 return setTimeout(callback, delay); 10532} 10533function now() { 10534 return Date.now(); 10535} 10536function getComputedStyle(el) { 10537 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10538 let style; 10539 if (window.getComputedStyle) { 10540 style = window.getComputedStyle(el, null); 10541 } 10542 if (!style && el.currentStyle) { 10543 style = el.currentStyle; 10544 } 10545 if (!style) { 10546 style = el.style; 10547 } 10548 return style; 10549} 10550function getTranslate(el, axis) { 10551 if (axis === void 0) { 10552 axis = 'x'; 10553 } 10554 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10555 let matrix; 10556 let curTransform; 10557 let transformMatrix; 10558 const curStyle = getComputedStyle(el); 10559 if (window.WebKitCSSMatrix) { 10560 curTransform = curStyle.transform || curStyle.webkitTransform; 10561 if (curTransform.split(',').length > 6) { 10562 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 10563 } 10564 // Some old versions of Webkit choke when 'none' is passed; pass 10565 // empty string instead in this case 10566 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 10567 } else { 10568 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 10569 matrix = transformMatrix.toString().split(','); 10570 } 10571 if (axis === 'x') { 10572 // Latest Chrome and webkits Fix 10573 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 10574 // Crazy IE10 Matrix 10575 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 10576 // Normal Browsers 10577 else curTransform = parseFloat(matrix[4]); 10578 } 10579 if (axis === 'y') { 10580 // Latest Chrome and webkits Fix 10581 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 10582 // Crazy IE10 Matrix 10583 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 10584 // Normal Browsers 10585 else curTransform = parseFloat(matrix[5]); 10586 } 10587 return curTransform || 0; 10588} 10589function isObject(o) { 10590 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 10591} 10592function isNode(node) { 10593 // eslint-disable-next-line 10594 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 10595 return node instanceof HTMLElement; 10596 } 10597 return node && (node.nodeType === 1 || node.nodeType === 11); 10598} 10599function extend() { 10600 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 10601 const noExtend = ['__proto__', 'constructor', 'prototype']; 10602 for (let i = 1; i < arguments.length; i += 1) { 10603 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 10604 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 10605 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 10606 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 10607 const nextKey = keysArray[nextIndex]; 10608 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 10609 if (desc !== undefined && desc.enumerable) { 10610 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10611 if (nextSource[nextKey].__swiper__) { 10612 to[nextKey] = nextSource[nextKey]; 10613 } else { 10614 extend(to[nextKey], nextSource[nextKey]); 10615 } 10616 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 10617 to[nextKey] = {}; 10618 if (nextSource[nextKey].__swiper__) { 10619 to[nextKey] = nextSource[nextKey]; 10620 } else { 10621 extend(to[nextKey], nextSource[nextKey]); 10622 } 10623 } else { 10624 to[nextKey] = nextSource[nextKey]; 10625 } 10626 } 10627 } 10628 } 10629 } 10630 return to; 10631} 10632function setCSSProperty(el, varName, varValue) { 10633 el.style.setProperty(varName, varValue); 10634} 10635function animateCSSModeScroll(_ref) { 10636 let { 10637 swiper, 10638 targetPosition, 10639 side 10640 } = _ref; 10641 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10642 const startPosition = -swiper.translate; 10643 let startTime = null; 10644 let time; 10645 const duration = swiper.params.speed; 10646 swiper.wrapperEl.style.scrollSnapType = 'none'; 10647 window.cancelAnimationFrame(swiper.cssModeFrameID); 10648 const dir = targetPosition > startPosition ? 'next' : 'prev'; 10649 const isOutOfBound = (current, target) => { 10650 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 10651 }; 10652 const animate = () => { 10653 time = new Date().getTime(); 10654 if (startTime === null) { 10655 startTime = time; 10656 } 10657 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 10658 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 10659 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 10660 if (isOutOfBound(currentPosition, targetPosition)) { 10661 currentPosition = targetPosition; 10662 } 10663 swiper.wrapperEl.scrollTo({ 10664 [side]: currentPosition 10665 }); 10666 if (isOutOfBound(currentPosition, targetPosition)) { 10667 swiper.wrapperEl.style.overflow = 'hidden'; 10668 swiper.wrapperEl.style.scrollSnapType = ''; 10669 setTimeout(() => { 10670 swiper.wrapperEl.style.overflow = ''; 10671 swiper.wrapperEl.scrollTo({ 10672 [side]: currentPosition 10673 }); 10674 }); 10675 window.cancelAnimationFrame(swiper.cssModeFrameID); 10676 return; 10677 } 10678 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 10679 }; 10680 animate(); 10681} 10682function getSlideTransformEl(slideEl) { 10683 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 10684} 10685function elementChildren(element, selector) { 10686 if (selector === void 0) { 10687 selector = ''; 10688 } 10689 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10690 const children = [...element.children]; 10691 if (window.HTMLSlotElement && element instanceof HTMLSlotElement) { 10692 children.push(...element.assignedElements()); 10693 } 10694 if (!selector) { 10695 return children; 10696 } 10697 return children.filter(el => el.matches(selector)); 10698} 10699function elementIsChildOfSlot(el, slot) { 10700 // Breadth-first search through all parent's children and assigned elements 10701 const elementsQueue = [slot]; 10702 while (elementsQueue.length > 0) { 10703 const elementToCheck = elementsQueue.shift(); 10704 if (el === elementToCheck) { 10705 return true; 10706 } 10707 elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : [])); 10708 } 10709} 10710function elementIsChildOf(el, parent) { 10711 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10712 let isChild = parent.contains(el); 10713 if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) { 10714 const children = [...parent.assignedElements()]; 10715 isChild = children.includes(el); 10716 if (!isChild) { 10717 isChild = elementIsChildOfSlot(el, parent); 10718 } 10719 } 10720 return isChild; 10721} 10722function showWarning(text) { 10723 try { 10724 console.warn(text); 10725 return; 10726 } catch (err) { 10727 // err 10728 } 10729} 10730function createElement(tag, classes) { 10731 if (classes === void 0) { 10732 classes = []; 10733 } 10734 const el = document.createElement(tag); 10735 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 10736 return el; 10737} 10738function elementOffset(el) { 10739 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10740 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 10741 const box = el.getBoundingClientRect(); 10742 const body = document.body; 10743 const clientTop = el.clientTop || body.clientTop || 0; 10744 const clientLeft = el.clientLeft || body.clientLeft || 0; 10745 const scrollTop = el === window ? window.scrollY : el.scrollTop; 10746 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 10747 return { 10748 top: box.top + scrollTop - clientTop, 10749 left: box.left + scrollLeft - clientLeft 10750 }; 10751} 10752function elementPrevAll(el, selector) { 10753 const prevEls = []; 10754 while (el.previousElementSibling) { 10755 const prev = el.previousElementSibling; // eslint-disable-line 10756 if (selector) { 10757 if (prev.matches(selector)) prevEls.push(prev); 10758 } else prevEls.push(prev); 10759 el = prev; 10760 } 10761 return prevEls; 10762} 10763function elementNextAll(el, selector) { 10764 const nextEls = []; 10765 while (el.nextElementSibling) { 10766 const next = el.nextElementSibling; // eslint-disable-line 10767 if (selector) { 10768 if (next.matches(selector)) nextEls.push(next); 10769 } else nextEls.push(next); 10770 el = next; 10771 } 10772 return nextEls; 10773} 10774function elementStyle(el, prop) { 10775 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10776 return window.getComputedStyle(el, null).getPropertyValue(prop); 10777} 10778function elementIndex(el) { 10779 let child = el; 10780 let i; 10781 if (child) { 10782 i = 0; 10783 // eslint-disable-next-line 10784 while ((child = child.previousSibling) !== null) { 10785 if (child.nodeType === 1) i += 1; 10786 } 10787 return i; 10788 } 10789 return undefined; 10790} 10791function elementParents(el, selector) { 10792 const parents = []; // eslint-disable-line 10793 let parent = el.parentElement; // eslint-disable-line 10794 while (parent) { 10795 if (selector) { 10796 if (parent.matches(selector)) parents.push(parent); 10797 } else { 10798 parents.push(parent); 10799 } 10800 parent = parent.parentElement; 10801 } 10802 return parents; 10803} 10804function elementTransitionEnd(el, callback) { 10805 function fireCallBack(e) { 10806 if (e.target !== el) return; 10807 callback.call(el, e); 10808 el.removeEventListener('transitionend', fireCallBack); 10809 } 10810 if (callback) { 10811 el.addEventListener('transitionend', fireCallBack); 10812 } 10813} 10814function elementOuterSize(el, size, includeMargins) { 10815 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10816 if (includeMargins) { 10817 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')); 10818 } 10819 return el.offsetWidth; 10820} 10821function makeElementsArray(el) { 10822 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 10823} 10824function getRotateFix(swiper) { 10825 return v => { 10826 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 10827 return v + 0.001; 10828 } 10829 return v; 10830 }; 10831} 10832function setInnerHTML(el, html) { 10833 if (html === void 0) { 10834 html = ''; 10835 } 10836 if (typeof trustedTypes !== 'undefined') { 10837 el.innerHTML = trustedTypes.createPolicy('html', { 10838 createHTML: s => s 10839 }).createHTML(html); 10840 } else { 10841 el.innerHTML = html; 10842 } 10843} 10844 10845 10846 10847 10848/***/ }), 10849
vendor: 2,223 bytes, lines 10850-10878
10850/***/ "./node_modules/swiper/swiper-bundle.css": 10851/*!***********************************************!*\ 10852 !*** ./node_modules/swiper/swiper-bundle.css ***! 10853 \***********************************************/ 10854/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10855 10856__webpack_require__.r(__webpack_exports__); 10857/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10858/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 10859/* harmony export */ }); 10860/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); 10861/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); 10862/* harmony import */ var _css_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_2_swiper_bundle_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../css-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[1]!../postcss-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[2]!./swiper-bundle.css */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[83].oneOf[1].use[2]!./node_modules/swiper/swiper-bundle.css"); 10863 10864 10865 10866var options = {}; 10867 10868options.insert = "head"; 10869options.singleton = false; 10870 10871var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_2_swiper_bundle_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); 10872 10873 10874 10875/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_83_oneOf_1_use_2_swiper_bundle_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); 10876 10877/***/ }), 10878
vendor: 6,877 bytes, lines 10879-10958
10879/***/ "./node_modules/swiper/swiper-bundle.mjs": 10880/*!***********************************************!*\ 10881 !*** ./node_modules/swiper/swiper-bundle.mjs ***! 10882 \***********************************************/ 10883/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10884 10885__webpack_require__.r(__webpack_exports__); 10886/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10887/* harmony export */ Swiper: () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S), 10888/* harmony export */ "default": () => (/* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S) 10889/* harmony export */ }); 10890/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 10891/* harmony import */ var _modules_virtual_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 10892/* harmony import */ var _modules_keyboard_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 10893/* harmony import */ var _modules_mousewheel_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 10894/* harmony import */ var _modules_navigation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 10895/* harmony import */ var _modules_pagination_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 10896/* harmony import */ var _modules_scrollbar_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 10897/* harmony import */ var _modules_parallax_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 10898/* harmony import */ var _modules_zoom_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 10899/* harmony import */ var _modules_controller_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 10900/* harmony import */ var _modules_a11y_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 10901/* harmony import */ var _modules_history_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/history.mjs */ "./node_modules/swiper/modules/history.mjs"); 10902/* harmony import */ var _modules_hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 10903/* harmony import */ var _modules_autoplay_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 10904/* harmony import */ var _modules_thumbs_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 10905/* harmony import */ var _modules_free_mode_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 10906/* harmony import */ var _modules_grid_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 10907/* harmony import */ var _modules_manipulation_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 10908/* harmony import */ var _modules_effect_fade_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 10909/* harmony import */ var _modules_effect_cube_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 10910/* harmony import */ var _modules_effect_flip_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 10911/* harmony import */ var _modules_effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 10912/* harmony import */ var _modules_effect_creative_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 10913/* harmony import */ var _modules_effect_cards_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 10914/** 10915 * Swiper 11.2.10 10916 * Most modern mobile touch slider and framework with hardware accelerated transitions 10917 * https://swiperjs.com 10918 * 10919 * Copyright 2014-2025 Vladimir Kharlampidi 10920 * 10921 * Released under the MIT License 10922 * 10923 * Released on: June 28, 2025 10924 */ 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951// Swiper Class 10952const 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"]]; 10953_shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S.use(modules); 10954 10955 10956 10957 10958/***/ })
10958 10959 10960/******/ }); 10961/************************************************************************/ 10962/******/ // The module cache 10963/******/ var __webpack_module_cache__ = {}; 10964/******/ 10965/******/ // The require function 10966/******/ function __webpack_require__(moduleId) { 10967/******/ // Check if module is in cache 10968/******/ var cachedModule = __webpack_module_cache__[moduleId]; 10969/******/ if (cachedModule !== undefined) { 10970/******/ return cachedModule.exports; 10971/******/ } 10972/******/ // Create a new module (and put it into the cache) 10973/******/ var module = __webpack_module_cache__[moduleId] = { 10974/******/ id: moduleId, 10975/******/ // no module.loaded needed 10976/******/ exports: {} 10977/******/ }; 10978/******/ 10979/******/ // Execute the module function 10980/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 10981/******/ 10982/******/ // Return the exports of the module 10983/******/ return module.exports; 10984/******/ } 10985/******/ 10986/************************************************************************/ 10987/******/ /* webpack/runtime/compat get default export */ 10988/******/ (() => { 10989/******/ // getDefaultExport function for compatibility with non-harmony modules 10990/******/ __webpack_require__.n = (module) => { 10991/******/ var getter = module && module.__esModule ? 10992/******/ () => (module['default']) : 10993/******/ () => (module); 10994/******/ __webpack_require__.d(getter, { a: getter }); 10995/******/ return getter; 10996/******/ }; 10997/******/ })(); 10998/******/ 10999/******/ /* webpack/runtime/define property getters */ 11000/******/ (() => { 11001/******/ // define getter functions for harmony exports 11002/******/ __webpack_require__.d = (exports, definition) => { 11003/******/ for(var key in definition) { 11004/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 11005/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 11006/******/ } 11007/******/ } 11008/******/ }; 11009/******/ })(); 11010/******/ 11011/******/ /* webpack/runtime/hasOwnProperty shorthand */ 11012/******/ (() => { 11013/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 11014/******/ })(); 11015/******/ 11016/******/ /* webpack/runtime/make namespace object */ 11017/******/ (() => { 11018/******/ // define __esModule on exports 11019/******/ __webpack_require__.r = (exports) => { 11020/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 11021/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 11022/******/ } 11023/******/ Object.defineProperty(exports, '__esModule', { value: true }); 11024/******/ }; 11025/******/ })(); 11026/******/ 11027/******/ /* webpack/runtime/nonce */ 11028/******/ (() => { 11029/******/ __webpack_require__.nc = undefined; 11030/******/ })(); 11031/******/ 11032/************************************************************************/ 11033var __webpack_exports__ = {}; 11034// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. 11035(() => { 11036/*!*****************************************!*\ 11037 !*** ./assets/js/home/swiper/script.js ***! 11038 \*****************************************/ 11039__webpack_require__.r(__webpack_exports__); 11040/* harmony import */ var swiper_bundle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper/bundle */ "./node_modules/swiper/swiper-bundle.mjs"); 11041/* harmony import */ var swiper_css_bundle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/css/bundle */ "./node_modules/swiper/swiper-bundle.css"); 11042 11043 11044window.documentReady(function () { 11045 var swiper = new swiper_bundle__WEBPACK_IMPORTED_MODULE_0__["default"](".js-list5-swiper", { 11046 effect: "coverflow", 11047 grabCursor: true, 11048 centeredSlides: true, 11049 slidesPerView: 2, 11050 loop: true, 11051 loopAdditionalSlides: true, 11052 coverflowEffect: { 11053 rotate: 0, 11054 stretch: 0, 11055 depth: 100, 11056 modifier: 5, 11057 slideShadows: false 11058 }, 11059 // breakpoints: { 11060 // 0: { 11061 // slidesPerView: 2, 11062 // }, 11063 // 576: { 11064 // slidesPerView: 2, 11065 // }, 11066 // 768: { 11067 // slidesPerView: 2, 11068 // }, 11069 // 992: { 11070 // slidesPerView: 2, 11071 // }, 11072 // }, 11073 // pagination: { 11074 // el: ".swiper-pagination", 11075 // }, 11076 navigation: { 11077 nextEl: '.swiper-button-next', 11078 prevEl: '.swiper-button-prev' 11079 }, 11080 autoplay: { 11081 delay: 5000, 11082 loop: true 11083 }, 11084 on: { 11085 init: activateContentofActiveSlider, 11086 slideChange: activateContentofActiveSlider 11087 } 11088 }); 11089 function activateContentofActiveSlider() { 11090 var currentSlide = this.slides[this.activeIndex]; 11091 var target = $(currentSlide).attr('data-active-item'); 11092 if (typeof target === 'undefined' || target.length === 0) { 11093 return; 11094 } 11095 var wrapper = $('.js-list5-body--w'); 11096 wrapper.find('.list5-body-w').each(function (index, item) { 11097 $(item).removeClass('active'); 11098 if ($(item).hasClass(target)) { 11099 $(item).addClass('active'); 11100 } 11101 }); 11102 } 11103}); 11104})(); 11105 11106/******/ })() 11107;
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.