diff --git a/css/index.css b/css/index.css new file mode 100644 index 0000000..38a42b6 --- /dev/null +++ b/css/index.css @@ -0,0 +1,77 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +.top { + width: 1440px; + background-color: red; + text-align: center; + margin: 0 auto; +} +.content { + width: 1440px; + height: 510px; + text-align: center; + margin: 0 auto; +} +.content .img_one { + display: inline-block; + height: 510px; + background-image: url(img/img_one.jpg); +} +.content .img_one img { + height: 510px; +} +.content .images { + display: inline-block; + width: 750px; + height: 510px; +} +.content .swiper { + width: 100%; + height: 100%; + background-color: aqua; +} +.content .swiper .swiper-slide img { + height: 510px; +} +.content .img_two { + display: inline-block; + height: 510px; + background-image: url(img/img_two.jpg); +} +.content .img_two img { + height: 510px; +} +.foot { + width: 1440px; + height: 510px; + text-align: center; + margin: 0 auto; + margin-top: 50px; +} +.foot .op { + float: left; + width: 220px; + height: 500px; + border: 1px solid #808080; +} +.foot .op .op_head img { + width: 220px; +} +.foot .op .op_table ul li { + list-style: none; + height: 50px; + line-height: 50px; +} +.foot .op .op_table .current { + background-color: #808080; + color: #ffffff; +} +.foot .tab_con { + float: right; + width: 1220px; + height: 500px; + background-color: red; +} diff --git a/css/index.less b/css/index.less new file mode 100644 index 0000000..183b8b2 --- /dev/null +++ b/css/index.less @@ -0,0 +1,96 @@ +*{ + margin: 0; + padding: 0; + box-sizing: border-box; +} + +@wid:1440px; + +.top{ + width: @wid; + background-color: red; + text-align: center; + margin: 0 auto; +} +.content{ + width: @wid; + height:510px; + text-align: center; + margin: 0 auto; + .img_one{ + display: inline-block; + height: 510px; + + background-image: url(img/img_one.jpg); + img{ + + height: 510px; + } + } + .images{ + display: inline-block; + width: 750px; + height: 510px; + } + .swiper { + width: 100%; + height: 100%; + background-color: aqua; + .swiper-slide{ + img{ + height: 510px; + } + } + } + .img_two{ + display: inline-block; + + height: 510px; + background-image: url(img/img_two.jpg); + img{ + + height: 510px; + } + } +} +.foot{ + width: @wid; + + height: 510px; + text-align: center; + margin: 0 auto; + margin-top: 50px; + .op{ + float: left; + width: 220px; + height: 500px; + border: 1px solid #808080; + .op_head{ + img{ + width: 220px; + + } + + } + .op_table{ + ul{ + li{ + list-style: none; + height: 50px; + line-height: 50px; + } + } + .current{ + background-color: #808080; + color: #ffffff; + } + } + + } + .tab_con{ + float: right; + width: 1220px; + height: 500px; + background-color: red; + } +} \ No newline at end of file diff --git a/css/swiper-bundle.min.css b/css/swiper-bundle.min.css new file mode 100644 index 0000000..4aefc47 --- /dev/null +++ b/css/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@font-face{font-family:swiper-icons;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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/img/head_1.jpg b/img/head_1.jpg new file mode 100644 index 0000000..3532c10 Binary files /dev/null and b/img/head_1.jpg differ diff --git a/img/head_2.jpg b/img/head_2.jpg new file mode 100644 index 0000000..5fe0790 Binary files /dev/null and b/img/head_2.jpg differ diff --git a/img/img_one.jpg b/img/img_one.jpg new file mode 100644 index 0000000..51b294b Binary files /dev/null and b/img/img_one.jpg differ diff --git a/img/img_two.jpg b/img/img_two.jpg new file mode 100644 index 0000000..9cbc7dc Binary files /dev/null and b/img/img_two.jpg differ diff --git a/img/slide_1.jpg b/img/slide_1.jpg new file mode 100644 index 0000000..b159dc0 Binary files /dev/null and b/img/slide_1.jpg differ diff --git a/img/slide_2.jpg b/img/slide_2.jpg new file mode 100644 index 0000000..c887dc9 Binary files /dev/null and b/img/slide_2.jpg differ diff --git a/img/slide_3.jpg b/img/slide_3.jpg new file mode 100644 index 0000000..a5df948 Binary files /dev/null and b/img/slide_3.jpg differ diff --git a/img/slide_4.jpg b/img/slide_4.jpg new file mode 100644 index 0000000..3690734 Binary files /dev/null and b/img/slide_4.jpg differ diff --git a/img/slide_5.jpg b/img/slide_5.jpg new file mode 100644 index 0000000..d4763f4 Binary files /dev/null and b/img/slide_5.jpg differ diff --git a/img/slide_6.jpg b/img/slide_6.jpg new file mode 100644 index 0000000..34d997d Binary files /dev/null and b/img/slide_6.jpg differ diff --git a/img/slide_7.jpg b/img/slide_7.jpg new file mode 100644 index 0000000..e39741f Binary files /dev/null and b/img/slide_7.jpg differ diff --git a/img/slide_8.jpg b/img/slide_8.jpg new file mode 100644 index 0000000..e09cdfc Binary files /dev/null and b/img/slide_8.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..1a605f9 --- /dev/null +++ b/index.html @@ -0,0 +1,74 @@ + + + + + + + 宝子 + + + + + + +
+

小穆与小辛

+
+
+
+ 小辛 +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + +
+
+ + + +
+
+
+ 小穆 +
+
+
+
+
+ +
+
+
    +
  • 视频动态
  • +
  • 图片动态
  • +
  • 信件动态
  • +
  • 睡前故事
  • +
  • 旅游地图
  • +
  • 愿望清单
  • +
  • 纪念日
  • +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..e69de29 diff --git a/js/swiper-bundle.min.js b/js/swiper-bundle.min.js new file mode 100644 index 0000000..3f3e022 --- /dev/null +++ b/js/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;at>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;st.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([])).each((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&en?"next":r=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;an.length&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((t,s)=>{const a=d(t);s=n.length-e.loopedSlides&&l.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(hn.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&h=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=ma.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const _={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,q,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){g(q,e)}static get extendedDefaults(){return q}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else a.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t`),i.append(r)),r}Object.keys(_).forEach((e=>{Object.keys(_[e]).forEach((t=>{V.prototype[t]=_[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`
${e}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(eb)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`
`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalef.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,hC&&(h=C),gT&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||t.slideTo(t.slides.indexOf(s),0)},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),e.slideRole&&o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(``)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.removeClass(r),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e1?a:o:a-ot.previousIndex?"next":"prev"}else i=t.realIndex,r=i>t.previousIndex?"next":"prev";l&&(i+="next"===r?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(i)<0&&(s.params.centeredSlides?i=i>o?i-Math.floor(a/2)+1:i+Math.floor(a/2)-1:i>o&&s.params.slidesPerGroup,s.slideTo(i,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(o[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`
`),e.append(a)),0===i.length&&(i=d(`
`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('
'),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('
'),e.append(m))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l0&&c<1&&(r||t.params.cssMode)&&n-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V})); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/js/swiper.js b/js/swiper.js new file mode 100644 index 0000000..38eaf6a --- /dev/null +++ b/js/swiper.js @@ -0,0 +1,21 @@ + + var mySwiper = new Swiper ('.swiper', { + direction: 'horizontal', // 垂直切换选项 + loop: true, // 循环模式选项 + + // 如果需要分页器 + pagination: { + el: '.swiper-pagination', + }, + + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + + // 如果需要滚动条 + scrollbar: { + el: '.swiper-scrollbar', + }, + }) diff --git a/swiper-8.3.0.zip b/swiper-8.3.0.zip new file mode 100644 index 0000000..4c7c43b Binary files /dev/null and b/swiper-8.3.0.zip differ diff --git a/swiper/LICENSE b/swiper/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/swiper/README.md b/swiper/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/swiper/angular/angular/src/public-api.d.ts b/swiper/angular/angular/src/public-api.d.ts new file mode 100644 index 0000000..3ccd832 --- /dev/null +++ b/swiper/angular/angular/src/public-api.d.ts @@ -0,0 +1,4 @@ +export * from './swiper-events'; +export * from './swiper.module'; +export * from './swiper.component'; +export * from './swiper-slide.directive'; diff --git a/swiper/angular/angular/src/swiper-events.d.ts b/swiper/angular/angular/src/swiper-events.d.ts new file mode 100644 index 0000000..54e3a77 --- /dev/null +++ b/swiper/angular/angular/src/swiper-events.d.ts @@ -0,0 +1,4 @@ +import { SwiperEvents } from 'swiper/types'; +export declare type EventsParams = { + [P in keyof T]: T[P] extends (...args: any[]) => any ? Parameters : never; +}; diff --git a/swiper/angular/angular/src/swiper-slide.directive.d.ts b/swiper/angular/angular/src/swiper-slide.directive.d.ts new file mode 100644 index 0000000..c5b987c --- /dev/null +++ b/swiper/angular/angular/src/swiper-slide.directive.d.ts @@ -0,0 +1,27 @@ +import { TemplateRef } from '@angular/core'; +import * as i0 from "@angular/core"; +export declare class SwiperSlideDirective { + template: TemplateRef; + virtualIndex: number; + class: string; + set ngClass(val: string); + autoplayDelay: string | null; + set zoom(val: boolean); + get zoom(): boolean; + private _zoom; + slideIndex: number; + get classNames(): string; + set classNames(val: string); + private _hasClass; + slideData: { + isActive: boolean; + isPrev: boolean; + isNext: boolean; + isVisible: boolean; + isDuplicate: boolean; + }; + private _classNames; + constructor(template: TemplateRef); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; +} diff --git a/swiper/angular/angular/src/swiper.component.d.ts b/swiper/angular/angular/src/swiper.component.d.ts new file mode 100644 index 0000000..83c8571 --- /dev/null +++ b/swiper/angular/angular/src/swiper.component.d.ts @@ -0,0 +1,255 @@ +import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnInit, QueryList, SimpleChanges } from '@angular/core'; +import Swiper from 'swiper'; +import { Observable, Subject } from 'rxjs'; +import { SwiperSlideDirective } from './swiper-slide.directive'; +import { SwiperOptions, NavigationOptions, PaginationOptions, ScrollbarOptions, VirtualOptions } from 'swiper/types'; +import * as i0 from "@angular/core"; +export declare class SwiperComponent implements OnInit { + private _ngZone; + private elementRef; + private _changeDetectorRef; + private _platformId; + enabled: SwiperOptions['enabled']; + on: SwiperOptions['on']; + direction: SwiperOptions['direction']; + touchEventsTarget: SwiperOptions['touchEventsTarget']; + initialSlide: SwiperOptions['initialSlide']; + speed: SwiperOptions['speed']; + cssMode: SwiperOptions['cssMode']; + updateOnWindowResize: SwiperOptions['updateOnWindowResize']; + resizeObserver: SwiperOptions['resizeObserver']; + nested: SwiperOptions['nested']; + focusableElements: SwiperOptions['focusableElements']; + width: SwiperOptions['width']; + height: SwiperOptions['height']; + preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition']; + userAgent: SwiperOptions['userAgent']; + url: SwiperOptions['url']; + edgeSwipeDetection: boolean | string; + edgeSwipeThreshold: number; + freeMode: SwiperOptions['freeMode']; + autoHeight: SwiperOptions['autoHeight']; + setWrapperSize: SwiperOptions['setWrapperSize']; + virtualTranslate: SwiperOptions['virtualTranslate']; + effect: SwiperOptions['effect']; + breakpoints: SwiperOptions['breakpoints']; + spaceBetween: SwiperOptions['spaceBetween']; + slidesPerView: SwiperOptions['slidesPerView']; + maxBackfaceHiddenSlides: SwiperOptions['maxBackfaceHiddenSlides']; + grid: SwiperOptions['grid']; + slidesPerGroup: SwiperOptions['slidesPerGroup']; + slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip']; + centeredSlides: SwiperOptions['centeredSlides']; + centeredSlidesBounds: SwiperOptions['centeredSlidesBounds']; + slidesOffsetBefore: SwiperOptions['slidesOffsetBefore']; + slidesOffsetAfter: SwiperOptions['slidesOffsetAfter']; + normalizeSlideIndex: SwiperOptions['normalizeSlideIndex']; + centerInsufficientSlides: SwiperOptions['centerInsufficientSlides']; + watchOverflow: SwiperOptions['watchOverflow']; + roundLengths: SwiperOptions['roundLengths']; + touchRatio: SwiperOptions['touchRatio']; + touchAngle: SwiperOptions['touchAngle']; + simulateTouch: SwiperOptions['simulateTouch']; + shortSwipes: SwiperOptions['shortSwipes']; + longSwipes: SwiperOptions['longSwipes']; + longSwipesRatio: SwiperOptions['longSwipesRatio']; + longSwipesMs: SwiperOptions['longSwipesMs']; + followFinger: SwiperOptions['followFinger']; + allowTouchMove: SwiperOptions['allowTouchMove']; + threshold: SwiperOptions['threshold']; + touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation']; + touchStartPreventDefault: SwiperOptions['touchStartPreventDefault']; + touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault']; + touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges']; + uniqueNavElements: SwiperOptions['uniqueNavElements']; + resistance: SwiperOptions['resistance']; + resistanceRatio: SwiperOptions['resistanceRatio']; + watchSlidesProgress: SwiperOptions['watchSlidesProgress']; + grabCursor: SwiperOptions['grabCursor']; + preventClicks: SwiperOptions['preventClicks']; + preventClicksPropagation: SwiperOptions['preventClicksPropagation']; + slideToClickedSlide: SwiperOptions['slideToClickedSlide']; + preloadImages: SwiperOptions['preloadImages']; + updateOnImagesReady: SwiperOptions['updateOnImagesReady']; + loop: SwiperOptions['loop']; + loopAdditionalSlides: SwiperOptions['loopAdditionalSlides']; + loopedSlides: SwiperOptions['loopedSlides']; + loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank']; + loopPreventsSlide: SwiperOptions['loopPreventsSlide']; + rewind: SwiperOptions['rewind']; + allowSlidePrev: SwiperOptions['allowSlidePrev']; + allowSlideNext: SwiperOptions['allowSlideNext']; + swipeHandler: SwiperOptions['swipeHandler']; + noSwiping: SwiperOptions['noSwiping']; + noSwipingClass: SwiperOptions['noSwipingClass']; + noSwipingSelector: SwiperOptions['noSwipingSelector']; + passiveListeners: SwiperOptions['passiveListeners']; + containerModifierClass: SwiperOptions['containerModifierClass']; + slideClass: SwiperOptions['slideClass']; + slideBlankClass: SwiperOptions['slideBlankClass']; + slideActiveClass: SwiperOptions['slideActiveClass']; + slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass']; + slideVisibleClass: SwiperOptions['slideVisibleClass']; + slideDuplicateClass: SwiperOptions['slideDuplicateClass']; + slideNextClass: SwiperOptions['slideNextClass']; + slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass']; + slidePrevClass: SwiperOptions['slidePrevClass']; + slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass']; + wrapperClass: SwiperOptions['wrapperClass']; + runCallbacksOnInit: SwiperOptions['runCallbacksOnInit']; + observeParents: SwiperOptions['observeParents']; + observeSlideChildren: SwiperOptions['observeSlideChildren']; + a11y: SwiperOptions['a11y']; + autoplay: SwiperOptions['autoplay']; + controller: SwiperOptions['controller']; + coverflowEffect: SwiperOptions['coverflowEffect']; + cubeEffect: SwiperOptions['cubeEffect']; + fadeEffect: SwiperOptions['fadeEffect']; + flipEffect: SwiperOptions['flipEffect']; + creativeEffect: SwiperOptions['creativeEffect']; + cardsEffect: SwiperOptions['cardsEffect']; + hashNavigation: SwiperOptions['hashNavigation']; + history: SwiperOptions['history']; + keyboard: SwiperOptions['keyboard']; + lazy: SwiperOptions['lazy']; + mousewheel: SwiperOptions['mousewheel']; + parallax: SwiperOptions['parallax']; + thumbs: SwiperOptions['thumbs']; + zoom: SwiperOptions['zoom']; + class: string; + id: string; + set navigation(val: boolean | "" | NavigationOptions); + get navigation(): boolean | "" | NavigationOptions; + private _navigation; + showNavigation: boolean; + set pagination(val: boolean | "" | PaginationOptions); + get pagination(): boolean | "" | PaginationOptions; + private _pagination; + showPagination: boolean; + set scrollbar(val: boolean | "" | ScrollbarOptions); + get scrollbar(): boolean | "" | ScrollbarOptions; + private _scrollbar; + showScrollbar: boolean; + set virtual(val: boolean | "" | VirtualOptions); + get virtual(): boolean | "" | VirtualOptions; + private _virtual; + set config(val: SwiperOptions); + s__beforeBreakpoint: EventEmitter<[swiper: Swiper, breakpointParams: SwiperOptions]>; + s__containerClasses: EventEmitter<[swiper: Swiper, classNames: string]>; + s__slideClass: EventEmitter<[swiper: Swiper, slideEl: HTMLElement, classNames: string]>; + s__swiper: EventEmitter<[swiper: Swiper]>; + s_activeIndexChange: EventEmitter<[swiper: Swiper]>; + s_afterInit: EventEmitter<[swiper: Swiper]>; + s_autoplay: EventEmitter<[swiper: Swiper]>; + s_autoplayStart: EventEmitter<[swiper: Swiper]>; + s_autoplayStop: EventEmitter<[swiper: Swiper]>; + s_autoplayPause: EventEmitter<[swiper: Swiper]>; + s_autoplayResume: EventEmitter<[swiper: Swiper]>; + s_beforeDestroy: EventEmitter<[swiper: Swiper]>; + s_beforeInit: EventEmitter<[swiper: Swiper]>; + s_beforeLoopFix: EventEmitter<[swiper: Swiper]>; + s_beforeResize: EventEmitter<[swiper: Swiper]>; + s_beforeSlideChangeStart: EventEmitter<[swiper: Swiper]>; + s_beforeTransitionStart: EventEmitter<[swiper: Swiper, speed: number, internal: any]>; + s_breakpoint: EventEmitter<[swiper: Swiper, breakpointParams: SwiperOptions]>; + s_changeDirection: EventEmitter<[swiper: Swiper]>; + s_click: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_doubleTap: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_doubleClick: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_destroy: EventEmitter<[swiper: Swiper]>; + s_fromEdge: EventEmitter<[swiper: Swiper]>; + s_hashChange: EventEmitter<[swiper: Swiper]>; + s_hashSet: EventEmitter<[swiper: Swiper]>; + s_imagesReady: EventEmitter<[swiper: Swiper]>; + s_init: EventEmitter<[swiper: Swiper]>; + s_keyPress: EventEmitter<[swiper: Swiper, keyCode: string]>; + s_lazyImageLoad: EventEmitter<[swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement]>; + s_lazyImageReady: EventEmitter<[swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement]>; + s_loopFix: EventEmitter<[swiper: Swiper]>; + s_momentumBounce: EventEmitter<[swiper: Swiper]>; + s_navigationHide: EventEmitter<[swiper: Swiper]>; + s_navigationShow: EventEmitter<[swiper: Swiper]>; + s_navigationPrev: EventEmitter<[swiper: Swiper]>; + s_navigationNext: EventEmitter<[swiper: Swiper]>; + s_observerUpdate: EventEmitter<[swiper: Swiper]>; + s_orientationchange: EventEmitter<[swiper: Swiper]>; + s_paginationHide: EventEmitter<[swiper: Swiper]>; + s_paginationRender: EventEmitter<[swiper: Swiper, paginationEl: HTMLElement]>; + s_paginationShow: EventEmitter<[swiper: Swiper]>; + s_paginationUpdate: EventEmitter<[swiper: Swiper, paginationEl: HTMLElement]>; + s_progress: EventEmitter<[swiper: Swiper, progress: number]>; + s_reachBeginning: EventEmitter<[swiper: Swiper]>; + s_reachEnd: EventEmitter<[swiper: Swiper]>; + s_realIndexChange: EventEmitter<[swiper: Swiper]>; + s_resize: EventEmitter<[swiper: Swiper]>; + s_scroll: EventEmitter<[swiper: Swiper, event: WheelEvent]>; + s_scrollbarDragEnd: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_scrollbarDragMove: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_scrollbarDragStart: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_setTransition: EventEmitter<[swiper: Swiper, transition: number]>; + s_setTranslate: EventEmitter<[swiper: Swiper, translate: number]>; + s_slideChange: EventEmitter<[swiper: Swiper]>; + s_slideChangeTransitionEnd: EventEmitter<[swiper: Swiper]>; + s_slideChangeTransitionStart: EventEmitter<[swiper: Swiper]>; + s_slideNextTransitionEnd: EventEmitter<[swiper: Swiper]>; + s_slideNextTransitionStart: EventEmitter<[swiper: Swiper]>; + s_slidePrevTransitionEnd: EventEmitter<[swiper: Swiper]>; + s_slidePrevTransitionStart: EventEmitter<[swiper: Swiper]>; + s_slideResetTransitionStart: EventEmitter<[swiper: Swiper]>; + s_slideResetTransitionEnd: EventEmitter<[swiper: Swiper]>; + s_sliderMove: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_sliderFirstMove: EventEmitter<[swiper: Swiper, event: TouchEvent]>; + s_slidesLengthChange: EventEmitter<[swiper: Swiper]>; + s_slidesGridLengthChange: EventEmitter<[swiper: Swiper]>; + s_snapGridLengthChange: EventEmitter<[swiper: Swiper]>; + s_snapIndexChange: EventEmitter<[swiper: Swiper]>; + s_tap: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_toEdge: EventEmitter<[swiper: Swiper]>; + s_touchEnd: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_touchMove: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_touchMoveOpposite: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_touchStart: EventEmitter<[swiper: Swiper, event: PointerEvent | MouseEvent | TouchEvent]>; + s_transitionEnd: EventEmitter<[swiper: Swiper]>; + s_transitionStart: EventEmitter<[swiper: Swiper]>; + s_update: EventEmitter<[swiper: Swiper]>; + s_zoomChange: EventEmitter<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + s_swiper: EventEmitter; + s_lock: EventEmitter<[swiper: Swiper]>; + s_unlock: EventEmitter<[swiper: Swiper]>; + set prevElRef(el: ElementRef); + _prevElRef: ElementRef; + set nextElRef(el: ElementRef); + _nextElRef: ElementRef; + set scrollbarElRef(el: ElementRef); + _scrollbarElRef: ElementRef; + set paginationElRef(el: ElementRef); + _paginationElRef: ElementRef; + slidesEl: QueryList; + private slides; + prependSlides: Observable; + appendSlides: Observable; + swiperRef: Swiper; + readonly _activeSlides: Subject; + get activeSlides(): Observable; + get zoomContainerClass(): string; + containerClasses: string; + constructor(_ngZone: NgZone, elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _platformId: Object); + private _setElement; + ngOnInit(): void; + ngAfterViewInit(): void; + private childrenSlidesInit; + private slidesChanges; + get isSwiperActive(): boolean; + initSwiper(): void; + style: any; + currentVirtualData: any; + private updateVirtualSlides; + ngOnChanges(changedParams: SimpleChanges): void; + updateInitSwiper(changedParams: any): void; + updateSwiper(changedParams: SimpleChanges | any): void; + calcLoopedSlides(): number | boolean; + updateParameter(key: string, value: any): void; + ngOnDestroy(): void; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} diff --git a/swiper/angular/angular/src/swiper.module.d.ts b/swiper/angular/angular/src/swiper.module.d.ts new file mode 100644 index 0000000..9567f38 --- /dev/null +++ b/swiper/angular/angular/src/swiper.module.d.ts @@ -0,0 +1,9 @@ +import * as i0 from "@angular/core"; +import * as i1 from "./swiper.component"; +import * as i2 from "./swiper-slide.directive"; +import * as i3 from "@angular/common"; +export declare class SwiperModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} diff --git a/swiper/angular/angular/src/utils/get-params.d.ts b/swiper/angular/angular/src/utils/get-params.d.ts new file mode 100644 index 0000000..cffcb45 --- /dev/null +++ b/swiper/angular/angular/src/utils/get-params.d.ts @@ -0,0 +1,10 @@ +declare type KeyValueType = { + [x: string]: any; +}; +export declare const allowedParams: string[]; +export declare function getParams(obj?: any): { + params: any; + passedParams: KeyValueType; + rest: KeyValueType; +}; +export {}; diff --git a/swiper/angular/angular/src/utils/params-list.d.ts b/swiper/angular/angular/src/utils/params-list.d.ts new file mode 100644 index 0000000..7f2dc1d --- /dev/null +++ b/swiper/angular/angular/src/utils/params-list.d.ts @@ -0,0 +1 @@ +export declare const paramsList: string[]; diff --git a/swiper/angular/angular/src/utils/utils.d.ts b/swiper/angular/angular/src/utils/utils.d.ts new file mode 100644 index 0000000..f6efea9 --- /dev/null +++ b/swiper/angular/angular/src/utils/utils.d.ts @@ -0,0 +1,9 @@ +export declare function isObject(o: any): boolean; +export declare function isEnabled(val: boolean | { + enabled?: boolean; +}): boolean; +export declare function isShowEl(val: any, obj: any, el: any): boolean; +export declare function extend(target: any, src: any): void; +export declare function coerceBooleanProperty(value: any): boolean; +export declare const ignoreNgOnChanges: string[]; +export declare function setProperty(val: any, obj?: {}): {} | false; diff --git a/swiper/angular/esm2020/angular/src/public-api.mjs b/swiper/angular/esm2020/angular/src/public-api.mjs new file mode 100644 index 0000000..16049b8 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/public-api.mjs @@ -0,0 +1,8 @@ +/* + * Public API Surface of angular + */ +export * from './swiper-events'; +export * from './swiper.module'; +export * from './swiper.component'; +export * from './swiper-slide.directive'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhclxuICovXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zd2lwZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1zbGlkZS5kaXJlY3RpdmUnO1xuIl19 \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/swiper-events.mjs b/swiper/angular/esm2020/angular/src/swiper-events.mjs new file mode 100644 index 0000000..0a0be97 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/swiper-events.mjs @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXItZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTd2lwZXJFdmVudHMgfSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFdmVudHNQYXJhbXM8VCA9IFN3aXBlckV2ZW50cz4gPSB7XG4gIFtQIGluIGtleW9mIFRdOiBUW1BdIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgPyBQYXJhbWV0ZXJzPFRbUF0+IDogbmV2ZXI7XG59O1xuIl19 \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/swiper-slide.directive.mjs b/swiper/angular/esm2020/angular/src/swiper-slide.directive.mjs new file mode 100644 index 0000000..2be68f7 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/swiper-slide.directive.mjs @@ -0,0 +1,65 @@ +import { Directive, Input } from '@angular/core'; +import { coerceBooleanProperty } from './utils/utils'; +import * as i0 from "@angular/core"; +export class SwiperSlideDirective { + constructor(template) { + this.template = template; + this.class = ''; + this.autoplayDelay = null; + this.slideData = { + isActive: false, + isPrev: false, + isNext: false, + isVisible: false, + isDuplicate: false, + }; + } + set ngClass(val) { + this.class = [this.class || '', val].join(' '); + } + set zoom(val) { + this._zoom = coerceBooleanProperty(val); + } + get zoom() { + return this._zoom; + } + get classNames() { + return this._classNames; + } + set classNames(val) { + if (this._classNames === val) { + return; + } + this._classNames = val; + this.slideData = { + isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), + isVisible: this._hasClass(['swiper-slide-visible']), + isDuplicate: this._hasClass(['swiper-slide-duplicate']), + isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), + isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), + }; + } + _hasClass(classNames) { + return classNames.some((className) => this._classNames.indexOf(className) >= 0); + } +} +SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", ngClass: "ngClass", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, decorators: [{ + type: Directive, + args: [{ + selector: 'ng-template[swiperSlide]', + }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ + type: Input + }], class: [{ + type: Input + }], ngClass: [{ + type: Input + }], autoplayDelay: [{ + type: Input, + args: ['data-swiper-autoplay'] + }], zoom: [{ + type: Input + }] } }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLXNsaWRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXItc2xpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdEQsTUFBTSxPQUFPLG9CQUFvQjtJQThDL0IsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUE1Q3BDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFLRyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUE4Qm5FLGNBQVMsR0FBRztZQUNWLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFHOEMsQ0FBQztJQTNDakQsSUFDSSxPQUFPLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxHQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBR0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxHQUFHO1FBQ2hCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxHQUFHLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMscUJBQXFCLEVBQUUsK0JBQStCLENBQUMsQ0FBQztZQUNsRixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDbkQsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztZQUM1RSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLDZCQUE2QixDQUFDLENBQUM7U0FDN0UsQ0FBQztJQUNKLENBQUM7SUFFTyxTQUFTLENBQUMsVUFBb0I7UUFDcEMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDOztrSEFwQ1Usb0JBQW9CO3NHQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2lCQUNyQztrR0FFVSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRixPQUFPO3NCQURWLEtBQUs7Z0JBSXlCLGFBQWE7c0JBQTNDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUV6QixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnLi91dGlscy91dGlscyc7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtzd2lwZXJTbGlkZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHZpcnR1YWxJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIHNldCBuZ0NsYXNzKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jbGFzcyA9IFt0aGlzLmNsYXNzIHx8ICcnLCB2YWxdLmpvaW4oJyAnKTtcbiAgfVxuICBASW5wdXQoJ2RhdGEtc3dpcGVyLWF1dG9wbGF5JykgYXV0b3BsYXlEZWxheTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpXG4gIHNldCB6b29tKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3pvb20gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKTtcbiAgfVxuICBnZXQgem9vbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fem9vbTtcbiAgfVxuICBwcml2YXRlIF96b29tOiBib29sZWFuO1xuICBzbGlkZUluZGV4OiBudW1iZXI7XG4gIGdldCBjbGFzc05hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWVzO1xuICB9XG4gIHNldCBjbGFzc05hbWVzKHZhbCkge1xuICAgIGlmICh0aGlzLl9jbGFzc05hbWVzID09PSB2YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2xhc3NOYW1lcyA9IHZhbDtcbiAgICB0aGlzLnNsaWRlRGF0YSA9IHtcbiAgICAgIGlzQWN0aXZlOiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1hY3RpdmUnLCAnc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUnXSksXG4gICAgICBpc1Zpc2libGU6IHRoaXMuX2hhc0NsYXNzKFsnc3dpcGVyLXNsaWRlLXZpc2libGUnXSksXG4gICAgICBpc0R1cGxpY2F0ZTogdGhpcy5faGFzQ2xhc3MoWydzd2lwZXItc2xpZGUtZHVwbGljYXRlJ10pLFxuICAgICAgaXNQcmV2OiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1wcmV2JywgJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUtcHJldiddKSxcbiAgICAgIGlzTmV4dDogdGhpcy5faGFzQ2xhc3MoWydzd2lwZXItc2xpZGUtbmV4dCcsICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLW5leHQnXSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0NsYXNzKGNsYXNzTmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXMuc29tZSgoY2xhc3NOYW1lKSA9PiB0aGlzLl9jbGFzc05hbWVzLmluZGV4T2YoY2xhc3NOYW1lKSA+PSAwKTtcbiAgfVxuICBzbGlkZURhdGEgPSB7XG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgIGlzUHJldjogZmFsc2UsXG4gICAgaXNOZXh0OiBmYWxzZSxcbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIGlzRHVwbGljYXRlOiBmYWxzZSxcbiAgfTtcblxuICBwcml2YXRlIF9jbGFzc05hbWVzOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cbiJdfQ== \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/swiper.component.mjs b/swiper/angular/esm2020/angular/src/swiper.component.mjs new file mode 100644 index 0000000..5d84809 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/swiper.component.mjs @@ -0,0 +1,1023 @@ +import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, } from '@angular/core'; +// @ts-ignore +import Swiper from 'swiper'; +import { of, Subject } from 'rxjs'; +import { getParams } from './utils/get-params'; +import { SwiperSlideDirective } from './swiper-slide.directive'; +import { extend, isObject, setProperty, ignoreNgOnChanges, coerceBooleanProperty, isShowEl, isEnabled, } from './utils/utils'; +import { isPlatformBrowser } from '@angular/common'; +import * as i0 from "@angular/core"; +import * as i1 from "@angular/common"; +export class SwiperComponent { + constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { + this._ngZone = _ngZone; + this.elementRef = elementRef; + this._changeDetectorRef = _changeDetectorRef; + this._platformId = _platformId; + this.slideClass = 'swiper-slide'; + this.wrapperClass = 'swiper-wrapper'; + this.showNavigation = true; + this.showPagination = true; + this.showScrollbar = true; + this.s__beforeBreakpoint = new EventEmitter(); + this.s__containerClasses = new EventEmitter(); + this.s__slideClass = new EventEmitter(); + this.s__swiper = new EventEmitter(); + this.s_activeIndexChange = new EventEmitter(); + this.s_afterInit = new EventEmitter(); + this.s_autoplay = new EventEmitter(); + this.s_autoplayStart = new EventEmitter(); + this.s_autoplayStop = new EventEmitter(); + this.s_autoplayPause = new EventEmitter(); + this.s_autoplayResume = new EventEmitter(); + this.s_beforeDestroy = new EventEmitter(); + this.s_beforeInit = new EventEmitter(); + this.s_beforeLoopFix = new EventEmitter(); + this.s_beforeResize = new EventEmitter(); + this.s_beforeSlideChangeStart = new EventEmitter(); + this.s_beforeTransitionStart = new EventEmitter(); + this.s_breakpoint = new EventEmitter(); + this.s_changeDirection = new EventEmitter(); + this.s_click = new EventEmitter(); + this.s_doubleTap = new EventEmitter(); + this.s_doubleClick = new EventEmitter(); + this.s_destroy = new EventEmitter(); + this.s_fromEdge = new EventEmitter(); + this.s_hashChange = new EventEmitter(); + this.s_hashSet = new EventEmitter(); + this.s_imagesReady = new EventEmitter(); + this.s_init = new EventEmitter(); + this.s_keyPress = new EventEmitter(); + this.s_lazyImageLoad = new EventEmitter(); + this.s_lazyImageReady = new EventEmitter(); + this.s_loopFix = new EventEmitter(); + this.s_momentumBounce = new EventEmitter(); + this.s_navigationHide = new EventEmitter(); + this.s_navigationShow = new EventEmitter(); + this.s_navigationPrev = new EventEmitter(); + this.s_navigationNext = new EventEmitter(); + this.s_observerUpdate = new EventEmitter(); + this.s_orientationchange = new EventEmitter(); + this.s_paginationHide = new EventEmitter(); + this.s_paginationRender = new EventEmitter(); + this.s_paginationShow = new EventEmitter(); + this.s_paginationUpdate = new EventEmitter(); + this.s_progress = new EventEmitter(); + this.s_reachBeginning = new EventEmitter(); + this.s_reachEnd = new EventEmitter(); + this.s_realIndexChange = new EventEmitter(); + this.s_resize = new EventEmitter(); + this.s_scroll = new EventEmitter(); + this.s_scrollbarDragEnd = new EventEmitter(); + this.s_scrollbarDragMove = new EventEmitter(); + this.s_scrollbarDragStart = new EventEmitter(); + this.s_setTransition = new EventEmitter(); + this.s_setTranslate = new EventEmitter(); + this.s_slideChange = new EventEmitter(); + this.s_slideChangeTransitionEnd = new EventEmitter(); + this.s_slideChangeTransitionStart = new EventEmitter(); + this.s_slideNextTransitionEnd = new EventEmitter(); + this.s_slideNextTransitionStart = new EventEmitter(); + this.s_slidePrevTransitionEnd = new EventEmitter(); + this.s_slidePrevTransitionStart = new EventEmitter(); + this.s_slideResetTransitionStart = new EventEmitter(); + this.s_slideResetTransitionEnd = new EventEmitter(); + this.s_sliderMove = new EventEmitter(); + this.s_sliderFirstMove = new EventEmitter(); + this.s_slidesLengthChange = new EventEmitter(); + this.s_slidesGridLengthChange = new EventEmitter(); + this.s_snapGridLengthChange = new EventEmitter(); + this.s_snapIndexChange = new EventEmitter(); + this.s_tap = new EventEmitter(); + this.s_toEdge = new EventEmitter(); + this.s_touchEnd = new EventEmitter(); + this.s_touchMove = new EventEmitter(); + this.s_touchMoveOpposite = new EventEmitter(); + this.s_touchStart = new EventEmitter(); + this.s_transitionEnd = new EventEmitter(); + this.s_transitionStart = new EventEmitter(); + this.s_update = new EventEmitter(); + this.s_zoomChange = new EventEmitter(); + this.s_swiper = new EventEmitter(); + this.s_lock = new EventEmitter(); + this.s_unlock = new EventEmitter(); + this._activeSlides = new Subject(); + this.containerClasses = 'swiper'; + this.slidesChanges = (val) => { + this.slides = val.map((slide, index) => { + slide.slideIndex = index; + slide.classNames = this.slideClass || ''; + return slide; + }); + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + if (!this.virtual) { + if (this.loopedSlides) { + this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); + this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); + } + } + else if (this.swiperRef && this.swiperRef.virtual) { + this._ngZone.runOutsideAngular(() => { + this.swiperRef.virtual.slides = this.slides; + this.swiperRef.virtual.update(true); + }); + } + this._changeDetectorRef.detectChanges(); + }; + this.style = null; + this.updateVirtualSlides = (virtualData) => { + // TODO: type virtualData + if (!this.swiperRef || + (this.currentVirtualData && + this.currentVirtualData.from === virtualData.from && + this.currentVirtualData.to === virtualData.to && + this.currentVirtualData.offset === virtualData.offset)) { + return; + } + this.style = this.swiperRef.isHorizontal() + ? { + [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, + } + : { + top: `${virtualData.offset}px`, + }; + this.currentVirtualData = virtualData; + this._activeSlides.next(virtualData.slides); + this._ngZone.run(() => { + this._changeDetectorRef.detectChanges(); + }); + this._ngZone.runOutsideAngular(() => { + this.swiperRef.updateSlides(); + this.swiperRef.updateProgress(); + this.swiperRef.updateSlidesClasses(); + if (isEnabled(this.swiperRef.params.lazy)) { + this.swiperRef.lazy.load(); + } + this.swiperRef.virtual.update(true); + }); + return; + }; + } + set navigation(val) { + const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? this._navigation?.nextEl + : null; + const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? this._navigation?.prevEl + : null; + this._navigation = setProperty(val, { + nextEl: currentNext || null, + prevEl: currentPrev || null, + }); + this.showNavigation = !(coerceBooleanProperty(val) !== true || + (this._navigation && + typeof this._navigation !== 'boolean' && + this._navigation.prevEl !== this._prevElRef?.nativeElement && + (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && + (typeof this._navigation.nextEl === 'string' || + typeof this._navigation.prevEl === 'string' || + typeof this._navigation.nextEl === 'object' || + typeof this._navigation.prevEl === 'object'))); + } + get navigation() { + return this._navigation; + } + set pagination(val) { + const current = typeof this._pagination !== 'boolean' && this._pagination !== '' + ? this._pagination?.el + : null; + this._pagination = setProperty(val, { + el: current || null, + }); + this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); + } + get pagination() { + return this._pagination; + } + set scrollbar(val) { + const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null; + this._scrollbar = setProperty(val, { + el: current || null, + }); + this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); + } + get scrollbar() { + return this._scrollbar; + } + set virtual(val) { + this._virtual = setProperty(val); + } + get virtual() { + return this._virtual; + } + set config(val) { + this.updateSwiper(val); + const { params } = getParams(val); + Object.assign(this, params); + } + set prevElRef(el) { + this._prevElRef = el; + this._setElement(el, this.navigation, 'navigation', 'prevEl'); + } + set nextElRef(el) { + this._nextElRef = el; + this._setElement(el, this.navigation, 'navigation', 'nextEl'); + } + set scrollbarElRef(el) { + this._scrollbarElRef = el; + this._setElement(el, this.scrollbar, 'scrollbar'); + } + set paginationElRef(el) { + this._paginationElRef = el; + this._setElement(el, this.pagination, 'pagination'); + } + get activeSlides() { + if (this.virtual) { + return this._activeSlides; + } + return of(this.slides); + } + get zoomContainerClass() { + return this.zoom && typeof this.zoom !== 'boolean' + ? this.zoom.containerClass + : 'swiper-zoom-container'; + } + _setElement(el, ref, update, key = 'el') { + if (!ref || !el) + return; + if (el.nativeElement) { + if (ref[key] === el.nativeElement) { + return; + } + ref[key] = el.nativeElement; + } + const updateObj = {}; + updateObj[update] = true; + this.updateInitSwiper(updateObj); + } + ngOnInit() { + const { params } = getParams(this); + Object.assign(this, params); + } + ngAfterViewInit() { + this.childrenSlidesInit(); + this.initSwiper(); + this._changeDetectorRef.detectChanges(); + setTimeout(() => { + this.s_swiper.emit(this.swiperRef); + }); + } + childrenSlidesInit() { + this.slidesChanges(this.slidesEl); + this.slidesEl.changes.subscribe(this.slidesChanges); + } + get isSwiperActive() { + return this.swiperRef && !this.swiperRef.destroyed; + } + initSwiper() { + const { params: swiperParams, passedParams } = getParams(this); + Object.assign(this, swiperParams); + this._ngZone.runOutsideAngular(() => { + swiperParams.init = false; + if (!swiperParams.virtual) { + swiperParams.observer = true; + } + swiperParams.onAny = (eventName, ...args) => { + const emitter = this[('s_' + eventName)]; + if (emitter) { + emitter.emit([...args]); + } + }; + const _slideClasses = (_, updated) => { + updated.forEach(({ slideEl, classNames }, index) => { + const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); + const slideIndex = dataIndex ? parseInt(dataIndex) : index; + if (this.virtual) { + const virtualSlide = this.slides.find((item) => { + return item.virtualIndex && item.virtualIndex === slideIndex; + }); + if (virtualSlide) { + virtualSlide.classNames = classNames; + return; + } + } + if (this.slides[slideIndex]) { + this.slides[slideIndex].classNames = classNames; + } + }); + this._changeDetectorRef.detectChanges(); + }; + const _containerClasses = (_, classes) => { + setTimeout(() => { + this.containerClasses = classes; + }); + }; + Object.assign(swiperParams.on, { + _containerClasses, + _slideClasses, + }); + const swiperRef = new Swiper(swiperParams); + swiperRef.loopCreate = () => { }; + swiperRef.loopDestroy = () => { }; + if (swiperParams.loop) { + swiperRef.loopedSlides = this.loopedSlides; + } + const isVirtualEnabled = isEnabled(swiperRef.params.virtual); + if (swiperRef.virtual && isVirtualEnabled) { + swiperRef.virtual.slides = this.slides; + const extendWith = { + cache: false, + slides: this.slides, + renderExternal: this.updateVirtualSlides, + renderExternalUpdate: false, + }; + extend(swiperRef.params.virtual, extendWith); + extend(swiperRef.originalParams.virtual, extendWith); + } + if (isPlatformBrowser(this._platformId)) { + this.swiperRef = swiperRef.init(this.elementRef.nativeElement); + const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual); + if (this.swiperRef.virtual && isVirtualEnabled) { + this.swiperRef.virtual.update(true); + } + this._changeDetectorRef.detectChanges(); + } + }); + } + ngOnChanges(changedParams) { + this.updateSwiper(changedParams); + this._changeDetectorRef.detectChanges(); + } + updateInitSwiper(changedParams) { + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + this._ngZone.runOutsideAngular(() => { + const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; + if (changedParams.pagination) { + if (this.pagination && + typeof this.pagination !== 'boolean' && + this.pagination.el && + pagination && + !pagination.el) { + this.updateParameter('pagination', this.pagination); + pagination.init(); + pagination.render(); + pagination.update(); + } + else { + pagination.destroy(); + pagination.el = null; + } + } + if (changedParams.scrollbar) { + if (this.scrollbar && + typeof this.scrollbar !== 'boolean' && + this.scrollbar.el && + scrollbar && + !scrollbar.el) { + this.updateParameter('scrollbar', this.scrollbar); + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + else { + scrollbar.destroy(); + scrollbar.el = null; + } + } + if (changedParams.navigation) { + if (this.navigation && + typeof this.navigation !== 'boolean' && + this.navigation.prevEl && + this.navigation.nextEl && + navigation && + !navigation.prevEl && + !navigation.nextEl) { + this.updateParameter('navigation', this.navigation); + navigation.init(); + navigation.update(); + } + else if (navigation.prevEl && navigation.nextEl) { + navigation.destroy(); + navigation.nextEl = null; + navigation.prevEl = null; + } + } + if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { + this.updateParameter('thumbs', this.thumbs); + const initialized = thumbs.init(); + if (initialized) + thumbs.update(true); + } + if (changedParams.controller && this.controller && this.controller.control) { + this.swiperRef.controller.control = this.controller.control; + } + this.swiperRef.update(); + }); + } + updateSwiper(changedParams) { + this._ngZone.runOutsideAngular(() => { + if (changedParams.config) { + return; + } + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + for (const key in changedParams) { + if (ignoreNgOnChanges.indexOf(key) >= 0) { + continue; + } + const newValue = changedParams[key]?.currentValue ?? changedParams[key]; + this.updateParameter(key, newValue); + } + if (changedParams.allowSlideNext) { + this.swiperRef.allowSlideNext = this.allowSlideNext; + } + if (changedParams.allowSlidePrev) { + this.swiperRef.allowSlidePrev = this.allowSlidePrev; + } + if (changedParams.direction) { + this.swiperRef.changeDirection(this.direction, false); + } + if (changedParams.breakpoints) { + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + this.swiperRef.currentBreakpoint = null; + this.swiperRef.setBreakpoint(); + } + if (changedParams.thumbs || changedParams.controller) { + this.updateInitSwiper(changedParams); + } + this.swiperRef.update(); + }); + } + calcLoopedSlides() { + if (!this.loop) { + return false; + } + let slidesPerViewParams = this.slidesPerView; + if (this.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); + const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + if (slidesPerViewParams === 'auto') { + this.loopedSlides = this.slides.length; + return this.slides.length; + } + let loopedSlides = this.loopedSlides || slidesPerViewParams; + if (!loopedSlides) { + // ? + return false; + } + if (this.loopAdditionalSlides) { + loopedSlides += this.loopAdditionalSlides; + } + if (loopedSlides > this.slides.length) { + loopedSlides = this.slides.length; + } + this.loopedSlides = loopedSlides; + return true; + } + updateParameter(key, value) { + if (!(this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + const _key = key.replace(/^_/, ''); + const isCurrentParamObj = isObject(this.swiperRef.params[_key]); + if (_key === 'enabled') { + if (value === true) { + this.swiperRef.enable(); + } + else if (value === false) { + this.swiperRef.disable(); + } + return; + } + if (isCurrentParamObj && isObject(value)) { + extend(this.swiperRef.params[_key], value); + } + else { + this.swiperRef.params[_key] = value; + } + } + ngOnDestroy() { + this._ngZone.runOutsideAngular(() => { + this.swiperRef?.destroy(true, false); + }); + } +} +SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); +SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", on: "on", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", maxBackfaceHiddenSlides: "maxBackfaceHiddenSlides", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", rewind: "rewind", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_autoplayPause: "autoplayPause", s_autoplayResume: "autoplayResume", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_navigationPrev: "navigationPrev", s_navigationNext: "navigationNext", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", s_lock: "lock", s_unlock: "unlock" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["swiper{display:block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, decorators: [{ + type: Component, + args: [{ selector: 'swiper, [swiper]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [ + ` + swiper { + display: block; + } + `, + ], template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n" }] + }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ + type: Inject, + args: [PLATFORM_ID] + }] }]; }, propDecorators: { enabled: [{ + type: Input + }], on: [{ + type: Input + }], direction: [{ + type: Input + }], touchEventsTarget: [{ + type: Input + }], initialSlide: [{ + type: Input + }], speed: [{ + type: Input + }], cssMode: [{ + type: Input + }], updateOnWindowResize: [{ + type: Input + }], resizeObserver: [{ + type: Input + }], nested: [{ + type: Input + }], focusableElements: [{ + type: Input + }], width: [{ + type: Input + }], height: [{ + type: Input + }], preventInteractionOnTransition: [{ + type: Input + }], userAgent: [{ + type: Input + }], url: [{ + type: Input + }], edgeSwipeDetection: [{ + type: Input + }], edgeSwipeThreshold: [{ + type: Input + }], freeMode: [{ + type: Input + }], autoHeight: [{ + type: Input + }], setWrapperSize: [{ + type: Input + }], virtualTranslate: [{ + type: Input + }], effect: [{ + type: Input + }], breakpoints: [{ + type: Input + }], spaceBetween: [{ + type: Input + }], slidesPerView: [{ + type: Input + }], maxBackfaceHiddenSlides: [{ + type: Input + }], grid: [{ + type: Input + }], slidesPerGroup: [{ + type: Input + }], slidesPerGroupSkip: [{ + type: Input + }], centeredSlides: [{ + type: Input + }], centeredSlidesBounds: [{ + type: Input + }], slidesOffsetBefore: [{ + type: Input + }], slidesOffsetAfter: [{ + type: Input + }], normalizeSlideIndex: [{ + type: Input + }], centerInsufficientSlides: [{ + type: Input + }], watchOverflow: [{ + type: Input + }], roundLengths: [{ + type: Input + }], touchRatio: [{ + type: Input + }], touchAngle: [{ + type: Input + }], simulateTouch: [{ + type: Input + }], shortSwipes: [{ + type: Input + }], longSwipes: [{ + type: Input + }], longSwipesRatio: [{ + type: Input + }], longSwipesMs: [{ + type: Input + }], followFinger: [{ + type: Input + }], allowTouchMove: [{ + type: Input + }], threshold: [{ + type: Input + }], touchMoveStopPropagation: [{ + type: Input + }], touchStartPreventDefault: [{ + type: Input + }], touchStartForcePreventDefault: [{ + type: Input + }], touchReleaseOnEdges: [{ + type: Input + }], uniqueNavElements: [{ + type: Input + }], resistance: [{ + type: Input + }], resistanceRatio: [{ + type: Input + }], watchSlidesProgress: [{ + type: Input + }], grabCursor: [{ + type: Input + }], preventClicks: [{ + type: Input + }], preventClicksPropagation: [{ + type: Input + }], slideToClickedSlide: [{ + type: Input + }], preloadImages: [{ + type: Input + }], updateOnImagesReady: [{ + type: Input + }], loop: [{ + type: Input + }], loopAdditionalSlides: [{ + type: Input + }], loopedSlides: [{ + type: Input + }], loopFillGroupWithBlank: [{ + type: Input + }], loopPreventsSlide: [{ + type: Input + }], rewind: [{ + type: Input + }], allowSlidePrev: [{ + type: Input + }], allowSlideNext: [{ + type: Input + }], swipeHandler: [{ + type: Input + }], noSwiping: [{ + type: Input + }], noSwipingClass: [{ + type: Input + }], noSwipingSelector: [{ + type: Input + }], passiveListeners: [{ + type: Input + }], containerModifierClass: [{ + type: Input + }], slideClass: [{ + type: Input + }], slideBlankClass: [{ + type: Input + }], slideActiveClass: [{ + type: Input + }], slideDuplicateActiveClass: [{ + type: Input + }], slideVisibleClass: [{ + type: Input + }], slideDuplicateClass: [{ + type: Input + }], slideNextClass: [{ + type: Input + }], slideDuplicateNextClass: [{ + type: Input + }], slidePrevClass: [{ + type: Input + }], slideDuplicatePrevClass: [{ + type: Input + }], wrapperClass: [{ + type: Input + }], runCallbacksOnInit: [{ + type: Input + }], observeParents: [{ + type: Input + }], observeSlideChildren: [{ + type: Input + }], a11y: [{ + type: Input + }], autoplay: [{ + type: Input + }], controller: [{ + type: Input + }], coverflowEffect: [{ + type: Input + }], cubeEffect: [{ + type: Input + }], fadeEffect: [{ + type: Input + }], flipEffect: [{ + type: Input + }], creativeEffect: [{ + type: Input + }], cardsEffect: [{ + type: Input + }], hashNavigation: [{ + type: Input + }], history: [{ + type: Input + }], keyboard: [{ + type: Input + }], lazy: [{ + type: Input + }], mousewheel: [{ + type: Input + }], parallax: [{ + type: Input + }], thumbs: [{ + type: Input + }], zoom: [{ + type: Input + }], class: [{ + type: Input + }], id: [{ + type: Input + }], navigation: [{ + type: Input + }], pagination: [{ + type: Input + }], scrollbar: [{ + type: Input + }], virtual: [{ + type: Input + }], config: [{ + type: Input + }], s__beforeBreakpoint: [{ + type: Output, + args: ['_beforeBreakpoint'] + }], s__containerClasses: [{ + type: Output, + args: ['_containerClasses'] + }], s__slideClass: [{ + type: Output, + args: ['_slideClass'] + }], s__swiper: [{ + type: Output, + args: ['_swiper'] + }], s_activeIndexChange: [{ + type: Output, + args: ['activeIndexChange'] + }], s_afterInit: [{ + type: Output, + args: ['afterInit'] + }], s_autoplay: [{ + type: Output, + args: ['autoplay'] + }], s_autoplayStart: [{ + type: Output, + args: ['autoplayStart'] + }], s_autoplayStop: [{ + type: Output, + args: ['autoplayStop'] + }], s_autoplayPause: [{ + type: Output, + args: ['autoplayPause'] + }], s_autoplayResume: [{ + type: Output, + args: ['autoplayResume'] + }], s_beforeDestroy: [{ + type: Output, + args: ['beforeDestroy'] + }], s_beforeInit: [{ + type: Output, + args: ['beforeInit'] + }], s_beforeLoopFix: [{ + type: Output, + args: ['beforeLoopFix'] + }], s_beforeResize: [{ + type: Output, + args: ['beforeResize'] + }], s_beforeSlideChangeStart: [{ + type: Output, + args: ['beforeSlideChangeStart'] + }], s_beforeTransitionStart: [{ + type: Output, + args: ['beforeTransitionStart'] + }], s_breakpoint: [{ + type: Output, + args: ['breakpoint'] + }], s_changeDirection: [{ + type: Output, + args: ['changeDirection'] + }], s_click: [{ + type: Output, + args: ['click'] + }], s_doubleTap: [{ + type: Output, + args: ['doubleTap'] + }], s_doubleClick: [{ + type: Output, + args: ['doubleClick'] + }], s_destroy: [{ + type: Output, + args: ['destroy'] + }], s_fromEdge: [{ + type: Output, + args: ['fromEdge'] + }], s_hashChange: [{ + type: Output, + args: ['hashChange'] + }], s_hashSet: [{ + type: Output, + args: ['hashSet'] + }], s_imagesReady: [{ + type: Output, + args: ['imagesReady'] + }], s_init: [{ + type: Output, + args: ['init'] + }], s_keyPress: [{ + type: Output, + args: ['keyPress'] + }], s_lazyImageLoad: [{ + type: Output, + args: ['lazyImageLoad'] + }], s_lazyImageReady: [{ + type: Output, + args: ['lazyImageReady'] + }], s_loopFix: [{ + type: Output, + args: ['loopFix'] + }], s_momentumBounce: [{ + type: Output, + args: ['momentumBounce'] + }], s_navigationHide: [{ + type: Output, + args: ['navigationHide'] + }], s_navigationShow: [{ + type: Output, + args: ['navigationShow'] + }], s_navigationPrev: [{ + type: Output, + args: ['navigationPrev'] + }], s_navigationNext: [{ + type: Output, + args: ['navigationNext'] + }], s_observerUpdate: [{ + type: Output, + args: ['observerUpdate'] + }], s_orientationchange: [{ + type: Output, + args: ['orientationchange'] + }], s_paginationHide: [{ + type: Output, + args: ['paginationHide'] + }], s_paginationRender: [{ + type: Output, + args: ['paginationRender'] + }], s_paginationShow: [{ + type: Output, + args: ['paginationShow'] + }], s_paginationUpdate: [{ + type: Output, + args: ['paginationUpdate'] + }], s_progress: [{ + type: Output, + args: ['progress'] + }], s_reachBeginning: [{ + type: Output, + args: ['reachBeginning'] + }], s_reachEnd: [{ + type: Output, + args: ['reachEnd'] + }], s_realIndexChange: [{ + type: Output, + args: ['realIndexChange'] + }], s_resize: [{ + type: Output, + args: ['resize'] + }], s_scroll: [{ + type: Output, + args: ['scroll'] + }], s_scrollbarDragEnd: [{ + type: Output, + args: ['scrollbarDragEnd'] + }], s_scrollbarDragMove: [{ + type: Output, + args: ['scrollbarDragMove'] + }], s_scrollbarDragStart: [{ + type: Output, + args: ['scrollbarDragStart'] + }], s_setTransition: [{ + type: Output, + args: ['setTransition'] + }], s_setTranslate: [{ + type: Output, + args: ['setTranslate'] + }], s_slideChange: [{ + type: Output, + args: ['slideChange'] + }], s_slideChangeTransitionEnd: [{ + type: Output, + args: ['slideChangeTransitionEnd'] + }], s_slideChangeTransitionStart: [{ + type: Output, + args: ['slideChangeTransitionStart'] + }], s_slideNextTransitionEnd: [{ + type: Output, + args: ['slideNextTransitionEnd'] + }], s_slideNextTransitionStart: [{ + type: Output, + args: ['slideNextTransitionStart'] + }], s_slidePrevTransitionEnd: [{ + type: Output, + args: ['slidePrevTransitionEnd'] + }], s_slidePrevTransitionStart: [{ + type: Output, + args: ['slidePrevTransitionStart'] + }], s_slideResetTransitionStart: [{ + type: Output, + args: ['slideResetTransitionStart'] + }], s_slideResetTransitionEnd: [{ + type: Output, + args: ['slideResetTransitionEnd'] + }], s_sliderMove: [{ + type: Output, + args: ['sliderMove'] + }], s_sliderFirstMove: [{ + type: Output, + args: ['sliderFirstMove'] + }], s_slidesLengthChange: [{ + type: Output, + args: ['slidesLengthChange'] + }], s_slidesGridLengthChange: [{ + type: Output, + args: ['slidesGridLengthChange'] + }], s_snapGridLengthChange: [{ + type: Output, + args: ['snapGridLengthChange'] + }], s_snapIndexChange: [{ + type: Output, + args: ['snapIndexChange'] + }], s_tap: [{ + type: Output, + args: ['tap'] + }], s_toEdge: [{ + type: Output, + args: ['toEdge'] + }], s_touchEnd: [{ + type: Output, + args: ['touchEnd'] + }], s_touchMove: [{ + type: Output, + args: ['touchMove'] + }], s_touchMoveOpposite: [{ + type: Output, + args: ['touchMoveOpposite'] + }], s_touchStart: [{ + type: Output, + args: ['touchStart'] + }], s_transitionEnd: [{ + type: Output, + args: ['transitionEnd'] + }], s_transitionStart: [{ + type: Output, + args: ['transitionStart'] + }], s_update: [{ + type: Output, + args: ['update'] + }], s_zoomChange: [{ + type: Output, + args: ['zoomChange'] + }], s_swiper: [{ + type: Output, + args: ['swiper'] + }], s_lock: [{ + type: Output, + args: ['lock'] + }], s_unlock: [{ + type: Output, + args: ['unlock'] + }], prevElRef: [{ + type: ViewChild, + args: ['prevElRef', { static: false }] + }], nextElRef: [{ + type: ViewChild, + args: ['nextElRef', { static: false }] + }], scrollbarElRef: [{ + type: ViewChild, + args: ['scrollbarElRef', { static: false }] + }], paginationElRef: [{ + type: ViewChild, + args: ['paginationElRef', { static: false }] + }], slidesEl: [{ + type: ContentChildren, + args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] + }], containerClasses: [{ + type: HostBinding, + args: ['class'] + }] } }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXIvc3JjL3N3aXBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBR1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixhQUFhO0FBQ2IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBU3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFjcEQsTUFBTSxPQUFPLGVBQWU7SUF5YzFCLFlBQ1UsT0FBZSxFQUNmLFVBQXNCLEVBQ3RCLGtCQUFxQyxFQUNoQixXQUFtQjtRQUh4QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBaFl6QyxlQUFVLEdBQWdDLGNBQWMsQ0FBQztRQVV6RCxp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O3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPL0MsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUU7Z0JBdUJ0RSxnQkFBZ0I7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFBhcmFtcyB9IGZyb20gJy4vdXRpbHMvZ2V0LXBhcmFtcyc7XG5pbXBvcnQgeyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB9IGZyb20gJy4vc3dpcGVyLXNsaWRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFdmVudHNQYXJhbXMgfSBmcm9tICcuL3N3aXBlci1ldmVudHMnO1xuaW1wb3J0IHtcbiAgZXh0ZW5kLFxuICBpc09iamVjdCxcbiAgc2V0UHJvcGVydHksXG4gIGlnbm9yZU5nT25DaGFuZ2VzLFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHksXG4gIGlzU2hvd0VsLFxuICBpc0VuYWJsZWQsXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgU3dpcGVyT3B0aW9ucyxcbiAgU3dpcGVyRXZlbnRzLFxuICBOYXZpZ2F0aW9uT3B0aW9ucyxcbiAgUGFnaW5hdGlvbk9wdGlvbnMsXG4gIFNjcm9sbGJhck9wdGlvbnMsXG4gIFZpcnR1YWxPcHRpb25zLFxufSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3dpcGVyLCBbc3dpcGVyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zd2lwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgc3dpcGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3dpcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW5hYmxlZDogU3dpcGVyT3B0aW9uc1snZW5hYmxlZCddO1xuICBASW5wdXQoKSBvbjogU3dpcGVyT3B0aW9uc1snb24nXTtcbiAgQElucHV0KCkgZGlyZWN0aW9uOiBTd2lwZXJPcHRpb25zWydkaXJlY3Rpb24nXTtcbiAgQElucHV0KCkgdG91Y2hFdmVudHNUYXJnZXQ6IFN3aXBlck9wdGlvbnNbJ3RvdWNoRXZlbnRzVGFyZ2V0J107XG4gIEBJbnB1dCgpIGluaXRpYWxTbGlkZTogU3dpcGVyT3B0aW9uc1snaW5pdGlhbFNsaWRlJ107XG4gIEBJbnB1dCgpIHNwZWVkOiBTd2lwZXJPcHRpb25zWydzcGVlZCddO1xuICBASW5wdXQoKSBjc3NNb2RlOiBTd2lwZXJPcHRpb25zWydjc3NNb2RlJ107XG4gIEBJbnB1dCgpIHVwZGF0ZU9uV2luZG93UmVzaXplOiBTd2lwZXJPcHRpb25zWyd1cGRhdGVPbldpbmRvd1Jlc2l6ZSddO1xuICBASW5wdXQoKSByZXNpemVPYnNlcnZlcjogU3dpcGVyT3B0aW9uc1sncmVzaXplT2JzZXJ2ZXInXTtcbiAgQElucHV0KCkgbmVzdGVkOiBTd2lwZXJPcHRpb25zWyduZXN0ZWQnXTtcbiAgQElucHV0KCkgZm9jdXNhYmxlRWxlbWVudHM6IFN3aXBlck9wdGlvbnNbJ2ZvY3VzYWJsZUVsZW1lbnRzJ107XG4gIEBJbnB1dCgpIHdpZHRoOiBTd2lwZXJPcHRpb25zWyd3aWR0aCddO1xuICBASW5wdXQoKSBoZWlnaHQ6IFN3aXBlck9wdGlvbnNbJ2hlaWdodCddO1xuICBASW5wdXQoKSBwcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb246IFN3aXBlck9wdGlvbnNbJ3ByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbiddO1xuICBASW5wdXQoKSB1c2VyQWdlbnQ6IFN3aXBlck9wdGlvbnNbJ3VzZXJBZ2VudCddO1xuICBASW5wdXQoKSB1cmw6IFN3aXBlck9wdGlvbnNbJ3VybCddO1xuICBASW5wdXQoKSBlZGdlU3dpcGVEZXRlY3Rpb246IGJvb2xlYW4gfCBzdHJpbmc7XG4gIEBJbnB1dCgpIGVkZ2VTd2lwZVRocmVzaG9sZDogbnVtYmVyO1xuICBASW5wdXQoKSBmcmVlTW9kZTogU3dpcGVyT3B0aW9uc1snZnJlZU1vZGUnXTtcbiAgQElucHV0KCkgYXV0b0hlaWdodDogU3dpcGVyT3B0aW9uc1snYXV0b0hlaWdodCddO1xuICBASW5wdXQoKSBzZXRXcmFwcGVyU2l6ZTogU3dpcGVyT3B0aW9uc1snc2V0V3JhcHBlclNpemUnXTtcbiAgQElucHV0KCkgdmlydHVhbFRyYW5zbGF0ZTogU3dpcGVyT3B0aW9uc1sndmlydHVhbFRyYW5zbGF0ZSddO1xuICBASW5wdXQoKSBlZmZlY3Q6IFN3aXBlck9wdGlvbnNbJ2VmZmVjdCddO1xuICBASW5wdXQoKSBicmVha3BvaW50czogU3dpcGVyT3B0aW9uc1snYnJlYWtwb2ludHMnXTtcbiAgQElucHV0KCkgc3BhY2VCZXR3ZWVuOiBTd2lwZXJPcHRpb25zWydzcGFjZUJldHdlZW4nXTtcbiAgQElucHV0KCkgc2xpZGVzUGVyVmlldzogU3dpcGVyT3B0aW9uc1snc2xpZGVzUGVyVmlldyddO1xuICBASW5wdXQoKSBtYXhCYWNrZmFjZUhpZGRlblNsaWRlczogU3dpcGVyT3B0aW9uc1snbWF4QmFja2ZhY2VIaWRkZW5TbGlkZXMnXTtcbiAgQElucHV0KCkgZ3JpZDogU3dpcGVyT3B0aW9uc1snZ3JpZCddO1xuICBASW5wdXQoKSBzbGlkZXNQZXJHcm91cDogU3dpcGVyT3B0aW9uc1snc2xpZGVzUGVyR3JvdXAnXTtcbiAgQElucHV0KCkgc2xpZGVzUGVyR3JvdXBTa2lwOiBTd2lwZXJPcHRpb25zWydzbGlkZXNQZXJHcm91cFNraXAnXTtcbiAgQElucHV0KCkgY2VudGVyZWRTbGlkZXM6IFN3aXBlck9wdGlvbnNbJ2NlbnRlcmVkU2xpZGVzJ107XG4gIEBJbnB1dCgpIGNlbnRlcmVkU2xpZGVzQm91bmRzOiBTd2lwZXJPcHRpb25zWydjZW50ZXJlZFNsaWRlc0JvdW5kcyddO1xuICBASW5wdXQoKSBzbGlkZXNPZmZzZXRCZWZvcmU6IFN3aXBlck9wdGlvbnNbJ3NsaWRlc09mZnNldEJlZm9yZSddO1xuICBASW5wdXQoKSBzbGlkZXNPZmZzZXRBZnRlcjogU3dpcGVyT3B0aW9uc1snc2xpZGVzT2Zmc2V0QWZ0ZXInXTtcbiAgQElucHV0KCkgbm9ybWFsaXplU2xpZGVJbmRleDogU3dpcGVyT3B0aW9uc1snbm9ybWFsaXplU2xpZGVJbmRleCddO1xuICBASW5wdXQoKSBjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXM6IFN3aXBlck9wdGlvbnNbJ2NlbnRlckluc3VmZmljaWVudFNsaWRlcyddO1xuICBASW5wdXQoKSB3YXRjaE92ZXJmbG93OiBTd2lwZXJPcHRpb25zWyd3YXRjaE92ZXJmbG93J107XG4gIEBJbnB1dCgpIHJvdW5kTGVuZ3RoczogU3dpcGVyT3B0aW9uc1sncm91bmRMZW5ndGhzJ107XG4gIEBJbnB1dCgpIHRvdWNoUmF0aW86IFN3aXBlck9wdGlvbnNbJ3RvdWNoUmF0aW8nXTtcbiAgQElucHV0KCkgdG91Y2hBbmdsZTogU3dpcGVyT3B0aW9uc1sndG91Y2hBbmdsZSddO1xuICBASW5wdXQoKSBzaW11bGF0ZVRvdWNoOiBTd2lwZXJPcHRpb25zWydzaW11bGF0ZVRvdWNoJ107XG4gIEBJbnB1dCgpIHNob3J0U3dpcGVzOiBTd2lwZXJPcHRpb25zWydzaG9ydFN3aXBlcyddO1xuICBASW5wdXQoKSBsb25nU3dpcGVzOiBTd2lwZXJPcHRpb25zWydsb25nU3dpcGVzJ107XG4gIEBJbnB1dCgpIGxvbmdTd2lwZXNSYXRpbzogU3dpcGVyT3B0aW9uc1snbG9uZ1N3aXBlc1JhdGlvJ107XG4gIEBJbnB1dCgpIGxvbmdTd2lwZXNNczogU3dpcGVyT3B0aW9uc1snbG9uZ1N3aXBlc01zJ107XG4gIEBJbnB1dCgpIGZvbGxvd0ZpbmdlcjogU3dpcGVyT3B0aW9uc1snZm9sbG93RmluZ2VyJ107XG4gIEBJbnB1dCgpIGFsbG93VG91Y2hNb3ZlOiBTd2lwZXJPcHRpb25zWydhbGxvd1RvdWNoTW92ZSddO1xuICBASW5wdXQoKSB0aHJlc2hvbGQ6IFN3aXBlck9wdGlvbnNbJ3RocmVzaG9sZCddO1xuICBASW5wdXQoKSB0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb246IFN3aXBlck9wdGlvbnNbJ3RvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiddO1xuICBASW5wdXQoKSB0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ6IFN3aXBlck9wdGlvbnNbJ3RvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdCddO1xuICBASW5wdXQoKSB0b3VjaFN0YXJ0Rm9yY2VQcmV2ZW50RGVmYXVsdDogU3dpcGVyT3B0aW9uc1sndG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQnXTtcbiAgQElucHV0KCkgdG91Y2hSZWxlYXNlT25FZGdlczogU3dpcGVyT3B0aW9uc1sndG91Y2hSZWxlYXNlT25FZGdlcyddO1xuICBASW5wdXQoKSB1bmlxdWVOYXZFbGVtZW50czogU3dpcGVyT3B0aW9uc1sndW5pcXVlTmF2RWxlbWVudHMnXTtcbiAgQElucHV0KCkgcmVzaXN0YW5jZTogU3dpcGVyT3B0aW9uc1sncmVzaXN0YW5jZSddO1xuICBASW5wdXQoKSByZXNpc3RhbmNlUmF0aW86IFN3aXBlck9wdGlvbnNbJ3Jlc2lzdGFuY2VSYXRpbyddO1xuICBASW5wdXQoKSB3YXRjaFNsaWRlc1Byb2dyZXNzOiBTd2lwZXJPcHRpb25zWyd3YXRjaFNsaWRlc1Byb2dyZXNzJ107XG4gIEBJbnB1dCgpIGdyYWJDdXJzb3I6IFN3aXBlck9wdGlvbnNbJ2dyYWJDdXJzb3InXTtcbiAgQElucHV0KCkgcHJldmVudENsaWNrczogU3dpcGVyT3B0aW9uc1sncHJldmVudENsaWNrcyddO1xuICBASW5wdXQoKSBwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb246IFN3aXBlck9wdGlvbnNbJ3ByZXZlbnRDbGlja3NQcm9wYWdhdGlvbiddO1xuICBASW5wdXQoKSBzbGlkZVRvQ2xpY2tlZFNsaWRlOiBTd2lwZXJPcHRpb25zWydzbGlkZVRvQ2xpY2tlZFNsaWRlJ107XG4gIEBJbnB1dCgpIHByZWxvYWRJbWFnZXM6IFN3aXBlck9wdGlvbnNbJ3ByZWxvYWRJbWFnZXMnXTtcbiAgQElucHV0KCkgdXBkYXRlT25JbWFnZXNSZWFkeTogU3dpcGVyT3B0aW9uc1sndXBkYXRlT25JbWFnZXNSZWFkeSddO1xuICBASW5wdXQoKSBsb29wOiBTd2lwZXJPcHRpb25zWydsb29wJ107XG4gIEBJbnB1dCgpIGxvb3BBZGRpdGlvbmFsU2xpZGVzOiBTd2lwZXJPcHRpb25zWydsb29wQWRkaXRpb25hbFNsaWRlcyddO1xuICBASW5wdXQoKSBsb29wZWRTbGlkZXM6IFN3aXBlck9wdGlvbnNbJ2xvb3BlZFNsaWRlcyddO1xuICBASW5wdXQoKSBsb29wRmlsbEdyb3VwV2l0aEJsYW5rOiBTd2lwZXJPcHRpb25zWydsb29wRmlsbEdyb3VwV2l0aEJsYW5rJ107XG4gIEBJbnB1dCgpIGxvb3BQcmV2ZW50c1NsaWRlOiBTd2lwZXJPcHRpb25zWydsb29wUHJldmVudHNTbGlkZSddO1xuICBASW5wdXQoKSByZXdpbmQ6IFN3aXBlck9wdGlvbnNbJ3Jld2luZCddO1xuICBASW5wdXQoKSBhbGxvd1NsaWRlUHJldjogU3dpcGVyT3B0aW9uc1snYWxsb3dTbGlkZVByZXYnXTtcbiAgQElucHV0KCkgYWxsb3dTbGlkZU5leHQ6IFN3aXBlck9wdGlvbnNbJ2FsbG93U2xpZGVOZXh0J107XG4gIEBJbnB1dCgpIHN3aXBlSGFuZGxlcjogU3dpcGVyT3B0aW9uc1snc3dpcGVIYW5kbGVyJ107XG4gIEBJbnB1dCgpIG5vU3dpcGluZzogU3dpcGVyT3B0aW9uc1snbm9Td2lwaW5nJ107XG4gIEBJbnB1dCgpIG5vU3dpcGluZ0NsYXNzOiBTd2lwZXJPcHRpb25zWydub1N3aXBpbmdDbGFzcyddO1xuICBASW5wdXQoKSBub1N3aXBpbmdTZWxlY3RvcjogU3dpcGVyT3B0aW9uc1snbm9Td2lwaW5nU2VsZWN0b3InXTtcbiAgQElucHV0KCkgcGFzc2l2ZUxpc3RlbmVyczogU3dpcGVyT3B0aW9uc1sncGFzc2l2ZUxpc3RlbmVycyddO1xuICBASW5wdXQoKSBjb250YWluZXJNb2RpZmllckNsYXNzOiBTd2lwZXJPcHRpb25zWydjb250YWluZXJNb2RpZmllckNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlQ2xhc3MnXSA9ICdzd2lwZXItc2xpZGUnO1xuICBASW5wdXQoKSBzbGlkZUJsYW5rQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlQmxhbmtDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUFjdGl2ZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUFjdGl2ZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVWaXNpYmxlQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlVmlzaWJsZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlRHVwbGljYXRlQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlRHVwbGljYXRlQ2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVOZXh0Q2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlTmV4dENsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlRHVwbGljYXRlTmV4dENsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZU5leHRDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZVByZXZDbGFzczogU3dpcGVyT3B0aW9uc1snc2xpZGVQcmV2Q2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlRHVwbGljYXRlUHJldkNsYXNzJ107XG4gIEBJbnB1dCgpIHdyYXBwZXJDbGFzczogU3dpcGVyT3B0aW9uc1snd3JhcHBlckNsYXNzJ10gPSAnc3dpcGVyLXdyYXBwZXInO1xuICBASW5wdXQoKSBydW5DYWxsYmFja3NPbkluaXQ6IFN3aXBlck9wdGlvbnNbJ3J1bkNhbGxiYWNrc09uSW5pdCddO1xuICBASW5wdXQoKSBvYnNlcnZlUGFyZW50czogU3dpcGVyT3B0aW9uc1snb2JzZXJ2ZVBhcmVudHMnXTtcbiAgQElucHV0KCkgb2JzZXJ2ZVNsaWRlQ2hpbGRyZW46IFN3aXBlck9wdGlvbnNbJ29ic2VydmVTbGlkZUNoaWxkcmVuJ107XG4gIEBJbnB1dCgpIGExMXk6IFN3aXBlck9wdGlvbnNbJ2ExMXknXTtcbiAgQElucHV0KCkgYXV0b3BsYXk6IFN3aXBlck9wdGlvbnNbJ2F1dG9wbGF5J107XG4gIEBJbnB1dCgpIGNvbnRyb2xsZXI6IFN3aXBlck9wdGlvbnNbJ2NvbnRyb2xsZXInXTtcbiAgQElucHV0KCkgY292ZXJmbG93RWZmZWN0OiBTd2lwZXJPcHRpb25zWydjb3ZlcmZsb3dFZmZlY3QnXTtcbiAgQElucHV0KCkgY3ViZUVmZmVjdDogU3dpcGVyT3B0aW9uc1snY3ViZUVmZmVjdCddO1xuICBASW5wdXQoKSBmYWRlRWZmZWN0OiBTd2lwZXJPcHRpb25zWydmYWRlRWZmZWN0J107XG4gIEBJbnB1dCgpIGZsaXBFZmZlY3Q6IFN3aXBlck9wdGlvbnNbJ2ZsaXBFZmZlY3QnXTtcbiAgQElucHV0KCkgY3JlYXRpdmVFZmZlY3Q6IFN3aXBlck9wdGlvbnNbJ2NyZWF0aXZlRWZmZWN0J107XG4gIEBJbnB1dCgpIGNhcmRzRWZmZWN0OiBTd2lwZXJPcHRpb25zWydjYXJkc0VmZmVjdCddO1xuICBASW5wdXQoKSBoYXNoTmF2aWdhdGlvbjogU3dpcGVyT3B0aW9uc1snaGFzaE5hdmlnYXRpb24nXTtcbiAgQElucHV0KCkgaGlzdG9yeTogU3dpcGVyT3B0aW9uc1snaGlzdG9yeSddO1xuICBASW5wdXQoKSBrZXlib2FyZDogU3dpcGVyT3B0aW9uc1sna2V5Ym9hcmQnXTtcbiAgQElucHV0KCkgbGF6eTogU3dpcGVyT3B0aW9uc1snbGF6eSddO1xuICBASW5wdXQoKSBtb3VzZXdoZWVsOiBTd2lwZXJPcHRpb25zWydtb3VzZXdoZWVsJ107XG4gIEBJbnB1dCgpIHBhcmFsbGF4OiBTd2lwZXJPcHRpb25zWydwYXJhbGxheCddO1xuICBASW5wdXQoKSB0aHVtYnM6IFN3aXBlck9wdGlvbnNbJ3RodW1icyddO1xuICBASW5wdXQoKSB6b29tOiBTd2lwZXJPcHRpb25zWyd6b29tJ107XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHNldCBuYXZpZ2F0aW9uKHZhbCkge1xuICAgIGNvbnN0IGN1cnJlbnROZXh0ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uICE9PSAnYm9vbGVhbicgJiYgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJydcbiAgICAgICAgPyB0aGlzLl9uYXZpZ2F0aW9uPy5uZXh0RWxcbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGN1cnJlbnRQcmV2ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uICE9PSAnYm9vbGVhbicgJiYgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJydcbiAgICAgICAgPyB0aGlzLl9uYXZpZ2F0aW9uPy5wcmV2RWxcbiAgICAgICAgOiBudWxsO1xuICAgIHRoaXMuX25hdmlnYXRpb24gPSBzZXRQcm9wZXJ0eSh2YWwsIHtcbiAgICAgIG5leHRFbDogY3VycmVudE5leHQgfHwgbnVsbCxcbiAgICAgIHByZXZFbDogY3VycmVudFByZXYgfHwgbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gIShcbiAgICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpICE9PSB0cnVlIHx8XG4gICAgICAodGhpcy5fbmF2aWdhdGlvbiAmJlxuICAgICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgIHRoaXMuX25hdmlnYXRpb24ucHJldkVsICE9PSB0aGlzLl9wcmV2RWxSZWY/Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgKHRoaXMuX25hdmlnYXRpb24ucHJldkVsICE9PSBudWxsIHx8IHRoaXMuX25hdmlnYXRpb24ubmV4dEVsICE9PSBudWxsKSAmJlxuICAgICAgICAodHlwZW9mIHRoaXMuX25hdmlnYXRpb24ubmV4dEVsID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgIHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbi5uZXh0RWwgPT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgdHlwZW9mIHRoaXMuX25hdmlnYXRpb24ucHJldkVsID09PSAnb2JqZWN0JykpXG4gICAgKTtcbiAgfVxuICBnZXQgbmF2aWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbjtcbiAgfVxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uT3B0aW9ucyB8IGJvb2xlYW4gfCAnJztcbiAgc2hvd05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwYWdpbmF0aW9uKHZhbCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPVxuICAgICAgdHlwZW9mIHRoaXMuX3BhZ2luYXRpb24gIT09ICdib29sZWFuJyAmJiB0aGlzLl9wYWdpbmF0aW9uICE9PSAnJ1xuICAgICAgICA/IHRoaXMuX3BhZ2luYXRpb24/LmVsXG4gICAgICAgIDogbnVsbDtcbiAgICB0aGlzLl9wYWdpbmF0aW9uID0gc2V0UHJvcGVydHkodmFsLCB7XG4gICAgICBlbDogY3VycmVudCB8fCBudWxsLFxuICAgIH0pO1xuICAgIHRoaXMuc2hvd1BhZ2luYXRpb24gPSBpc1Nob3dFbCh2YWwsIHRoaXMuX3BhZ2luYXRpb24sIHRoaXMuX3BhZ2luYXRpb25FbFJlZik7XG4gIH1cbiAgZ2V0IHBhZ2luYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbk9wdGlvbnMgfCBib29sZWFuIHwgJyc7XG4gIHNob3dQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZXQgc2Nyb2xsYmFyKHZhbCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPVxuICAgICAgdHlwZW9mIHRoaXMuX3Njcm9sbGJhciAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuX3Njcm9sbGJhciAhPT0gJycgPyB0aGlzLl9zY3JvbGxiYXI/LmVsIDogbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxiYXIgPSBzZXRQcm9wZXJ0eSh2YWwsIHtcbiAgICAgIGVsOiBjdXJyZW50IHx8IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5zaG93U2Nyb2xsYmFyID0gaXNTaG93RWwodmFsLCB0aGlzLl9zY3JvbGxiYXIsIHRoaXMuX3Njcm9sbGJhckVsUmVmKTtcbiAgfVxuICBnZXQgc2Nyb2xsYmFyKCkge1xuICAgIHJldHVybiB0aGlzLl9zY3JvbGxiYXI7XG4gIH1cbiAgcHJpdmF0ZSBfc2Nyb2xsYmFyOiBTY3JvbGxiYXJPcHRpb25zIHwgYm9vbGVhbiB8ICcnO1xuICBzaG93U2Nyb2xsYmFyOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZXQgdmlydHVhbCh2YWwpIHtcbiAgICB0aGlzLl92aXJ0dWFsID0gc2V0UHJvcGVydHkodmFsKTtcbiAgfVxuICBnZXQgdmlydHVhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlydHVhbDtcbiAgfVxuICBwcml2YXRlIF92aXJ0dWFsOiBWaXJ0dWFsT3B0aW9ucyB8IGJvb2xlYW4gfCAnJztcblxuICBASW5wdXQoKVxuICBzZXQgY29uZmlnKHZhbDogU3dpcGVyT3B0aW9ucykge1xuICAgIHRoaXMudXBkYXRlU3dpcGVyKHZhbCk7XG4gICAgY29uc3QgeyBwYXJhbXMgfSA9IGdldFBhcmFtcyh2YWwpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcbiAgfVxuICBAT3V0cHV0KCdfYmVmb3JlQnJlYWtwb2ludCcpIHNfX2JlZm9yZUJyZWFrcG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snX2JlZm9yZUJyZWFrcG9pbnQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnX2NvbnRhaW5lckNsYXNzZXMnKSBzX19jb250YWluZXJDbGFzc2VzID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBFdmVudHNQYXJhbXNbJ19jb250YWluZXJDbGFzc2VzJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ19zbGlkZUNsYXNzJykgc19fc2xpZGVDbGFzcyA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydfc2xpZGVDbGFzcyddPigpO1xuXG4gIEBPdXRwdXQoJ19zd2lwZXInKSBzX19zd2lwZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snX3N3aXBlciddPigpO1xuXG4gIEBPdXRwdXQoJ2FjdGl2ZUluZGV4Q2hhbmdlJykgc19hY3RpdmVJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydhY3RpdmVJbmRleENoYW5nZSddXG4gID4oKTtcblxuICBAT3V0cHV0KCdhZnRlckluaXQnKSBzX2FmdGVySW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydhZnRlckluaXQnXT4oKTtcblxuICBAT3V0cHV0KCdhdXRvcGxheScpIHNfYXV0b3BsYXkgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snYXV0b3BsYXknXT4oKTtcblxuICBAT3V0cHV0KCdhdXRvcGxheVN0YXJ0Jykgc19hdXRvcGxheVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2F1dG9wbGF5U3RhcnQnXT4oKTtcblxuICBAT3V0cHV0KCdhdXRvcGxheVN0b3AnKSBzX2F1dG9wbGF5U3RvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydhdXRvcGxheVN0b3AnXT4oKTtcblxuICBAT3V0cHV0KCdhdXRvcGxheVBhdXNlJykgc19hdXRvcGxheVBhdXNlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2F1dG9wbGF5UGF1c2UnXT4oKTtcblxuICBAT3V0cHV0KCdhdXRvcGxheVJlc3VtZScpIHNfYXV0b3BsYXlSZXN1bWUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snYXV0b3BsYXlSZXN1bWUnXT4oKTtcblxuICBAT3V0cHV0KCdiZWZvcmVEZXN0cm95Jykgc19iZWZvcmVEZXN0cm95ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2JlZm9yZURlc3Ryb3knXT4oKTtcblxuICBAT3V0cHV0KCdiZWZvcmVJbml0Jykgc19iZWZvcmVJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2JlZm9yZUluaXQnXT4oKTtcblxuICBAT3V0cHV0KCdiZWZvcmVMb29wRml4Jykgc19iZWZvcmVMb29wRml4ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2JlZm9yZUxvb3BGaXgnXT4oKTtcblxuICBAT3V0cHV0KCdiZWZvcmVSZXNpemUnKSBzX2JlZm9yZVJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydiZWZvcmVSZXNpemUnXT4oKTtcblxuICBAT3V0cHV0KCdiZWZvcmVTbGlkZUNoYW5nZVN0YXJ0Jykgc19iZWZvcmVTbGlkZUNoYW5nZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBFdmVudHNQYXJhbXNbJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jykgc19iZWZvcmVUcmFuc2l0aW9uU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snYmVmb3JlVHJhbnNpdGlvblN0YXJ0J11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ2JyZWFrcG9pbnQnKSBzX2JyZWFrcG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snYnJlYWtwb2ludCddPigpO1xuXG4gIEBPdXRwdXQoJ2NoYW5nZURpcmVjdGlvbicpIHNfY2hhbmdlRGlyZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBFdmVudHNQYXJhbXNbJ2NoYW5nZURpcmVjdGlvbiddXG4gID4oKTtcblxuICBAT3V0cHV0KCdjbGljaycpIHNfY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snY2xpY2snXT4oKTtcblxuICBAT3V0cHV0KCdkb3VibGVUYXAnKSBzX2RvdWJsZVRhcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydkb3VibGVUYXAnXT4oKTtcblxuICBAT3V0cHV0KCdkb3VibGVDbGljaycpIHNfZG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snZG91YmxlQ2xpY2snXT4oKTtcblxuICBAT3V0cHV0KCdkZXN0cm95Jykgc19kZXN0cm95ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2Rlc3Ryb3knXT4oKTtcblxuICBAT3V0cHV0KCdmcm9tRWRnZScpIHNfZnJvbUVkZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snZnJvbUVkZ2UnXT4oKTtcblxuICBAT3V0cHV0KCdoYXNoQ2hhbmdlJykgc19oYXNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2hhc2hDaGFuZ2UnXT4oKTtcblxuICBAT3V0cHV0KCdoYXNoU2V0Jykgc19oYXNoU2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2hhc2hTZXQnXT4oKTtcblxuICBAT3V0cHV0KCdpbWFnZXNSZWFkeScpIHNfaW1hZ2VzUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snaW1hZ2VzUmVhZHknXT4oKTtcblxuICBAT3V0cHV0KCdpbml0Jykgc19pbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2luaXQnXT4oKTtcblxuICBAT3V0cHV0KCdrZXlQcmVzcycpIHNfa2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sna2V5UHJlc3MnXT4oKTtcblxuICBAT3V0cHV0KCdsYXp5SW1hZ2VMb2FkJykgc19sYXp5SW1hZ2VMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2xhenlJbWFnZUxvYWQnXT4oKTtcblxuICBAT3V0cHV0KCdsYXp5SW1hZ2VSZWFkeScpIHNfbGF6eUltYWdlUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbGF6eUltYWdlUmVhZHknXT4oKTtcblxuICBAT3V0cHV0KCdsb29wRml4Jykgc19sb29wRml4ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2xvb3BGaXgnXT4oKTtcblxuICBAT3V0cHV0KCdtb21lbnR1bUJvdW5jZScpIHNfbW9tZW50dW1Cb3VuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbW9tZW50dW1Cb3VuY2UnXT4oKTtcblxuICBAT3V0cHV0KCduYXZpZ2F0aW9uSGlkZScpIHNfbmF2aWdhdGlvbkhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbmF2aWdhdGlvbkhpZGUnXT4oKTtcblxuICBAT3V0cHV0KCduYXZpZ2F0aW9uU2hvdycpIHNfbmF2aWdhdGlvblNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbmF2aWdhdGlvblNob3cnXT4oKTtcblxuICBAT3V0cHV0KCduYXZpZ2F0aW9uUHJldicpIHNfbmF2aWdhdGlvblByZXYgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbmF2aWdhdGlvblByZXYnXT4oKTtcblxuICBAT3V0cHV0KCduYXZpZ2F0aW9uTmV4dCcpIHNfbmF2aWdhdGlvbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snbmF2aWdhdGlvbk5leHQnXT4oKTtcblxuICBAT3V0cHV0KCdvYnNlcnZlclVwZGF0ZScpIHNfb2JzZXJ2ZXJVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snb2JzZXJ2ZXJVcGRhdGUnXT4oKTtcblxuICBAT3V0cHV0KCdvcmllbnRhdGlvbmNoYW5nZScpIHNfb3JpZW50YXRpb25jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snb3JpZW50YXRpb25jaGFuZ2UnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgncGFnaW5hdGlvbkhpZGUnKSBzX3BhZ2luYXRpb25IaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3BhZ2luYXRpb25IaWRlJ10+KCk7XG5cbiAgQE91dHB1dCgncGFnaW5hdGlvblJlbmRlcicpIHNfcGFnaW5hdGlvblJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydwYWdpbmF0aW9uUmVuZGVyJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25TaG93Jykgc19wYWdpbmF0aW9uU2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydwYWdpbmF0aW9uU2hvdyddPigpO1xuXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25VcGRhdGUnKSBzX3BhZ2luYXRpb25VcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1sncGFnaW5hdGlvblVwZGF0ZSddXG4gID4oKTtcblxuICBAT3V0cHV0KCdwcm9ncmVzcycpIHNfcHJvZ3Jlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sncHJvZ3Jlc3MnXT4oKTtcblxuICBAT3V0cHV0KCdyZWFjaEJlZ2lubmluZycpIHNfcmVhY2hCZWdpbm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sncmVhY2hCZWdpbm5pbmcnXT4oKTtcblxuICBAT3V0cHV0KCdyZWFjaEVuZCcpIHNfcmVhY2hFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sncmVhY2hFbmQnXT4oKTtcblxuICBAT3V0cHV0KCdyZWFsSW5kZXhDaGFuZ2UnKSBzX3JlYWxJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydyZWFsSW5kZXhDaGFuZ2UnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgncmVzaXplJykgc19yZXNpemUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sncmVzaXplJ10+KCk7XG5cbiAgQE91dHB1dCgnc2Nyb2xsJykgc19zY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snc2Nyb2xsJ10+KCk7XG5cbiAgQE91dHB1dCgnc2Nyb2xsYmFyRHJhZ0VuZCcpIHNfc2Nyb2xsYmFyRHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzY3JvbGxiYXJEcmFnRW5kJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdNb3ZlJykgc19zY3JvbGxiYXJEcmFnTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzY3JvbGxiYXJEcmFnTW92ZSddXG4gID4oKTtcblxuICBAT3V0cHV0KCdzY3JvbGxiYXJEcmFnU3RhcnQnKSBzX3Njcm9sbGJhckRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzY3JvbGxiYXJEcmFnU3RhcnQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnc2V0VHJhbnNpdGlvbicpIHNfc2V0VHJhbnNpdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWydzZXRUcmFuc2l0aW9uJ10+KCk7XG5cbiAgQE91dHB1dCgnc2V0VHJhbnNsYXRlJykgc19zZXRUcmFuc2xhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1snc2V0VHJhbnNsYXRlJ10+KCk7XG5cbiAgQE91dHB1dCgnc2xpZGVDaGFuZ2UnKSBzX3NsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3NsaWRlQ2hhbmdlJ10+KCk7XG5cbiAgQE91dHB1dCgnc2xpZGVDaGFuZ2VUcmFuc2l0aW9uRW5kJykgc19zbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc2xpZGVDaGFuZ2VUcmFuc2l0aW9uRW5kJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvblN0YXJ0Jykgc19zbGlkZUNoYW5nZVRyYW5zaXRpb25TdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzbGlkZUNoYW5nZVRyYW5zaXRpb25TdGFydCddXG4gID4oKTtcblxuICBAT3V0cHV0KCdzbGlkZU5leHRUcmFuc2l0aW9uRW5kJykgc19zbGlkZU5leHRUcmFuc2l0aW9uRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBFdmVudHNQYXJhbXNbJ3NsaWRlTmV4dFRyYW5zaXRpb25FbmQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnc2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0Jykgc19zbGlkZU5leHRUcmFuc2l0aW9uU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0J11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3NsaWRlUHJldlRyYW5zaXRpb25FbmQnKSBzX3NsaWRlUHJldlRyYW5zaXRpb25FbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc2xpZGVQcmV2VHJhbnNpdGlvbkVuZCddXG4gID4oKTtcblxuICBAT3V0cHV0KCdzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQnKSBzX3NsaWRlUHJldlRyYW5zaXRpb25TdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnc2xpZGVSZXNldFRyYW5zaXRpb25TdGFydCcpIHNfc2xpZGVSZXNldFRyYW5zaXRpb25TdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzbGlkZVJlc2V0VHJhbnNpdGlvblN0YXJ0J11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uRW5kJykgc19zbGlkZVJlc2V0VHJhbnNpdGlvbkVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzbGlkZVJlc2V0VHJhbnNpdGlvbkVuZCddXG4gID4oKTtcblxuICBAT3V0cHV0KCdzbGlkZXJNb3ZlJykgc19zbGlkZXJNb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3NsaWRlck1vdmUnXT4oKTtcblxuICBAT3V0cHV0KCdzbGlkZXJGaXJzdE1vdmUnKSBzX3NsaWRlckZpcnN0TW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWydzbGlkZXJGaXJzdE1vdmUnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnc2xpZGVzTGVuZ3RoQ2hhbmdlJykgc19zbGlkZXNMZW5ndGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc2xpZGVzTGVuZ3RoQ2hhbmdlJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnKSBzX3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc2xpZGVzR3JpZExlbmd0aENoYW5nZSddXG4gID4oKTtcblxuICBAT3V0cHV0KCdzbmFwR3JpZExlbmd0aENoYW5nZScpIHNfc25hcEdyaWRMZW5ndGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc25hcEdyaWRMZW5ndGhDaGFuZ2UnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgnc25hcEluZGV4Q2hhbmdlJykgc19zbmFwSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEV2ZW50c1BhcmFtc1snc25hcEluZGV4Q2hhbmdlJ11cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ3RhcCcpIHNfdGFwID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3RhcCddPigpO1xuXG4gIEBPdXRwdXQoJ3RvRWRnZScpIHNfdG9FZGdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3RvRWRnZSddPigpO1xuXG4gIEBPdXRwdXQoJ3RvdWNoRW5kJykgc190b3VjaEVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWyd0b3VjaEVuZCddPigpO1xuXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZScpIHNfdG91Y2hNb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3RvdWNoTW92ZSddPigpO1xuXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZU9wcG9zaXRlJykgc190b3VjaE1vdmVPcHBvc2l0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWyd0b3VjaE1vdmVPcHBvc2l0ZSddXG4gID4oKTtcblxuICBAT3V0cHV0KCd0b3VjaFN0YXJ0Jykgc190b3VjaFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3RvdWNoU3RhcnQnXT4oKTtcblxuICBAT3V0cHV0KCd0cmFuc2l0aW9uRW5kJykgc190cmFuc2l0aW9uRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ3RyYW5zaXRpb25FbmQnXT4oKTtcblxuICBAT3V0cHV0KCd0cmFuc2l0aW9uU3RhcnQnKSBzX3RyYW5zaXRpb25TdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgRXZlbnRzUGFyYW1zWyd0cmFuc2l0aW9uU3RhcnQnXVxuICA+KCk7XG5cbiAgQE91dHB1dCgndXBkYXRlJykgc191cGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50c1BhcmFtc1sndXBkYXRlJ10+KCk7XG5cbiAgQE91dHB1dCgnem9vbUNoYW5nZScpIHNfem9vbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWyd6b29tQ2hhbmdlJ10+KCk7XG5cbiAgQE91dHB1dCgnc3dpcGVyJykgc19zd2lwZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdsb2NrJykgc19sb2NrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudHNQYXJhbXNbJ2xvY2snXT4oKTtcblxuICBAT3V0cHV0KCd1bmxvY2snKSBzX3VubG9jayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnRzUGFyYW1zWyd1bmxvY2snXT4oKTtcblxuICBAVmlld0NoaWxkKCdwcmV2RWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc2V0IHByZXZFbFJlZihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX3ByZXZFbFJlZiA9IGVsO1xuICAgIHRoaXMuX3NldEVsZW1lbnQoZWwsIHRoaXMubmF2aWdhdGlvbiwgJ25hdmlnYXRpb24nLCAncHJldkVsJyk7XG4gIH1cbiAgX3ByZXZFbFJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbmV4dEVsUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBuZXh0RWxSZWYoZWw6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9uZXh0RWxSZWYgPSBlbDtcbiAgICB0aGlzLl9zZXRFbGVtZW50KGVsLCB0aGlzLm5hdmlnYXRpb24sICduYXZpZ2F0aW9uJywgJ25leHRFbCcpO1xuICB9XG4gIF9uZXh0RWxSZWY6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhckVsUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBzY3JvbGxiYXJFbFJlZihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX3Njcm9sbGJhckVsUmVmID0gZWw7XG4gICAgdGhpcy5fc2V0RWxlbWVudChlbCwgdGhpcy5zY3JvbGxiYXIsICdzY3JvbGxiYXInKTtcbiAgfVxuICBfc2Nyb2xsYmFyRWxSZWY6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRpb25FbFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzZXQgcGFnaW5hdGlvbkVsUmVmKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fcGFnaW5hdGlvbkVsUmVmID0gZWw7XG4gICAgdGhpcy5fc2V0RWxlbWVudChlbCwgdGhpcy5wYWdpbmF0aW9uLCAncGFnaW5hdGlvbicpO1xuICB9XG4gIF9wYWdpbmF0aW9uRWxSZWY6IEVsZW1lbnRSZWY7XG4gIEBDb250ZW50Q2hpbGRyZW4oU3dpcGVyU2xpZGVEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IGZhbHNlLCBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuICBzbGlkZXNFbDogUXVlcnlMaXN0PFN3aXBlclNsaWRlRGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBzbGlkZXM6IFN3aXBlclNsaWRlRGlyZWN0aXZlW107XG5cbiAgcHJlcGVuZFNsaWRlczogT2JzZXJ2YWJsZTxTd2lwZXJTbGlkZURpcmVjdGl2ZVtdPjtcbiAgYXBwZW5kU2xpZGVzOiBPYnNlcnZhYmxlPFN3aXBlclNsaWRlRGlyZWN0aXZlW10+O1xuXG4gIHN3aXBlclJlZjogU3dpcGVyO1xuICByZWFkb25seSBfYWN0aXZlU2xpZGVzID0gbmV3IFN1YmplY3Q8U3dpcGVyU2xpZGVEaXJlY3RpdmVbXT4oKTtcblxuICBnZXQgYWN0aXZlU2xpZGVzKCkge1xuICAgIGlmICh0aGlzLnZpcnR1YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVTbGlkZXM7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLnNsaWRlcyk7XG4gIH1cblxuICBnZXQgem9vbUNvbnRhaW5lckNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnpvb20gJiYgdHlwZW9mIHRoaXMuem9vbSAhPT0gJ2Jvb2xlYW4nXG4gICAgICA/IHRoaXMuem9vbS5jb250YWluZXJDbGFzc1xuICAgICAgOiAnc3dpcGVyLXpvb20tY29udGFpbmVyJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjb250YWluZXJDbGFzc2VzOiBzdHJpbmcgPSAnc3dpcGVyJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIF9wbGF0Zm9ybUlkOiBPYmplY3QsXG4gICkge31cblxuICBwcml2YXRlIF9zZXRFbGVtZW50KGVsOiBFbGVtZW50UmVmLCByZWY6IGFueSwgdXBkYXRlOiBzdHJpbmcsIGtleSA9ICdlbCcpIHtcbiAgICBpZiAoIXJlZiB8fCAhZWwpIHJldHVybjtcbiAgICBpZiAoZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgaWYgKHJlZltrZXldID09PSBlbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlZltrZXldID0gZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlT2JqOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuICAgIHVwZGF0ZU9ialt1cGRhdGVdID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZUluaXRTd2lwZXIodXBkYXRlT2JqKTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IHBhcmFtcyB9ID0gZ2V0UGFyYW1zKHRoaXMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jaGlsZHJlblNsaWRlc0luaXQoKTtcbiAgICB0aGlzLmluaXRTd2lwZXIoKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNfc3dpcGVyLmVtaXQodGhpcy5zd2lwZXJSZWYpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGlsZHJlblNsaWRlc0luaXQoKSB7XG4gICAgdGhpcy5zbGlkZXNDaGFuZ2VzKHRoaXMuc2xpZGVzRWwpO1xuICAgIHRoaXMuc2xpZGVzRWwuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5zbGlkZXNDaGFuZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2xpZGVzQ2hhbmdlcyA9ICh2YWw6IFF1ZXJ5TGlzdDxTd2lwZXJTbGlkZURpcmVjdGl2ZT4pID0+IHtcbiAgICB0aGlzLnNsaWRlcyA9IHZhbC5tYXAoKHNsaWRlOiBTd2lwZXJTbGlkZURpcmVjdGl2ZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgc2xpZGUuc2xpZGVJbmRleCA9IGluZGV4O1xuICAgICAgc2xpZGUuY2xhc3NOYW1lcyA9IHRoaXMuc2xpZGVDbGFzcyB8fCAnJztcbiAgICAgIHJldHVybiBzbGlkZTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5sb29wICYmICF0aGlzLmxvb3BlZFNsaWRlcykge1xuICAgICAgdGhpcy5jYWxjTG9vcGVkU2xpZGVzKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy52aXJ0dWFsKSB7XG4gICAgICBpZiAodGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgICAgdGhpcy5wcmVwZW5kU2xpZGVzID0gb2YodGhpcy5zbGlkZXMuc2xpY2UodGhpcy5zbGlkZXMubGVuZ3RoIC0gdGhpcy5sb29wZWRTbGlkZXMpKTtcbiAgICAgICAgdGhpcy5hcHBlbmRTbGlkZXMgPSBvZih0aGlzLnNsaWRlcy5zbGljZSgwLCB0aGlzLmxvb3BlZFNsaWRlcykpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zd2lwZXJSZWYgJiYgdGhpcy5zd2lwZXJSZWYudmlydHVhbCkge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC5zbGlkZXMgPSB0aGlzLnNsaWRlcztcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIGdldCBpc1N3aXBlckFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZDtcbiAgfVxuXG4gIGluaXRTd2lwZXIoKSB7XG4gICAgY29uc3QgeyBwYXJhbXM6IHN3aXBlclBhcmFtcywgcGFzc2VkUGFyYW1zIH0gPSBnZXRQYXJhbXModGhpcyk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBzd2lwZXJQYXJhbXMpO1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBzd2lwZXJQYXJhbXMuaW5pdCA9IGZhbHNlO1xuICAgICAgaWYgKCFzd2lwZXJQYXJhbXMudmlydHVhbCkge1xuICAgICAgICBzd2lwZXJQYXJhbXMub2JzZXJ2ZXIgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBzd2lwZXJQYXJhbXMub25BbnkgPSAoZXZlbnROYW1lOiBrZXlvZiBTd2lwZXJDb21wb25lbnQsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzWygnc18nICsgZXZlbnROYW1lKSBhcyBrZXlvZiBTd2lwZXJDb21wb25lbnRdIGFzIEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgICAgICBpZiAoZW1pdHRlcikge1xuICAgICAgICAgIGVtaXR0ZXIuZW1pdChbLi4uYXJnc10pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgX3NsaWRlQ2xhc3NlczogU3dpcGVyRXZlbnRzWydfc2xpZGVDbGFzc2VzJ10gPSAoXywgdXBkYXRlZCkgPT4ge1xuICAgICAgICB1cGRhdGVkLmZvckVhY2goKHsgc2xpZGVFbCwgY2xhc3NOYW1lcyB9LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFJbmRleCA9IHNsaWRlRWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpO1xuICAgICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBkYXRhSW5kZXggPyBwYXJzZUludChkYXRhSW5kZXgpIDogaW5kZXg7XG4gICAgICAgICAgaWYgKHRoaXMudmlydHVhbCkge1xuICAgICAgICAgICAgY29uc3QgdmlydHVhbFNsaWRlID0gdGhpcy5zbGlkZXMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbS52aXJ0dWFsSW5kZXggJiYgaXRlbS52aXJ0dWFsSW5kZXggPT09IHNsaWRlSW5kZXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh2aXJ0dWFsU2xpZGUpIHtcbiAgICAgICAgICAgICAgdmlydHVhbFNsaWRlLmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2xpZGVzW3NsaWRlSW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlc1tzbGlkZUluZGV4XS5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9O1xuICAgICAgY29uc3QgX2NvbnRhaW5lckNsYXNzZXM6IFN3aXBlckV2ZW50c1snX2NvbnRhaW5lckNsYXNzZXMnXSA9IChfLCBjbGFzc2VzKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyUGFyYW1zLm9uLCB7XG4gICAgICAgIF9jb250YWluZXJDbGFzc2VzLFxuICAgICAgICBfc2xpZGVDbGFzc2VzLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBzd2lwZXJSZWYgPSBuZXcgU3dpcGVyKHN3aXBlclBhcmFtcyk7XG4gICAgICBzd2lwZXJSZWYubG9vcENyZWF0ZSA9ICgpID0+IHt9O1xuICAgICAgc3dpcGVyUmVmLmxvb3BEZXN0cm95ID0gKCkgPT4ge307XG4gICAgICBpZiAoc3dpcGVyUGFyYW1zLmxvb3ApIHtcbiAgICAgICAgc3dpcGVyUmVmLmxvb3BlZFNsaWRlcyA9IHRoaXMubG9vcGVkU2xpZGVzO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNWaXJ0dWFsRW5hYmxlZCA9IGlzRW5hYmxlZChzd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwpO1xuICAgICAgaWYgKHN3aXBlclJlZi52aXJ0dWFsICYmIGlzVmlydHVhbEVuYWJsZWQpIHtcbiAgICAgICAgc3dpcGVyUmVmLnZpcnR1YWwuc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGNvbnN0IGV4dGVuZFdpdGggPSB7XG4gICAgICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgICAgIHNsaWRlczogdGhpcy5zbGlkZXMsXG4gICAgICAgICAgcmVuZGVyRXh0ZXJuYWw6IHRoaXMudXBkYXRlVmlydHVhbFNsaWRlcyxcbiAgICAgICAgICByZW5kZXJFeHRlcm5hbFVwZGF0ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGV4dGVuZChzd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgICBleHRlbmQoc3dpcGVyUmVmLm9yaWdpbmFsUGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5fcGxhdGZvcm1JZCkpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYgPSBzd2lwZXJSZWYuaW5pdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzVmlydHVhbEVuYWJsZWQgPSBpc0VuYWJsZWQodGhpcy5zd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwpO1xuICAgICAgICBpZiAodGhpcy5zd2lwZXJSZWYudmlydHVhbCAmJiBpc1ZpcnR1YWxFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3R5bGU6IGFueSA9IG51bGw7XG4gIGN1cnJlbnRWaXJ0dWFsRGF0YTogYW55OyAvLyBUT0RPOiB0eXBlIHZpcnR1YWxEYXRhO1xuICBwcml2YXRlIHVwZGF0ZVZpcnR1YWxTbGlkZXMgPSAodmlydHVhbERhdGE6IGFueSkgPT4ge1xuICAgIC8vIFRPRE86IHR5cGUgdmlydHVhbERhdGFcbiAgICBpZiAoXG4gICAgICAhdGhpcy5zd2lwZXJSZWYgfHxcbiAgICAgICh0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YSAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YS5mcm9tID09PSB2aXJ0dWFsRGF0YS5mcm9tICYmXG4gICAgICAgIHRoaXMuY3VycmVudFZpcnR1YWxEYXRhLnRvID09PSB2aXJ0dWFsRGF0YS50byAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YS5vZmZzZXQgPT09IHZpcnR1YWxEYXRhLm9mZnNldClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdHlsZSA9IHRoaXMuc3dpcGVyUmVmLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBbdGhpcy5zd2lwZXJSZWYucnRsVHJhbnNsYXRlID8gJ3JpZ2h0JyA6ICdsZWZ0J106IGAke3ZpcnR1YWxEYXRhLm9mZnNldH1weGAsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIHRvcDogYCR7dmlydHVhbERhdGEub2Zmc2V0fXB4YCxcbiAgICAgICAgfTtcbiAgICB0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YSA9IHZpcnR1YWxEYXRhO1xuICAgIHRoaXMuX2FjdGl2ZVNsaWRlcy5uZXh0KHZpcnR1YWxEYXRhLnNsaWRlcyk7XG4gICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuc3dpcGVyUmVmLnVwZGF0ZVNsaWRlcygpO1xuICAgICAgdGhpcy5zd2lwZXJSZWYudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICAgIHRoaXMuc3dpcGVyUmVmLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICAgIGlmIChpc0VuYWJsZWQodGhpcy5zd2lwZXJSZWYucGFyYW1zLmxhenkpKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmxhenkubG9hZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZWRQYXJhbXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnVwZGF0ZVN3aXBlcihjaGFuZ2VkUGFyYW1zKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVJbml0U3dpcGVyKGNoYW5nZWRQYXJhbXM6IGFueSkge1xuICAgIGlmICghKGNoYW5nZWRQYXJhbXMgJiYgdGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXJhbXM6IGN1cnJlbnRQYXJhbXMsXG4gICAgICAgIHBhZ2luYXRpb24sXG4gICAgICAgIG5hdmlnYXRpb24sXG4gICAgICAgIHNjcm9sbGJhcixcbiAgICAgICAgdmlydHVhbCxcbiAgICAgICAgdGh1bWJzLFxuICAgICAgfSA9IHRoaXMuc3dpcGVyUmVmO1xuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5wYWdpbmF0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5wYWdpbmF0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24uZWwgJiZcbiAgICAgICAgICBwYWdpbmF0aW9uICYmXG4gICAgICAgICAgIXBhZ2luYXRpb24uZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3BhZ2luYXRpb24nLCB0aGlzLnBhZ2luYXRpb24pO1xuICAgICAgICAgIHBhZ2luYXRpb24uaW5pdCgpO1xuICAgICAgICAgIHBhZ2luYXRpb24ucmVuZGVyKCk7XG4gICAgICAgICAgcGFnaW5hdGlvbi51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBwYWdpbmF0aW9uLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5zY3JvbGxiYXIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyICYmXG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2Nyb2xsYmFyICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnNjcm9sbGJhci5lbCAmJlxuICAgICAgICAgIHNjcm9sbGJhciAmJlxuICAgICAgICAgICFzY3JvbGxiYXIuZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3Njcm9sbGJhcicsIHRoaXMuc2Nyb2xsYmFyKTtcbiAgICAgICAgICBzY3JvbGxiYXIuaW5pdCgpO1xuICAgICAgICAgIHNjcm9sbGJhci51cGRhdGVTaXplKCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjcm9sbGJhci5kZXN0cm95KCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5uYXZpZ2F0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5uYXZpZ2F0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24ucHJldkVsICYmXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLm5leHRFbCAmJlxuICAgICAgICAgIG5hdmlnYXRpb24gJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5wcmV2RWwgJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5uZXh0RWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pO1xuICAgICAgICAgIG5hdmlnYXRpb24uaW5pdCgpO1xuICAgICAgICAgIG5hdmlnYXRpb24udXBkYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobmF2aWdhdGlvbi5wcmV2RWwgJiYgbmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBuYXZpZ2F0aW9uLm5leHRFbCA9IG51bGw7XG4gICAgICAgICAgbmF2aWdhdGlvbi5wcmV2RWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy50aHVtYnMgJiYgdGhpcy50aHVtYnMgJiYgdGhpcy50aHVtYnMuc3dpcGVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFyYW1ldGVyKCd0aHVtYnMnLCB0aGlzLnRodW1icyk7XG4gICAgICAgIGNvbnN0IGluaXRpYWxpemVkID0gdGh1bWJzLmluaXQoKTtcbiAgICAgICAgaWYgKGluaXRpYWxpemVkKSB0aHVtYnMudXBkYXRlKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb250cm9sbGVyICYmIHRoaXMuY29udHJvbGxlciAmJiB0aGlzLmNvbnRyb2xsZXIuY29udHJvbCkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5jb250cm9sbGVyLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xsZXIuY29udHJvbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zd2lwZXJSZWYudXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTd2lwZXIoY2hhbmdlZFBhcmFtczogU2ltcGxlQ2hhbmdlcyB8IGFueSkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCEoY2hhbmdlZFBhcmFtcyAmJiB0aGlzLnN3aXBlclJlZiAmJiAhdGhpcy5zd2lwZXJSZWYuZGVzdHJveWVkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjaGFuZ2VkUGFyYW1zKSB7XG4gICAgICAgIGlmIChpZ25vcmVOZ09uQ2hhbmdlcy5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY2hhbmdlZFBhcmFtc1trZXldPy5jdXJyZW50VmFsdWUgPz8gY2hhbmdlZFBhcmFtc1trZXldO1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcmFtZXRlcihrZXksIG5ld1ZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZU5leHQpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZU5leHQgPSB0aGlzLmFsbG93U2xpZGVOZXh0O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZVByZXYpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZVByZXYgPSB0aGlzLmFsbG93U2xpZGVQcmV2O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmNoYW5nZURpcmVjdGlvbih0aGlzLmRpcmVjdGlvbiwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgaWYgKHRoaXMubG9vcCAmJiAhdGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgICAgICB0aGlzLmNhbGNMb29wZWRTbGlkZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN3aXBlclJlZi5jdXJyZW50QnJlYWtwb2ludCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnNldEJyZWFrcG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMudGh1bWJzIHx8IGNoYW5nZWRQYXJhbXMuY29udHJvbGxlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZUluaXRTd2lwZXIoY2hhbmdlZFBhcmFtcyk7XG4gICAgICB9XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGNMb29wZWRTbGlkZXMoKSB7XG4gICAgaWYgKCF0aGlzLmxvb3ApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHNsaWRlc1BlclZpZXdQYXJhbXMgPSB0aGlzLnNsaWRlc1BlclZpZXc7XG4gICAgaWYgKHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBTd2lwZXIucHJvdG90eXBlLmdldEJyZWFrcG9pbnQodGhpcy5icmVha3BvaW50cyk7XG4gICAgICBjb25zdCBicmVha3BvaW50T25seVBhcmFtcyA9XG4gICAgICAgIGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cyA/IHRoaXMuYnJlYWtwb2ludHNbYnJlYWtwb2ludF0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoYnJlYWtwb2ludE9ubHlQYXJhbXMgJiYgYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldykge1xuICAgICAgICBzbGlkZXNQZXJWaWV3UGFyYW1zID0gYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNsaWRlc1BlclZpZXdQYXJhbXMgPT09ICdhdXRvJykge1xuICAgICAgdGhpcy5sb29wZWRTbGlkZXMgPSB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgbG9vcGVkU2xpZGVzID0gdGhpcy5sb29wZWRTbGlkZXMgfHwgc2xpZGVzUGVyVmlld1BhcmFtcztcbiAgICBpZiAoIWxvb3BlZFNsaWRlcykge1xuICAgICAgLy8gP1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxvb3BBZGRpdGlvbmFsU2xpZGVzKSB7XG4gICAgICBsb29wZWRTbGlkZXMgKz0gdGhpcy5sb29wQWRkaXRpb25hbFNsaWRlcztcbiAgICB9XG4gICAgaWYgKGxvb3BlZFNsaWRlcyA+IHRoaXMuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgbG9vcGVkU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLmxvb3BlZFNsaWRlcyA9IGxvb3BlZFNsaWRlcztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHVwZGF0ZVBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICghKHRoaXMuc3dpcGVyUmVmICYmICF0aGlzLnN3aXBlclJlZi5kZXN0cm95ZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IF9rZXkgPSBrZXkucmVwbGFjZSgvXl8vLCAnJykgYXMga2V5b2YgU3dpcGVyT3B0aW9ucztcbiAgICBjb25zdCBpc0N1cnJlbnRQYXJhbU9iaiA9IGlzT2JqZWN0KHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSk7XG5cbiAgICBpZiAoX2tleSA9PT0gJ2VuYWJsZWQnKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuZW5hYmxlKCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0N1cnJlbnRQYXJhbU9iaiAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGV4dGVuZCh0aGlzLnN3aXBlclJlZi5wYXJhbXNbX2tleV0sIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSBhcyBhbnkpID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuc3dpcGVyUmVmPy5kZXN0cm95KHRydWUsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9Y29udGFpbmVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJuYXZpZ2F0aW9uICYmIHNob3dOYXZpZ2F0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJzd2lwZXItYnV0dG9uLXByZXZcIiAjcHJldkVsUmVmPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3dpcGVyLWJ1dHRvbi1uZXh0XCIgI25leHRFbFJlZj48L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPGRpdiAqbmdJZj1cInNjcm9sbGJhciAmJiBzaG93U2Nyb2xsYmFyXCIgY2xhc3M9XCJzd2lwZXItc2Nyb2xsYmFyXCIgI3Njcm9sbGJhckVsUmVmPjwvZGl2PlxuPGRpdiAqbmdJZj1cInBhZ2luYXRpb24gJiYgc2hvd1BhZ2luYXRpb25cIiBjbGFzcz1cInN3aXBlci1wYWdpbmF0aW9uXCIgI3BhZ2luYXRpb25FbFJlZj48L2Rpdj5cbjxkaXYgW25nQ2xhc3NdPVwid3JhcHBlckNsYXNzXCIgW2F0dHIuaWRdPVwiaWRcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9d3JhcHBlci1zdGFydF1cIj48L25nLWNvbnRlbnQ+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBzbGlkZXNUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgbG9vcFNsaWRlczogcHJlcGVuZFNsaWRlcyxcbiAgICAgICAga2V5OiAncHJlcGVuZCdcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIHNsaWRlc1RlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBsb29wU2xpZGVzOiBhY3RpdmVTbGlkZXMsXG4gICAgICAgIGtleTogJydcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIHNsaWRlc1RlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBsb29wU2xpZGVzOiBhcHBlbmRTbGlkZXMsXG4gICAgICAgIGtleTogJ2FwcGVuZCdcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9d3JhcHBlci1lbmRdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1jb250YWluZXItZW5kXVwiPjwvbmctY29udGVudD5cblxuPG5nLXRlbXBsYXRlICNzbGlkZXNUZW1wbGF0ZSBsZXQtbG9vcFNsaWRlcz1cImxvb3BTbGlkZXNcIiBsZXQtc2xpZGVLZXk9XCJrZXlcIj5cbiAgPGRpdlxuICAgICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBsb29wU2xpZGVzIHwgYXN5bmNcIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgKHNsaWRlLmNsYXNzID8gc2xpZGUuY2xhc3MgKyAnICcgOiAnJykgK1xuICAgICAgc2xpZGVDbGFzcyArXG4gICAgICAoc2xpZGVLZXkgIT09ICcnID8gJyAnICsgc2xpZGVEdXBsaWNhdGVDbGFzcyA6ICcnKVxuICAgIFwiXG4gICAgW2F0dHIuZGF0YS1zd2lwZXItc2xpZGUtaW5kZXhdPVwic2xpZGUudmlydHVhbEluZGV4ID8gc2xpZGUudmlydHVhbEluZGV4IDogc2xpZGUuc2xpZGVJbmRleFwiXG4gICAgW2F0dHIuZGF0YS1zd2lwZXItYXV0b3BsYXldPVwic2xpZGUuYXV0b3BsYXlEZWxheVwiXG4gICAgW3N0eWxlXT1cInN0eWxlXCJcbiAgICBbbmdTd2l0Y2hdPVwic2xpZGUuem9vbVwiXG4gID5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgW25nQ2xhc3NdPVwiem9vbUNvbnRhaW5lckNsYXNzXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xpZGUudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogc2xpZGUuc2xpZGVEYXRhXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNsaWRlLnRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAkaW1wbGljaXQ6IHNsaWRlLnNsaWRlRGF0YVxuICAgICAgICB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0= \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/swiper.module.mjs b/swiper/angular/esm2020/angular/src/swiper.module.mjs new file mode 100644 index 0000000..06a6d0e --- /dev/null +++ b/swiper/angular/esm2020/angular/src/swiper.module.mjs @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SwiperComponent } from './swiper.component'; +import { SwiperSlideDirective } from './swiper-slide.directive'; +import * as i0 from "@angular/core"; +export class SwiperModule { +} +SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); +SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [SwiperComponent, SwiperSlideDirective], + exports: [SwiperComponent, SwiperSlideDirective], + imports: [CommonModule], + }] + }] }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLFlBQVk7OzBHQUFaLFlBQVk7MkdBQVosWUFBWSxpQkFKUixlQUFlLEVBQUUsb0JBQW9CLGFBRTFDLFlBQVksYUFEWixlQUFlLEVBQUUsb0JBQW9COzJHQUdwQyxZQUFZLFlBRmQsQ0FBQyxZQUFZLENBQUM7NEZBRVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3dpcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zd2lwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXBlclNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zd2lwZXItc2xpZGUuZGlyZWN0aXZlJztcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N3aXBlckNvbXBvbmVudCwgU3dpcGVyU2xpZGVEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU3dpcGVyQ29tcG9uZW50LCBTd2lwZXJTbGlkZURpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/utils/get-params.mjs b/swiper/angular/esm2020/angular/src/utils/get-params.mjs new file mode 100644 index 0000000..27e4b70 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/utils/get-params.mjs @@ -0,0 +1,47 @@ +// @ts-ignore +import Swiper from 'swiper'; +import { paramsList } from './params-list'; +import { extend, isObject } from './utils'; +export const allowedParams = paramsList.map((key) => key.replace(/_/, '')); +export function getParams(obj = {}) { + const params = { + on: {}, + }; + // const events = {}; + const passedParams = {}; + extend(params, Swiper.defaults); + extend(params, Swiper.extendedDefaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map((key) => key.replace(/_/, '')); + Object.keys(obj).forEach((key) => { + const _key = key.replace(/^_/, ''); + if (allowedParams.indexOf(_key) >= 0) { + if (isObject(obj[key])) { + params[_key] = {}; + passedParams[_key] = {}; + extend(params[_key], obj[key]); + extend(passedParams[_key], obj[key]); + } + else { + params[_key] = obj[key]; + passedParams[_key] = obj[key]; + } + } + // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + // } + else { + rest[_key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach((key) => { + if (params[key] === true) + params[key] = {}; + if (params[key] === false) + delete params[key]; + }); + return { params, passedParams, rest }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy91dGlscy9nZXQtcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRSxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQVcsRUFBRTtJQUNyQyxNQUFNLE1BQU0sR0FBUTtRQUNsQixFQUFFLEVBQUUsRUFBRTtLQUNQLENBQUM7SUFDRixxQkFBcUI7SUFDckIsTUFBTSxZQUFZLEdBQWlCLEVBQUUsQ0FBQztJQUN0QyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRXBCLE1BQU0sSUFBSSxHQUFpQixFQUFFLENBQUM7SUFDOUIsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMvQjtTQUNGO1FBQ0QsNEVBQTRFO1FBQzVFLG1FQUFtRTtRQUNuRSxJQUFJO2FBQ0M7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDeEQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0MsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCBTd2lwZXIgZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IHBhcmFtc0xpc3QgfSBmcm9tICcuL3BhcmFtcy1saXN0JztcbmltcG9ydCB7IGV4dGVuZCwgaXNPYmplY3QgfSBmcm9tICcuL3V0aWxzJztcbnR5cGUgS2V5VmFsdWVUeXBlID0geyBbeDogc3RyaW5nXTogYW55IH07XG5leHBvcnQgY29uc3QgYWxsb3dlZFBhcmFtcyA9IHBhcmFtc0xpc3QubWFwKChrZXkpID0+IGtleS5yZXBsYWNlKC9fLywgJycpKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXMob2JqOiBhbnkgPSB7fSkge1xuICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICBvbjoge30sXG4gIH07XG4gIC8vIGNvbnN0IGV2ZW50cyA9IHt9O1xuICBjb25zdCBwYXNzZWRQYXJhbXM6IEtleVZhbHVlVHlwZSA9IHt9O1xuICBleHRlbmQocGFyYW1zLCBTd2lwZXIuZGVmYXVsdHMpO1xuICBleHRlbmQocGFyYW1zLCBTd2lwZXIuZXh0ZW5kZWREZWZhdWx0cyk7XG4gIHBhcmFtcy5fZW1pdENsYXNzZXMgPSB0cnVlO1xuICBwYXJhbXMuaW5pdCA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlc3Q6IEtleVZhbHVlVHlwZSA9IHt9O1xuICBjb25zdCBhbGxvd2VkUGFyYW1zID0gcGFyYW1zTGlzdC5tYXAoKGtleSkgPT4ga2V5LnJlcGxhY2UoL18vLCAnJykpO1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgX2tleSA9IGtleS5yZXBsYWNlKC9eXy8sICcnKTtcbiAgICBpZiAoYWxsb3dlZFBhcmFtcy5pbmRleE9mKF9rZXkpID49IDApIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpba2V5XSkpIHtcbiAgICAgICAgcGFyYW1zW19rZXldID0ge307XG4gICAgICAgIHBhc3NlZFBhcmFtc1tfa2V5XSA9IHt9O1xuICAgICAgICBleHRlbmQocGFyYW1zW19rZXldLCBvYmpba2V5XSk7XG4gICAgICAgIGV4dGVuZChwYXNzZWRQYXJhbXNbX2tleV0sIG9ialtrZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtc1tfa2V5XSA9IG9ialtrZXldO1xuICAgICAgICBwYXNzZWRQYXJhbXNbX2tleV0gPSBvYmpba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZWxzZSBpZiAoa2V5LnNlYXJjaCgvb25bQS1aXS8pID09PSAwICYmIHR5cGVvZiBvYmpba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vICAgZXZlbnRzW2Ake19rZXlbMl0udG9Mb3dlckNhc2UoKX0ke2tleS5zdWJzdHIoMyl9YF0gPSBvYmpba2V5XTtcbiAgICAvLyB9XG4gICAgZWxzZSB7XG4gICAgICByZXN0W19rZXldID0gb2JqW2tleV07XG4gICAgfVxuICB9KTtcbiAgWyduYXZpZ2F0aW9uJywgJ3BhZ2luYXRpb24nLCAnc2Nyb2xsYmFyJ10uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKHBhcmFtc1trZXldID09PSB0cnVlKSBwYXJhbXNba2V5XSA9IHt9O1xuICAgIGlmIChwYXJhbXNba2V5XSA9PT0gZmFsc2UpIGRlbGV0ZSBwYXJhbXNba2V5XTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgcGFyYW1zLCBwYXNzZWRQYXJhbXMsIHJlc3QgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/utils/params-list.mjs b/swiper/angular/esm2020/angular/src/utils/params-list.mjs new file mode 100644 index 0000000..0f96380 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/utils/params-list.mjs @@ -0,0 +1,118 @@ +/* underscore in name -> watch for changes */ +export const paramsList = [ + 'init', + 'enabled', + '_direction', + 'touchEventsTarget', + 'initialSlide', + '_speed', + 'cssMode', + 'updateOnWindowResize', + 'resizeObserver', + 'nested', + 'focusableElements', + '_width', + '_height', + 'preventInteractionOnTransition', + 'userAgent', + 'url', + '_edgeSwipeDetection', + '_edgeSwipeThreshold', + '_freeMode', + '_autoHeight', + 'setWrapperSize', + 'virtualTranslate', + '_effect', + 'breakpoints', + '_spaceBetween', + '_slidesPerView', + 'maxBackfaceHiddenSlides', + '_grid', + '_slidesPerGroup', + '_slidesPerGroupSkip', + '_centeredSlides', + '_centeredSlidesBounds', + '_slidesOffsetBefore', + '_slidesOffsetAfter', + 'normalizeSlideIndex', + '_centerInsufficientSlides', + '_watchOverflow', + 'roundLengths', + 'touchRatio', + 'touchAngle', + 'simulateTouch', + '_shortSwipes', + '_longSwipes', + 'longSwipesRatio', + 'longSwipesMs', + '_followFinger', + 'allowTouchMove', + '_threshold', + 'touchMoveStopPropagation', + 'touchStartPreventDefault', + 'touchStartForcePreventDefault', + 'touchReleaseOnEdges', + 'uniqueNavElements', + '_resistance', + '_resistanceRatio', + '_watchSlidesProgress', + '_grabCursor', + 'preventClicks', + 'preventClicksPropagation', + '_slideToClickedSlide', + '_preloadImages', + 'updateOnImagesReady', + '_loop', + '_loopAdditionalSlides', + '_loopedSlides', + '_loopFillGroupWithBlank', + 'loopPreventsSlide', + '_rewind', + '_allowSlidePrev', + '_allowSlideNext', + '_swipeHandler', + '_noSwiping', + 'noSwipingClass', + 'noSwipingSelector', + 'passiveListeners', + 'containerModifierClass', + 'slideClass', + 'slideBlankClass', + 'slideActiveClass', + 'slideDuplicateActiveClass', + 'slideVisibleClass', + 'slideDuplicateClass', + 'slideNextClass', + 'slideDuplicateNextClass', + 'slidePrevClass', + 'slideDuplicatePrevClass', + 'wrapperClass', + 'runCallbacksOnInit', + 'observer', + 'observeParents', + 'observeSlideChildren', + // modules + 'a11y', + 'autoplay', + '_controller', + 'coverflowEffect', + 'cubeEffect', + 'fadeEffect', + 'flipEffect', + 'creativeEffect', + 'cardsEffect', + 'hashNavigation', + 'history', + 'keyboard', + 'lazy', + 'mousewheel', + '_navigation', + '_pagination', + 'parallax', + '_scrollbar', + '_thumbs', + 'virtual', + 'zoom', + 'on', +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvcGFyYW1zLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixNQUFNO0lBQ04sU0FBUztJQUNULFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLFFBQVE7SUFDUixTQUFTO0lBQ1Qsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixRQUFRO0lBQ1IsbUJBQW1CO0lBQ25CLFFBQVE7SUFDUixTQUFTO0lBQ1QsZ0NBQWdDO0lBQ2hDLFdBQVc7SUFDWCxLQUFLO0lBQ0wscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsU0FBUztJQUNULGFBQWE7SUFDYixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixPQUFPO0lBQ1AsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLDJCQUEyQjtJQUMzQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLFlBQVk7SUFDWixZQUFZO0lBQ1osZUFBZTtJQUNmLGNBQWM7SUFDZCxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLCtCQUErQjtJQUMvQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsc0JBQXNCO0lBQ3RCLGFBQWE7SUFDYixlQUFlO0lBQ2YsMEJBQTBCO0lBQzFCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLE9BQU87SUFDUCx1QkFBdUI7SUFDdkIsZUFBZTtJQUNmLHlCQUF5QjtJQUN6QixtQkFBbUI7SUFDbkIsU0FBUztJQUNULGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQix3QkFBd0I7SUFDeEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIseUJBQXlCO0lBQ3pCLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFFdEIsVUFBVTtJQUNWLE1BQU07SUFDTixVQUFVO0lBQ1YsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixTQUFTO0lBQ1QsVUFBVTtJQUNWLE1BQU07SUFDTixZQUFZO0lBQ1osYUFBYTtJQUNiLGFBQWE7SUFDYixVQUFVO0lBQ1YsWUFBWTtJQUNaLFNBQVM7SUFDVCxTQUFTO0lBQ1QsTUFBTTtJQUNOLElBQUk7Q0FDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdW5kZXJzY29yZSBpbiBuYW1lIC0+IHdhdGNoIGZvciBjaGFuZ2VzICovXG5leHBvcnQgY29uc3QgcGFyYW1zTGlzdCA9IFtcbiAgJ2luaXQnLFxuICAnZW5hYmxlZCcsXG4gICdfZGlyZWN0aW9uJyxcbiAgJ3RvdWNoRXZlbnRzVGFyZ2V0JyxcbiAgJ2luaXRpYWxTbGlkZScsXG4gICdfc3BlZWQnLFxuICAnY3NzTW9kZScsXG4gICd1cGRhdGVPbldpbmRvd1Jlc2l6ZScsXG4gICdyZXNpemVPYnNlcnZlcicsXG4gICduZXN0ZWQnLFxuICAnZm9jdXNhYmxlRWxlbWVudHMnLFxuICAnX3dpZHRoJyxcbiAgJ19oZWlnaHQnLFxuICAncHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uJyxcbiAgJ3VzZXJBZ2VudCcsXG4gICd1cmwnLFxuICAnX2VkZ2VTd2lwZURldGVjdGlvbicsXG4gICdfZWRnZVN3aXBlVGhyZXNob2xkJyxcbiAgJ19mcmVlTW9kZScsXG4gICdfYXV0b0hlaWdodCcsXG4gICdzZXRXcmFwcGVyU2l6ZScsXG4gICd2aXJ0dWFsVHJhbnNsYXRlJyxcbiAgJ19lZmZlY3QnLFxuICAnYnJlYWtwb2ludHMnLFxuICAnX3NwYWNlQmV0d2VlbicsXG4gICdfc2xpZGVzUGVyVmlldycsXG4gICdtYXhCYWNrZmFjZUhpZGRlblNsaWRlcycsXG4gICdfZ3JpZCcsXG4gICdfc2xpZGVzUGVyR3JvdXAnLFxuICAnX3NsaWRlc1Blckdyb3VwU2tpcCcsXG4gICdfY2VudGVyZWRTbGlkZXMnLFxuICAnX2NlbnRlcmVkU2xpZGVzQm91bmRzJyxcbiAgJ19zbGlkZXNPZmZzZXRCZWZvcmUnLFxuICAnX3NsaWRlc09mZnNldEFmdGVyJyxcbiAgJ25vcm1hbGl6ZVNsaWRlSW5kZXgnLFxuICAnX2NlbnRlckluc3VmZmljaWVudFNsaWRlcycsXG4gICdfd2F0Y2hPdmVyZmxvdycsXG4gICdyb3VuZExlbmd0aHMnLFxuICAndG91Y2hSYXRpbycsXG4gICd0b3VjaEFuZ2xlJyxcbiAgJ3NpbXVsYXRlVG91Y2gnLFxuICAnX3Nob3J0U3dpcGVzJyxcbiAgJ19sb25nU3dpcGVzJyxcbiAgJ2xvbmdTd2lwZXNSYXRpbycsXG4gICdsb25nU3dpcGVzTXMnLFxuICAnX2ZvbGxvd0ZpbmdlcicsXG4gICdhbGxvd1RvdWNoTW92ZScsXG4gICdfdGhyZXNob2xkJyxcbiAgJ3RvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbicsXG4gICd0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQnLFxuICAndG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQnLFxuICAndG91Y2hSZWxlYXNlT25FZGdlcycsXG4gICd1bmlxdWVOYXZFbGVtZW50cycsXG4gICdfcmVzaXN0YW5jZScsXG4gICdfcmVzaXN0YW5jZVJhdGlvJyxcbiAgJ193YXRjaFNsaWRlc1Byb2dyZXNzJyxcbiAgJ19ncmFiQ3Vyc29yJyxcbiAgJ3ByZXZlbnRDbGlja3MnLFxuICAncHJldmVudENsaWNrc1Byb3BhZ2F0aW9uJyxcbiAgJ19zbGlkZVRvQ2xpY2tlZFNsaWRlJyxcbiAgJ19wcmVsb2FkSW1hZ2VzJyxcbiAgJ3VwZGF0ZU9uSW1hZ2VzUmVhZHknLFxuICAnX2xvb3AnLFxuICAnX2xvb3BBZGRpdGlvbmFsU2xpZGVzJyxcbiAgJ19sb29wZWRTbGlkZXMnLFxuICAnX2xvb3BGaWxsR3JvdXBXaXRoQmxhbmsnLFxuICAnbG9vcFByZXZlbnRzU2xpZGUnLFxuICAnX3Jld2luZCcsXG4gICdfYWxsb3dTbGlkZVByZXYnLFxuICAnX2FsbG93U2xpZGVOZXh0JyxcbiAgJ19zd2lwZUhhbmRsZXInLFxuICAnX25vU3dpcGluZycsXG4gICdub1N3aXBpbmdDbGFzcycsXG4gICdub1N3aXBpbmdTZWxlY3RvcicsXG4gICdwYXNzaXZlTGlzdGVuZXJzJyxcbiAgJ2NvbnRhaW5lck1vZGlmaWVyQ2xhc3MnLFxuICAnc2xpZGVDbGFzcycsXG4gICdzbGlkZUJsYW5rQ2xhc3MnLFxuICAnc2xpZGVBY3RpdmVDbGFzcycsXG4gICdzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzJyxcbiAgJ3NsaWRlVmlzaWJsZUNsYXNzJyxcbiAgJ3NsaWRlRHVwbGljYXRlQ2xhc3MnLFxuICAnc2xpZGVOZXh0Q2xhc3MnLFxuICAnc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MnLFxuICAnc2xpZGVQcmV2Q2xhc3MnLFxuICAnc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3MnLFxuICAnd3JhcHBlckNsYXNzJyxcbiAgJ3J1bkNhbGxiYWNrc09uSW5pdCcsXG4gICdvYnNlcnZlcicsXG4gICdvYnNlcnZlUGFyZW50cycsXG4gICdvYnNlcnZlU2xpZGVDaGlsZHJlbicsXG5cbiAgLy8gbW9kdWxlc1xuICAnYTExeScsXG4gICdhdXRvcGxheScsXG4gICdfY29udHJvbGxlcicsXG4gICdjb3ZlcmZsb3dFZmZlY3QnLFxuICAnY3ViZUVmZmVjdCcsXG4gICdmYWRlRWZmZWN0JyxcbiAgJ2ZsaXBFZmZlY3QnLFxuICAnY3JlYXRpdmVFZmZlY3QnLFxuICAnY2FyZHNFZmZlY3QnLFxuICAnaGFzaE5hdmlnYXRpb24nLFxuICAnaGlzdG9yeScsXG4gICdrZXlib2FyZCcsXG4gICdsYXp5JyxcbiAgJ21vdXNld2hlZWwnLFxuICAnX25hdmlnYXRpb24nLFxuICAnX3BhZ2luYXRpb24nLFxuICAncGFyYWxsYXgnLFxuICAnX3Njcm9sbGJhcicsXG4gICdfdGh1bWJzJyxcbiAgJ3ZpcnR1YWwnLFxuICAnem9vbScsXG4gICdvbicsXG5dO1xuIl19 \ No newline at end of file diff --git a/swiper/angular/esm2020/angular/src/utils/utils.mjs b/swiper/angular/esm2020/angular/src/utils/utils.mjs new file mode 100644 index 0000000..17adb72 --- /dev/null +++ b/swiper/angular/esm2020/angular/src/utils/utils.mjs @@ -0,0 +1,52 @@ +export function isObject(o) { + return (typeof o === 'object' && + o !== null && + o.constructor && + Object.prototype.toString.call(o).slice(8, -1) === 'Object'); +} +export function isEnabled(val) { + return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true; +} +export function isShowEl(val, obj, el) { + return ((coerceBooleanProperty(val) === true && obj && !obj.el) || + !(typeof obj !== 'boolean' && + obj.el !== el?.nativeElement && + (typeof obj.el === 'string' || typeof obj.el === 'object'))); +} +export function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src) + .filter((key) => noExtend.indexOf(key) < 0) + .forEach((key) => { + if (typeof target[key] === 'undefined') { + target[key] = src[key]; + return; + } + if (target[key] && !src[key]) { + return; + } + if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) + target[key] = src[key]; + else + extend(target[key], src[key]); + } + else { + target[key] = src[key]; + } + }); +} +export function coerceBooleanProperty(value) { + return value != null && `${value}` !== 'false'; +} +export const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; +export function setProperty(val, obj = {}) { + if (isObject(val)) { + return val; + } + if (coerceBooleanProperty(val) === true) { + return obj; + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FDTCxPQUFPLENBQUMsS0FBSyxRQUFRO1FBQ3JCLENBQUMsS0FBSyxJQUFJO1FBQ1YsQ0FBQyxDQUFDLFdBQVc7UUFDYixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQW9DO0lBQzVELE9BQU8sT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztBQUN4RixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRLEVBQUUsR0FBUSxFQUFFLEVBQU87SUFDbEQsT0FBTyxDQUNMLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUNDLE9BQU8sR0FBRyxLQUFLLFNBQVM7WUFDeEIsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsYUFBYTtZQUM1QixDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUMzRCxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFXLEVBQUUsR0FBUTtJQUMxQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDYixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ2YsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFDRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25GLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVU7Z0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7Z0JBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBVTtJQUM5QyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFdEYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFRLEVBQUUsR0FBRyxHQUFHLEVBQUU7SUFDNUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUVELElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3ZDLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNPYmplY3QobzogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIG8gPT09ICdvYmplY3QnICYmXG4gICAgbyAhPT0gbnVsbCAmJlxuICAgIG8uY29uc3RydWN0b3IgJiZcbiAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpID09PSAnT2JqZWN0J1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmFibGVkKHZhbDogYm9vbGVhbiB8IHsgZW5hYmxlZD86IGJvb2xlYW4gfSkge1xuICByZXR1cm4gdHlwZW9mIHZhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHZhbCAhPT0gJ2Jvb2xlYW4nICYmIHZhbC5lbmFibGVkID09PSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTaG93RWwodmFsOiBhbnksIG9iajogYW55LCBlbDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpID09PSB0cnVlICYmIG9iaiAmJiAhb2JqLmVsKSB8fFxuICAgICEoXG4gICAgICB0eXBlb2Ygb2JqICE9PSAnYm9vbGVhbicgJiZcbiAgICAgIG9iai5lbCAhPT0gZWw/Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICh0eXBlb2Ygb2JqLmVsID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqLmVsID09PSAnb2JqZWN0JylcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQodGFyZ2V0OiBhbnksIHNyYzogYW55KSB7XG4gIGNvbnN0IG5vRXh0ZW5kID0gWydfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAncHJvdG90eXBlJ107XG4gIE9iamVjdC5rZXlzKHNyYylcbiAgICAuZmlsdGVyKChrZXkpID0+IG5vRXh0ZW5kLmluZGV4T2Yoa2V5KSA8IDApXG4gICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0YXJnZXRba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRhcmdldFtrZXldICYmICFzcmNba2V5XSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3Qoc3JjW2tleV0pICYmIGlzT2JqZWN0KHRhcmdldFtrZXldKSAmJiBPYmplY3Qua2V5cyhzcmNba2V5XSkubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoc3JjW2tleV0uX19zd2lwZXJfXykgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTtcbiAgICAgICAgZWxzZSBleHRlbmQodGFyZ2V0W2tleV0sIHNyY1trZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnO1xufVxuXG5leHBvcnQgY29uc3QgaWdub3JlTmdPbkNoYW5nZXMgPSBbJ3BhZ2luYXRpb24nLCAnbmF2aWdhdGlvbicsICdzY3JvbGxiYXInLCAndmlydHVhbCddO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UHJvcGVydHkodmFsOiBhbnksIG9iaiA9IHt9KToge30gfCBmYWxzZSB7XG4gIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGlmIChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/swiper/angular/esm2020/swiper-angular.mjs b/swiper/angular/esm2020/swiper-angular.mjs new file mode 100644 index 0000000..96e42d6 --- /dev/null +++ b/swiper/angular/esm2020/swiper-angular.mjs @@ -0,0 +1,2 @@ +export * from './angular/src/public-api'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci9zcmMvcHVibGljLWFwaSc7XG4iXX0= \ No newline at end of file diff --git a/swiper/angular/esm2020/swiper_angular.mjs b/swiper/angular/esm2020/swiper_angular.mjs new file mode 100644 index 0000000..5105204 --- /dev/null +++ b/swiper/angular/esm2020/swiper_angular.mjs @@ -0,0 +1,5 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './swiper-angular'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyX2FuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyX2FuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1hbmd1bGFyJztcbiJdfQ== \ No newline at end of file diff --git a/swiper/angular/fesm2015/swiper_angular.mjs b/swiper/angular/fesm2015/swiper_angular.mjs new file mode 100644 index 0000000..f961823 --- /dev/null +++ b/swiper/angular/fesm2015/swiper_angular.mjs @@ -0,0 +1,1327 @@ +import * as i0 from '@angular/core'; +import { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core'; +import * as i1 from '@angular/common'; +import { isPlatformBrowser, CommonModule } from '@angular/common'; +import Swiper from 'swiper'; +import { Subject, of } from 'rxjs'; + +/* underscore in name -> watch for changes */ +const paramsList = [ + 'init', + 'enabled', + '_direction', + 'touchEventsTarget', + 'initialSlide', + '_speed', + 'cssMode', + 'updateOnWindowResize', + 'resizeObserver', + 'nested', + 'focusableElements', + '_width', + '_height', + 'preventInteractionOnTransition', + 'userAgent', + 'url', + '_edgeSwipeDetection', + '_edgeSwipeThreshold', + '_freeMode', + '_autoHeight', + 'setWrapperSize', + 'virtualTranslate', + '_effect', + 'breakpoints', + '_spaceBetween', + '_slidesPerView', + 'maxBackfaceHiddenSlides', + '_grid', + '_slidesPerGroup', + '_slidesPerGroupSkip', + '_centeredSlides', + '_centeredSlidesBounds', + '_slidesOffsetBefore', + '_slidesOffsetAfter', + 'normalizeSlideIndex', + '_centerInsufficientSlides', + '_watchOverflow', + 'roundLengths', + 'touchRatio', + 'touchAngle', + 'simulateTouch', + '_shortSwipes', + '_longSwipes', + 'longSwipesRatio', + 'longSwipesMs', + '_followFinger', + 'allowTouchMove', + '_threshold', + 'touchMoveStopPropagation', + 'touchStartPreventDefault', + 'touchStartForcePreventDefault', + 'touchReleaseOnEdges', + 'uniqueNavElements', + '_resistance', + '_resistanceRatio', + '_watchSlidesProgress', + '_grabCursor', + 'preventClicks', + 'preventClicksPropagation', + '_slideToClickedSlide', + '_preloadImages', + 'updateOnImagesReady', + '_loop', + '_loopAdditionalSlides', + '_loopedSlides', + '_loopFillGroupWithBlank', + 'loopPreventsSlide', + '_rewind', + '_allowSlidePrev', + '_allowSlideNext', + '_swipeHandler', + '_noSwiping', + 'noSwipingClass', + 'noSwipingSelector', + 'passiveListeners', + 'containerModifierClass', + 'slideClass', + 'slideBlankClass', + 'slideActiveClass', + 'slideDuplicateActiveClass', + 'slideVisibleClass', + 'slideDuplicateClass', + 'slideNextClass', + 'slideDuplicateNextClass', + 'slidePrevClass', + 'slideDuplicatePrevClass', + 'wrapperClass', + 'runCallbacksOnInit', + 'observer', + 'observeParents', + 'observeSlideChildren', + // modules + 'a11y', + 'autoplay', + '_controller', + 'coverflowEffect', + 'cubeEffect', + 'fadeEffect', + 'flipEffect', + 'creativeEffect', + 'cardsEffect', + 'hashNavigation', + 'history', + 'keyboard', + 'lazy', + 'mousewheel', + '_navigation', + '_pagination', + 'parallax', + '_scrollbar', + '_thumbs', + 'virtual', + 'zoom', + 'on', +]; + +function isObject(o) { + return (typeof o === 'object' && + o !== null && + o.constructor && + Object.prototype.toString.call(o).slice(8, -1) === 'Object'); +} +function isEnabled(val) { + return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true; +} +function isShowEl(val, obj, el) { + return ((coerceBooleanProperty(val) === true && obj && !obj.el) || + !(typeof obj !== 'boolean' && + obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && + (typeof obj.el === 'string' || typeof obj.el === 'object'))); +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src) + .filter((key) => noExtend.indexOf(key) < 0) + .forEach((key) => { + if (typeof target[key] === 'undefined') { + target[key] = src[key]; + return; + } + if (target[key] && !src[key]) { + return; + } + if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) + target[key] = src[key]; + else + extend(target[key], src[key]); + } + else { + target[key] = src[key]; + } + }); +} +function coerceBooleanProperty(value) { + return value != null && `${value}` !== 'false'; +} +const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; +function setProperty(val, obj = {}) { + if (isObject(val)) { + return val; + } + if (coerceBooleanProperty(val) === true) { + return obj; + } + return false; +} + +// @ts-ignore +const allowedParams = paramsList.map((key) => key.replace(/_/, '')); +function getParams(obj = {}) { + const params = { + on: {}, + }; + // const events = {}; + const passedParams = {}; + extend(params, Swiper.defaults); + extend(params, Swiper.extendedDefaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map((key) => key.replace(/_/, '')); + Object.keys(obj).forEach((key) => { + const _key = key.replace(/^_/, ''); + if (allowedParams.indexOf(_key) >= 0) { + if (isObject(obj[key])) { + params[_key] = {}; + passedParams[_key] = {}; + extend(params[_key], obj[key]); + extend(passedParams[_key], obj[key]); + } + else { + params[_key] = obj[key]; + passedParams[_key] = obj[key]; + } + } + // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + // } + else { + rest[_key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach((key) => { + if (params[key] === true) + params[key] = {}; + if (params[key] === false) + delete params[key]; + }); + return { params, passedParams, rest }; +} + +class SwiperSlideDirective { + constructor(template) { + this.template = template; + this.class = ''; + this.autoplayDelay = null; + this.slideData = { + isActive: false, + isPrev: false, + isNext: false, + isVisible: false, + isDuplicate: false, + }; + } + set ngClass(val) { + this.class = [this.class || '', val].join(' '); + } + set zoom(val) { + this._zoom = coerceBooleanProperty(val); + } + get zoom() { + return this._zoom; + } + get classNames() { + return this._classNames; + } + set classNames(val) { + if (this._classNames === val) { + return; + } + this._classNames = val; + this.slideData = { + isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), + isVisible: this._hasClass(['swiper-slide-visible']), + isDuplicate: this._hasClass(['swiper-slide-duplicate']), + isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), + isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), + }; + } + _hasClass(classNames) { + return classNames.some((className) => this._classNames.indexOf(className) >= 0); + } +} +SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", ngClass: "ngClass", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, decorators: [{ + type: Directive, + args: [{ + selector: 'ng-template[swiperSlide]', + }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ + type: Input + }], class: [{ + type: Input + }], ngClass: [{ + type: Input + }], autoplayDelay: [{ + type: Input, + args: ['data-swiper-autoplay'] + }], zoom: [{ + type: Input + }] } }); + +class SwiperComponent { + constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { + this._ngZone = _ngZone; + this.elementRef = elementRef; + this._changeDetectorRef = _changeDetectorRef; + this._platformId = _platformId; + this.slideClass = 'swiper-slide'; + this.wrapperClass = 'swiper-wrapper'; + this.showNavigation = true; + this.showPagination = true; + this.showScrollbar = true; + this.s__beforeBreakpoint = new EventEmitter(); + this.s__containerClasses = new EventEmitter(); + this.s__slideClass = new EventEmitter(); + this.s__swiper = new EventEmitter(); + this.s_activeIndexChange = new EventEmitter(); + this.s_afterInit = new EventEmitter(); + this.s_autoplay = new EventEmitter(); + this.s_autoplayStart = new EventEmitter(); + this.s_autoplayStop = new EventEmitter(); + this.s_autoplayPause = new EventEmitter(); + this.s_autoplayResume = new EventEmitter(); + this.s_beforeDestroy = new EventEmitter(); + this.s_beforeInit = new EventEmitter(); + this.s_beforeLoopFix = new EventEmitter(); + this.s_beforeResize = new EventEmitter(); + this.s_beforeSlideChangeStart = new EventEmitter(); + this.s_beforeTransitionStart = new EventEmitter(); + this.s_breakpoint = new EventEmitter(); + this.s_changeDirection = new EventEmitter(); + this.s_click = new EventEmitter(); + this.s_doubleTap = new EventEmitter(); + this.s_doubleClick = new EventEmitter(); + this.s_destroy = new EventEmitter(); + this.s_fromEdge = new EventEmitter(); + this.s_hashChange = new EventEmitter(); + this.s_hashSet = new EventEmitter(); + this.s_imagesReady = new EventEmitter(); + this.s_init = new EventEmitter(); + this.s_keyPress = new EventEmitter(); + this.s_lazyImageLoad = new EventEmitter(); + this.s_lazyImageReady = new EventEmitter(); + this.s_loopFix = new EventEmitter(); + this.s_momentumBounce = new EventEmitter(); + this.s_navigationHide = new EventEmitter(); + this.s_navigationShow = new EventEmitter(); + this.s_navigationPrev = new EventEmitter(); + this.s_navigationNext = new EventEmitter(); + this.s_observerUpdate = new EventEmitter(); + this.s_orientationchange = new EventEmitter(); + this.s_paginationHide = new EventEmitter(); + this.s_paginationRender = new EventEmitter(); + this.s_paginationShow = new EventEmitter(); + this.s_paginationUpdate = new EventEmitter(); + this.s_progress = new EventEmitter(); + this.s_reachBeginning = new EventEmitter(); + this.s_reachEnd = new EventEmitter(); + this.s_realIndexChange = new EventEmitter(); + this.s_resize = new EventEmitter(); + this.s_scroll = new EventEmitter(); + this.s_scrollbarDragEnd = new EventEmitter(); + this.s_scrollbarDragMove = new EventEmitter(); + this.s_scrollbarDragStart = new EventEmitter(); + this.s_setTransition = new EventEmitter(); + this.s_setTranslate = new EventEmitter(); + this.s_slideChange = new EventEmitter(); + this.s_slideChangeTransitionEnd = new EventEmitter(); + this.s_slideChangeTransitionStart = new EventEmitter(); + this.s_slideNextTransitionEnd = new EventEmitter(); + this.s_slideNextTransitionStart = new EventEmitter(); + this.s_slidePrevTransitionEnd = new EventEmitter(); + this.s_slidePrevTransitionStart = new EventEmitter(); + this.s_slideResetTransitionStart = new EventEmitter(); + this.s_slideResetTransitionEnd = new EventEmitter(); + this.s_sliderMove = new EventEmitter(); + this.s_sliderFirstMove = new EventEmitter(); + this.s_slidesLengthChange = new EventEmitter(); + this.s_slidesGridLengthChange = new EventEmitter(); + this.s_snapGridLengthChange = new EventEmitter(); + this.s_snapIndexChange = new EventEmitter(); + this.s_tap = new EventEmitter(); + this.s_toEdge = new EventEmitter(); + this.s_touchEnd = new EventEmitter(); + this.s_touchMove = new EventEmitter(); + this.s_touchMoveOpposite = new EventEmitter(); + this.s_touchStart = new EventEmitter(); + this.s_transitionEnd = new EventEmitter(); + this.s_transitionStart = new EventEmitter(); + this.s_update = new EventEmitter(); + this.s_zoomChange = new EventEmitter(); + this.s_swiper = new EventEmitter(); + this.s_lock = new EventEmitter(); + this.s_unlock = new EventEmitter(); + this._activeSlides = new Subject(); + this.containerClasses = 'swiper'; + this.slidesChanges = (val) => { + this.slides = val.map((slide, index) => { + slide.slideIndex = index; + slide.classNames = this.slideClass || ''; + return slide; + }); + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + if (!this.virtual) { + if (this.loopedSlides) { + this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); + this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); + } + } + else if (this.swiperRef && this.swiperRef.virtual) { + this._ngZone.runOutsideAngular(() => { + this.swiperRef.virtual.slides = this.slides; + this.swiperRef.virtual.update(true); + }); + } + this._changeDetectorRef.detectChanges(); + }; + this.style = null; + this.updateVirtualSlides = (virtualData) => { + // TODO: type virtualData + if (!this.swiperRef || + (this.currentVirtualData && + this.currentVirtualData.from === virtualData.from && + this.currentVirtualData.to === virtualData.to && + this.currentVirtualData.offset === virtualData.offset)) { + return; + } + this.style = this.swiperRef.isHorizontal() + ? { + [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, + } + : { + top: `${virtualData.offset}px`, + }; + this.currentVirtualData = virtualData; + this._activeSlides.next(virtualData.slides); + this._ngZone.run(() => { + this._changeDetectorRef.detectChanges(); + }); + this._ngZone.runOutsideAngular(() => { + this.swiperRef.updateSlides(); + this.swiperRef.updateProgress(); + this.swiperRef.updateSlidesClasses(); + if (isEnabled(this.swiperRef.params.lazy)) { + this.swiperRef.lazy.load(); + } + this.swiperRef.virtual.update(true); + }); + return; + }; + } + set navigation(val) { + var _a, _b, _c; + const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl + : null; + const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl + : null; + this._navigation = setProperty(val, { + nextEl: currentNext || null, + prevEl: currentPrev || null, + }); + this.showNavigation = !(coerceBooleanProperty(val) !== true || + (this._navigation && + typeof this._navigation !== 'boolean' && + this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && + (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && + (typeof this._navigation.nextEl === 'string' || + typeof this._navigation.prevEl === 'string' || + typeof this._navigation.nextEl === 'object' || + typeof this._navigation.prevEl === 'object'))); + } + get navigation() { + return this._navigation; + } + set pagination(val) { + var _a; + const current = typeof this._pagination !== 'boolean' && this._pagination !== '' + ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el + : null; + this._pagination = setProperty(val, { + el: current || null, + }); + this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); + } + get pagination() { + return this._pagination; + } + set scrollbar(val) { + var _a; + const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; + this._scrollbar = setProperty(val, { + el: current || null, + }); + this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); + } + get scrollbar() { + return this._scrollbar; + } + set virtual(val) { + this._virtual = setProperty(val); + } + get virtual() { + return this._virtual; + } + set config(val) { + this.updateSwiper(val); + const { params } = getParams(val); + Object.assign(this, params); + } + set prevElRef(el) { + this._prevElRef = el; + this._setElement(el, this.navigation, 'navigation', 'prevEl'); + } + set nextElRef(el) { + this._nextElRef = el; + this._setElement(el, this.navigation, 'navigation', 'nextEl'); + } + set scrollbarElRef(el) { + this._scrollbarElRef = el; + this._setElement(el, this.scrollbar, 'scrollbar'); + } + set paginationElRef(el) { + this._paginationElRef = el; + this._setElement(el, this.pagination, 'pagination'); + } + get activeSlides() { + if (this.virtual) { + return this._activeSlides; + } + return of(this.slides); + } + get zoomContainerClass() { + return this.zoom && typeof this.zoom !== 'boolean' + ? this.zoom.containerClass + : 'swiper-zoom-container'; + } + _setElement(el, ref, update, key = 'el') { + if (!ref || !el) + return; + if (el.nativeElement) { + if (ref[key] === el.nativeElement) { + return; + } + ref[key] = el.nativeElement; + } + const updateObj = {}; + updateObj[update] = true; + this.updateInitSwiper(updateObj); + } + ngOnInit() { + const { params } = getParams(this); + Object.assign(this, params); + } + ngAfterViewInit() { + this.childrenSlidesInit(); + this.initSwiper(); + this._changeDetectorRef.detectChanges(); + setTimeout(() => { + this.s_swiper.emit(this.swiperRef); + }); + } + childrenSlidesInit() { + this.slidesChanges(this.slidesEl); + this.slidesEl.changes.subscribe(this.slidesChanges); + } + get isSwiperActive() { + return this.swiperRef && !this.swiperRef.destroyed; + } + initSwiper() { + const { params: swiperParams, passedParams } = getParams(this); + Object.assign(this, swiperParams); + this._ngZone.runOutsideAngular(() => { + swiperParams.init = false; + if (!swiperParams.virtual) { + swiperParams.observer = true; + } + swiperParams.onAny = (eventName, ...args) => { + const emitter = this[('s_' + eventName)]; + if (emitter) { + emitter.emit([...args]); + } + }; + const _slideClasses = (_, updated) => { + updated.forEach(({ slideEl, classNames }, index) => { + const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); + const slideIndex = dataIndex ? parseInt(dataIndex) : index; + if (this.virtual) { + const virtualSlide = this.slides.find((item) => { + return item.virtualIndex && item.virtualIndex === slideIndex; + }); + if (virtualSlide) { + virtualSlide.classNames = classNames; + return; + } + } + if (this.slides[slideIndex]) { + this.slides[slideIndex].classNames = classNames; + } + }); + this._changeDetectorRef.detectChanges(); + }; + const _containerClasses = (_, classes) => { + setTimeout(() => { + this.containerClasses = classes; + }); + }; + Object.assign(swiperParams.on, { + _containerClasses, + _slideClasses, + }); + const swiperRef = new Swiper(swiperParams); + swiperRef.loopCreate = () => { }; + swiperRef.loopDestroy = () => { }; + if (swiperParams.loop) { + swiperRef.loopedSlides = this.loopedSlides; + } + const isVirtualEnabled = isEnabled(swiperRef.params.virtual); + if (swiperRef.virtual && isVirtualEnabled) { + swiperRef.virtual.slides = this.slides; + const extendWith = { + cache: false, + slides: this.slides, + renderExternal: this.updateVirtualSlides, + renderExternalUpdate: false, + }; + extend(swiperRef.params.virtual, extendWith); + extend(swiperRef.originalParams.virtual, extendWith); + } + if (isPlatformBrowser(this._platformId)) { + this.swiperRef = swiperRef.init(this.elementRef.nativeElement); + const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual); + if (this.swiperRef.virtual && isVirtualEnabled) { + this.swiperRef.virtual.update(true); + } + this._changeDetectorRef.detectChanges(); + } + }); + } + ngOnChanges(changedParams) { + this.updateSwiper(changedParams); + this._changeDetectorRef.detectChanges(); + } + updateInitSwiper(changedParams) { + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + this._ngZone.runOutsideAngular(() => { + const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; + if (changedParams.pagination) { + if (this.pagination && + typeof this.pagination !== 'boolean' && + this.pagination.el && + pagination && + !pagination.el) { + this.updateParameter('pagination', this.pagination); + pagination.init(); + pagination.render(); + pagination.update(); + } + else { + pagination.destroy(); + pagination.el = null; + } + } + if (changedParams.scrollbar) { + if (this.scrollbar && + typeof this.scrollbar !== 'boolean' && + this.scrollbar.el && + scrollbar && + !scrollbar.el) { + this.updateParameter('scrollbar', this.scrollbar); + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + else { + scrollbar.destroy(); + scrollbar.el = null; + } + } + if (changedParams.navigation) { + if (this.navigation && + typeof this.navigation !== 'boolean' && + this.navigation.prevEl && + this.navigation.nextEl && + navigation && + !navigation.prevEl && + !navigation.nextEl) { + this.updateParameter('navigation', this.navigation); + navigation.init(); + navigation.update(); + } + else if (navigation.prevEl && navigation.nextEl) { + navigation.destroy(); + navigation.nextEl = null; + navigation.prevEl = null; + } + } + if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { + this.updateParameter('thumbs', this.thumbs); + const initialized = thumbs.init(); + if (initialized) + thumbs.update(true); + } + if (changedParams.controller && this.controller && this.controller.control) { + this.swiperRef.controller.control = this.controller.control; + } + this.swiperRef.update(); + }); + } + updateSwiper(changedParams) { + this._ngZone.runOutsideAngular(() => { + var _a, _b; + if (changedParams.config) { + return; + } + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + for (const key in changedParams) { + if (ignoreNgOnChanges.indexOf(key) >= 0) { + continue; + } + const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; + this.updateParameter(key, newValue); + } + if (changedParams.allowSlideNext) { + this.swiperRef.allowSlideNext = this.allowSlideNext; + } + if (changedParams.allowSlidePrev) { + this.swiperRef.allowSlidePrev = this.allowSlidePrev; + } + if (changedParams.direction) { + this.swiperRef.changeDirection(this.direction, false); + } + if (changedParams.breakpoints) { + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + this.swiperRef.currentBreakpoint = null; + this.swiperRef.setBreakpoint(); + } + if (changedParams.thumbs || changedParams.controller) { + this.updateInitSwiper(changedParams); + } + this.swiperRef.update(); + }); + } + calcLoopedSlides() { + if (!this.loop) { + return false; + } + let slidesPerViewParams = this.slidesPerView; + if (this.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); + const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + if (slidesPerViewParams === 'auto') { + this.loopedSlides = this.slides.length; + return this.slides.length; + } + let loopedSlides = this.loopedSlides || slidesPerViewParams; + if (!loopedSlides) { + // ? + return false; + } + if (this.loopAdditionalSlides) { + loopedSlides += this.loopAdditionalSlides; + } + if (loopedSlides > this.slides.length) { + loopedSlides = this.slides.length; + } + this.loopedSlides = loopedSlides; + return true; + } + updateParameter(key, value) { + if (!(this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + const _key = key.replace(/^_/, ''); + const isCurrentParamObj = isObject(this.swiperRef.params[_key]); + if (_key === 'enabled') { + if (value === true) { + this.swiperRef.enable(); + } + else if (value === false) { + this.swiperRef.disable(); + } + return; + } + if (isCurrentParamObj && isObject(value)) { + extend(this.swiperRef.params[_key], value); + } + else { + this.swiperRef.params[_key] = value; + } + } + ngOnDestroy() { + this._ngZone.runOutsideAngular(() => { + var _a; + (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); + }); + } +} +SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); +SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", on: "on", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", maxBackfaceHiddenSlides: "maxBackfaceHiddenSlides", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", rewind: "rewind", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_autoplayPause: "autoplayPause", s_autoplayResume: "autoplayResume", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_navigationPrev: "navigationPrev", s_navigationNext: "navigationNext", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", s_lock: "lock", s_unlock: "unlock" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["swiper{display:block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, decorators: [{ + type: Component, + args: [{ selector: 'swiper, [swiper]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [ + ` + swiper { + display: block; + } + `, + ], template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n" }] + }], ctorParameters: function () { + return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ + type: Inject, + args: [PLATFORM_ID] + }] }]; + }, propDecorators: { enabled: [{ + type: Input + }], on: [{ + type: Input + }], direction: [{ + type: Input + }], touchEventsTarget: [{ + type: Input + }], initialSlide: [{ + type: Input + }], speed: [{ + type: Input + }], cssMode: [{ + type: Input + }], updateOnWindowResize: [{ + type: Input + }], resizeObserver: [{ + type: Input + }], nested: [{ + type: Input + }], focusableElements: [{ + type: Input + }], width: [{ + type: Input + }], height: [{ + type: Input + }], preventInteractionOnTransition: [{ + type: Input + }], userAgent: [{ + type: Input + }], url: [{ + type: Input + }], edgeSwipeDetection: [{ + type: Input + }], edgeSwipeThreshold: [{ + type: Input + }], freeMode: [{ + type: Input + }], autoHeight: [{ + type: Input + }], setWrapperSize: [{ + type: Input + }], virtualTranslate: [{ + type: Input + }], effect: [{ + type: Input + }], breakpoints: [{ + type: Input + }], spaceBetween: [{ + type: Input + }], slidesPerView: [{ + type: Input + }], maxBackfaceHiddenSlides: [{ + type: Input + }], grid: [{ + type: Input + }], slidesPerGroup: [{ + type: Input + }], slidesPerGroupSkip: [{ + type: Input + }], centeredSlides: [{ + type: Input + }], centeredSlidesBounds: [{ + type: Input + }], slidesOffsetBefore: [{ + type: Input + }], slidesOffsetAfter: [{ + type: Input + }], normalizeSlideIndex: [{ + type: Input + }], centerInsufficientSlides: [{ + type: Input + }], watchOverflow: [{ + type: Input + }], roundLengths: [{ + type: Input + }], touchRatio: [{ + type: Input + }], touchAngle: [{ + type: Input + }], simulateTouch: [{ + type: Input + }], shortSwipes: [{ + type: Input + }], longSwipes: [{ + type: Input + }], longSwipesRatio: [{ + type: Input + }], longSwipesMs: [{ + type: Input + }], followFinger: [{ + type: Input + }], allowTouchMove: [{ + type: Input + }], threshold: [{ + type: Input + }], touchMoveStopPropagation: [{ + type: Input + }], touchStartPreventDefault: [{ + type: Input + }], touchStartForcePreventDefault: [{ + type: Input + }], touchReleaseOnEdges: [{ + type: Input + }], uniqueNavElements: [{ + type: Input + }], resistance: [{ + type: Input + }], resistanceRatio: [{ + type: Input + }], watchSlidesProgress: [{ + type: Input + }], grabCursor: [{ + type: Input + }], preventClicks: [{ + type: Input + }], preventClicksPropagation: [{ + type: Input + }], slideToClickedSlide: [{ + type: Input + }], preloadImages: [{ + type: Input + }], updateOnImagesReady: [{ + type: Input + }], loop: [{ + type: Input + }], loopAdditionalSlides: [{ + type: Input + }], loopedSlides: [{ + type: Input + }], loopFillGroupWithBlank: [{ + type: Input + }], loopPreventsSlide: [{ + type: Input + }], rewind: [{ + type: Input + }], allowSlidePrev: [{ + type: Input + }], allowSlideNext: [{ + type: Input + }], swipeHandler: [{ + type: Input + }], noSwiping: [{ + type: Input + }], noSwipingClass: [{ + type: Input + }], noSwipingSelector: [{ + type: Input + }], passiveListeners: [{ + type: Input + }], containerModifierClass: [{ + type: Input + }], slideClass: [{ + type: Input + }], slideBlankClass: [{ + type: Input + }], slideActiveClass: [{ + type: Input + }], slideDuplicateActiveClass: [{ + type: Input + }], slideVisibleClass: [{ + type: Input + }], slideDuplicateClass: [{ + type: Input + }], slideNextClass: [{ + type: Input + }], slideDuplicateNextClass: [{ + type: Input + }], slidePrevClass: [{ + type: Input + }], slideDuplicatePrevClass: [{ + type: Input + }], wrapperClass: [{ + type: Input + }], runCallbacksOnInit: [{ + type: Input + }], observeParents: [{ + type: Input + }], observeSlideChildren: [{ + type: Input + }], a11y: [{ + type: Input + }], autoplay: [{ + type: Input + }], controller: [{ + type: Input + }], coverflowEffect: [{ + type: Input + }], cubeEffect: [{ + type: Input + }], fadeEffect: [{ + type: Input + }], flipEffect: [{ + type: Input + }], creativeEffect: [{ + type: Input + }], cardsEffect: [{ + type: Input + }], hashNavigation: [{ + type: Input + }], history: [{ + type: Input + }], keyboard: [{ + type: Input + }], lazy: [{ + type: Input + }], mousewheel: [{ + type: Input + }], parallax: [{ + type: Input + }], thumbs: [{ + type: Input + }], zoom: [{ + type: Input + }], class: [{ + type: Input + }], id: [{ + type: Input + }], navigation: [{ + type: Input + }], pagination: [{ + type: Input + }], scrollbar: [{ + type: Input + }], virtual: [{ + type: Input + }], config: [{ + type: Input + }], s__beforeBreakpoint: [{ + type: Output, + args: ['_beforeBreakpoint'] + }], s__containerClasses: [{ + type: Output, + args: ['_containerClasses'] + }], s__slideClass: [{ + type: Output, + args: ['_slideClass'] + }], s__swiper: [{ + type: Output, + args: ['_swiper'] + }], s_activeIndexChange: [{ + type: Output, + args: ['activeIndexChange'] + }], s_afterInit: [{ + type: Output, + args: ['afterInit'] + }], s_autoplay: [{ + type: Output, + args: ['autoplay'] + }], s_autoplayStart: [{ + type: Output, + args: ['autoplayStart'] + }], s_autoplayStop: [{ + type: Output, + args: ['autoplayStop'] + }], s_autoplayPause: [{ + type: Output, + args: ['autoplayPause'] + }], s_autoplayResume: [{ + type: Output, + args: ['autoplayResume'] + }], s_beforeDestroy: [{ + type: Output, + args: ['beforeDestroy'] + }], s_beforeInit: [{ + type: Output, + args: ['beforeInit'] + }], s_beforeLoopFix: [{ + type: Output, + args: ['beforeLoopFix'] + }], s_beforeResize: [{ + type: Output, + args: ['beforeResize'] + }], s_beforeSlideChangeStart: [{ + type: Output, + args: ['beforeSlideChangeStart'] + }], s_beforeTransitionStart: [{ + type: Output, + args: ['beforeTransitionStart'] + }], s_breakpoint: [{ + type: Output, + args: ['breakpoint'] + }], s_changeDirection: [{ + type: Output, + args: ['changeDirection'] + }], s_click: [{ + type: Output, + args: ['click'] + }], s_doubleTap: [{ + type: Output, + args: ['doubleTap'] + }], s_doubleClick: [{ + type: Output, + args: ['doubleClick'] + }], s_destroy: [{ + type: Output, + args: ['destroy'] + }], s_fromEdge: [{ + type: Output, + args: ['fromEdge'] + }], s_hashChange: [{ + type: Output, + args: ['hashChange'] + }], s_hashSet: [{ + type: Output, + args: ['hashSet'] + }], s_imagesReady: [{ + type: Output, + args: ['imagesReady'] + }], s_init: [{ + type: Output, + args: ['init'] + }], s_keyPress: [{ + type: Output, + args: ['keyPress'] + }], s_lazyImageLoad: [{ + type: Output, + args: ['lazyImageLoad'] + }], s_lazyImageReady: [{ + type: Output, + args: ['lazyImageReady'] + }], s_loopFix: [{ + type: Output, + args: ['loopFix'] + }], s_momentumBounce: [{ + type: Output, + args: ['momentumBounce'] + }], s_navigationHide: [{ + type: Output, + args: ['navigationHide'] + }], s_navigationShow: [{ + type: Output, + args: ['navigationShow'] + }], s_navigationPrev: [{ + type: Output, + args: ['navigationPrev'] + }], s_navigationNext: [{ + type: Output, + args: ['navigationNext'] + }], s_observerUpdate: [{ + type: Output, + args: ['observerUpdate'] + }], s_orientationchange: [{ + type: Output, + args: ['orientationchange'] + }], s_paginationHide: [{ + type: Output, + args: ['paginationHide'] + }], s_paginationRender: [{ + type: Output, + args: ['paginationRender'] + }], s_paginationShow: [{ + type: Output, + args: ['paginationShow'] + }], s_paginationUpdate: [{ + type: Output, + args: ['paginationUpdate'] + }], s_progress: [{ + type: Output, + args: ['progress'] + }], s_reachBeginning: [{ + type: Output, + args: ['reachBeginning'] + }], s_reachEnd: [{ + type: Output, + args: ['reachEnd'] + }], s_realIndexChange: [{ + type: Output, + args: ['realIndexChange'] + }], s_resize: [{ + type: Output, + args: ['resize'] + }], s_scroll: [{ + type: Output, + args: ['scroll'] + }], s_scrollbarDragEnd: [{ + type: Output, + args: ['scrollbarDragEnd'] + }], s_scrollbarDragMove: [{ + type: Output, + args: ['scrollbarDragMove'] + }], s_scrollbarDragStart: [{ + type: Output, + args: ['scrollbarDragStart'] + }], s_setTransition: [{ + type: Output, + args: ['setTransition'] + }], s_setTranslate: [{ + type: Output, + args: ['setTranslate'] + }], s_slideChange: [{ + type: Output, + args: ['slideChange'] + }], s_slideChangeTransitionEnd: [{ + type: Output, + args: ['slideChangeTransitionEnd'] + }], s_slideChangeTransitionStart: [{ + type: Output, + args: ['slideChangeTransitionStart'] + }], s_slideNextTransitionEnd: [{ + type: Output, + args: ['slideNextTransitionEnd'] + }], s_slideNextTransitionStart: [{ + type: Output, + args: ['slideNextTransitionStart'] + }], s_slidePrevTransitionEnd: [{ + type: Output, + args: ['slidePrevTransitionEnd'] + }], s_slidePrevTransitionStart: [{ + type: Output, + args: ['slidePrevTransitionStart'] + }], s_slideResetTransitionStart: [{ + type: Output, + args: ['slideResetTransitionStart'] + }], s_slideResetTransitionEnd: [{ + type: Output, + args: ['slideResetTransitionEnd'] + }], s_sliderMove: [{ + type: Output, + args: ['sliderMove'] + }], s_sliderFirstMove: [{ + type: Output, + args: ['sliderFirstMove'] + }], s_slidesLengthChange: [{ + type: Output, + args: ['slidesLengthChange'] + }], s_slidesGridLengthChange: [{ + type: Output, + args: ['slidesGridLengthChange'] + }], s_snapGridLengthChange: [{ + type: Output, + args: ['snapGridLengthChange'] + }], s_snapIndexChange: [{ + type: Output, + args: ['snapIndexChange'] + }], s_tap: [{ + type: Output, + args: ['tap'] + }], s_toEdge: [{ + type: Output, + args: ['toEdge'] + }], s_touchEnd: [{ + type: Output, + args: ['touchEnd'] + }], s_touchMove: [{ + type: Output, + args: ['touchMove'] + }], s_touchMoveOpposite: [{ + type: Output, + args: ['touchMoveOpposite'] + }], s_touchStart: [{ + type: Output, + args: ['touchStart'] + }], s_transitionEnd: [{ + type: Output, + args: ['transitionEnd'] + }], s_transitionStart: [{ + type: Output, + args: ['transitionStart'] + }], s_update: [{ + type: Output, + args: ['update'] + }], s_zoomChange: [{ + type: Output, + args: ['zoomChange'] + }], s_swiper: [{ + type: Output, + args: ['swiper'] + }], s_lock: [{ + type: Output, + args: ['lock'] + }], s_unlock: [{ + type: Output, + args: ['unlock'] + }], prevElRef: [{ + type: ViewChild, + args: ['prevElRef', { static: false }] + }], nextElRef: [{ + type: ViewChild, + args: ['nextElRef', { static: false }] + }], scrollbarElRef: [{ + type: ViewChild, + args: ['scrollbarElRef', { static: false }] + }], paginationElRef: [{ + type: ViewChild, + args: ['paginationElRef', { static: false }] + }], slidesEl: [{ + type: ContentChildren, + args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] + }], containerClasses: [{ + type: HostBinding, + args: ['class'] + }] } }); + +class SwiperModule { +} +SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); +SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [SwiperComponent, SwiperSlideDirective], + exports: [SwiperComponent, SwiperSlideDirective], + imports: [CommonModule], + }] + }] }); + +/* + * Public API Surface of angular + */ + +/** + * Generated bundle index. Do not edit. + */ + +export { SwiperComponent, SwiperModule, SwiperSlideDirective }; +//# sourceMappingURL=swiper_angular.mjs.map diff --git a/swiper/angular/fesm2015/swiper_angular.mjs.map b/swiper/angular/fesm2015/swiper_angular.mjs.map new file mode 100644 index 0000000..6a304f5 --- /dev/null +++ b/swiper/angular/fesm2015/swiper_angular.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper_angular.mjs","sources":["../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n 'maxBackfaceHiddenSlides',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_rewind',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n 'on',\n];\n","export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isEnabled(val: boolean | { enabled?: boolean }) {\n return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","// @ts-ignore\nimport Swiper from 'swiper';\nimport { paramsList } from './params-list';\nimport { extend, isObject } from './utils';\ntype KeyValueType = { [x: string]: any };\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n // const events = {};\n const passedParams: KeyValueType = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n\n const rest: KeyValueType = {};\n const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[key]);\n extend(passedParams[_key], obj[key]);\n } else {\n params[_key] = obj[key];\n passedParams[_key] = obj[key];\n }\n }\n // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n // }\n else {\n rest[_key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach((key) => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input()\n set ngClass(val: string) {\n this.class = [this.class || '', val].join(' ');\n }\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport { EventsParams } from './swiper-events';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n isEnabled,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() on: SwiperOptions['on'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() maxBackfaceHiddenSlides: SwiperOptions['maxBackfaceHiddenSlides'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() rewind: SwiperOptions['rewind'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n @Output('_beforeBreakpoint') s__beforeBreakpoint = new EventEmitter<\n EventsParams['_beforeBreakpoint']\n >();\n\n @Output('_containerClasses') s__containerClasses = new EventEmitter<\n EventsParams['_containerClasses']\n >();\n\n @Output('_slideClass') s__slideClass = new EventEmitter();\n\n @Output('_swiper') s__swiper = new EventEmitter();\n\n @Output('activeIndexChange') s_activeIndexChange = new EventEmitter<\n EventsParams['activeIndexChange']\n >();\n\n @Output('afterInit') s_afterInit = new EventEmitter();\n\n @Output('autoplay') s_autoplay = new EventEmitter();\n\n @Output('autoplayStart') s_autoplayStart = new EventEmitter();\n\n @Output('autoplayStop') s_autoplayStop = new EventEmitter();\n\n @Output('autoplayPause') s_autoplayPause = new EventEmitter();\n\n @Output('autoplayResume') s_autoplayResume = new EventEmitter();\n\n @Output('beforeDestroy') s_beforeDestroy = new EventEmitter();\n\n @Output('beforeInit') s_beforeInit = new EventEmitter();\n\n @Output('beforeLoopFix') s_beforeLoopFix = new EventEmitter();\n\n @Output('beforeResize') s_beforeResize = new EventEmitter();\n\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart = new EventEmitter<\n EventsParams['beforeSlideChangeStart']\n >();\n\n @Output('beforeTransitionStart') s_beforeTransitionStart = new EventEmitter<\n EventsParams['beforeTransitionStart']\n >();\n\n @Output('breakpoint') s_breakpoint = new EventEmitter();\n\n @Output('changeDirection') s_changeDirection = new EventEmitter<\n EventsParams['changeDirection']\n >();\n\n @Output('click') s_click = new EventEmitter();\n\n @Output('doubleTap') s_doubleTap = new EventEmitter();\n\n @Output('doubleClick') s_doubleClick = new EventEmitter();\n\n @Output('destroy') s_destroy = new EventEmitter();\n\n @Output('fromEdge') s_fromEdge = new EventEmitter();\n\n @Output('hashChange') s_hashChange = new EventEmitter();\n\n @Output('hashSet') s_hashSet = new EventEmitter();\n\n @Output('imagesReady') s_imagesReady = new EventEmitter();\n\n @Output('init') s_init = new EventEmitter();\n\n @Output('keyPress') s_keyPress = new EventEmitter();\n\n @Output('lazyImageLoad') s_lazyImageLoad = new EventEmitter();\n\n @Output('lazyImageReady') s_lazyImageReady = new EventEmitter();\n\n @Output('loopFix') s_loopFix = new EventEmitter();\n\n @Output('momentumBounce') s_momentumBounce = new EventEmitter();\n\n @Output('navigationHide') s_navigationHide = new EventEmitter();\n\n @Output('navigationShow') s_navigationShow = new EventEmitter();\n\n @Output('navigationPrev') s_navigationPrev = new EventEmitter();\n\n @Output('navigationNext') s_navigationNext = new EventEmitter();\n\n @Output('observerUpdate') s_observerUpdate = new EventEmitter();\n\n @Output('orientationchange') s_orientationchange = new EventEmitter<\n EventsParams['orientationchange']\n >();\n\n @Output('paginationHide') s_paginationHide = new EventEmitter();\n\n @Output('paginationRender') s_paginationRender = new EventEmitter<\n EventsParams['paginationRender']\n >();\n\n @Output('paginationShow') s_paginationShow = new EventEmitter();\n\n @Output('paginationUpdate') s_paginationUpdate = new EventEmitter<\n EventsParams['paginationUpdate']\n >();\n\n @Output('progress') s_progress = new EventEmitter();\n\n @Output('reachBeginning') s_reachBeginning = new EventEmitter();\n\n @Output('reachEnd') s_reachEnd = new EventEmitter();\n\n @Output('realIndexChange') s_realIndexChange = new EventEmitter<\n EventsParams['realIndexChange']\n >();\n\n @Output('resize') s_resize = new EventEmitter();\n\n @Output('scroll') s_scroll = new EventEmitter();\n\n @Output('scrollbarDragEnd') s_scrollbarDragEnd = new EventEmitter<\n EventsParams['scrollbarDragEnd']\n >();\n\n @Output('scrollbarDragMove') s_scrollbarDragMove = new EventEmitter<\n EventsParams['scrollbarDragMove']\n >();\n\n @Output('scrollbarDragStart') s_scrollbarDragStart = new EventEmitter<\n EventsParams['scrollbarDragStart']\n >();\n\n @Output('setTransition') s_setTransition = new EventEmitter();\n\n @Output('setTranslate') s_setTranslate = new EventEmitter();\n\n @Output('slideChange') s_slideChange = new EventEmitter();\n\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd = new EventEmitter<\n EventsParams['slideChangeTransitionEnd']\n >();\n\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart = new EventEmitter<\n EventsParams['slideChangeTransitionStart']\n >();\n\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd = new EventEmitter<\n EventsParams['slideNextTransitionEnd']\n >();\n\n @Output('slideNextTransitionStart') s_slideNextTransitionStart = new EventEmitter<\n EventsParams['slideNextTransitionStart']\n >();\n\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd = new EventEmitter<\n EventsParams['slidePrevTransitionEnd']\n >();\n\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart = new EventEmitter<\n EventsParams['slidePrevTransitionStart']\n >();\n\n @Output('slideResetTransitionStart') s_slideResetTransitionStart = new EventEmitter<\n EventsParams['slideResetTransitionStart']\n >();\n\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd = new EventEmitter<\n EventsParams['slideResetTransitionEnd']\n >();\n\n @Output('sliderMove') s_sliderMove = new EventEmitter();\n\n @Output('sliderFirstMove') s_sliderFirstMove = new EventEmitter<\n EventsParams['sliderFirstMove']\n >();\n\n @Output('slidesLengthChange') s_slidesLengthChange = new EventEmitter<\n EventsParams['slidesLengthChange']\n >();\n\n @Output('slidesGridLengthChange') s_slidesGridLengthChange = new EventEmitter<\n EventsParams['slidesGridLengthChange']\n >();\n\n @Output('snapGridLengthChange') s_snapGridLengthChange = new EventEmitter<\n EventsParams['snapGridLengthChange']\n >();\n\n @Output('snapIndexChange') s_snapIndexChange = new EventEmitter<\n EventsParams['snapIndexChange']\n >();\n\n @Output('tap') s_tap = new EventEmitter();\n\n @Output('toEdge') s_toEdge = new EventEmitter();\n\n @Output('touchEnd') s_touchEnd = new EventEmitter();\n\n @Output('touchMove') s_touchMove = new EventEmitter();\n\n @Output('touchMoveOpposite') s_touchMoveOpposite = new EventEmitter<\n EventsParams['touchMoveOpposite']\n >();\n\n @Output('touchStart') s_touchStart = new EventEmitter();\n\n @Output('transitionEnd') s_transitionEnd = new EventEmitter();\n\n @Output('transitionStart') s_transitionStart = new EventEmitter<\n EventsParams['transitionStart']\n >();\n\n @Output('update') s_update = new EventEmitter();\n\n @Output('zoomChange') s_zoomChange = new EventEmitter();\n\n @Output('swiper') s_swiper = new EventEmitter();\n\n @Output('lock') s_lock = new EventEmitter();\n\n @Output('unlock') s_unlock = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!ref || !el) return;\n if (el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit([...args]);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled = isEnabled(swiperRef.params.virtual);\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual);\n if (this.swiperRef.virtual && isVirtualEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (isEnabled(this.swiperRef.params.lazy)) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return false;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return false;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return true;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '') as keyof SwiperOptions;\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n (this.swiperRef.params[_key] as any) = value;\n }\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper-events';\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/swiper/angular/fesm2020/swiper_angular.mjs b/swiper/angular/fesm2020/swiper_angular.mjs new file mode 100644 index 0000000..588773a --- /dev/null +++ b/swiper/angular/fesm2020/swiper_angular.mjs @@ -0,0 +1,1320 @@ +import * as i0 from '@angular/core'; +import { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core'; +import * as i1 from '@angular/common'; +import { isPlatformBrowser, CommonModule } from '@angular/common'; +import Swiper from 'swiper'; +import { Subject, of } from 'rxjs'; + +/* underscore in name -> watch for changes */ +const paramsList = [ + 'init', + 'enabled', + '_direction', + 'touchEventsTarget', + 'initialSlide', + '_speed', + 'cssMode', + 'updateOnWindowResize', + 'resizeObserver', + 'nested', + 'focusableElements', + '_width', + '_height', + 'preventInteractionOnTransition', + 'userAgent', + 'url', + '_edgeSwipeDetection', + '_edgeSwipeThreshold', + '_freeMode', + '_autoHeight', + 'setWrapperSize', + 'virtualTranslate', + '_effect', + 'breakpoints', + '_spaceBetween', + '_slidesPerView', + 'maxBackfaceHiddenSlides', + '_grid', + '_slidesPerGroup', + '_slidesPerGroupSkip', + '_centeredSlides', + '_centeredSlidesBounds', + '_slidesOffsetBefore', + '_slidesOffsetAfter', + 'normalizeSlideIndex', + '_centerInsufficientSlides', + '_watchOverflow', + 'roundLengths', + 'touchRatio', + 'touchAngle', + 'simulateTouch', + '_shortSwipes', + '_longSwipes', + 'longSwipesRatio', + 'longSwipesMs', + '_followFinger', + 'allowTouchMove', + '_threshold', + 'touchMoveStopPropagation', + 'touchStartPreventDefault', + 'touchStartForcePreventDefault', + 'touchReleaseOnEdges', + 'uniqueNavElements', + '_resistance', + '_resistanceRatio', + '_watchSlidesProgress', + '_grabCursor', + 'preventClicks', + 'preventClicksPropagation', + '_slideToClickedSlide', + '_preloadImages', + 'updateOnImagesReady', + '_loop', + '_loopAdditionalSlides', + '_loopedSlides', + '_loopFillGroupWithBlank', + 'loopPreventsSlide', + '_rewind', + '_allowSlidePrev', + '_allowSlideNext', + '_swipeHandler', + '_noSwiping', + 'noSwipingClass', + 'noSwipingSelector', + 'passiveListeners', + 'containerModifierClass', + 'slideClass', + 'slideBlankClass', + 'slideActiveClass', + 'slideDuplicateActiveClass', + 'slideVisibleClass', + 'slideDuplicateClass', + 'slideNextClass', + 'slideDuplicateNextClass', + 'slidePrevClass', + 'slideDuplicatePrevClass', + 'wrapperClass', + 'runCallbacksOnInit', + 'observer', + 'observeParents', + 'observeSlideChildren', + // modules + 'a11y', + 'autoplay', + '_controller', + 'coverflowEffect', + 'cubeEffect', + 'fadeEffect', + 'flipEffect', + 'creativeEffect', + 'cardsEffect', + 'hashNavigation', + 'history', + 'keyboard', + 'lazy', + 'mousewheel', + '_navigation', + '_pagination', + 'parallax', + '_scrollbar', + '_thumbs', + 'virtual', + 'zoom', + 'on', +]; + +function isObject(o) { + return (typeof o === 'object' && + o !== null && + o.constructor && + Object.prototype.toString.call(o).slice(8, -1) === 'Object'); +} +function isEnabled(val) { + return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true; +} +function isShowEl(val, obj, el) { + return ((coerceBooleanProperty(val) === true && obj && !obj.el) || + !(typeof obj !== 'boolean' && + obj.el !== el?.nativeElement && + (typeof obj.el === 'string' || typeof obj.el === 'object'))); +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src) + .filter((key) => noExtend.indexOf(key) < 0) + .forEach((key) => { + if (typeof target[key] === 'undefined') { + target[key] = src[key]; + return; + } + if (target[key] && !src[key]) { + return; + } + if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) + target[key] = src[key]; + else + extend(target[key], src[key]); + } + else { + target[key] = src[key]; + } + }); +} +function coerceBooleanProperty(value) { + return value != null && `${value}` !== 'false'; +} +const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; +function setProperty(val, obj = {}) { + if (isObject(val)) { + return val; + } + if (coerceBooleanProperty(val) === true) { + return obj; + } + return false; +} + +// @ts-ignore +const allowedParams = paramsList.map((key) => key.replace(/_/, '')); +function getParams(obj = {}) { + const params = { + on: {}, + }; + // const events = {}; + const passedParams = {}; + extend(params, Swiper.defaults); + extend(params, Swiper.extendedDefaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map((key) => key.replace(/_/, '')); + Object.keys(obj).forEach((key) => { + const _key = key.replace(/^_/, ''); + if (allowedParams.indexOf(_key) >= 0) { + if (isObject(obj[key])) { + params[_key] = {}; + passedParams[_key] = {}; + extend(params[_key], obj[key]); + extend(passedParams[_key], obj[key]); + } + else { + params[_key] = obj[key]; + passedParams[_key] = obj[key]; + } + } + // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + // } + else { + rest[_key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach((key) => { + if (params[key] === true) + params[key] = {}; + if (params[key] === false) + delete params[key]; + }); + return { params, passedParams, rest }; +} + +class SwiperSlideDirective { + constructor(template) { + this.template = template; + this.class = ''; + this.autoplayDelay = null; + this.slideData = { + isActive: false, + isPrev: false, + isNext: false, + isVisible: false, + isDuplicate: false, + }; + } + set ngClass(val) { + this.class = [this.class || '', val].join(' '); + } + set zoom(val) { + this._zoom = coerceBooleanProperty(val); + } + get zoom() { + return this._zoom; + } + get classNames() { + return this._classNames; + } + set classNames(val) { + if (this._classNames === val) { + return; + } + this._classNames = val; + this.slideData = { + isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), + isVisible: this._hasClass(['swiper-slide-visible']), + isDuplicate: this._hasClass(['swiper-slide-duplicate']), + isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), + isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), + }; + } + _hasClass(classNames) { + return classNames.some((className) => this._classNames.indexOf(className) >= 0); + } +} +SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", ngClass: "ngClass", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperSlideDirective, decorators: [{ + type: Directive, + args: [{ + selector: 'ng-template[swiperSlide]', + }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ + type: Input + }], class: [{ + type: Input + }], ngClass: [{ + type: Input + }], autoplayDelay: [{ + type: Input, + args: ['data-swiper-autoplay'] + }], zoom: [{ + type: Input + }] } }); + +class SwiperComponent { + constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { + this._ngZone = _ngZone; + this.elementRef = elementRef; + this._changeDetectorRef = _changeDetectorRef; + this._platformId = _platformId; + this.slideClass = 'swiper-slide'; + this.wrapperClass = 'swiper-wrapper'; + this.showNavigation = true; + this.showPagination = true; + this.showScrollbar = true; + this.s__beforeBreakpoint = new EventEmitter(); + this.s__containerClasses = new EventEmitter(); + this.s__slideClass = new EventEmitter(); + this.s__swiper = new EventEmitter(); + this.s_activeIndexChange = new EventEmitter(); + this.s_afterInit = new EventEmitter(); + this.s_autoplay = new EventEmitter(); + this.s_autoplayStart = new EventEmitter(); + this.s_autoplayStop = new EventEmitter(); + this.s_autoplayPause = new EventEmitter(); + this.s_autoplayResume = new EventEmitter(); + this.s_beforeDestroy = new EventEmitter(); + this.s_beforeInit = new EventEmitter(); + this.s_beforeLoopFix = new EventEmitter(); + this.s_beforeResize = new EventEmitter(); + this.s_beforeSlideChangeStart = new EventEmitter(); + this.s_beforeTransitionStart = new EventEmitter(); + this.s_breakpoint = new EventEmitter(); + this.s_changeDirection = new EventEmitter(); + this.s_click = new EventEmitter(); + this.s_doubleTap = new EventEmitter(); + this.s_doubleClick = new EventEmitter(); + this.s_destroy = new EventEmitter(); + this.s_fromEdge = new EventEmitter(); + this.s_hashChange = new EventEmitter(); + this.s_hashSet = new EventEmitter(); + this.s_imagesReady = new EventEmitter(); + this.s_init = new EventEmitter(); + this.s_keyPress = new EventEmitter(); + this.s_lazyImageLoad = new EventEmitter(); + this.s_lazyImageReady = new EventEmitter(); + this.s_loopFix = new EventEmitter(); + this.s_momentumBounce = new EventEmitter(); + this.s_navigationHide = new EventEmitter(); + this.s_navigationShow = new EventEmitter(); + this.s_navigationPrev = new EventEmitter(); + this.s_navigationNext = new EventEmitter(); + this.s_observerUpdate = new EventEmitter(); + this.s_orientationchange = new EventEmitter(); + this.s_paginationHide = new EventEmitter(); + this.s_paginationRender = new EventEmitter(); + this.s_paginationShow = new EventEmitter(); + this.s_paginationUpdate = new EventEmitter(); + this.s_progress = new EventEmitter(); + this.s_reachBeginning = new EventEmitter(); + this.s_reachEnd = new EventEmitter(); + this.s_realIndexChange = new EventEmitter(); + this.s_resize = new EventEmitter(); + this.s_scroll = new EventEmitter(); + this.s_scrollbarDragEnd = new EventEmitter(); + this.s_scrollbarDragMove = new EventEmitter(); + this.s_scrollbarDragStart = new EventEmitter(); + this.s_setTransition = new EventEmitter(); + this.s_setTranslate = new EventEmitter(); + this.s_slideChange = new EventEmitter(); + this.s_slideChangeTransitionEnd = new EventEmitter(); + this.s_slideChangeTransitionStart = new EventEmitter(); + this.s_slideNextTransitionEnd = new EventEmitter(); + this.s_slideNextTransitionStart = new EventEmitter(); + this.s_slidePrevTransitionEnd = new EventEmitter(); + this.s_slidePrevTransitionStart = new EventEmitter(); + this.s_slideResetTransitionStart = new EventEmitter(); + this.s_slideResetTransitionEnd = new EventEmitter(); + this.s_sliderMove = new EventEmitter(); + this.s_sliderFirstMove = new EventEmitter(); + this.s_slidesLengthChange = new EventEmitter(); + this.s_slidesGridLengthChange = new EventEmitter(); + this.s_snapGridLengthChange = new EventEmitter(); + this.s_snapIndexChange = new EventEmitter(); + this.s_tap = new EventEmitter(); + this.s_toEdge = new EventEmitter(); + this.s_touchEnd = new EventEmitter(); + this.s_touchMove = new EventEmitter(); + this.s_touchMoveOpposite = new EventEmitter(); + this.s_touchStart = new EventEmitter(); + this.s_transitionEnd = new EventEmitter(); + this.s_transitionStart = new EventEmitter(); + this.s_update = new EventEmitter(); + this.s_zoomChange = new EventEmitter(); + this.s_swiper = new EventEmitter(); + this.s_lock = new EventEmitter(); + this.s_unlock = new EventEmitter(); + this._activeSlides = new Subject(); + this.containerClasses = 'swiper'; + this.slidesChanges = (val) => { + this.slides = val.map((slide, index) => { + slide.slideIndex = index; + slide.classNames = this.slideClass || ''; + return slide; + }); + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + if (!this.virtual) { + if (this.loopedSlides) { + this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); + this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); + } + } + else if (this.swiperRef && this.swiperRef.virtual) { + this._ngZone.runOutsideAngular(() => { + this.swiperRef.virtual.slides = this.slides; + this.swiperRef.virtual.update(true); + }); + } + this._changeDetectorRef.detectChanges(); + }; + this.style = null; + this.updateVirtualSlides = (virtualData) => { + // TODO: type virtualData + if (!this.swiperRef || + (this.currentVirtualData && + this.currentVirtualData.from === virtualData.from && + this.currentVirtualData.to === virtualData.to && + this.currentVirtualData.offset === virtualData.offset)) { + return; + } + this.style = this.swiperRef.isHorizontal() + ? { + [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, + } + : { + top: `${virtualData.offset}px`, + }; + this.currentVirtualData = virtualData; + this._activeSlides.next(virtualData.slides); + this._ngZone.run(() => { + this._changeDetectorRef.detectChanges(); + }); + this._ngZone.runOutsideAngular(() => { + this.swiperRef.updateSlides(); + this.swiperRef.updateProgress(); + this.swiperRef.updateSlidesClasses(); + if (isEnabled(this.swiperRef.params.lazy)) { + this.swiperRef.lazy.load(); + } + this.swiperRef.virtual.update(true); + }); + return; + }; + } + set navigation(val) { + const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? this._navigation?.nextEl + : null; + const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' + ? this._navigation?.prevEl + : null; + this._navigation = setProperty(val, { + nextEl: currentNext || null, + prevEl: currentPrev || null, + }); + this.showNavigation = !(coerceBooleanProperty(val) !== true || + (this._navigation && + typeof this._navigation !== 'boolean' && + this._navigation.prevEl !== this._prevElRef?.nativeElement && + (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && + (typeof this._navigation.nextEl === 'string' || + typeof this._navigation.prevEl === 'string' || + typeof this._navigation.nextEl === 'object' || + typeof this._navigation.prevEl === 'object'))); + } + get navigation() { + return this._navigation; + } + set pagination(val) { + const current = typeof this._pagination !== 'boolean' && this._pagination !== '' + ? this._pagination?.el + : null; + this._pagination = setProperty(val, { + el: current || null, + }); + this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); + } + get pagination() { + return this._pagination; + } + set scrollbar(val) { + const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null; + this._scrollbar = setProperty(val, { + el: current || null, + }); + this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); + } + get scrollbar() { + return this._scrollbar; + } + set virtual(val) { + this._virtual = setProperty(val); + } + get virtual() { + return this._virtual; + } + set config(val) { + this.updateSwiper(val); + const { params } = getParams(val); + Object.assign(this, params); + } + set prevElRef(el) { + this._prevElRef = el; + this._setElement(el, this.navigation, 'navigation', 'prevEl'); + } + set nextElRef(el) { + this._nextElRef = el; + this._setElement(el, this.navigation, 'navigation', 'nextEl'); + } + set scrollbarElRef(el) { + this._scrollbarElRef = el; + this._setElement(el, this.scrollbar, 'scrollbar'); + } + set paginationElRef(el) { + this._paginationElRef = el; + this._setElement(el, this.pagination, 'pagination'); + } + get activeSlides() { + if (this.virtual) { + return this._activeSlides; + } + return of(this.slides); + } + get zoomContainerClass() { + return this.zoom && typeof this.zoom !== 'boolean' + ? this.zoom.containerClass + : 'swiper-zoom-container'; + } + _setElement(el, ref, update, key = 'el') { + if (!ref || !el) + return; + if (el.nativeElement) { + if (ref[key] === el.nativeElement) { + return; + } + ref[key] = el.nativeElement; + } + const updateObj = {}; + updateObj[update] = true; + this.updateInitSwiper(updateObj); + } + ngOnInit() { + const { params } = getParams(this); + Object.assign(this, params); + } + ngAfterViewInit() { + this.childrenSlidesInit(); + this.initSwiper(); + this._changeDetectorRef.detectChanges(); + setTimeout(() => { + this.s_swiper.emit(this.swiperRef); + }); + } + childrenSlidesInit() { + this.slidesChanges(this.slidesEl); + this.slidesEl.changes.subscribe(this.slidesChanges); + } + get isSwiperActive() { + return this.swiperRef && !this.swiperRef.destroyed; + } + initSwiper() { + const { params: swiperParams, passedParams } = getParams(this); + Object.assign(this, swiperParams); + this._ngZone.runOutsideAngular(() => { + swiperParams.init = false; + if (!swiperParams.virtual) { + swiperParams.observer = true; + } + swiperParams.onAny = (eventName, ...args) => { + const emitter = this[('s_' + eventName)]; + if (emitter) { + emitter.emit([...args]); + } + }; + const _slideClasses = (_, updated) => { + updated.forEach(({ slideEl, classNames }, index) => { + const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); + const slideIndex = dataIndex ? parseInt(dataIndex) : index; + if (this.virtual) { + const virtualSlide = this.slides.find((item) => { + return item.virtualIndex && item.virtualIndex === slideIndex; + }); + if (virtualSlide) { + virtualSlide.classNames = classNames; + return; + } + } + if (this.slides[slideIndex]) { + this.slides[slideIndex].classNames = classNames; + } + }); + this._changeDetectorRef.detectChanges(); + }; + const _containerClasses = (_, classes) => { + setTimeout(() => { + this.containerClasses = classes; + }); + }; + Object.assign(swiperParams.on, { + _containerClasses, + _slideClasses, + }); + const swiperRef = new Swiper(swiperParams); + swiperRef.loopCreate = () => { }; + swiperRef.loopDestroy = () => { }; + if (swiperParams.loop) { + swiperRef.loopedSlides = this.loopedSlides; + } + const isVirtualEnabled = isEnabled(swiperRef.params.virtual); + if (swiperRef.virtual && isVirtualEnabled) { + swiperRef.virtual.slides = this.slides; + const extendWith = { + cache: false, + slides: this.slides, + renderExternal: this.updateVirtualSlides, + renderExternalUpdate: false, + }; + extend(swiperRef.params.virtual, extendWith); + extend(swiperRef.originalParams.virtual, extendWith); + } + if (isPlatformBrowser(this._platformId)) { + this.swiperRef = swiperRef.init(this.elementRef.nativeElement); + const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual); + if (this.swiperRef.virtual && isVirtualEnabled) { + this.swiperRef.virtual.update(true); + } + this._changeDetectorRef.detectChanges(); + } + }); + } + ngOnChanges(changedParams) { + this.updateSwiper(changedParams); + this._changeDetectorRef.detectChanges(); + } + updateInitSwiper(changedParams) { + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + this._ngZone.runOutsideAngular(() => { + const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; + if (changedParams.pagination) { + if (this.pagination && + typeof this.pagination !== 'boolean' && + this.pagination.el && + pagination && + !pagination.el) { + this.updateParameter('pagination', this.pagination); + pagination.init(); + pagination.render(); + pagination.update(); + } + else { + pagination.destroy(); + pagination.el = null; + } + } + if (changedParams.scrollbar) { + if (this.scrollbar && + typeof this.scrollbar !== 'boolean' && + this.scrollbar.el && + scrollbar && + !scrollbar.el) { + this.updateParameter('scrollbar', this.scrollbar); + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + else { + scrollbar.destroy(); + scrollbar.el = null; + } + } + if (changedParams.navigation) { + if (this.navigation && + typeof this.navigation !== 'boolean' && + this.navigation.prevEl && + this.navigation.nextEl && + navigation && + !navigation.prevEl && + !navigation.nextEl) { + this.updateParameter('navigation', this.navigation); + navigation.init(); + navigation.update(); + } + else if (navigation.prevEl && navigation.nextEl) { + navigation.destroy(); + navigation.nextEl = null; + navigation.prevEl = null; + } + } + if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { + this.updateParameter('thumbs', this.thumbs); + const initialized = thumbs.init(); + if (initialized) + thumbs.update(true); + } + if (changedParams.controller && this.controller && this.controller.control) { + this.swiperRef.controller.control = this.controller.control; + } + this.swiperRef.update(); + }); + } + updateSwiper(changedParams) { + this._ngZone.runOutsideAngular(() => { + if (changedParams.config) { + return; + } + if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + for (const key in changedParams) { + if (ignoreNgOnChanges.indexOf(key) >= 0) { + continue; + } + const newValue = changedParams[key]?.currentValue ?? changedParams[key]; + this.updateParameter(key, newValue); + } + if (changedParams.allowSlideNext) { + this.swiperRef.allowSlideNext = this.allowSlideNext; + } + if (changedParams.allowSlidePrev) { + this.swiperRef.allowSlidePrev = this.allowSlidePrev; + } + if (changedParams.direction) { + this.swiperRef.changeDirection(this.direction, false); + } + if (changedParams.breakpoints) { + if (this.loop && !this.loopedSlides) { + this.calcLoopedSlides(); + } + this.swiperRef.currentBreakpoint = null; + this.swiperRef.setBreakpoint(); + } + if (changedParams.thumbs || changedParams.controller) { + this.updateInitSwiper(changedParams); + } + this.swiperRef.update(); + }); + } + calcLoopedSlides() { + if (!this.loop) { + return false; + } + let slidesPerViewParams = this.slidesPerView; + if (this.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); + const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + if (slidesPerViewParams === 'auto') { + this.loopedSlides = this.slides.length; + return this.slides.length; + } + let loopedSlides = this.loopedSlides || slidesPerViewParams; + if (!loopedSlides) { + // ? + return false; + } + if (this.loopAdditionalSlides) { + loopedSlides += this.loopAdditionalSlides; + } + if (loopedSlides > this.slides.length) { + loopedSlides = this.slides.length; + } + this.loopedSlides = loopedSlides; + return true; + } + updateParameter(key, value) { + if (!(this.swiperRef && !this.swiperRef.destroyed)) { + return; + } + const _key = key.replace(/^_/, ''); + const isCurrentParamObj = isObject(this.swiperRef.params[_key]); + if (_key === 'enabled') { + if (value === true) { + this.swiperRef.enable(); + } + else if (value === false) { + this.swiperRef.disable(); + } + return; + } + if (isCurrentParamObj && isObject(value)) { + extend(this.swiperRef.params[_key], value); + } + else { + this.swiperRef.params[_key] = value; + } + } + ngOnDestroy() { + this._ngZone.runOutsideAngular(() => { + this.swiperRef?.destroy(true, false); + }); + } +} +SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); +SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", on: "on", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", maxBackfaceHiddenSlides: "maxBackfaceHiddenSlides", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", rewind: "rewind", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_autoplayPause: "autoplayPause", s_autoplayResume: "autoplayResume", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_navigationPrev: "navigationPrev", s_navigationNext: "navigationNext", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", s_lock: "lock", s_unlock: "unlock" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["swiper{display:block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperComponent, decorators: [{ + type: Component, + args: [{ selector: 'swiper, [swiper]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [ + ` + swiper { + display: block; + } + `, + ], template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n" }] + }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ + type: Inject, + args: [PLATFORM_ID] + }] }]; }, propDecorators: { enabled: [{ + type: Input + }], on: [{ + type: Input + }], direction: [{ + type: Input + }], touchEventsTarget: [{ + type: Input + }], initialSlide: [{ + type: Input + }], speed: [{ + type: Input + }], cssMode: [{ + type: Input + }], updateOnWindowResize: [{ + type: Input + }], resizeObserver: [{ + type: Input + }], nested: [{ + type: Input + }], focusableElements: [{ + type: Input + }], width: [{ + type: Input + }], height: [{ + type: Input + }], preventInteractionOnTransition: [{ + type: Input + }], userAgent: [{ + type: Input + }], url: [{ + type: Input + }], edgeSwipeDetection: [{ + type: Input + }], edgeSwipeThreshold: [{ + type: Input + }], freeMode: [{ + type: Input + }], autoHeight: [{ + type: Input + }], setWrapperSize: [{ + type: Input + }], virtualTranslate: [{ + type: Input + }], effect: [{ + type: Input + }], breakpoints: [{ + type: Input + }], spaceBetween: [{ + type: Input + }], slidesPerView: [{ + type: Input + }], maxBackfaceHiddenSlides: [{ + type: Input + }], grid: [{ + type: Input + }], slidesPerGroup: [{ + type: Input + }], slidesPerGroupSkip: [{ + type: Input + }], centeredSlides: [{ + type: Input + }], centeredSlidesBounds: [{ + type: Input + }], slidesOffsetBefore: [{ + type: Input + }], slidesOffsetAfter: [{ + type: Input + }], normalizeSlideIndex: [{ + type: Input + }], centerInsufficientSlides: [{ + type: Input + }], watchOverflow: [{ + type: Input + }], roundLengths: [{ + type: Input + }], touchRatio: [{ + type: Input + }], touchAngle: [{ + type: Input + }], simulateTouch: [{ + type: Input + }], shortSwipes: [{ + type: Input + }], longSwipes: [{ + type: Input + }], longSwipesRatio: [{ + type: Input + }], longSwipesMs: [{ + type: Input + }], followFinger: [{ + type: Input + }], allowTouchMove: [{ + type: Input + }], threshold: [{ + type: Input + }], touchMoveStopPropagation: [{ + type: Input + }], touchStartPreventDefault: [{ + type: Input + }], touchStartForcePreventDefault: [{ + type: Input + }], touchReleaseOnEdges: [{ + type: Input + }], uniqueNavElements: [{ + type: Input + }], resistance: [{ + type: Input + }], resistanceRatio: [{ + type: Input + }], watchSlidesProgress: [{ + type: Input + }], grabCursor: [{ + type: Input + }], preventClicks: [{ + type: Input + }], preventClicksPropagation: [{ + type: Input + }], slideToClickedSlide: [{ + type: Input + }], preloadImages: [{ + type: Input + }], updateOnImagesReady: [{ + type: Input + }], loop: [{ + type: Input + }], loopAdditionalSlides: [{ + type: Input + }], loopedSlides: [{ + type: Input + }], loopFillGroupWithBlank: [{ + type: Input + }], loopPreventsSlide: [{ + type: Input + }], rewind: [{ + type: Input + }], allowSlidePrev: [{ + type: Input + }], allowSlideNext: [{ + type: Input + }], swipeHandler: [{ + type: Input + }], noSwiping: [{ + type: Input + }], noSwipingClass: [{ + type: Input + }], noSwipingSelector: [{ + type: Input + }], passiveListeners: [{ + type: Input + }], containerModifierClass: [{ + type: Input + }], slideClass: [{ + type: Input + }], slideBlankClass: [{ + type: Input + }], slideActiveClass: [{ + type: Input + }], slideDuplicateActiveClass: [{ + type: Input + }], slideVisibleClass: [{ + type: Input + }], slideDuplicateClass: [{ + type: Input + }], slideNextClass: [{ + type: Input + }], slideDuplicateNextClass: [{ + type: Input + }], slidePrevClass: [{ + type: Input + }], slideDuplicatePrevClass: [{ + type: Input + }], wrapperClass: [{ + type: Input + }], runCallbacksOnInit: [{ + type: Input + }], observeParents: [{ + type: Input + }], observeSlideChildren: [{ + type: Input + }], a11y: [{ + type: Input + }], autoplay: [{ + type: Input + }], controller: [{ + type: Input + }], coverflowEffect: [{ + type: Input + }], cubeEffect: [{ + type: Input + }], fadeEffect: [{ + type: Input + }], flipEffect: [{ + type: Input + }], creativeEffect: [{ + type: Input + }], cardsEffect: [{ + type: Input + }], hashNavigation: [{ + type: Input + }], history: [{ + type: Input + }], keyboard: [{ + type: Input + }], lazy: [{ + type: Input + }], mousewheel: [{ + type: Input + }], parallax: [{ + type: Input + }], thumbs: [{ + type: Input + }], zoom: [{ + type: Input + }], class: [{ + type: Input + }], id: [{ + type: Input + }], navigation: [{ + type: Input + }], pagination: [{ + type: Input + }], scrollbar: [{ + type: Input + }], virtual: [{ + type: Input + }], config: [{ + type: Input + }], s__beforeBreakpoint: [{ + type: Output, + args: ['_beforeBreakpoint'] + }], s__containerClasses: [{ + type: Output, + args: ['_containerClasses'] + }], s__slideClass: [{ + type: Output, + args: ['_slideClass'] + }], s__swiper: [{ + type: Output, + args: ['_swiper'] + }], s_activeIndexChange: [{ + type: Output, + args: ['activeIndexChange'] + }], s_afterInit: [{ + type: Output, + args: ['afterInit'] + }], s_autoplay: [{ + type: Output, + args: ['autoplay'] + }], s_autoplayStart: [{ + type: Output, + args: ['autoplayStart'] + }], s_autoplayStop: [{ + type: Output, + args: ['autoplayStop'] + }], s_autoplayPause: [{ + type: Output, + args: ['autoplayPause'] + }], s_autoplayResume: [{ + type: Output, + args: ['autoplayResume'] + }], s_beforeDestroy: [{ + type: Output, + args: ['beforeDestroy'] + }], s_beforeInit: [{ + type: Output, + args: ['beforeInit'] + }], s_beforeLoopFix: [{ + type: Output, + args: ['beforeLoopFix'] + }], s_beforeResize: [{ + type: Output, + args: ['beforeResize'] + }], s_beforeSlideChangeStart: [{ + type: Output, + args: ['beforeSlideChangeStart'] + }], s_beforeTransitionStart: [{ + type: Output, + args: ['beforeTransitionStart'] + }], s_breakpoint: [{ + type: Output, + args: ['breakpoint'] + }], s_changeDirection: [{ + type: Output, + args: ['changeDirection'] + }], s_click: [{ + type: Output, + args: ['click'] + }], s_doubleTap: [{ + type: Output, + args: ['doubleTap'] + }], s_doubleClick: [{ + type: Output, + args: ['doubleClick'] + }], s_destroy: [{ + type: Output, + args: ['destroy'] + }], s_fromEdge: [{ + type: Output, + args: ['fromEdge'] + }], s_hashChange: [{ + type: Output, + args: ['hashChange'] + }], s_hashSet: [{ + type: Output, + args: ['hashSet'] + }], s_imagesReady: [{ + type: Output, + args: ['imagesReady'] + }], s_init: [{ + type: Output, + args: ['init'] + }], s_keyPress: [{ + type: Output, + args: ['keyPress'] + }], s_lazyImageLoad: [{ + type: Output, + args: ['lazyImageLoad'] + }], s_lazyImageReady: [{ + type: Output, + args: ['lazyImageReady'] + }], s_loopFix: [{ + type: Output, + args: ['loopFix'] + }], s_momentumBounce: [{ + type: Output, + args: ['momentumBounce'] + }], s_navigationHide: [{ + type: Output, + args: ['navigationHide'] + }], s_navigationShow: [{ + type: Output, + args: ['navigationShow'] + }], s_navigationPrev: [{ + type: Output, + args: ['navigationPrev'] + }], s_navigationNext: [{ + type: Output, + args: ['navigationNext'] + }], s_observerUpdate: [{ + type: Output, + args: ['observerUpdate'] + }], s_orientationchange: [{ + type: Output, + args: ['orientationchange'] + }], s_paginationHide: [{ + type: Output, + args: ['paginationHide'] + }], s_paginationRender: [{ + type: Output, + args: ['paginationRender'] + }], s_paginationShow: [{ + type: Output, + args: ['paginationShow'] + }], s_paginationUpdate: [{ + type: Output, + args: ['paginationUpdate'] + }], s_progress: [{ + type: Output, + args: ['progress'] + }], s_reachBeginning: [{ + type: Output, + args: ['reachBeginning'] + }], s_reachEnd: [{ + type: Output, + args: ['reachEnd'] + }], s_realIndexChange: [{ + type: Output, + args: ['realIndexChange'] + }], s_resize: [{ + type: Output, + args: ['resize'] + }], s_scroll: [{ + type: Output, + args: ['scroll'] + }], s_scrollbarDragEnd: [{ + type: Output, + args: ['scrollbarDragEnd'] + }], s_scrollbarDragMove: [{ + type: Output, + args: ['scrollbarDragMove'] + }], s_scrollbarDragStart: [{ + type: Output, + args: ['scrollbarDragStart'] + }], s_setTransition: [{ + type: Output, + args: ['setTransition'] + }], s_setTranslate: [{ + type: Output, + args: ['setTranslate'] + }], s_slideChange: [{ + type: Output, + args: ['slideChange'] + }], s_slideChangeTransitionEnd: [{ + type: Output, + args: ['slideChangeTransitionEnd'] + }], s_slideChangeTransitionStart: [{ + type: Output, + args: ['slideChangeTransitionStart'] + }], s_slideNextTransitionEnd: [{ + type: Output, + args: ['slideNextTransitionEnd'] + }], s_slideNextTransitionStart: [{ + type: Output, + args: ['slideNextTransitionStart'] + }], s_slidePrevTransitionEnd: [{ + type: Output, + args: ['slidePrevTransitionEnd'] + }], s_slidePrevTransitionStart: [{ + type: Output, + args: ['slidePrevTransitionStart'] + }], s_slideResetTransitionStart: [{ + type: Output, + args: ['slideResetTransitionStart'] + }], s_slideResetTransitionEnd: [{ + type: Output, + args: ['slideResetTransitionEnd'] + }], s_sliderMove: [{ + type: Output, + args: ['sliderMove'] + }], s_sliderFirstMove: [{ + type: Output, + args: ['sliderFirstMove'] + }], s_slidesLengthChange: [{ + type: Output, + args: ['slidesLengthChange'] + }], s_slidesGridLengthChange: [{ + type: Output, + args: ['slidesGridLengthChange'] + }], s_snapGridLengthChange: [{ + type: Output, + args: ['snapGridLengthChange'] + }], s_snapIndexChange: [{ + type: Output, + args: ['snapIndexChange'] + }], s_tap: [{ + type: Output, + args: ['tap'] + }], s_toEdge: [{ + type: Output, + args: ['toEdge'] + }], s_touchEnd: [{ + type: Output, + args: ['touchEnd'] + }], s_touchMove: [{ + type: Output, + args: ['touchMove'] + }], s_touchMoveOpposite: [{ + type: Output, + args: ['touchMoveOpposite'] + }], s_touchStart: [{ + type: Output, + args: ['touchStart'] + }], s_transitionEnd: [{ + type: Output, + args: ['transitionEnd'] + }], s_transitionStart: [{ + type: Output, + args: ['transitionStart'] + }], s_update: [{ + type: Output, + args: ['update'] + }], s_zoomChange: [{ + type: Output, + args: ['zoomChange'] + }], s_swiper: [{ + type: Output, + args: ['swiper'] + }], s_lock: [{ + type: Output, + args: ['lock'] + }], s_unlock: [{ + type: Output, + args: ['unlock'] + }], prevElRef: [{ + type: ViewChild, + args: ['prevElRef', { static: false }] + }], nextElRef: [{ + type: ViewChild, + args: ['nextElRef', { static: false }] + }], scrollbarElRef: [{ + type: ViewChild, + args: ['scrollbarElRef', { static: false }] + }], paginationElRef: [{ + type: ViewChild, + args: ['paginationElRef', { static: false }] + }], slidesEl: [{ + type: ContentChildren, + args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] + }], containerClasses: [{ + type: HostBinding, + args: ['class'] + }] } }); + +class SwiperModule { +} +SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); +SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SwiperModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [SwiperComponent, SwiperSlideDirective], + exports: [SwiperComponent, SwiperSlideDirective], + imports: [CommonModule], + }] + }] }); + +/* + * Public API Surface of angular + */ + +/** + * Generated bundle index. Do not edit. + */ + +export { SwiperComponent, SwiperModule, SwiperSlideDirective }; +//# sourceMappingURL=swiper_angular.mjs.map diff --git a/swiper/angular/fesm2020/swiper_angular.mjs.map b/swiper/angular/fesm2020/swiper_angular.mjs.map new file mode 100644 index 0000000..3871c04 --- /dev/null +++ b/swiper/angular/fesm2020/swiper_angular.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper_angular.mjs","sources":["../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n 'maxBackfaceHiddenSlides',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_rewind',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n 'on',\n];\n","export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isEnabled(val: boolean | { enabled?: boolean }) {\n return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","// @ts-ignore\nimport Swiper from 'swiper';\nimport { paramsList } from './params-list';\nimport { extend, isObject } from './utils';\ntype KeyValueType = { [x: string]: any };\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n // const events = {};\n const passedParams: KeyValueType = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n\n const rest: KeyValueType = {};\n const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[key]);\n extend(passedParams[_key], obj[key]);\n } else {\n params[_key] = obj[key];\n passedParams[_key] = obj[key];\n }\n }\n // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n // }\n else {\n rest[_key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach((key) => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input()\n set ngClass(val: string) {\n this.class = [this.class || '', val].join(' ');\n }\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport { EventsParams } from './swiper-events';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n isEnabled,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() on: SwiperOptions['on'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() maxBackfaceHiddenSlides: SwiperOptions['maxBackfaceHiddenSlides'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() rewind: SwiperOptions['rewind'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n @Output('_beforeBreakpoint') s__beforeBreakpoint = new EventEmitter<\n EventsParams['_beforeBreakpoint']\n >();\n\n @Output('_containerClasses') s__containerClasses = new EventEmitter<\n EventsParams['_containerClasses']\n >();\n\n @Output('_slideClass') s__slideClass = new EventEmitter();\n\n @Output('_swiper') s__swiper = new EventEmitter();\n\n @Output('activeIndexChange') s_activeIndexChange = new EventEmitter<\n EventsParams['activeIndexChange']\n >();\n\n @Output('afterInit') s_afterInit = new EventEmitter();\n\n @Output('autoplay') s_autoplay = new EventEmitter();\n\n @Output('autoplayStart') s_autoplayStart = new EventEmitter();\n\n @Output('autoplayStop') s_autoplayStop = new EventEmitter();\n\n @Output('autoplayPause') s_autoplayPause = new EventEmitter();\n\n @Output('autoplayResume') s_autoplayResume = new EventEmitter();\n\n @Output('beforeDestroy') s_beforeDestroy = new EventEmitter();\n\n @Output('beforeInit') s_beforeInit = new EventEmitter();\n\n @Output('beforeLoopFix') s_beforeLoopFix = new EventEmitter();\n\n @Output('beforeResize') s_beforeResize = new EventEmitter();\n\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart = new EventEmitter<\n EventsParams['beforeSlideChangeStart']\n >();\n\n @Output('beforeTransitionStart') s_beforeTransitionStart = new EventEmitter<\n EventsParams['beforeTransitionStart']\n >();\n\n @Output('breakpoint') s_breakpoint = new EventEmitter();\n\n @Output('changeDirection') s_changeDirection = new EventEmitter<\n EventsParams['changeDirection']\n >();\n\n @Output('click') s_click = new EventEmitter();\n\n @Output('doubleTap') s_doubleTap = new EventEmitter();\n\n @Output('doubleClick') s_doubleClick = new EventEmitter();\n\n @Output('destroy') s_destroy = new EventEmitter();\n\n @Output('fromEdge') s_fromEdge = new EventEmitter();\n\n @Output('hashChange') s_hashChange = new EventEmitter();\n\n @Output('hashSet') s_hashSet = new EventEmitter();\n\n @Output('imagesReady') s_imagesReady = new EventEmitter();\n\n @Output('init') s_init = new EventEmitter();\n\n @Output('keyPress') s_keyPress = new EventEmitter();\n\n @Output('lazyImageLoad') s_lazyImageLoad = new EventEmitter();\n\n @Output('lazyImageReady') s_lazyImageReady = new EventEmitter();\n\n @Output('loopFix') s_loopFix = new EventEmitter();\n\n @Output('momentumBounce') s_momentumBounce = new EventEmitter();\n\n @Output('navigationHide') s_navigationHide = new EventEmitter();\n\n @Output('navigationShow') s_navigationShow = new EventEmitter();\n\n @Output('navigationPrev') s_navigationPrev = new EventEmitter();\n\n @Output('navigationNext') s_navigationNext = new EventEmitter();\n\n @Output('observerUpdate') s_observerUpdate = new EventEmitter();\n\n @Output('orientationchange') s_orientationchange = new EventEmitter<\n EventsParams['orientationchange']\n >();\n\n @Output('paginationHide') s_paginationHide = new EventEmitter();\n\n @Output('paginationRender') s_paginationRender = new EventEmitter<\n EventsParams['paginationRender']\n >();\n\n @Output('paginationShow') s_paginationShow = new EventEmitter();\n\n @Output('paginationUpdate') s_paginationUpdate = new EventEmitter<\n EventsParams['paginationUpdate']\n >();\n\n @Output('progress') s_progress = new EventEmitter();\n\n @Output('reachBeginning') s_reachBeginning = new EventEmitter();\n\n @Output('reachEnd') s_reachEnd = new EventEmitter();\n\n @Output('realIndexChange') s_realIndexChange = new EventEmitter<\n EventsParams['realIndexChange']\n >();\n\n @Output('resize') s_resize = new EventEmitter();\n\n @Output('scroll') s_scroll = new EventEmitter();\n\n @Output('scrollbarDragEnd') s_scrollbarDragEnd = new EventEmitter<\n EventsParams['scrollbarDragEnd']\n >();\n\n @Output('scrollbarDragMove') s_scrollbarDragMove = new EventEmitter<\n EventsParams['scrollbarDragMove']\n >();\n\n @Output('scrollbarDragStart') s_scrollbarDragStart = new EventEmitter<\n EventsParams['scrollbarDragStart']\n >();\n\n @Output('setTransition') s_setTransition = new EventEmitter();\n\n @Output('setTranslate') s_setTranslate = new EventEmitter();\n\n @Output('slideChange') s_slideChange = new EventEmitter();\n\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd = new EventEmitter<\n EventsParams['slideChangeTransitionEnd']\n >();\n\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart = new EventEmitter<\n EventsParams['slideChangeTransitionStart']\n >();\n\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd = new EventEmitter<\n EventsParams['slideNextTransitionEnd']\n >();\n\n @Output('slideNextTransitionStart') s_slideNextTransitionStart = new EventEmitter<\n EventsParams['slideNextTransitionStart']\n >();\n\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd = new EventEmitter<\n EventsParams['slidePrevTransitionEnd']\n >();\n\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart = new EventEmitter<\n EventsParams['slidePrevTransitionStart']\n >();\n\n @Output('slideResetTransitionStart') s_slideResetTransitionStart = new EventEmitter<\n EventsParams['slideResetTransitionStart']\n >();\n\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd = new EventEmitter<\n EventsParams['slideResetTransitionEnd']\n >();\n\n @Output('sliderMove') s_sliderMove = new EventEmitter();\n\n @Output('sliderFirstMove') s_sliderFirstMove = new EventEmitter<\n EventsParams['sliderFirstMove']\n >();\n\n @Output('slidesLengthChange') s_slidesLengthChange = new EventEmitter<\n EventsParams['slidesLengthChange']\n >();\n\n @Output('slidesGridLengthChange') s_slidesGridLengthChange = new EventEmitter<\n EventsParams['slidesGridLengthChange']\n >();\n\n @Output('snapGridLengthChange') s_snapGridLengthChange = new EventEmitter<\n EventsParams['snapGridLengthChange']\n >();\n\n @Output('snapIndexChange') s_snapIndexChange = new EventEmitter<\n EventsParams['snapIndexChange']\n >();\n\n @Output('tap') s_tap = new EventEmitter();\n\n @Output('toEdge') s_toEdge = new EventEmitter();\n\n @Output('touchEnd') s_touchEnd = new EventEmitter();\n\n @Output('touchMove') s_touchMove = new EventEmitter();\n\n @Output('touchMoveOpposite') s_touchMoveOpposite = new EventEmitter<\n EventsParams['touchMoveOpposite']\n >();\n\n @Output('touchStart') s_touchStart = new EventEmitter();\n\n @Output('transitionEnd') s_transitionEnd = new EventEmitter();\n\n @Output('transitionStart') s_transitionStart = new EventEmitter<\n EventsParams['transitionStart']\n >();\n\n @Output('update') s_update = new EventEmitter();\n\n @Output('zoomChange') s_zoomChange = new EventEmitter();\n\n @Output('swiper') s_swiper = new EventEmitter();\n\n @Output('lock') s_lock = new EventEmitter();\n\n @Output('unlock') s_unlock = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!ref || !el) return;\n if (el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit([...args]);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled = isEnabled(swiperRef.params.virtual);\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual);\n if (this.swiperRef.virtual && isVirtualEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (isEnabled(this.swiperRef.params.lazy)) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return false;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return false;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return true;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '') as keyof SwiperOptions;\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n (this.swiperRef.params[_key] as any) = value;\n }\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper-events';\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/swiper/angular/package.json b/swiper/angular/package.json new file mode 100644 index 0000000..65a5375 --- /dev/null +++ b/swiper/angular/package.json @@ -0,0 +1,32 @@ +{ + "name": "swiper_angular", + "version": "0.0.1", + "private": "true", + "peerDependencies": { + "@angular/common": "^12.2.0 || ^13.0.0 || ^14.0.0", + "@angular/core": "^12.2.0 || ^13.0.0 || ^14.0.0" + }, + "dependencies": { + "tslib": "^2.3.0" + }, + "module": "fesm2015/swiper_angular.mjs", + "es2020": "fesm2020/swiper_angular.mjs", + "esm2020": "esm2020/swiper_angular.mjs", + "fesm2020": "fesm2020/swiper_angular.mjs", + "fesm2015": "fesm2015/swiper_angular.mjs", + "typings": "swiper_angular.d.ts", + "exports": { + "./package.json": { + "default": "./package.json" + }, + ".": { + "types": "./swiper_angular.d.ts", + "esm2020": "./esm2020/swiper_angular.mjs", + "es2020": "./fesm2020/swiper_angular.mjs", + "es2015": "./fesm2015/swiper_angular.mjs", + "node": "./fesm2015/swiper_angular.mjs", + "default": "./fesm2020/swiper_angular.mjs" + } + }, + "sideEffects": false +} \ No newline at end of file diff --git a/swiper/angular/swiper-angular.d.ts b/swiper/angular/swiper-angular.d.ts new file mode 100644 index 0000000..7075866 --- /dev/null +++ b/swiper/angular/swiper-angular.d.ts @@ -0,0 +1 @@ +export * from './angular/src/public-api'; diff --git a/swiper/angular/swiper_angular.d.ts b/swiper/angular/swiper_angular.d.ts new file mode 100644 index 0000000..a94e51b --- /dev/null +++ b/swiper/angular/swiper_angular.d.ts @@ -0,0 +1,5 @@ +/** + * Generated bundle index. Do not edit. + */ +/// +export * from './swiper-angular'; diff --git a/swiper/components-shared/get-changed-params.js b/swiper/components-shared/get-changed-params.js new file mode 100644 index 0000000..5cd3dbd --- /dev/null +++ b/swiper/components-shared/get-changed-params.js @@ -0,0 +1,46 @@ +import { paramsList } from './params-list.js'; +import { isObject } from './utils.js'; + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +export { getChangedParams }; \ No newline at end of file diff --git a/swiper/components-shared/get-params.js b/swiper/components-shared/get-params.js new file mode 100644 index 0000000..d87351f --- /dev/null +++ b/swiper/components-shared/get-params.js @@ -0,0 +1,61 @@ +import Swiper from 'swiper'; +import { isObject, extend } from './utils.js'; +import { paramsList } from './params-list.js'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + + if (splitEvents === void 0) { + splitEvents = true; + } + + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, Swiper.defaults); + extend(params, Swiper.extendedDefaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +export { getParams }; \ No newline at end of file diff --git a/swiper/components-shared/mount-swiper.js b/swiper/components-shared/mount-swiper.js new file mode 100644 index 0000000..2c7e128 --- /dev/null +++ b/swiper/components-shared/mount-swiper.js @@ -0,0 +1,33 @@ +import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + + swiper.init(el); +} + +export { mountSwiper }; \ No newline at end of file diff --git a/swiper/components-shared/params-list.js b/swiper/components-shared/params-list.js new file mode 100644 index 0000000..35b1f1c --- /dev/null +++ b/swiper/components-shared/params-list.js @@ -0,0 +1,4 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom']; +export { paramsList }; \ No newline at end of file diff --git a/swiper/components-shared/update-on-virtual-data.js b/swiper/components-shared/update-on-virtual-data.js new file mode 100644 index 0000000..d272f6f --- /dev/null +++ b/swiper/components-shared/update-on-virtual-data.js @@ -0,0 +1,14 @@ +export const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; \ No newline at end of file diff --git a/swiper/components-shared/update-swiper.js b/swiper/components-shared/update-swiper.js new file mode 100644 index 0000000..ae318c3 --- /dev/null +++ b/swiper/components-shared/update-swiper.js @@ -0,0 +1,136 @@ +import { isObject, extend } from './utils.js'; + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + + if (mod === 'navigation') { + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + extend(currentParams[key], passedParams[key]); + } else { + const newValue = passedParams[key]; + + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + + if (needPaginationInit) { + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + + if (needScrollbarInit) { + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + + if (needNavigationInit) { + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + + swiper.update(); +} + +export { updateSwiper }; \ No newline at end of file diff --git a/swiper/components-shared/utils.js b/swiper/components-shared/utils.js new file mode 100644 index 0000000..cbb88c7 --- /dev/null +++ b/swiper/components-shared/utils.js @@ -0,0 +1,53 @@ +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} + +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} + +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} + +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + + return params.pagination && typeof params.pagination.el === 'undefined'; +} + +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} + +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} + +export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/swiper/core/breakpoints/getBreakpoint.js b/swiper/core/breakpoints/getBreakpoint.js new file mode 100644 index 0000000..e2571b9 --- /dev/null +++ b/swiper/core/breakpoints/getBreakpoint.js @@ -0,0 +1,44 @@ +import { getWindow } from 'ssr-window'; +export default function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + + return breakpoint || 'max'; +} \ No newline at end of file diff --git a/swiper/core/breakpoints/index.js b/swiper/core/breakpoints/index.js new file mode 100644 index 0000000..341d640 --- /dev/null +++ b/swiper/core/breakpoints/index.js @@ -0,0 +1,6 @@ +import setBreakpoint from './setBreakpoint.js'; +import getBreakpoint from './getBreakpoint.js'; +export default { + setBreakpoint, + getBreakpoint +}; \ No newline at end of file diff --git a/swiper/core/breakpoints/setBreakpoint.js b/swiper/core/breakpoints/setBreakpoint.js new file mode 100644 index 0000000..90e1875 --- /dev/null +++ b/swiper/core/breakpoints/setBreakpoint.js @@ -0,0 +1,85 @@ +import { extend } from '../../shared/utils.js'; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; + +export default function setBreakpoint() { + const swiper = this; + const { + activeIndex, + initialized, + loopedSlides = 0, + params, + $el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters + + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}grid`); + + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + $el.addClass(`${params.containerModifierClass}grid-column`); + } + + swiper.emitContainerClasses(); + } // Toggle navigation, pagination, scrollbar + + + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); +} \ No newline at end of file diff --git a/swiper/core/check-overflow/index.js b/swiper/core/check-overflow/index.js new file mode 100644 index 0000000..d21f522 --- /dev/null +++ b/swiper/core/check-overflow/index.js @@ -0,0 +1,38 @@ +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} + +export default { + checkOverflow +}; \ No newline at end of file diff --git a/swiper/core/classes/addClasses.js b/swiper/core/classes/addClasses.js new file mode 100644 index 0000000..f5b2240 --- /dev/null +++ b/swiper/core/classes/addClasses.js @@ -0,0 +1,54 @@ +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} + +export default function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + $el, + device, + support + } = swiper; // prettier-ignore + + const suffixes = prepareClasses(['initialized', params.direction, { + 'pointer-events': !support.touch + }, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + $el.addClass([...classNames].join(' ')); + swiper.emitContainerClasses(); +} \ No newline at end of file diff --git a/swiper/core/classes/index.js b/swiper/core/classes/index.js new file mode 100644 index 0000000..27cd28c --- /dev/null +++ b/swiper/core/classes/index.js @@ -0,0 +1,6 @@ +import addClasses from './addClasses.js'; +import removeClasses from './removeClasses.js'; +export default { + addClasses, + removeClasses +}; \ No newline at end of file diff --git a/swiper/core/classes/removeClasses.js b/swiper/core/classes/removeClasses.js new file mode 100644 index 0000000..bd168b1 --- /dev/null +++ b/swiper/core/classes/removeClasses.js @@ -0,0 +1,9 @@ +export default function removeClasses() { + const swiper = this; + const { + $el, + classNames + } = swiper; + $el.removeClass(classNames.join(' ')); + swiper.emitContainerClasses(); +} \ No newline at end of file diff --git a/swiper/core/core.js b/swiper/core/core.js new file mode 100644 index 0000000..48182f4 --- /dev/null +++ b/swiper/core/core.js @@ -0,0 +1,656 @@ +/* eslint no-param-reassign: "off" */ +import { getDocument } from 'ssr-window'; +import $ from '../shared/dom.js'; +import { extend, now, deleteProps } from '../shared/utils.js'; +import { getSupport } from '../shared/get-support.js'; +import { getDevice } from '../shared/get-device.js'; +import { getBrowser } from '../shared/get-browser.js'; +import Resize from './modules/resize/resize.js'; +import Observer from './modules/observer/observer.js'; +import eventsEmitter from './events-emitter.js'; +import update from './update/index.js'; +import translate from './translate/index.js'; +import transition from './transition/index.js'; +import slide from './slide/index.js'; +import loop from './loop/index.js'; +import grabCursor from './grab-cursor/index.js'; +import events from './events/index.js'; +import breakpoints from './breakpoints/index.js'; +import classes from './classes/index.js'; +import images from './images/index.js'; +import checkOverflow from './check-overflow/index.js'; +import defaults from './defaults.js'; +import moduleExtendParams from './moduleExtendParams.js'; +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events, + breakpoints, + checkOverflow, + classes, + images +}; +const extendedDefaults = {}; + +class Swiper { + constructor() { + let el; + let params; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + + if (params.el && $(params.el).length > 1) { + const swipers = []; + $(params.el).each(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } // Swiper Instance + + + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); // Extend defaults with modules params + + const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params + + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); // add event listeners + + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } // Save Dom lib + + + swiper.$ = $; // Extend Swiper + + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + + isVertical() { + return swiper.params.direction === 'vertical'; + }, + + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEvents: function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + const desktop = ['pointerdown', 'pointermove', 'pointerup']; + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3] + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2] + }; + return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }(), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); // Init + + if (swiper.params.init) { + swiper.init(); + } // Return app instance + + + return swiper; + } + + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + swiper.emit('enable'); + } + + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + + swiper.emit('disable'); + } + + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.each(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + + if (exact === void 0) { + exact = false; + } + + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } + } + + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + let translated; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled) { + setTranslate(); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (!translated) { + setTranslate(); + } + } + + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + + const swiper = this; + const currentDirection = swiper.params.direction; + + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + + swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.each(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + + if (swiper.rtl) { + swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + + swiper.update(); + } + + mount(el) { + const swiper = this; + if (swiper.mounted) return true; // Find el + + const $el = $(el || swiper.params.el); + el = $el[0]; + + if (!el) { + return false; + } + + el.swiper = swiper; + + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items + + res.children = options => $el.children(options); + + return res; + } + + if (!$el.children) { + return $($el).children(getWrapperSelector()); + } + + return $el.children(getWrapperSelector()); + }; // Find Wrapper + + + let $wrapperEl = getWrapper(); + + if ($wrapperEl.length === 0 && swiper.params.createElements) { + const document = getDocument(); + const wrapper = document.createElement('div'); + $wrapperEl = $(wrapper); + wrapper.className = swiper.params.wrapperClass; + $el.append(wrapper); + $el.children(`.${swiper.params.slideClass}`).each(slideEl => { + $wrapperEl.append(slideEl); + }); + } + + Object.assign(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box' + }); + return true; + } + + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); // Set breakpoint + + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } // Add Classes + + + swiper.addClasses(); // Create loop + + if (swiper.params.loop) { + swiper.loopCreate(); + } // Update size + + + swiper.updateSize(); // Update slides + + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } // Set Grab Cursor + + + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } // Slide To Initial Slide + + + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } // Attach events + + + swiper.attachEvents(); // Init Flag + + swiper.initialized = true; // Emit + + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + + if (cleanStyles === void 0) { + cleanStyles = true; + } + + const swiper = this; + const { + params, + $el, + $wrapperEl, + slides + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); // Init Flag + + swiper.initialized = false; // Detach events + + swiper.detachEvents(); // Destroy loop + + if (params.loop) { + swiper.loopDestroy(); + } // Cleanup styles + + + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + + if (slides && slides.length) { + slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); // Detach emitter events + + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + deleteProps(swiper); + } + + swiper.destroyed = true; + return null; + } + + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + + Swiper.installModule(module); + return Swiper; + } + +} + +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); +export default Swiper; \ No newline at end of file diff --git a/swiper/core/defaults.js b/swiper/core/defaults.js new file mode 100644 index 0000000..671599e --- /dev/null +++ b/swiper/core/defaults.js @@ -0,0 +1,123 @@ +export default { + init: true, + direction: 'horizontal', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // Images + preloadImages: true, + updateOnImagesReady: true, + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + loopPreventsSlide: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; \ No newline at end of file diff --git a/swiper/core/events-emitter.js b/swiper/core/events-emitter.js new file mode 100644 index 0000000..83d4900 --- /dev/null +++ b/swiper/core/events-emitter.js @@ -0,0 +1,122 @@ +/* eslint-disable no-underscore-dangle */ +export default { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + + function onceHandler() { + self.off(events, onceHandler); + + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + handler.apply(self, args); + } + + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + + return self; + }, + + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + + return self; + }, + + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + +}; \ No newline at end of file diff --git a/swiper/core/events/index.js b/swiper/core/events/index.js new file mode 100644 index 0000000..8b5c83b --- /dev/null +++ b/swiper/core/events/index.js @@ -0,0 +1,97 @@ +import { getDocument } from 'ssr-window'; +import onTouchStart from './onTouchStart.js'; +import onTouchMove from './onTouchMove.js'; +import onTouchEnd from './onTouchEnd.js'; +import onResize from './onResize.js'; +import onClick from './onClick.js'; +import onScroll from './onScroll.js'; +let dummyEventAttached = false; + +function dummyEventListener() {} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + touchEvents, + el, + wrapperEl, + device, + support + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; // Touch Events + + if (!support.touch) { + el[domMethod](touchEvents.start, swiper.onTouchStart, false); + document[domMethod](touchEvents.move, swiper.onTouchMove, capture); + document[domMethod](touchEvents.end, swiper.onTouchEnd, false); + } else { + const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); + el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { + passive: false, + capture + } : capture); + el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); + + if (touchEvents.cancel) { + el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } // Prevent Links Clicks + + + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } // Resize handler + + + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } +}; + +function attachEvents() { + const swiper = this; + const document = getDocument(); + const { + params, + support + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + if (support.touch && !dummyEventAttached) { + document.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + + events(swiper, 'on'); +} + +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} + +export default { + attachEvents, + detachEvents +}; \ No newline at end of file diff --git a/swiper/core/events/onClick.js b/swiper/core/events/onClick.js new file mode 100644 index 0000000..71f8da0 --- /dev/null +++ b/swiper/core/events/onClick.js @@ -0,0 +1,13 @@ +export default function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} \ No newline at end of file diff --git a/swiper/core/events/onResize.js b/swiper/core/events/onResize.js new file mode 100644 index 0000000..85ac871 --- /dev/null +++ b/swiper/core/events/onResize.js @@ -0,0 +1,43 @@ +export default function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } // Save locks + + + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; // Disable locks on resize + + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } // Return locks after resize + + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} \ No newline at end of file diff --git a/swiper/core/events/onScroll.js b/swiper/core/events/onScroll.js new file mode 100644 index 0000000..a550e7e --- /dev/null +++ b/swiper/core/events/onScroll.js @@ -0,0 +1,35 @@ +export default function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } // eslint-disable-next-line + + + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} \ No newline at end of file diff --git a/swiper/core/events/onTouchEnd.js b/swiper/core/events/onTouchEnd.js new file mode 100644 index 0000000..2ac98fa --- /dev/null +++ b/swiper/core/events/onTouchEnd.js @@ -0,0 +1,161 @@ +import { now, nextTick } from '../../shared/utils.js'; +export default function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + + data.allowTouchCallbacks = false; + + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + + data.isMoved = false; + data.startMoving = false; + return; + } // Return Grab Cursor + + + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } // Time diff + + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click + + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target); + swiper.emit('tap click', e); + + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (swiper.params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } // Find current slide + + + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + let rewindFirstIndex = null; + let rewindLastIndex = null; + + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } // Find current slide size + + + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} \ No newline at end of file diff --git a/swiper/core/events/onTouchMove.js b/swiper/core/events/onTouchMove.js new file mode 100644 index 0000000..a9f5562 --- /dev/null +++ b/swiper/core/events/onTouchMove.js @@ -0,0 +1,223 @@ +import { getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +import { now } from '../../shared/utils.js'; +export default function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + return; + } + + if (data.isTouchEvent && e.type !== 'touchmove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + + if (!swiper.allowTouchMove) { + if (!$(e.target).is(data.focusableElements)) { + swiper.allowClick = false; + } + + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + + return; + } + + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + + if (data.isTouchEvent && document.activeElement) { + if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + + if (e.targetTouches && e.targetTouches.length > 1) return; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + + if (data.isScrolling) { + data.isTouched = false; + return; + } + + if (!data.startMoving) { + return; + } + + swiper.allowClick = false; + + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop && !params.cssMode) { + swiper.loopFix(); + } + + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + + data.allowMomentumBounce = false; // Grab Cursor + + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + + swiper.emit('sliderFirstMove', e); + } + + swiper.emit('sliderMove', e); + data.isMoved = true; + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) diff = -diff; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + + if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } // Directions locks + + + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } // Threshold + + + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; // Update active index in free mode + + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } // Update progress + + + swiper.updateProgress(data.currentTranslate); // Update translate + + swiper.setTranslate(data.currentTranslate); +} \ No newline at end of file diff --git a/swiper/core/events/onTouchStart.js b/swiper/core/events/onTouchStart.js new file mode 100644 index 0000000..f167d48 --- /dev/null +++ b/swiper/core/events/onTouchStart.js @@ -0,0 +1,134 @@ +import { getWindow, getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +import { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + + if (!found && !el.getRootNode) { + return null; + } + + return found || __closestFrom(el.getRootNode().host); + } + + return __closestFrom(base); +} + +export default function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + const window = getWindow(); + const data = swiper.touchEventsData; + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + + let e = event; + if (e.originalEvent) e = e.originalEvent; + let $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; // change target el for shadow root component + + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + + if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { + $targetEl = $(event.path[0]); + } + + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element + + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) { + swiper.allowClick = true; + return; + } + + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + } else { + return; + } + } + + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + + if (e.type !== 'touchstart') { + let preventDefault = true; + + if ($targetEl.is(data.focusableElements)) { + preventDefault = false; + + if ($targetEl[0].nodeName === 'SELECT') { + data.isTouched = false; + } + } + + if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { + document.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { + e.preventDefault(); + } + } + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + + swiper.emit('touchStart', e); +} \ No newline at end of file diff --git a/swiper/core/grab-cursor/index.js b/swiper/core/grab-cursor/index.js new file mode 100644 index 0000000..ac4bdcf --- /dev/null +++ b/swiper/core/grab-cursor/index.js @@ -0,0 +1,6 @@ +import setGrabCursor from './setGrabCursor.js'; +import unsetGrabCursor from './unsetGrabCursor.js'; +export default { + setGrabCursor, + unsetGrabCursor +}; \ No newline at end of file diff --git a/swiper/core/grab-cursor/setGrabCursor.js b/swiper/core/grab-cursor/setGrabCursor.js new file mode 100644 index 0000000..5082cde --- /dev/null +++ b/swiper/core/grab-cursor/setGrabCursor.js @@ -0,0 +1,7 @@ +export default function setGrabCursor(moving) { + const swiper = this; + if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} \ No newline at end of file diff --git a/swiper/core/grab-cursor/unsetGrabCursor.js b/swiper/core/grab-cursor/unsetGrabCursor.js new file mode 100644 index 0000000..923e23d --- /dev/null +++ b/swiper/core/grab-cursor/unsetGrabCursor.js @@ -0,0 +1,9 @@ +export default function unsetGrabCursor() { + const swiper = this; + + if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; +} \ No newline at end of file diff --git a/swiper/core/images/index.js b/swiper/core/images/index.js new file mode 100644 index 0000000..ee01026 --- /dev/null +++ b/swiper/core/images/index.js @@ -0,0 +1,6 @@ +import loadImage from './loadImage.js'; +import preloadImages from './preloadImages.js'; +export default { + loadImage, + preloadImages +}; \ No newline at end of file diff --git a/swiper/core/images/loadImage.js b/swiper/core/images/loadImage.js new file mode 100644 index 0000000..0811b4c --- /dev/null +++ b/swiper/core/images/loadImage.js @@ -0,0 +1,37 @@ +import { getWindow } from 'ssr-window'; +import $ from '../../shared/dom.js'; +export default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { + const window = getWindow(); + let image; + + function onReady() { + if (callback) callback(); + } + + const isPicture = $(imageEl).parent('picture')[0]; + + if (!isPicture && (!imageEl.complete || !checkForComplete)) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + + if (sizes) { + image.sizes = sizes; + } + + if (srcset) { + image.srcset = srcset; + } + + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} \ No newline at end of file diff --git a/swiper/core/images/preloadImages.js b/swiper/core/images/preloadImages.js new file mode 100644 index 0000000..464d9a7 --- /dev/null +++ b/swiper/core/images/preloadImages.js @@ -0,0 +1,19 @@ +export default function preloadImages() { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); + } +} \ No newline at end of file diff --git a/swiper/core/loop/index.js b/swiper/core/loop/index.js new file mode 100644 index 0000000..428da41 --- /dev/null +++ b/swiper/core/loop/index.js @@ -0,0 +1,8 @@ +import loopCreate from './loopCreate.js'; +import loopFix from './loopFix.js'; +import loopDestroy from './loopDestroy.js'; +export default { + loopCreate, + loopFix, + loopDestroy +}; \ No newline at end of file diff --git a/swiper/core/loop/loopCreate.js b/swiper/core/loop/loopCreate.js new file mode 100644 index 0000000..77fb3cf --- /dev/null +++ b/swiper/core/loop/loopCreate.js @@ -0,0 +1,59 @@ +import { getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +export default function loopCreate() { + const swiper = this; + const document = getDocument(); + const { + params, + $wrapperEl + } = swiper; // Remove duplicated slides + + const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl; + $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + let slides = $selector.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; + + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $selector.append(blankNode); + } + + slides = $selector.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((el, index) => { + const slide = $(el); + + if (index < swiper.loopedSlides) { + appendSlides.push(el); + } + + if (index < slides.length && index >= slides.length - swiper.loopedSlides) { + prependSlides.push(el); + } + + slide.attr('data-swiper-slide-index', index); + }); + + for (let i = 0; i < appendSlides.length; i += 1) { + $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} \ No newline at end of file diff --git a/swiper/core/loop/loopDestroy.js b/swiper/core/loop/loopDestroy.js new file mode 100644 index 0000000..4c77968 --- /dev/null +++ b/swiper/core/loop/loopDestroy.js @@ -0,0 +1,10 @@ +export default function loopDestroy() { + const swiper = this; + const { + $wrapperEl, + params, + slides + } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} \ No newline at end of file diff --git a/swiper/core/loop/loopFix.js b/swiper/core/loop/loopFix.js new file mode 100644 index 0000000..16f332e --- /dev/null +++ b/swiper/core/loop/loopFix.js @@ -0,0 +1,41 @@ +export default function loopFix() { + const swiper = this; + swiper.emit('beforeLoopFix'); + const { + activeIndex, + slides, + loopedSlides, + allowSlidePrev, + allowSlideNext, + snapGrid, + rtlTranslate: rtl + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding + + if (activeIndex < loopedSlides) { + newIndex = slides.length - loopedSlides * 3 + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); +} \ No newline at end of file diff --git a/swiper/core/moduleExtendParams.js b/swiper/core/moduleExtendParams.js new file mode 100644 index 0000000..777409e --- /dev/null +++ b/swiper/core/moduleExtendParams.js @@ -0,0 +1,42 @@ +import { extend } from '../shared/utils.js'; +export default function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + + if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { + params[moduleParamName] = { + auto: true + }; + } + + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} \ No newline at end of file diff --git a/swiper/core/modules/observer/observer.js b/swiper/core/modules/observer/observer.js new file mode 100644 index 0000000..c1cd14e --- /dev/null +++ b/swiper/core/modules/observer/observer.js @@ -0,0 +1,80 @@ +import { getWindow } from 'ssr-window'; +export default function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + + const init = () => { + if (!swiper.params.observer) return; + + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } // Observe container + + + attach(swiper.$el[0], { + childList: swiper.params.observeSlideChildren + }); // Observe wrapper + + attach(swiper.$wrapperEl[0], { + attributes: false + }); + }; + + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} \ No newline at end of file diff --git a/swiper/core/modules/resize/resize.js b/swiper/core/modules/resize/resize.js new file mode 100644 index 0000000..3cc9bba --- /dev/null +++ b/swiper/core/modules/resize/resize.js @@ -0,0 +1,77 @@ +import { getWindow } from 'ssr-window'; +export default function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} \ No newline at end of file diff --git a/swiper/core/slide/index.js b/swiper/core/slide/index.js new file mode 100644 index 0000000..105c438 --- /dev/null +++ b/swiper/core/slide/index.js @@ -0,0 +1,16 @@ +import slideTo from './slideTo.js'; +import slideToLoop from './slideToLoop.js'; +import slideNext from './slideNext.js'; +import slidePrev from './slidePrev.js'; +import slideReset from './slideReset.js'; +import slideToClosest from './slideToClosest.js'; +import slideToClickedSlide from './slideToClickedSlide.js'; +export default { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; \ No newline at end of file diff --git a/swiper/core/slide/slideNext.js b/swiper/core/slide/slideNext.js new file mode 100644 index 0000000..163b543 --- /dev/null +++ b/swiper/core/slide/slideNext.js @@ -0,0 +1,38 @@ +/* eslint no-unused-vars: "off" */ +export default function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + animating, + enabled, + params + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} \ No newline at end of file diff --git a/swiper/core/slide/slidePrev.js b/swiper/core/slide/slidePrev.js new file mode 100644 index 0000000..1699074 --- /dev/null +++ b/swiper/core/slide/slidePrev.js @@ -0,0 +1,72 @@ +/* eslint no-unused-vars: "off" */ +export default function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params, + animating, + snapGrid, + slidesGrid, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return swiper; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + + let prevIndex = 0; + + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } + + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} \ No newline at end of file diff --git a/swiper/core/slide/slideReset.js b/swiper/core/slide/slideReset.js new file mode 100644 index 0000000..b8a667a --- /dev/null +++ b/swiper/core/slide/slideReset.js @@ -0,0 +1,13 @@ +/* eslint no-unused-vars: "off" */ +export default function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} \ No newline at end of file diff --git a/swiper/core/slide/slideTo.js b/swiper/core/slide/slideTo.js new file mode 100644 index 0000000..7c45db6 --- /dev/null +++ b/swiper/core/slide/slideTo.js @@ -0,0 +1,193 @@ +import { animateCSSModeScroll } from '../../shared/utils.js'; +export default function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index !== 'number' && typeof index !== 'string') { + throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; // Update progress + + swiper.updateProgress(translate); // Normalize slideIndex + + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } // Directions locks + + + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index + + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); // Update Height + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + swiper.updateSlidesClasses(); + + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + + return false; + } + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._swiperImmediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + + return true; + } + + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + + return true; +} \ No newline at end of file diff --git a/swiper/core/slide/slideToClickedSlide.js b/swiper/core/slide/slideToClickedSlide.js new file mode 100644 index 0000000..cda7da8 --- /dev/null +++ b/swiper/core/slide/slideToClickedSlide.js @@ -0,0 +1,39 @@ +import $ from '../../shared/dom.js'; +import { nextTick } from '../../shared/utils.js'; +export default function slideToClickedSlide() { + const swiper = this; + const { + params, + $wrapperEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} \ No newline at end of file diff --git a/swiper/core/slide/slideToClosest.js b/swiper/core/slide/slideToClosest.js new file mode 100644 index 0000000..d55b1b9 --- /dev/null +++ b/swiper/core/slide/slideToClosest.js @@ -0,0 +1,44 @@ +/* eslint no-unused-vars: "off" */ +export default function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (threshold === void 0) { + threshold = 0.5; + } + + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} \ No newline at end of file diff --git a/swiper/core/slide/slideToLoop.js b/swiper/core/slide/slideToLoop.js new file mode 100644 index 0000000..0157e48 --- /dev/null +++ b/swiper/core/slide/slideToLoop.js @@ -0,0 +1,45 @@ +export default function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let newIndex = index; + + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} \ No newline at end of file diff --git a/swiper/core/transition/index.js b/swiper/core/transition/index.js new file mode 100644 index 0000000..212e4ed --- /dev/null +++ b/swiper/core/transition/index.js @@ -0,0 +1,8 @@ +import setTransition from './setTransition.js'; +import transitionStart from './transitionStart.js'; +import transitionEnd from './transitionEnd.js'; +export default { + setTransition, + transitionStart, + transitionEnd +}; \ No newline at end of file diff --git a/swiper/core/transition/setTransition.js b/swiper/core/transition/setTransition.js new file mode 100644 index 0000000..df4afeb --- /dev/null +++ b/swiper/core/transition/setTransition.js @@ -0,0 +1,9 @@ +export default function setTransition(duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} \ No newline at end of file diff --git a/swiper/core/transition/transitionEmit.js b/swiper/core/transition/transitionEmit.js new file mode 100644 index 0000000..f4c843f --- /dev/null +++ b/swiper/core/transition/transitionEmit.js @@ -0,0 +1,34 @@ +export default function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + + swiper.emit(`transition${step}`); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + + swiper.emit(`slideChangeTransition${step}`); + + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} \ No newline at end of file diff --git a/swiper/core/transition/transitionEnd.js b/swiper/core/transition/transitionEnd.js new file mode 100644 index 0000000..17b6b71 --- /dev/null +++ b/swiper/core/transition/transitionEnd.js @@ -0,0 +1,20 @@ +import transitionEmit from './transitionEmit.js'; +export default function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} \ No newline at end of file diff --git a/swiper/core/transition/transitionStart.js b/swiper/core/transition/transitionStart.js new file mode 100644 index 0000000..6d7aeb8 --- /dev/null +++ b/swiper/core/transition/transitionStart.js @@ -0,0 +1,23 @@ +import transitionEmit from './transitionEmit.js'; +export default function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} \ No newline at end of file diff --git a/swiper/core/translate/getTranslate.js b/swiper/core/translate/getTranslate.js new file mode 100644 index 0000000..38a7c10 --- /dev/null +++ b/swiper/core/translate/getTranslate.js @@ -0,0 +1,26 @@ +import { getTranslate } from '../../shared/utils.js'; +export default function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + $wrapperEl + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + + if (params.cssMode) { + return translate; + } + + let currentTranslate = getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} \ No newline at end of file diff --git a/swiper/core/translate/index.js b/swiper/core/translate/index.js new file mode 100644 index 0000000..5e962ec --- /dev/null +++ b/swiper/core/translate/index.js @@ -0,0 +1,12 @@ +import getTranslate from './getTranslate.js'; +import setTranslate from './setTranslate.js'; +import minTranslate from './minTranslate.js'; +import maxTranslate from './maxTranslate.js'; +import translateTo from './translateTo.js'; +export default { + getTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; \ No newline at end of file diff --git a/swiper/core/translate/maxTranslate.js b/swiper/core/translate/maxTranslate.js new file mode 100644 index 0000000..4f2bbb9 --- /dev/null +++ b/swiper/core/translate/maxTranslate.js @@ -0,0 +1,3 @@ +export default function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} \ No newline at end of file diff --git a/swiper/core/translate/minTranslate.js b/swiper/core/translate/minTranslate.js new file mode 100644 index 0000000..db06141 --- /dev/null +++ b/swiper/core/translate/minTranslate.js @@ -0,0 +1,3 @@ +export default function minTranslate() { + return -this.snapGrid[0]; +} \ No newline at end of file diff --git a/swiper/core/translate/setTranslate.js b/swiper/core/translate/setTranslate.js new file mode 100644 index 0000000..c4c1fb5 --- /dev/null +++ b/swiper/core/translate/setTranslate.js @@ -0,0 +1,48 @@ +export default function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + $wrapperEl, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} \ No newline at end of file diff --git a/swiper/core/translate/translateTo.js b/swiper/core/translate/translateTo.js new file mode 100644 index 0000000..9bc8bd9 --- /dev/null +++ b/swiper/core/translate/translateTo.js @@ -0,0 +1,101 @@ +import { animateCSSModeScroll } from '../../shared/utils.js'; +export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (translateBounds === void 0) { + translateBounds = true; + } + + const swiper = this; + const { + params, + wrapperEl + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress + + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + + if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} \ No newline at end of file diff --git a/swiper/core/update/index.js b/swiper/core/update/index.js new file mode 100644 index 0000000..3191727 --- /dev/null +++ b/swiper/core/update/index.js @@ -0,0 +1,20 @@ +import updateSize from './updateSize.js'; +import updateSlides from './updateSlides.js'; +import updateAutoHeight from './updateAutoHeight.js'; +import updateSlidesOffset from './updateSlidesOffset.js'; +import updateSlidesProgress from './updateSlidesProgress.js'; +import updateProgress from './updateProgress.js'; +import updateSlidesClasses from './updateSlidesClasses.js'; +import updateActiveIndex from './updateActiveIndex.js'; +import updateClickedSlide from './updateClickedSlide.js'; +export default { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; \ No newline at end of file diff --git a/swiper/core/update/updateActiveIndex.js b/swiper/core/update/updateActiveIndex.js new file mode 100644 index 0000000..3f5b7f5 --- /dev/null +++ b/swiper/core/update/updateActiveIndex.js @@ -0,0 +1,70 @@ +export default function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } // Normalize slideIndex + + + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + + return; + } // Get real index + + + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + Object.assign(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} \ No newline at end of file diff --git a/swiper/core/update/updateAutoHeight.js b/swiper/core/update/updateAutoHeight.js new file mode 100644 index 0000000..8637797 --- /dev/null +++ b/swiper/core/update/updateAutoHeight.js @@ -0,0 +1,50 @@ +import $ from '../../shared/dom.js'; +export default function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; + } + + return swiper.slides.eq(index)[0]; + }; // Find slides currently in view + + + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || $([])).each(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } // Find new height from highest slide in view + + + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } // Update Height + + + if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`); +} \ No newline at end of file diff --git a/swiper/core/update/updateClickedSlide.js b/swiper/core/update/updateClickedSlide.js new file mode 100644 index 0000000..048b4c7 --- /dev/null +++ b/swiper/core/update/updateClickedSlide.js @@ -0,0 +1,36 @@ +import $ from '../../shared/dom.js'; +export default function updateClickedSlide(e) { + const swiper = this; + const params = swiper.params; + const slide = $(e).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + let slideIndex; + + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} \ No newline at end of file diff --git a/swiper/core/update/updateProgress.js b/swiper/core/update/updateProgress.js new file mode 100644 index 0000000..4c06eac --- /dev/null +++ b/swiper/core/update/updateProgress.js @@ -0,0 +1,50 @@ +export default function updateProgress(translate) { + const swiper = this; + + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line + + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + + Object.assign(swiper, { + progress, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} \ No newline at end of file diff --git a/swiper/core/update/updateSize.js b/swiper/core/update/updateSize.js new file mode 100644 index 0000000..2e24aa8 --- /dev/null +++ b/swiper/core/update/updateSize.js @@ -0,0 +1,33 @@ +export default function updateSize() { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } // Subtract paddings + + + width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); + height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} \ No newline at end of file diff --git a/swiper/core/update/updateSlides.js b/swiper/core/update/updateSlides.js new file mode 100644 index 0000000..792e314 --- /dev/null +++ b/swiper/core/update/updateSlides.js @@ -0,0 +1,320 @@ +import { setCSSProperty } from '../../shared/utils.js'; +export default function updateSlides() { + const swiper = this; + + function getDirectionLabel(property) { + if (swiper.isHorizontal()) { + return property; + } // prettier-ignore + + + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); + } + + const params = swiper.params; + const { + $wrapperEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + + if (typeof swiperSize === 'undefined') { + return; + } + + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } + + swiper.virtualSize = -spaceBetween; // reset margins + + if (rtl) slides.css({ + marginLeft: '', + marginBottom: '', + marginTop: '' + });else slides.css({ + marginRight: '', + marginBottom: '', + marginTop: '' + }); // reset cssMode offsets + + if (params.centeredSlides && params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); + } + + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + + if (gridEnabled) { + swiper.grid.initSlides(slidesLength); + } // Calc slides + + + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); + } + + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[getDirectionLabel('width')] = ``; + } + + const slideStyles = getComputedStyle(slide[0]); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + + if (currentTransform) { + slide[0].style.transform = 'none'; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide[0]; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; + } + } + + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + + slidesSizesGrid.push(slideSize); + + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ + width: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (params.setWrapperSize) { + $wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); + } // Remove last grid elements depending on width + + + if (!params.centeredSlides) { + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + + snapGrid = newSlidesGrid; + + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode) return true; + + if (slideIndex === slides.length - 1) { + return false; + } + + return true; + }).css({ + [key]: `${spaceBetween}px` + }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass); + + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.$el.removeClass(backFaceHiddenClass); + } + } +} \ No newline at end of file diff --git a/swiper/core/update/updateSlidesClasses.js b/swiper/core/update/updateSlidesClasses.js new file mode 100644 index 0000000..06166d3 --- /dev/null +++ b/swiper/core/update/updateSlidesClasses.js @@ -0,0 +1,64 @@ +export default function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + $wrapperEl, + activeIndex, + realIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + let activeSlide; + + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } // Active classes + + + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } + } // Next Slide + + + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } // Prev Slide + + + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } + + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } + } + + swiper.emitSlidesClasses(); +} \ No newline at end of file diff --git a/swiper/core/update/updateSlidesOffset.js b/swiper/core/update/updateSlidesOffset.js new file mode 100644 index 0000000..8856e95 --- /dev/null +++ b/swiper/core/update/updateSlidesOffset.js @@ -0,0 +1,8 @@ +export default function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} \ No newline at end of file diff --git a/swiper/core/update/updateSlidesProgress.js b/swiper/core/update/updateSlidesProgress.js new file mode 100644 index 0000000..af8dece --- /dev/null +++ b/swiper/core/update/updateSlidesProgress.js @@ -0,0 +1,48 @@ +import $ from '../../shared/dom.js'; +export default function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; // Visible Slides + + slides.removeClass(params.slideVisibleClass); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + + swiper.visibleSlides = $(swiper.visibleSlides); +} \ No newline at end of file diff --git a/swiper/demo/010-default.html b/swiper/demo/010-default.html new file mode 100644 index 0000000..5b313b5 --- /dev/null +++ b/swiper/demo/010-default.html @@ -0,0 +1,91 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+ + + + + + + + diff --git a/swiper/demo/020-navigation.html b/swiper/demo/020-navigation.html new file mode 100644 index 0000000..168183e --- /dev/null +++ b/swiper/demo/020-navigation.html @@ -0,0 +1,98 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/030-pagination.html b/swiper/demo/030-pagination.html new file mode 100644 index 0000000..1bdd840 --- /dev/null +++ b/swiper/demo/030-pagination.html @@ -0,0 +1,96 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/040-pagination-dynamic.html b/swiper/demo/040-pagination-dynamic.html new file mode 100644 index 0000000..8f389fe --- /dev/null +++ b/swiper/demo/040-pagination-dynamic.html @@ -0,0 +1,97 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/050-pagination-progress.html b/swiper/demo/050-pagination-progress.html new file mode 100644 index 0000000..430dce4 --- /dev/null +++ b/swiper/demo/050-pagination-progress.html @@ -0,0 +1,103 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/060-pagination-fraction.html b/swiper/demo/060-pagination-fraction.html new file mode 100644 index 0000000..12be30f --- /dev/null +++ b/swiper/demo/060-pagination-fraction.html @@ -0,0 +1,103 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/070-pagination-custom.html b/swiper/demo/070-pagination-custom.html new file mode 100644 index 0000000..479cc57 --- /dev/null +++ b/swiper/demo/070-pagination-custom.html @@ -0,0 +1,116 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/080-scrollbar.html b/swiper/demo/080-scrollbar.html new file mode 100644 index 0000000..62e9de3 --- /dev/null +++ b/swiper/demo/080-scrollbar.html @@ -0,0 +1,97 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/090-vertical.html b/swiper/demo/090-vertical.html new file mode 100644 index 0000000..f2ca181 --- /dev/null +++ b/swiper/demo/090-vertical.html @@ -0,0 +1,98 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/100-space-between.html b/swiper/demo/100-space-between.html new file mode 100644 index 0000000..6bd7563 --- /dev/null +++ b/swiper/demo/100-space-between.html @@ -0,0 +1,98 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/110-slides-per-view.html b/swiper/demo/110-slides-per-view.html new file mode 100644 index 0000000..c470ab2 --- /dev/null +++ b/swiper/demo/110-slides-per-view.html @@ -0,0 +1,99 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/120-slides-per-view-auto.html b/swiper/demo/120-slides-per-view-auto.html new file mode 100644 index 0000000..fceab9e --- /dev/null +++ b/swiper/demo/120-slides-per-view-auto.html @@ -0,0 +1,111 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/130-centered.html b/swiper/demo/130-centered.html new file mode 100644 index 0000000..48baea2 --- /dev/null +++ b/swiper/demo/130-centered.html @@ -0,0 +1,100 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/140-centered-auto.html b/swiper/demo/140-centered-auto.html new file mode 100644 index 0000000..40b3e7f --- /dev/null +++ b/swiper/demo/140-centered-auto.html @@ -0,0 +1,112 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/145-css-mode.html b/swiper/demo/145-css-mode.html new file mode 100644 index 0000000..98a0010 --- /dev/null +++ b/swiper/demo/145-css-mode.html @@ -0,0 +1,105 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/150-freemode.html b/swiper/demo/150-freemode.html new file mode 100644 index 0000000..2c86610 --- /dev/null +++ b/swiper/demo/150-freemode.html @@ -0,0 +1,100 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/160-scroll-container.html b/swiper/demo/160-scroll-container.html new file mode 100644 index 0000000..2f39d5c --- /dev/null +++ b/swiper/demo/160-scroll-container.html @@ -0,0 +1,199 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
+

Scroll Container

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In luctus, + ex eu sagittis faucibus, ligula ipsum sagittis magna, et imperdiet + dolor lectus eu libero. Vestibulum venenatis eget turpis sed + faucibus. Maecenas in ullamcorper orci, eu ullamcorper sem. Etiam + elit ante, luctus non ante sit amet, sodales vulputate odio. Aenean + tristique nisl tellus, sit amet fringilla nisl volutpat cursus. + Quisque dignissim lectus ac nunc consectetur mattis. Proin vel + hendrerit ipsum, et lobortis dolor. Vestibulum convallis, nibh et + tincidunt tristique, nisl risus facilisis lectus, ut interdum orci + nisl ac nunc. Cras et aliquam felis. Quisque vel ipsum at elit + sodales posuere eget non est. Fusce convallis vestibulum dolor non + volutpat. Vivamus vestibulum quam ut ultricies pretium. +

+

+ Suspendisse rhoncus fringilla nisl. Mauris eget lorem ac urna + consectetur convallis non vel mi. Donec libero dolor, volutpat ut + urna sit amet, aliquet molestie purus. Phasellus faucibus, leo vel + scelerisque lobortis, ipsum leo sollicitudin metus, eget sagittis + ante orci eu ipsum. Nulla ac mauris eu risus sagittis scelerisque + iaculis bibendum mauris. Cras ut egestas orci. Cras odio risus, + sagittis ut nunc vitae, aliquam consectetur purus. Vivamus ornare + nunc vel tellus facilisis, quis dictum elit tincidunt. Donec + accumsan nisi at laoreet sodales. Cras at ullamcorper massa. + Maecenas at facilisis ex. Nam mollis dignissim purus id efficitur. +

+

+ Curabitur eget aliquam erat. Curabitur a neque vitae purus volutpat + elementum. Vivamus quis vestibulum leo, efficitur ullamcorper velit. + Integer tincidunt finibus metus vel porta. Mauris sed mauris congue, + pretium est nec, malesuada purus. Nulla hendrerit consectetur arcu + et lacinia. Suspendisse augue justo, convallis eget arcu in, pretium + tempor ligula. Nullam vulputate tincidunt est ut ullamcorper. +

+

+ Curabitur sed sodales leo. Nulla facilisi. Etiam condimentum, nisi + id tempor vulputate, nisi justo cursus justo, pellentesque + condimentum diam arcu sit amet leo. Cum sociis natoque penatibus et + magnis dis parturient montes, nascetur ridiculus mus. In placerat + tellus a posuere vehicula. Donec diam massa, efficitur vitae mattis + et, pretium in augue. Fusce iaculis mi quis ante venenatis, sit amet + pellentesque orci aliquam. Vestibulum elementum posuere vehicula. +

+

+ Sed tincidunt diam a massa pharetra faucibus. Praesent condimentum + id arcu nec fringilla. Maecenas faucibus, ante et venenatis + interdum, erat mi eleifend dui, at convallis nisl est nec arcu. Duis + vitae arcu rhoncus, faucibus magna ut, tempus metus. Cras in nibh + sed ipsum consequat rhoncus. Proin fringilla nulla ut augue tempor + fermentum. Nunc hendrerit non nisi vitae finibus. Donec eget ornare + libero. Aliquam auctor erat enim, a semper risus semper at. In ut + dui in metus tincidunt euismod eget et lacus. Aenean et dictum urna, + sed rhoncus lorem. Duis pharetra sagittis odio. Etiam a libero ut + nisi feugiat tincidunt vel vitae turpis. Maecenas vel orci sit amet + lorem hendrerit venenatis sollicitudin ut dui. Quisque rhoncus nibh + in massa pretium scelerisque. +

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In luctus, + ex eu sagittis faucibus, ligula ipsum sagittis magna, et imperdiet + dolor lectus eu libero. Vestibulum venenatis eget turpis sed + faucibus. Maecenas in ullamcorper orci, eu ullamcorper sem. Etiam + elit ante, luctus non ante sit amet, sodales vulputate odio. Aenean + tristique nisl tellus, sit amet fringilla nisl volutpat cursus. + Quisque dignissim lectus ac nunc consectetur mattis. Proin vel + hendrerit ipsum, et lobortis dolor. Vestibulum convallis, nibh et + tincidunt tristique, nisl risus facilisis lectus, ut interdum orci + nisl ac nunc. Cras et aliquam felis. Quisque vel ipsum at elit + sodales posuere eget non est. Fusce convallis vestibulum dolor non + volutpat. Vivamus vestibulum quam ut ultricies pretium. +

+

+ Suspendisse rhoncus fringilla nisl. Mauris eget lorem ac urna + consectetur convallis non vel mi. Donec libero dolor, volutpat ut + urna sit amet, aliquet molestie purus. Phasellus faucibus, leo vel + scelerisque lobortis, ipsum leo sollicitudin metus, eget sagittis + ante orci eu ipsum. Nulla ac mauris eu risus sagittis scelerisque + iaculis bibendum mauris. Cras ut egestas orci. Cras odio risus, + sagittis ut nunc vitae, aliquam consectetur purus. Vivamus ornare + nunc vel tellus facilisis, quis dictum elit tincidunt. Donec + accumsan nisi at laoreet sodales. Cras at ullamcorper massa. + Maecenas at facilisis ex. Nam mollis dignissim purus id efficitur. +

+

+ Curabitur eget aliquam erat. Curabitur a neque vitae purus volutpat + elementum. Vivamus quis vestibulum leo, efficitur ullamcorper velit. + Integer tincidunt finibus metus vel porta. Mauris sed mauris congue, + pretium est nec, malesuada purus. Nulla hendrerit consectetur arcu + et lacinia. Suspendisse augue justo, convallis eget arcu in, pretium + tempor ligula. Nullam vulputate tincidunt est ut ullamcorper. +

+

+ Curabitur sed sodales leo. Nulla facilisi. Etiam condimentum, nisi + id tempor vulputate, nisi justo cursus justo, pellentesque + condimentum diam arcu sit amet leo. Cum sociis natoque penatibus et + magnis dis parturient montes, nascetur ridiculus mus. In placerat + tellus a posuere vehicula. Donec diam massa, efficitur vitae mattis + et, pretium in augue. Fusce iaculis mi quis ante venenatis, sit amet + pellentesque orci aliquam. Vestibulum elementum posuere vehicula. +

+

+ Sed tincidunt diam a massa pharetra faucibus. Praesent condimentum + id arcu nec fringilla. Maecenas faucibus, ante et venenatis + interdum, erat mi eleifend dui, at convallis nisl est nec arcu. Duis + vitae arcu rhoncus, faucibus magna ut, tempus metus. Cras in nibh + sed ipsum consequat rhoncus. Proin fringilla nulla ut augue tempor + fermentum. Nunc hendrerit non nisi vitae finibus. Donec eget ornare + libero. Aliquam auctor erat enim, a semper risus semper at. In ut + dui in metus tincidunt euismod eget et lacus. Aenean et dictum urna, + sed rhoncus lorem. Duis pharetra sagittis odio. Etiam a libero ut + nisi feugiat tincidunt vel vitae turpis. Maecenas vel orci sit amet + lorem hendrerit venenatis sollicitudin ut dui. Quisque rhoncus nibh + in massa pretium scelerisque. +

+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/170-grid.html b/swiper/demo/170-grid.html new file mode 100644 index 0000000..67761e6 --- /dev/null +++ b/swiper/demo/170-grid.html @@ -0,0 +1,98 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/180-nested.html b/swiper/demo/180-nested.html new file mode 100644 index 0000000..aa81dba --- /dev/null +++ b/swiper/demo/180-nested.html @@ -0,0 +1,117 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
Horizontal Slide 1
+
+
+
+
Vertical Slide 1
+
Vertical Slide 2
+
Vertical Slide 3
+
Vertical Slide 4
+
Vertical Slide 5
+
+
+
+
+
Horizontal Slide 3
+
Horizontal Slide 4
+
+
+
+ + + + + + + + diff --git a/swiper/demo/190-grab-cursor.html b/swiper/demo/190-grab-cursor.html new file mode 100644 index 0000000..94b67ca --- /dev/null +++ b/swiper/demo/190-grab-cursor.html @@ -0,0 +1,101 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/200-infinite-loop.html b/swiper/demo/200-infinite-loop.html new file mode 100644 index 0000000..7565b37 --- /dev/null +++ b/swiper/demo/200-infinite-loop.html @@ -0,0 +1,111 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/210-infinite-loop-with-slides-per-group.html b/swiper/demo/210-infinite-loop-with-slides-per-group.html new file mode 100644 index 0000000..c78fe68 --- /dev/null +++ b/swiper/demo/210-infinite-loop-with-slides-per-group.html @@ -0,0 +1,108 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/211-slides-per-group-skip.html b/swiper/demo/211-slides-per-group-skip.html new file mode 100644 index 0000000..4ed6f0f --- /dev/null +++ b/swiper/demo/211-slides-per-group-skip.html @@ -0,0 +1,178 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/220-effect-fade.html b/swiper/demo/220-effect-fade.html new file mode 100644 index 0000000..cbfe6a3 --- /dev/null +++ b/swiper/demo/220-effect-fade.html @@ -0,0 +1,91 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/230-effect-cube.html b/swiper/demo/230-effect-cube.html new file mode 100644 index 0000000..b27b001 --- /dev/null +++ b/swiper/demo/230-effect-cube.html @@ -0,0 +1,95 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + + + + + + + diff --git a/swiper/demo/240-effect-coverflow.html b/swiper/demo/240-effect-coverflow.html new file mode 100644 index 0000000..588017d --- /dev/null +++ b/swiper/demo/240-effect-coverflow.html @@ -0,0 +1,111 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ + + + + + + + diff --git a/swiper/demo/250-effect-flip.html b/swiper/demo/250-effect-flip.html new file mode 100644 index 0000000..5a1e4b8 --- /dev/null +++ b/swiper/demo/250-effect-flip.html @@ -0,0 +1,100 @@ + + + + + + Swiper demo + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/255-effect-cards.html b/swiper/demo/255-effect-cards.html new file mode 100644 index 0000000..6fccceb --- /dev/null +++ b/swiper/demo/255-effect-cards.html @@ -0,0 +1,139 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+ + + + + + + + diff --git a/swiper/demo/257-effect-creative.html b/swiper/demo/257-effect-creative.html new file mode 100644 index 0000000..cad4c5e --- /dev/null +++ b/swiper/demo/257-effect-creative.html @@ -0,0 +1,276 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+ + + + + + + + diff --git a/swiper/demo/260-keyboard-control.html b/swiper/demo/260-keyboard-control.html new file mode 100644 index 0000000..6830aa3 --- /dev/null +++ b/swiper/demo/260-keyboard-control.html @@ -0,0 +1,108 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/270-mousewheel-control.html b/swiper/demo/270-mousewheel-control.html new file mode 100644 index 0000000..ea1c9c5 --- /dev/null +++ b/swiper/demo/270-mousewheel-control.html @@ -0,0 +1,101 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/280-autoplay.html b/swiper/demo/280-autoplay.html new file mode 100644 index 0000000..ea52d47 --- /dev/null +++ b/swiper/demo/280-autoplay.html @@ -0,0 +1,109 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/290-manipulation.html b/swiper/demo/290-manipulation.html new file mode 100644 index 0000000..948a8fd --- /dev/null +++ b/swiper/demo/290-manipulation.html @@ -0,0 +1,168 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
+
+
+
+
+ +

+ + + + +

+ + + + + + + + diff --git a/swiper/demo/300-thumbs-gallery.html b/swiper/demo/300-thumbs-gallery.html new file mode 100644 index 0000000..c201bf1 --- /dev/null +++ b/swiper/demo/300-thumbs-gallery.html @@ -0,0 +1,213 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + diff --git a/swiper/demo/310-thumbs-gallery-loop.html b/swiper/demo/310-thumbs-gallery-loop.html new file mode 100644 index 0000000..d59fed8 --- /dev/null +++ b/swiper/demo/310-thumbs-gallery-loop.html @@ -0,0 +1,215 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + diff --git a/swiper/demo/320-multiple-swipers.html b/swiper/demo/320-multiple-swipers.html new file mode 100644 index 0000000..3b9b8de --- /dev/null +++ b/swiper/demo/320-multiple-swipers.html @@ -0,0 +1,150 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/330-hash-navigation.html b/swiper/demo/330-hash-navigation.html new file mode 100644 index 0000000..9f41661 --- /dev/null +++ b/swiper/demo/330-hash-navigation.html @@ -0,0 +1,107 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/340-history.html b/swiper/demo/340-history.html new file mode 100644 index 0000000..1a05f7c --- /dev/null +++ b/swiper/demo/340-history.html @@ -0,0 +1,107 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/350-rtl.html b/swiper/demo/350-rtl.html new file mode 100644 index 0000000..eb81c9d --- /dev/null +++ b/swiper/demo/350-rtl.html @@ -0,0 +1,103 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/360-parallax.html b/swiper/demo/360-parallax.html new file mode 100644 index 0000000..c5642b3 --- /dev/null +++ b/swiper/demo/360-parallax.html @@ -0,0 +1,160 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
+
+
Slide 1
+
Subtitle
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam + dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla + laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. + Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. + Aliquam hendrerit lorem at elit facilisis rutrum. Ut at + ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, + tincidunt ut libero. Aenean feugiat non eros quis feugiat. +

+
+
+
+
Slide 2
+
Subtitle
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam + dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla + laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. + Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. + Aliquam hendrerit lorem at elit facilisis rutrum. Ut at + ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, + tincidunt ut libero. Aenean feugiat non eros quis feugiat. +

+
+
+
+
Slide 3
+
Subtitle
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam + dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla + laoreet justo vitae porttitor porttitor. Suspendisse in sem justo. + Integer laoreet magna nec elit suscipit, ac laoreet nibh euismod. + Aliquam hendrerit lorem at elit facilisis rutrum. Ut at + ullamcorper velit. Nulla ligula nisi, imperdiet ut lacinia nec, + tincidunt ut libero. Aenean feugiat non eros quis feugiat. +

+
+
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/370-lazy-load-images.html b/swiper/demo/370-lazy-load-images.html new file mode 100644 index 0000000..4e8c5a6 --- /dev/null +++ b/swiper/demo/370-lazy-load-images.html @@ -0,0 +1,174 @@ + + + + + + Swiper demo + + + + + + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/380-responsive-breakpoints.html b/swiper/demo/380-responsive-breakpoints.html new file mode 100644 index 0000000..481f91f --- /dev/null +++ b/swiper/demo/380-responsive-breakpoints.html @@ -0,0 +1,113 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/381-ratio-breakpoints.html b/swiper/demo/381-ratio-breakpoints.html new file mode 100644 index 0000000..bff00ab --- /dev/null +++ b/swiper/demo/381-ratio-breakpoints.html @@ -0,0 +1,117 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+ + + + + + + + diff --git a/swiper/demo/390-autoheight.html b/swiper/demo/390-autoheight.html new file mode 100644 index 0000000..a816e70 --- /dev/null +++ b/swiper/demo/390-autoheight.html @@ -0,0 +1,94 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/400-zoom.html b/swiper/demo/400-zoom.html new file mode 100644 index 0000000..354133d --- /dev/null +++ b/swiper/demo/400-zoom.html @@ -0,0 +1,125 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/410-virtual-slides.html b/swiper/demo/410-virtual-slides.html new file mode 100644 index 0000000..e395c87 --- /dev/null +++ b/swiper/demo/410-virtual-slides.html @@ -0,0 +1,155 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+ +
+ +
+
+
+

+ Prepend 2 Slides + Slide 1 + Slide 250 + Slide 500 + Append Slide +

+ + + + + + + + diff --git a/swiper/demo/420-custom-plugin.html b/swiper/demo/420-custom-plugin.html new file mode 100644 index 0000000..ff776ac --- /dev/null +++ b/swiper/demo/420-custom-plugin.html @@ -0,0 +1,174 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
Slide 10
+
+ +
+ +
+
+
+ + + + + + + + + + diff --git a/swiper/demo/430-slideable-menu.html b/swiper/demo/430-slideable-menu.html new file mode 100644 index 0000000..1fbeef1 --- /dev/null +++ b/swiper/demo/430-slideable-menu.html @@ -0,0 +1,215 @@ + + + + + Swiper demo + + + + + + + + + + + +
+
+ +
+ + Content slide +
+
+
+ + + + + + + + diff --git a/swiper/demo/440-change-direction.html b/swiper/demo/440-change-direction.html new file mode 100644 index 0000000..d947fd0 --- /dev/null +++ b/swiper/demo/440-change-direction.html @@ -0,0 +1,115 @@ + + + + + Swiper demo + + + + + + + + + + +
+
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
Resize me!
+
+
+
+
+ + + + + + + + diff --git a/swiper/demo/450-watchslidesvisibility.html b/swiper/demo/450-watchslidesvisibility.html new file mode 100644 index 0000000..c7b31b9 --- /dev/null +++ b/swiper/demo/450-watchslidesvisibility.html @@ -0,0 +1,96 @@ + + + + + Swiper demo + + + + + + + + + + + +

+ Slider5 is visible when you slide to 2,3, or 4, and slider5 has + "swiper-slide-visible" className +

+
+
+
+
Slide 1
+
Slide 2
+
Slide 3
+
Slide 4
+
Slide 5
+
Slide 6
+
Slide 7
+
Slide 8
+
Slide 9
+
+
+ + + + + + + + diff --git a/swiper/demo/images/nature-1.jpg b/swiper/demo/images/nature-1.jpg new file mode 100644 index 0000000..0ad3893 Binary files /dev/null and b/swiper/demo/images/nature-1.jpg differ diff --git a/swiper/demo/images/nature-10.jpg b/swiper/demo/images/nature-10.jpg new file mode 100644 index 0000000..f73e987 Binary files /dev/null and b/swiper/demo/images/nature-10.jpg differ diff --git a/swiper/demo/images/nature-2.jpg b/swiper/demo/images/nature-2.jpg new file mode 100644 index 0000000..e698f66 Binary files /dev/null and b/swiper/demo/images/nature-2.jpg differ diff --git a/swiper/demo/images/nature-3.jpg b/swiper/demo/images/nature-3.jpg new file mode 100644 index 0000000..980b98f Binary files /dev/null and b/swiper/demo/images/nature-3.jpg differ diff --git a/swiper/demo/images/nature-4.jpg b/swiper/demo/images/nature-4.jpg new file mode 100644 index 0000000..82d69c4 Binary files /dev/null and b/swiper/demo/images/nature-4.jpg differ diff --git a/swiper/demo/images/nature-5.jpg b/swiper/demo/images/nature-5.jpg new file mode 100644 index 0000000..c4c5d2c Binary files /dev/null and b/swiper/demo/images/nature-5.jpg differ diff --git a/swiper/demo/images/nature-6.jpg b/swiper/demo/images/nature-6.jpg new file mode 100644 index 0000000..4d49ddf Binary files /dev/null and b/swiper/demo/images/nature-6.jpg differ diff --git a/swiper/demo/images/nature-7.jpg b/swiper/demo/images/nature-7.jpg new file mode 100644 index 0000000..9f0407a Binary files /dev/null and b/swiper/demo/images/nature-7.jpg differ diff --git a/swiper/demo/images/nature-8.jpg b/swiper/demo/images/nature-8.jpg new file mode 100644 index 0000000..2e5c89b Binary files /dev/null and b/swiper/demo/images/nature-8.jpg differ diff --git a/swiper/demo/images/nature-9.jpg b/swiper/demo/images/nature-9.jpg new file mode 100644 index 0000000..ce4cc82 Binary files /dev/null and b/swiper/demo/images/nature-9.jpg differ diff --git a/swiper/modules/a11y/a11y.js b/swiper/modules/a11y/a11y.js new file mode 100644 index 0000000..0b112dd --- /dev/null +++ b/swiper/modules/a11y/a11y.js @@ -0,0 +1,326 @@ +import classesToSelector from '../../shared/classes-to-selector.js'; +import $ from '../../shared/dom.js'; +export default function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + let liveRegion = null; + + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + } + + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + + const randomChar = () => Math.round(16 * Math.random()).toString(16); + + return 'x'.repeat(size).replace(/x/g, randomChar); + } + + function makeElFocusable($el) { + $el.attr('tabIndex', '0'); + } + + function makeElNotFocusable($el) { + $el.attr('tabIndex', '-1'); + } + + function addElRole($el, role) { + $el.attr('role', role); + } + + function addElRoleDescription($el, description) { + $el.attr('aria-roledescription', description); + } + + function addElControls($el, controls) { + $el.attr('aria-controls', controls); + } + + function addElLabel($el, label) { + $el.attr('aria-label', label); + } + + function addElId($el, id) { + $el.attr('id', id); + } + + function addElLive($el, live) { + $el.attr('aria-live', live); + } + + function disableEl($el) { + $el.attr('aria-disabled', true); + } + + function enableEl($el) { + $el.attr('aria-disabled', false); + } + + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const $targetEl = $(e.target); + + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + + if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { + $targetEl[0].click(); + } + } + + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + disableEl($prevEl); + makeElNotFocusable($prevEl); + } else { + enableEl($prevEl); + makeElFocusable($prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + disableEl($nextEl); + makeElNotFocusable($nextEl); + } else { + enableEl($nextEl); + makeElFocusable($nextEl); + } + } + } + + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.each(bulletEl => { + const $bulletEl = $(bulletEl); + + if (swiper.params.pagination.clickable) { + makeElFocusable($bulletEl); + + if (!swiper.params.pagination.renderBullet) { + addElRole($bulletEl, 'button'); + addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + } + } + + if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) { + $bulletEl.attr('aria-current', 'true'); + } else { + $bulletEl.removeAttr('aria-current'); + } + }); + } + + const initNavEl = ($el, wrapperId, message) => { + makeElFocusable($el); + + if ($el[0].tagName !== 'BUTTON') { + addElRole($el, 'button'); + $el.on('keydown', onEnterOrSpaceKey); + } + + addElLabel($el, message); + addElControls($el, wrapperId); + }; + + const handleFocus = e => { + const slideEl = e.target.closest(`.${swiper.params.slideClass}`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + + const initSlides = () => { + const params = swiper.params.a11y; + + if (params.itemRoleDescriptionMessage) { + addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); + } + + if (params.slideRole) { + addElRole($(swiper.slides), params.slideRole); + } + + const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; + + if (params.slideLabelMessage) { + swiper.slides.each((slideEl, index) => { + const $slideEl = $(slideEl); + const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel($slideEl, ariaLabelMessage); + }); + } + }; + + const init = () => { + const params = swiper.params.a11y; + swiper.$el.append(liveRegion); // Container + + const $containerEl = swiper.$el; + + if (params.containerRoleDescriptionMessage) { + addElRoleDescription($containerEl, params.containerRoleDescriptionMessage); + } + + if (params.containerMessage) { + addElLabel($containerEl, params.containerMessage); + } // Wrapper + + + const $wrapperEl = swiper.$wrapperEl; + const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId($wrapperEl, wrapperId); + addElLive($wrapperEl, live); // Slide + + initSlides(); // Navigation + + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl && $nextEl.length) { + initNavEl($nextEl, wrapperId, params.nextSlideMessage); + } + + if ($prevEl && $prevEl.length) { + initNavEl($prevEl, wrapperId, params.prevSlideMessage); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.on('focus', handleFocus, true); + }; + + function destroy() { + if (liveRegion && liveRegion.length > 0) liveRegion.remove(); + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl) { + $nextEl.off('keydown', onEnterOrSpaceKey); + } + + if ($prevEl) { + $prevEl.off('keydown', onEnterOrSpaceKey); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.off('focus', handleFocus, true); + } + + on('beforeInit', () => { + liveRegion = $(``); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} \ No newline at end of file diff --git a/swiper/modules/a11y/a11y.less b/swiper/modules/a11y/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/swiper/modules/a11y/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/swiper/modules/a11y/a11y.min.css b/swiper/modules/a11y/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/swiper/modules/a11y/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/swiper/modules/a11y/a11y.scss b/swiper/modules/a11y/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/swiper/modules/a11y/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/swiper/modules/autoplay/autoplay.js b/swiper/modules/autoplay/autoplay.js new file mode 100644 index 0000000..7e0ead5 --- /dev/null +++ b/swiper/modules/autoplay/autoplay.js @@ -0,0 +1,225 @@ +/* eslint no-underscore-dangle: "off" */ + +/* eslint no-use-before-define: "off" */ +import { getDocument } from 'ssr-window'; +import { nextTick } from '../../shared/utils.js'; +export default function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + let timeout; + swiper.autoplay = { + running: false, + paused: false + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + + function run() { + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + + clearTimeout(timeout); + timeout = nextTick(() => { + let autoplayResult; + + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isBeginning) { + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isEnd) { + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + + if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { + run(); + } + }, delay); + } + + function start() { + if (typeof timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + emit('autoplayStart'); + run(); + return true; + } + + function stop() { + if (!swiper.autoplay.running) return false; + if (typeof timeout === 'undefined') return false; + + if (timeout) { + clearTimeout(timeout); + timeout = undefined; + } + + swiper.autoplay.running = false; + emit('autoplayStop'); + return true; + } + + function pause(speed) { + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (timeout) clearTimeout(timeout); + swiper.autoplay.paused = true; + + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + run(); + } else { + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); + }); + } + } + + function onVisibilityChange() { + const document = getDocument(); + + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + pause(); + } + + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + run(); + swiper.autoplay.paused = false; + } + } + + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== swiper.$wrapperEl[0]) return; + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + swiper.autoplay.paused = false; + + if (!swiper.autoplay.running) { + stop(); + } else { + run(); + } + } + + function onMouseEnter() { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + emit('autoplayPause'); + pause(); + } + + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + } + + function onMouseLeave() { + if (swiper.params.autoplay.disableOnInteraction) { + return; + } + + swiper.autoplay.paused = false; + emit('autoplayResume'); + run(); + } + + function attachMouseEvents() { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.$el.on('mouseenter', onMouseEnter); + swiper.$el.on('mouseleave', onMouseLeave); + } + } + + function detachMouseEvents() { + swiper.$el.off('mouseenter', onMouseEnter); + swiper.$el.off('mouseleave', onMouseLeave); + } + + on('init', () => { + if (swiper.params.autoplay.enabled) { + start(); + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + attachMouseEvents(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + stop(); + } + } + }); + on('sliderFirstMove', () => { + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + pause(); + } + } + }); + on('touchEnd', () => { + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + run(); + } + }); + on('destroy', () => { + detachMouseEvents(); + + if (swiper.autoplay.running) { + stop(); + } + + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }); + Object.assign(swiper.autoplay, { + pause, + run, + start, + stop + }); +} \ No newline at end of file diff --git a/swiper/modules/autoplay/autoplay.less b/swiper/modules/autoplay/autoplay.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/autoplay/autoplay.min.css b/swiper/modules/autoplay/autoplay.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/autoplay/autoplay.scss b/swiper/modules/autoplay/autoplay.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/controller/controller.js b/swiper/modules/controller/controller.js new file mode 100644 index 0000000..14b60f0 --- /dev/null +++ b/swiper/modules/controller/controller.js @@ -0,0 +1,192 @@ +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ +import { nextTick } from '../../shared/utils.js'; +export default function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + + } + }); + swiper.controller = { + control: undefined + }; + + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + + return maxIndex; + }; + }(); + + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2): + + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + + return this; + } // xxx: for now i will just save one spline function to to + + + function getInterpolateFunction(c) { + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + } + + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + + function setControlledTransition(c) { + c.setTransition(duration, swiper); + + if (duration !== 0) { + c.transitionStart(); + + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + + c.transitionEnd(); + }); + } + } + + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + + function removeSpline() { + if (!swiper.controller.control) return; + + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + + on('beforeInit', () => { + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} \ No newline at end of file diff --git a/swiper/modules/controller/controller.less b/swiper/modules/controller/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/controller/controller.min.css b/swiper/modules/controller/controller.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/controller/controller.scss b/swiper/modules/controller/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/effect-cards/effect-cards.js b/swiper/modules/effect-cards/effect-cards.js new file mode 100644 index 0000000..ffa5772 --- /dev/null +++ b/swiper/modules/effect-cards/effect-cards.js @@ -0,0 +1,128 @@ +import createShadow from '../../shared/create-shadow.js'; +import effectInit from '../../shared/effect-init.js'; +import effectTarget from '../../shared/effect-target.js'; +import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; +export default function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + transformEl: null, + rotate: true + } + }); + + const setTranslate = () => { + const { + slides, + activeIndex + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = swiper.translate; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = $slideEl[0].swiperSlideOffset; + + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`); + } + + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -2 * progress; + let tXAdd = 8 - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + + if (progress < 0) { + // next + tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rotate : 0}deg) + scale(${scaleString}) + `; + + if (params.slideShadows) { + // Set shadows + let $shadowEl = $slideEl.find('.swiper-slide-shadow'); + + if ($shadowEl.length === 0) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.cardsEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-cards/effect-cards.less b/swiper/modules/effect-cards/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/swiper/modules/effect-cards/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/swiper/modules/effect-cards/effect-cards.min.css b/swiper/modules/effect-cards/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/swiper/modules/effect-cards/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/swiper/modules/effect-cards/effect-cards.scss b/swiper/modules/effect-cards/effect-cards.scss new file mode 100644 index 0000000..32c4489 --- /dev/null +++ b/swiper/modules/effect-cards/effect-cards.scss @@ -0,0 +1,7 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + } +} diff --git a/swiper/modules/effect-coverflow/effect-coverflow.js b/swiper/modules/effect-coverflow/effect-coverflow.js new file mode 100644 index 0000000..cc7fdaa --- /dev/null +++ b/swiper/modules/effect-coverflow/effect-coverflow.js @@ -0,0 +1,105 @@ +import createShadow from '../../shared/create-shadow.js'; +import effectInit from '../../shared/effect-init.js'; +import effectTarget from '../../shared/effect-target.js'; +export default function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true, + transformEl: null + } + }); + + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; // Each slide offset from center + + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0 + + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders + + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values + + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); + } + + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); + } + + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.coverflowEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + }; + + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-coverflow/effect-coverflow.less b/swiper/modules/effect-coverflow/effect-coverflow.less new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/swiper/modules/effect-coverflow/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/swiper/modules/effect-coverflow/effect-coverflow.min.css b/swiper/modules/effect-coverflow/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/effect-coverflow/effect-coverflow.scss b/swiper/modules/effect-coverflow/effect-coverflow.scss new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/swiper/modules/effect-coverflow/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/swiper/modules/effect-creative/effect-creative.js b/swiper/modules/effect-creative/effect-creative.js new file mode 100644 index 0000000..8dce343 --- /dev/null +++ b/swiper/modules/effect-creative/effect-creative.js @@ -0,0 +1,155 @@ +import createShadow from '../../shared/create-shadow.js'; +import effectInit from '../../shared/effect-init.js'; +import effectTarget from '../../shared/effect-target.js'; +import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; +export default function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + transformEl: null, + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + + const setTranslate = () => { + const { + slides, + $wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); + } + + const offset = $slideEl[0].swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } // set translate + + + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); // set rotates + + r.forEach((value, index) => { + r[index] = data.rotate[index] * Math.abs(progress * multiplier); + }); + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows + + if (custom && data.shadow || !custom) { + let $shadowEl = $slideEl.children('.swiper-slide-shadow'); + + if ($shadowEl.length === 0 && data.shadow) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform).css({ + opacity: opacityString + }); + + if (data.origin) { + $targetEl.css('transform-origin', data.origin); + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.creativeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-creative/effect-creative.less b/swiper/modules/effect-creative/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/swiper/modules/effect-creative/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/swiper/modules/effect-creative/effect-creative.min.css b/swiper/modules/effect-creative/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/swiper/modules/effect-creative/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/swiper/modules/effect-creative/effect-creative.scss b/swiper/modules/effect-creative/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/swiper/modules/effect-creative/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/swiper/modules/effect-cube/effect-cube.js b/swiper/modules/effect-cube/effect-cube.js new file mode 100644 index 0000000..d267e15 --- /dev/null +++ b/swiper/modules/effect-cube/effect-cube.js @@ -0,0 +1,196 @@ +import $ from '../../shared/dom.js'; +import effectInit from '../../shared/effect-init.js'; +export default function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + + const createSlideShadows = ($slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = $(`
`); + $slideEl.append(shadowBefore); + } + + if (shadowAfter.length === 0) { + shadowAfter = $(`
`); + $slideEl.append(shadowAfter); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.each(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows($(slideEl), progress, isHorizontal); + }); + }; + + const setTranslate = () => { + const { + $el, + $wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $wrapperEl.append($cubeShadowEl); + } + + $cubeShadowEl.css({ + height: `${swiperWidth}px` + }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $el.append($cubeShadowEl); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + + $slideEl.transform(transform); + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, isHorizontal); + } + } + + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px` + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + + const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; + $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + + const setTransition = duration => { + const { + $el, + slides + } = swiper; + slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }; + + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-cube/effect-cube.less b/swiper/modules/effect-cube/effect-cube.less new file mode 100644 index 0000000..ae4c92c --- /dev/null +++ b/swiper/modules/effect-cube/effect-cube.less @@ -0,0 +1,59 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev, + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} diff --git a/swiper/modules/effect-cube/effect-cube.min.css b/swiper/modules/effect-cube/effect-cube.min.css new file mode 100644 index 0000000..103dcee --- /dev/null +++ b/swiper/modules/effect-cube/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)} \ No newline at end of file diff --git a/swiper/modules/effect-cube/effect-cube.scss b/swiper/modules/effect-cube/effect-cube.scss new file mode 100644 index 0000000..ae4c92c --- /dev/null +++ b/swiper/modules/effect-cube/effect-cube.scss @@ -0,0 +1,59 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev, + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} diff --git a/swiper/modules/effect-fade/effect-fade.js b/swiper/modules/effect-fade/effect-fade.js new file mode 100644 index 0000000..49d612c --- /dev/null +++ b/swiper/modules/effect-fade/effect-fade.js @@ -0,0 +1,71 @@ +import effectInit from '../../shared/effect-init.js'; +import effectTarget from '../../shared/effect-target.js'; +import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; +export default function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false, + transformEl: null + } + }); + + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + const $targetEl = effectTarget(params, $slideEl); + $targetEl.css({ + opacity: slideOpacity + }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.fadeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-fade/effect-fade.less b/swiper/modules/effect-fade/effect-fade.less new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/swiper/modules/effect-fade/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/swiper/modules/effect-fade/effect-fade.min.css b/swiper/modules/effect-fade/effect-fade.min.css new file mode 100644 index 0000000..ec1d7bf --- /dev/null +++ b/swiper/modules/effect-fade/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/swiper/modules/effect-fade/effect-fade.scss b/swiper/modules/effect-fade/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/swiper/modules/effect-fade/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/swiper/modules/effect-flip/effect-flip.js b/swiper/modules/effect-flip/effect-flip.js new file mode 100644 index 0000000..f226a7e --- /dev/null +++ b/swiper/modules/effect-flip/effect-flip.js @@ -0,0 +1,124 @@ +import $ from '../../shared/dom.js'; +import createShadow from '../../shared/create-shadow.js'; +import effectInit from '../../shared/effect-init.js'; +import effectTarget from '../../shared/effect-target.js'; +import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; +export default function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true, + transformEl: null + } + }); + + const createSlideShadows = ($slideEl, progress, params) => { + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + + if (shadowAfter.length === 0) { + shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // Set shadows + const params = swiper.params.flipEffect; + swiper.slides.each(slideEl => { + const $slideEl = $(slideEl); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + + createSlideShadows($slideEl, progress, params); + }); + }; + + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, params); + } + + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.flipEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} \ No newline at end of file diff --git a/swiper/modules/effect-flip/effect-flip.less b/swiper/modules/effect-flip/effect-flip.less new file mode 100644 index 0000000..f200173 --- /dev/null +++ b/swiper/modules/effect-flip/effect-flip.less @@ -0,0 +1,24 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/swiper/modules/effect-flip/effect-flip.min.css b/swiper/modules/effect-flip/effect-flip.min.css new file mode 100644 index 0000000..ae2ed65 --- /dev/null +++ b/swiper/modules/effect-flip/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/swiper/modules/effect-flip/effect-flip.scss b/swiper/modules/effect-flip/effect-flip.scss new file mode 100644 index 0000000..f200173 --- /dev/null +++ b/swiper/modules/effect-flip/effect-flip.scss @@ -0,0 +1,24 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} diff --git a/swiper/modules/free-mode/free-mode.js b/swiper/modules/free-mode/free-mode.js new file mode 100644 index 0000000..af6f5a7 --- /dev/null +++ b/swiper/modules/free-mode/free-mode.js @@ -0,0 +1,258 @@ +import { now } from '../../shared/utils.js'; +export default function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + + function onTouchStart() { + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + + function onTouchMove() { + const { + touchEventsData: data, + touches + } = swiper; // Velocity + + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + const { + params, + $wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; // Time diff + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + + return; + } + + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + + + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + + newPosition = -newPosition; + } + + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } // Fix duration + + + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} \ No newline at end of file diff --git a/swiper/modules/free-mode/free-mode.less b/swiper/modules/free-mode/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/swiper/modules/free-mode/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/swiper/modules/free-mode/free-mode.min.css b/swiper/modules/free-mode/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/swiper/modules/free-mode/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/swiper/modules/free-mode/free-mode.scss b/swiper/modules/free-mode/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/swiper/modules/free-mode/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/swiper/modules/grid/grid.js b/swiper/modules/grid/grid.js new file mode 100644 index 0000000..9253f30 --- /dev/null +++ b/swiper/modules/grid/grid.js @@ -0,0 +1,117 @@ +export default function Grid(_ref) { + let { + swiper, + extendParams + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + + const initSlides = slidesLength => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + slidesPerRow = slidesNumberEvenToRows / rows; + numFullColumns = Math.floor(slidesLength / rows); + + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + }; + + const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { + const { + slidesPerGroup, + spaceBetween + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; // Set slides order + + let newSlideOrderIndex; + let column; + let row; + + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.css({ + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex + }); + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + + slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); + }; + + const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { + const { + spaceBetween, + centeredSlides, + roundLengths + } = swiper.params; + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + swiper.$wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` + }); + + if (centeredSlides) { + snapGrid.splice(0, snapGrid.length); + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + + snapGrid.push(...newSlidesGrid); + } + }; + + swiper.grid = { + initSlides, + updateSlide, + updateWrapperSize + }; +} \ No newline at end of file diff --git a/swiper/modules/grid/grid.less b/swiper/modules/grid/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/swiper/modules/grid/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/swiper/modules/grid/grid.min.css b/swiper/modules/grid/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/swiper/modules/grid/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/swiper/modules/grid/grid.scss b/swiper/modules/grid/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/swiper/modules/grid/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/swiper/modules/hash-navigation/hash-navigation.js b/swiper/modules/hash-navigation/hash-navigation.js new file mode 100644 index 0000000..98acc21 --- /dev/null +++ b/swiper/modules/hash-navigation/hash-navigation.js @@ -0,0 +1,97 @@ +import { getWindow, getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +export default function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false + } + }); + + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }; + + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); + emit('hashSet'); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document.location.hash = hash || ''; + emit('hashSet'); + } + }; + + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + + if (hash) { + const speed = 0; + + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', onHashChange); + } + }; + + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', onHashChange); + } + }; + + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} \ No newline at end of file diff --git a/swiper/modules/hash-navigation/hash-navigation.less b/swiper/modules/hash-navigation/hash-navigation.less new file mode 100644 index 0000000..eafcdd6 --- /dev/null +++ b/swiper/modules/hash-navigation/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../../swiper-vars.less'); + diff --git a/swiper/modules/hash-navigation/hash-navigation.min.css b/swiper/modules/hash-navigation/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/hash-navigation/hash-navigation.scss b/swiper/modules/hash-navigation/hash-navigation.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/history/history.js b/swiper/modules/history/history.js new file mode 100644 index 0000000..09b8cd7 --- /dev/null +++ b/swiper/modules/history/history.js @@ -0,0 +1,156 @@ +import { getWindow } from 'ssr-window'; +export default function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + + const slide = swiper.slides.eq(index); + let value = slugify(slide.attr('data-history')); + + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key}/${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key}/${value}`; + } + + if (swiper.params.history.keepQuery) { + value += location.search; + } + + const currentState = window.history.state; + + if (currentState && currentState.value === value) { + return; + } + + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = slugify(slide.attr('data-history')); + + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) return; + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + + const destroy = () => { + const window = getWindow(); + + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} \ No newline at end of file diff --git a/swiper/modules/history/history.less b/swiper/modules/history/history.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/history/history.min.css b/swiper/modules/history/history.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/history/history.scss b/swiper/modules/history/history.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/keyboard/keyboard.js b/swiper/modules/keyboard/keyboard.js new file mode 100644 index 0000000..b31bb16 --- /dev/null +++ b/swiper/modules/keyboard/keyboard.js @@ -0,0 +1,132 @@ +/* eslint-disable consistent-return */ +import { getWindow, getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +export default function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; // Directions locks + + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; // Check that swiper should be inside of visible area of window + + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + + const $el = swiper.$el; + const swiperWidth = $el[0].clientWidth; + const swiperHeight = $el[0].clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + if (!inView) return undefined; + } + + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + + emit('keyPress', kc); + return undefined; + } + + function enable() { + if (swiper.keyboard.enabled) return; + $(document).on('keydown', handle); + swiper.keyboard.enabled = true; + } + + function disable() { + if (!swiper.keyboard.enabled) return; + $(document).off('keydown', handle); + swiper.keyboard.enabled = false; + } + + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} \ No newline at end of file diff --git a/swiper/modules/keyboard/keyboard.less b/swiper/modules/keyboard/keyboard.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/keyboard/keyboard.min.css b/swiper/modules/keyboard/keyboard.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/keyboard/keyboard.scss b/swiper/modules/keyboard/keyboard.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/lazy/lazy.js b/swiper/modules/lazy/lazy.js new file mode 100644 index 0000000..7a66e2d --- /dev/null +++ b/swiper/modules/lazy/lazy.js @@ -0,0 +1,292 @@ +import { getWindow } from 'ssr-window'; +import $ from '../../shared/dom.js'; +export default function Lazy(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + lazy: { + checkInView: false, + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + scrollingElement: '', + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader' + } + }); + swiper.lazy = {}; + let scrollHandlerAttached = false; + let initialImageLoaded = false; + + function loadInSlide(index, loadInDuplicate) { + if (loadInDuplicate === void 0) { + loadInDuplicate = true; + } + + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); + const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images.push($slideEl[0]); + } + + if ($images.length === 0) return; + $images.each(imageEl => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + const $pictureEl = $imageEl.parent('picture'); + swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; + + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + + if ($pictureEl.length) { + $pictureEl.children('source').each(sourceEl => { + const $source = $(sourceEl); + + if ($source.attr('data-srcset')) { + $source.attr('srcset', $source.attr('data-srcset')); + $source.removeAttr('data-srcset'); + } + }); + } + + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + loadInSlide(duplicatedSlide.index(), false); + } + } + + emit('lazyImageReady', $slideEl[0], $imageEl[0]); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + } + + function load() { + const { + $wrapperEl, + params: swiperParams, + slides, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + let slidesPerView = swiperParams.slidesPerView; + + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + + return false; + } + + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + + return $(slideEl).index(); + } + + if (!initialImageLoaded) initialImageLoaded = true; + + if (swiper.params.watchSlidesProgress) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + loadInSlide(activeIndex); + } + + if (params.loadPrevNext) { + if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { + const amount = params.loadPrevNextAmount; + const spv = Math.ceil(slidesPerView); + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides + + for (let i = activeIndex + spv; i < maxIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } // Prev Slides + + + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); + } + } + } + + function checkInViewOnLoad() { + const window = getWindow(); + if (!swiper || swiper.destroyed) return; + const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); + const isWindow = $scrollElement[0] === window; + const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; + const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; + const swiperOffset = swiper.$el.offset(); + const { + rtlTranslate: rtl + } = swiper; + let inView = false; + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + + if (inView) { + load(); + $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); + } else if (!scrollHandlerAttached) { + scrollHandlerAttached = true; + $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); + } + } + + on('beforeInit', () => { + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }); + on('init', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('scroll', () => { + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { + load(); + } + }); + on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('transitionStart', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + } + }); + on('transitionEnd', () => { + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('slideChange', () => { + const { + lazy, + cssMode, + watchSlidesProgress, + touchReleaseOnEdges, + resistanceRatio + } = swiper.params; + + if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { + load(); + } + }); + on('destroy', () => { + if (!swiper.$el) return; + swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass); + }); + Object.assign(swiper.lazy, { + load, + loadInSlide + }); +} \ No newline at end of file diff --git a/swiper/modules/lazy/lazy.less b/swiper/modules/lazy/lazy.less new file mode 100644 index 0000000..ed4fac9 --- /dev/null +++ b/swiper/modules/lazy/lazy.less @@ -0,0 +1,41 @@ +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/swiper/modules/lazy/lazy.min.css b/swiper/modules/lazy/lazy.min.css new file mode 100644 index 0000000..2643fb4 --- /dev/null +++ b/swiper/modules/lazy/lazy.min.css @@ -0,0 +1 @@ +.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/swiper/modules/lazy/lazy.scss b/swiper/modules/lazy/lazy.scss new file mode 100644 index 0000000..d048062 --- /dev/null +++ b/swiper/modules/lazy/lazy.scss @@ -0,0 +1,44 @@ +/* Preloader */ +@at-root { + :root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} + +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/swiper/modules/manipulation/manipulation.js b/swiper/modules/manipulation/manipulation.js new file mode 100644 index 0000000..07b0e79 --- /dev/null +++ b/swiper/modules/manipulation/manipulation.js @@ -0,0 +1,17 @@ +import appendSlide from './methods/appendSlide.js'; +import prependSlide from './methods/prependSlide.js'; +import addSlide from './methods/addSlide.js'; +import removeSlide from './methods/removeSlide.js'; +import removeAllSlides from './methods/removeAllSlides.js'; +export default function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} \ No newline at end of file diff --git a/swiper/modules/manipulation/manipulation.less b/swiper/modules/manipulation/manipulation.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/manipulation/manipulation.min.css b/swiper/modules/manipulation/manipulation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/manipulation/manipulation.scss b/swiper/modules/manipulation/manipulation.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/manipulation/methods/addSlide.js b/swiper/modules/manipulation/methods/addSlide.js new file mode 100644 index 0000000..6b83008 --- /dev/null +++ b/swiper/modules/manipulation/methods/addSlide.js @@ -0,0 +1,64 @@ +export default function addSlide(index, slides) { + const swiper = this; + const { + $wrapperEl, + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + const baseLength = swiper.slides.length; + + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} \ No newline at end of file diff --git a/swiper/modules/manipulation/methods/appendSlide.js b/swiper/modules/manipulation/methods/appendSlide.js new file mode 100644 index 0000000..9a649af --- /dev/null +++ b/swiper/modules/manipulation/methods/appendSlide.js @@ -0,0 +1,27 @@ +export default function appendSlide(slides) { + const swiper = this; + const { + $wrapperEl, + params + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } +} \ No newline at end of file diff --git a/swiper/modules/manipulation/methods/prependSlide.js b/swiper/modules/manipulation/methods/prependSlide.js new file mode 100644 index 0000000..2195621 --- /dev/null +++ b/swiper/modules/manipulation/methods/prependSlide.js @@ -0,0 +1,34 @@ +export default function prependSlide(slides) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + let newActiveIndex = activeIndex + 1; + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + swiper.slideTo(newActiveIndex, 0, false); +} \ No newline at end of file diff --git a/swiper/modules/manipulation/methods/removeAllSlides.js b/swiper/modules/manipulation/methods/removeAllSlides.js new file mode 100644 index 0000000..f24e494 --- /dev/null +++ b/swiper/modules/manipulation/methods/removeAllSlides.js @@ -0,0 +1,10 @@ +export default function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + + swiper.removeSlide(slidesIndexes); +} \ No newline at end of file diff --git a/swiper/modules/manipulation/methods/removeSlide.js b/swiper/modules/manipulation/methods/removeSlide.js new file mode 100644 index 0000000..2cf6373 --- /dev/null +++ b/swiper/modules/manipulation/methods/removeSlide.js @@ -0,0 +1,47 @@ +export default function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} \ No newline at end of file diff --git a/swiper/modules/mousewheel/mousewheel.js b/swiper/modules/mousewheel/mousewheel.js new file mode 100644 index 0000000..c7ab1b7 --- /dev/null +++ b/swiper/modules/mousewheel/mousewheel.js @@ -0,0 +1,423 @@ +/* eslint-disable consistent-return */ +import { getWindow } from 'ssr-window'; +import $ from '../../shared/dom.js'; +import { now, nextTick } from '../../shared/utils.js'; +export default function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + + let pX = 0; + let pY = 0; // pixelX, pixelY + // Legacy + + if ('detail' in e) { + sY = e.detail; + } + + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } // side scrolling on FF with DOMMouseScroll + + + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } // Fall-back if spin cannot be determined + + + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + + + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + + + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } // If you got here is because an animation has been triggered so store the current time + + + lastScrollTime = new window.Date().getTime(); // Return false as a default + + return false; + } + + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + + return false; + } + + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + if (params.invert) delta = -delta; // Get the scroll positions + + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; // Keep the most recent events + + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + + + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } // Emit event + + + if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay + + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions + + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + + function events(method) { + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + target[method]('mouseenter', handleMouseEnter); + target[method]('mouseleave', handleMouseLeave); + target[method]('wheel', handle); + } + + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + + if (swiper.mousewheel.enabled) return false; + events('on'); + swiper.mousewheel.enabled = true; + return true; + } + + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + + if (!swiper.mousewheel.enabled) return false; + events('off'); + swiper.mousewheel.enabled = false; + return true; + } + + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} \ No newline at end of file diff --git a/swiper/modules/mousewheel/mousewheel.less b/swiper/modules/mousewheel/mousewheel.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/mousewheel/mousewheel.min.css b/swiper/modules/mousewheel/mousewheel.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/mousewheel/mousewheel.scss b/swiper/modules/mousewheel/mousewheel.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/navigation/navigation.js b/swiper/modules/navigation/navigation.js new file mode 100644 index 0000000..4bbd99b --- /dev/null +++ b/swiper/modules/navigation/navigation.js @@ -0,0 +1,208 @@ +import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; +import $ from '../../shared/dom.js'; +export default function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + $nextEl: null, + prevEl: null, + $prevEl: null + }; + + function getEl(el) { + let $el; + + if (el) { + $el = $(el); + + if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { + $el = swiper.$el.find(el); + } + } + + return $el; + } + + function toggleEl($el, disabled) { + const params = swiper.params.navigation; + + if ($el && $el.length > 0) { + $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); + if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + } + + function update() { + // Update Navigation Buttons + if (swiper.params.loop) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind); + } + + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + const $nextEl = getEl(params.nextEl); + const $prevEl = getEl(params.prevEl); + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', onNextClick); + } + + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', onPrevClick); + } + + Object.assign(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0] + }); + + if (!swiper.enabled) { + if ($nextEl) $nextEl.addClass(params.lockClass); + if ($prevEl) $prevEl.addClass(params.lockClass); + } + } + + function destroy() { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl && $nextEl.length) { + $nextEl.off('click', onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + + if ($prevEl && $prevEl.length) { + $prevEl.off('click', onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + } + + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl) { + $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + + if ($prevEl) { + $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + }); + on('click', (_s, e) => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + const targetEl = e.target; + + if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass); + init(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass); + destroy(); + }; + + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} \ No newline at end of file diff --git a/swiper/modules/navigation/navigation.less b/swiper/modules/navigation/navigation.less new file mode 100644 index 0000000..5ecde8a --- /dev/null +++ b/swiper/modules/navigation/navigation.less @@ -0,0 +1,62 @@ +@import url('../../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} +.swiper-button-lock { + display: none; +} diff --git a/swiper/modules/navigation/navigation.min.css b/swiper/modules/navigation/navigation.min.css new file mode 100644 index 0000000..10492e2 --- /dev/null +++ b/swiper/modules/navigation/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/swiper/modules/navigation/navigation.scss b/swiper/modules/navigation/navigation.scss new file mode 100644 index 0000000..e43c463 --- /dev/null +++ b/swiper/modules/navigation/navigation.scss @@ -0,0 +1,64 @@ +@import '../../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } + left: 10px; + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: 10px; + left: auto; +} + +.swiper-button-lock { + display: none; +} diff --git a/swiper/modules/pagination/pagination.js b/swiper/modules/pagination/pagination.js new file mode 100644 index 0000000..d2bdb0c --- /dev/null +++ b/swiper/modules/pagination/pagination.js @@ -0,0 +1,442 @@ +import $ from '../../shared/dom.js'; +import classesToSelector from '../../shared/classes-to-selector.js'; +import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; +export default function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + $el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; + } + + function setSideBullets($bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); + } + + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; // Current/Total + + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + + if (current > slidesLength - 1 - swiper.loopedSlides * 2) { + current -= slidesLength - swiper.loopedSlides * 2; + } + + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } // Types + + + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + + if (params.dynamicBullets) { + bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); + + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0); + + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + + bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); + + if ($el.length > 1) { + bullets.each(bullet => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + + if (bulletIndex === firstIndex) { + setSideBullets($bullet, 'prev'); + } + + if (bulletIndex === lastIndex) { + setSideBullets($bullet, 'next'); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + + if (swiper.params.loop) { + if (bulletIndex >= bullets.length) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } + } + + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + + if (params.type === 'fraction') { + $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); + $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total)); + } + + if (params.type === 'progressbar') { + let progressbarDirection; + + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + + $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + emit('paginationRender', $el[0]); + } else { + emit('paginationUpdate', $el[0]); + } + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + let paginationHTML = ''; + + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); + } + + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + + $el.html(paginationHTML); + } + + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + + $el.html(paginationHTML); + } + + if (params.type !== 'custom') { + emit('paginationRender', swiper.pagination.$el[0]); + } + } + + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let $el = $(params.el); + if ($el.length === 0) return; + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { + $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper + + if ($el.length > 1) { + $el = $el.filter(el => { + if ($(el).parents('.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Object.assign(swiper.pagination, { + $el, + el: $el[0] + }); + + if (!swiper.enabled) { + $el.addClass(params.lockClass); + } + } + + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const $el = swiper.pagination.$el; + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + + if (params.clickable) { + $el.off('click', classesToSelector(params.bulletClass)); + } + } + + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (swiper.params.loop) { + update(); + } else if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + if (!swiper.params.loop) { + update(); + } + }); + on('slidesLengthChange', () => { + if (swiper.params.loop) { + render(); + update(); + } + }); + on('snapGridLengthChange', () => { + if (!swiper.params.loop) { + render(); + update(); + } + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $el + } = swiper.pagination; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const { + $el + } = swiper.pagination; + + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass); + + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + + $el.toggleClass(swiper.params.pagination.hiddenClass); + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + } + + init(); + render(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} \ No newline at end of file diff --git a/swiper/modules/pagination/pagination.less b/swiper/modules/pagination/pagination.less new file mode 100644 index 0000000..f72ffe5 --- /dev/null +++ b/swiper/modules/pagination/pagination.less @@ -0,0 +1,167 @@ +@import url('../../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: 50%; + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: 10px; + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0, 0, 0, 0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/swiper/modules/pagination/pagination.min.css b/swiper/modules/pagination/pagination.min.css new file mode 100644 index 0000000..42162d5 --- /dev/null +++ b/swiper/modules/pagination/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/swiper/modules/pagination/pagination.scss b/swiper/modules/pagination/pagination.scss new file mode 100644 index 0000000..2da2b03 --- /dev/null +++ b/swiper/modules/pagination/pagination.scss @@ -0,0 +1,168 @@ +@import '../../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: 50%; + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: 10px; + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0, 0, 0, 0.25); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/swiper/modules/parallax/parallax.js b/swiper/modules/parallax/parallax.js new file mode 100644 index 0000000..820dee5 --- /dev/null +++ b/swiper/modules/parallax/parallax.js @@ -0,0 +1,119 @@ +import $ from '../../shared/dom.js'; +export default function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + $el[0].style.opacity = currentOpacity; + } + + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }; + + const setTranslate = () => { + const { + $el, + slides, + progress, + snapGrid + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, progress); + }); + slides.each((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, slideProgress); + }); + }); + }; + + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + + const { + $el + } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }; + + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} \ No newline at end of file diff --git a/swiper/modules/parallax/parallax.less b/swiper/modules/parallax/parallax.less new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/parallax/parallax.min.css b/swiper/modules/parallax/parallax.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/parallax/parallax.scss b/swiper/modules/parallax/parallax.scss new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/scrollbar/scrollbar.js b/swiper/modules/scrollbar/scrollbar.js new file mode 100644 index 0000000..0ee9f3d --- /dev/null +++ b/swiper/modules/scrollbar/scrollbar.js @@ -0,0 +1,404 @@ +import { getDocument } from 'ssr-window'; +import $ from '../../shared/dom.js'; +import { nextTick } from '../../shared/utils.js'; +import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; +export default function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null, + $el: null, + $dragEl: null + }; + + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl, + progress + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + const params = swiper.params.scrollbar; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + + if (rtl) { + newPos = -newPos; + + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + + if (params.hide) { + clearTimeout(timeout); + $el[0].style.opacity = 1; + timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + } + + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + } + + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + } + } + + function getPointerPosition(e) { + if (swiper.isHorizontal()) { + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; + } + + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; + } + + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + $el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + $wrapperEl.transition(100); + $dragEl.transition(100); + setDragPosition(e); + clearTimeout(dragTimeout); + $el.transition(0); + + if (params.hide) { + $el.css('opacity', 1); + } + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + + emit('scrollbarDragStart', e); + } + + function onDragMove(e) { + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + emit('scrollbarDragMove', e); + } + + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + + emit('scrollbarDragEnd', e); + + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + + function events(method) { + const { + scrollbar, + touchEventsTouch, + touchEventsDesktop, + params, + support + } = swiper; + const $el = scrollbar.$el; + if (!$el) return; + const target = $el[0]; + const activeListener = support.passiveListener && params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + + if (!support.touch) { + target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); + document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); + document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); + } else { + target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); + target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); + target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); + } + } + + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + + function init() { + const { + scrollbar, + $el: $swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let $el = $(params.el); + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + + if ($dragEl.length === 0) { + $dragEl = $(`
`); + $el.append($dragEl); + } + + Object.assign(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0] + }); + + if (params.draggable) { + enableDraggable(); + } + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + } + + function destroy() { + const params = swiper.params.scrollbar; + const $el = swiper.scrollbar.$el; + + if ($el) { + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + } + + disableDraggable(); + } + + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + $el + } = swiper.scrollbar; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + }); + on('destroy', () => { + destroy(); + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + init(); + updateSize(); + setTranslate(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} \ No newline at end of file diff --git a/swiper/modules/scrollbar/scrollbar.less b/swiper/modules/scrollbar/scrollbar.less new file mode 100644 index 0000000..57bd9f2 --- /dev/null +++ b/swiper/modules/scrollbar/scrollbar.less @@ -0,0 +1,44 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/swiper/modules/scrollbar/scrollbar.min.css b/swiper/modules/scrollbar/scrollbar.min.css new file mode 100644 index 0000000..f0fd784 --- /dev/null +++ b/swiper/modules/scrollbar/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/swiper/modules/scrollbar/scrollbar.scss b/swiper/modules/scrollbar/scrollbar.scss new file mode 100644 index 0000000..57bd9f2 --- /dev/null +++ b/swiper/modules/scrollbar/scrollbar.scss @@ -0,0 +1,44 @@ +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/swiper/modules/thumbs/thumbs.js b/swiper/modules/thumbs/thumbs.js new file mode 100644 index 0000000..7db1c22 --- /dev/null +++ b/swiper/modules/thumbs/thumbs.js @@ -0,0 +1,204 @@ +import { isObject } from '../../shared/utils.js'; +import $ from '../../shared/dom.js'; +export default function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; + } + + swiper.slideTo(slideToIndex); + } + + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs + + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.removeClass(thumbActiveClass); + + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); // eslint-disable-next-line + + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } // Find actual thumbs index to slide to + + + const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + + if (typeof prevThumbsIndex === 'undefined') { + newThumbsIndex = nextThumbsIndex; + } else if (typeof nextThumbsIndex === 'undefined') { + newThumbsIndex = prevThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = nextThumbsIndex; + } else { + newThumbsIndex = prevThumbsIndex; + } + + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1; + } + + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + init(); + update(true); + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} \ No newline at end of file diff --git a/swiper/modules/thumbs/thumbs.less b/swiper/modules/thumbs/thumbs.less new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/swiper/modules/thumbs/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/swiper/modules/thumbs/thumbs.min.css b/swiper/modules/thumbs/thumbs.min.css new file mode 100644 index 0000000..e69de29 diff --git a/swiper/modules/thumbs/thumbs.scss b/swiper/modules/thumbs/thumbs.scss new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/swiper/modules/thumbs/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/swiper/modules/virtual/virtual.js b/swiper/modules/virtual/virtual.js new file mode 100644 index 0000000..102da90 --- /dev/null +++ b/swiper/modules/virtual/virtual.js @@ -0,0 +1,298 @@ +import $ from '../../shared/dom.js'; +import { setCSSProperty } from '../../shared/utils.js'; +export default function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + + function renderSlide(slide, index) { + const params = swiper.params.virtual; + + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + + const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + } + + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = slidesPerGroup + addSlidesBefore; + } + + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + + emit('virtualUpdate'); + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + + return slidesToRender; + }() + }); + + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + + return; + } + + const prependIndexes = []; + const appendIndexes = []; + + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + + appendIndexes.forEach(index => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach(index => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + } + + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + + update(true); + } + + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + + update(true); + swiper.slideTo(newActiveIndex, 0); + } + + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + + update(true); + swiper.slideTo(activeIndex, 0); + } + + function removeAllSlides() { + swiper.virtual.slides = []; + + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + + update(true); + swiper.slideTo(0, 0); + } + + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + swiper.virtual.slides = swiper.params.virtual.slides; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + + if (!swiper.params.initialSlide) { + update(); + } + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} \ No newline at end of file diff --git a/swiper/modules/virtual/virtual.less b/swiper/modules/virtual/virtual.less new file mode 100644 index 0000000..9e6a118 --- /dev/null +++ b/swiper/modules/virtual/virtual.less @@ -0,0 +1,21 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } + &.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } + &.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/swiper/modules/virtual/virtual.min.css b/swiper/modules/virtual/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/swiper/modules/virtual/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/swiper/modules/virtual/virtual.scss b/swiper/modules/virtual/virtual.scss new file mode 100644 index 0000000..9e6a118 --- /dev/null +++ b/swiper/modules/virtual/virtual.scss @@ -0,0 +1,21 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } + &.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } + &.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/swiper/modules/zoom/zoom.js b/swiper/modules/zoom/zoom.js new file mode 100644 index 0000000..02e5e2c --- /dev/null +++ b/swiper/modules/zoom/zoom.js @@ -0,0 +1,613 @@ +import { getWindow } from 'ssr-window'; +import $ from '../../shared/dom.js'; +import { getTranslate } from '../../shared/utils.js'; +export default function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let gesturesEnabled; + let fakeGestureTouched; + let fakeGestureMoved; + const gesture = { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + + set(value) { + if (scale !== value) { + const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined; + const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; + emit('zoomChange', value, imageEl, slideEl); + } + + scale = value; + } + + }); + + function getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } // Events + + + function onGestureStart(e) { + const support = swiper.support; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + + if (!support.gestures) { + if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { + return; + } + + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(e); + } + + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + + isScaling = true; + } + + function onGestureChange(e) { + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { + return; + } + + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(e); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { + if (e.type === 'gesturechange') onGestureStart(e); + return; + } + + if (support.gestures) { + zoom.scale = e.scale * currentScale; + } else { + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + } + + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function onGestureEnd(e) { + const device = swiper.device; + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + + if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { + return; + } + + fakeGestureTouched = false; + fakeGestureMoved = false; + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + } + + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + } + + function onTouchMove(e) { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + } // Define if we need image drag + + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + return; + } + + 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)) { + image.isTouched = false; + return; + } + } + + if (e.cancelable) { + e.preventDefault(); + } + + e.stopPropagation(); + image.isMoved = true; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; + + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } // Velocity + + + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; // Fix duration + + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; // Define if we need image drag + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTransitionEnd() { + const zoom = swiper.zoom; + + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + currentScale = 1; + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + } + + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (e && e.target) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + } + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left + window.scrollX; + offsetY = gesture.$slideEl.offset().top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + + zoom.scale = 1; + currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + } // Toggle Zoom + + + function zoomToggle(e) { + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + + function getListeners() { + const support = swiper.support; + const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = support.passiveListener ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + function getSlideSelector() { + return `.${swiper.params.slideClass}`; + } + + function toggleGestures(method) { + const { + passiveListener + } = getListeners(); + const slideSelector = getSlideSelector(); + swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); + swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); + } + + function enableGestures() { + if (gesturesEnabled) return; + gesturesEnabled = true; + toggleGestures('on'); + } + + function disableGestures() { + if (!gesturesEnabled) return; + gesturesEnabled = false; + toggleGestures('off'); + } // Attach/Detach Events + + + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const support = swiper.support; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + const support = swiper.support; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(e); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} \ No newline at end of file diff --git a/swiper/modules/zoom/zoom.less b/swiper/modules/zoom/zoom.less new file mode 100644 index 0000000..fdbea05 --- /dev/null +++ b/swiper/modules/zoom/zoom.less @@ -0,0 +1,20 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/swiper/modules/zoom/zoom.min.css b/swiper/modules/zoom/zoom.min.css new file mode 100644 index 0000000..f40e581 --- /dev/null +++ b/swiper/modules/zoom/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move} \ No newline at end of file diff --git a/swiper/modules/zoom/zoom.scss b/swiper/modules/zoom/zoom.scss new file mode 100644 index 0000000..fdbea05 --- /dev/null +++ b/swiper/modules/zoom/zoom.scss @@ -0,0 +1,20 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; +} diff --git a/swiper/node_modules/dom7/LICENSE b/swiper/node_modules/dom7/LICENSE new file mode 100644 index 0000000..e7e872c --- /dev/null +++ b/swiper/node_modules/dom7/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/swiper/node_modules/dom7/README.md b/swiper/node_modules/dom7/README.md new file mode 100644 index 0000000..8b28ad2 --- /dev/null +++ b/swiper/node_modules/dom7/README.md @@ -0,0 +1,47 @@ +# Dom7 + +### Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + +Dom7 - is the default DOM manipulation library built-in [Framework7](https://framework7.io). It utilizes most edge and high-performance methods for DOM manipulation. You don’t need to learn something new, its usage is very simple because it has the same syntax as well known jQuery library with support of the most popular and widely used methods and jQuery-like chaining. + +See [Framework7 Dom7](https://framework7.io/docs/dom7.html) documentation for usage examples and available methods. + +## Installation + +Dom7 can be installed with NPM: + +``` +npm install dom7 --save +``` + +## Usage + +```js +// import Dom7 and methods you need +import { $, addClass, removeClass, toggleClass, on } from 'dom7'; + +// install methods +$.fn.addClass = addClass; +$.fn.removeClass = removeClass; +$.fn.toggleClass = toggleClass; +$.fn.on = on; + +// use +$('p').addClass('custom-paragraph'); + +$('p').on('click', function() { + $(this).toggleClass('custom-paragraph'); +}); +``` + +## Documentation + +See [full documenation here](https://framework7.io/docs/dom7.html) + +## Contribution + +Yes please! See the [contributing guidelines](https://github.com/nolimits4web/dom7/blob/master/CONTRIBUTING.md) for details. + +## Licence + +This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/dom7/blob/master/LICENSE). diff --git a/swiper/node_modules/dom7/dom7.d.ts b/swiper/node_modules/dom7/dom7.d.ts new file mode 100644 index 0000000..1815f3d --- /dev/null +++ b/swiper/node_modules/dom7/dom7.d.ts @@ -0,0 +1,628 @@ +export interface Dom7Array { + /* ====== DEFAULT ARRAY METHODS ====== */ + /** + * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. + */ + length: number; + + /** + * Removes the last element from an array and returns it. + */ + pop(): Element | undefined; + /** + * Appends new elements to an array, and returns the new length of the array. + * @param items New elements of the Array. + */ + push(...items: Element[]): number; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat(...items: ConcatArray[]): Element[]; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat(...items: (Element | ConcatArray)[]): Element[]; + /** + * Adds all the elements of an array separated by the specified separator string. + * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. + */ + join(separator?: string): string; + /** + * Reverses the elements in an Array. + */ + reverse(): Element[]; + /** + * Removes the first element from an array and returns it. + */ + shift(): Element | undefined; + /** + * Returns a section of an array. + * @param start The beginning of the specified portion of the array. + * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'. + */ + slice(start?: number, end?: number): Element[]; + /** + * Sorts an array. + * @param compareFn Function used to determine the order of the elements. It is expected to return + * a negative value if first argument is less than second argument, zero if they're equal and a positive + * value otherwise. If omitted, the elements are sorted in ascending, ASCII character order. + * ```ts + * [11,2,22,1].sort((a, b) => a - b) + * ``` + */ + sort(compareFn?: (a: Element, b: Element) => number): this; + /** + * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. + * @param start The zero-based location in the array from which to start removing elements. + * @param deleteCount The number of elements to remove. + */ + splice(start: number, deleteCount?: number): Element[]; + /** + * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. + * @param start The zero-based location in the array from which to start removing elements. + * @param deleteCount The number of elements to remove. + * @param items Elements to insert into the array in place of the deleted elements. + */ + splice(start: number, deleteCount: number, ...items: Element[]): Element[]; + /** + * Inserts new elements at the start of an array. + * @param items Elements to insert at the start of the Array. + */ + unshift(...items: Element[]): number; + /** + * Returns the index of the first occurrence of a value in an array. + * @param searchElement The value to locate in the array. + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. + */ + indexOf(searchElement: Element, fromIndex?: number): number; + /** + * Returns the index of the last occurrence of a specified value in an array. + * @param searchElement The value to locate in the array. + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. + */ + lastIndexOf(searchElement: Element, fromIndex?: number): number; + /** + * Determines whether all the members of an array satisfy the specified test. + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in the array until the callbackfn returns a value + * which is coercible to the Boolean value false, or until the end of the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * If thisArg is omitted, undefined is used as the this value. + */ + every( + callbackfn: (value: Element, index: number, array: Element[]) => unknown, + thisArg?: any, + ): boolean; + /** + * Determines whether the specified callback function returns true for any element of an array. + * @param callbackfn A function that accepts up to three arguments. The some method calls + * the callbackfn function for each element in the array until the callbackfn returns a value + * which is coercible to the Boolean value true, or until the end of the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * If thisArg is omitted, undefined is used as the this value. + */ + some( + callbackfn: (value: Element, index: number, array: Element[]) => unknown, + thisArg?: any, + ): boolean; + /** + * Performs the specified action for each element in an array. + * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + forEach( + callbackfn: (value: Element, index: number, array: Element[]) => void, + thisArg?: any, + ): void; + /** + * Calls a defined callback function on each element of an array, and returns an array that contains the results. + * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + map( + callbackfn: (value: Element, index: number, array: Element[]) => U, + thisArg?: any, + ): U[]; + + /* ====== DOM7 ARRAY METHODS ====== */ + + /** Retrieve one of the elements matched by the Dom7Array object (jQuery syntax). **/ + [index: number]: Element; + + // CLASSES + /** Add class to elements */ + addClass(className: string): Dom7Array; + /** Remove specified class */ + removeClass(className: string): Dom7Array; + /** Determine whether any of the matched elements are assigned the given class */ + hasClass(className: string): Dom7Array; + /** Remove (if class is present) or add (if not) one or more classes from each element in the set of matched elements */ + toggleClass(className: string): Dom7Array; + + // ATTRIBUTES AND PROPERTIES + /** Get property value */ + prop(propName: string): any; + /** Set single property value */ + prop(propName: string, propValue: any): Dom7Array; + /** Set multiple properties */ + prop(propertiesObject: any): Dom7Array; + /** Get attribute value */ + attr(attrName: string): string; + /** Set single attribute value */ + attr(attrName: string, attrValue: string): Dom7Array; + /** Set multiple attributes */ + attr(attributesObject: any): Dom7Array; + /** Remove specified attribute */ + removeAttr(attrName: string): Dom7Array; + /** Get the current value of the first element in the set of matched elements */ + val(): any; + /** Set the value of every matched element */ + val(newValue: any): Dom7Array; + + // DATA + /** Store arbitrary data associated with the matched elements */ + data(key: string, value: any): Dom7Array; + /** Return the value at the named data store for the first element in the collection, as set by data(key, value) or by an HTML5 data-* attribute */ + data(key: string): any; + /** Remove specified data */ + removeData(key: string): void; + /** Returns element's data set (set of data- attributes) as plain Object */ + dataset(): any; + + // CSS TRASFORMS, TRANSITIONS + /** Adds prefixed CSS transform property */ + transform(CSSTransformString: string): Dom7Array; + /** Set CSS transition-duration property to collection */ + transition(transitionDuration: number): Dom7Array; + + // EVENTS + /** Add event handler function to one or more events to the selected elements */ + on( + eventName: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Live/delegated event handler */ + on( + eventName: string, + delegatedTarget: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Add event handler function to one or more events to the selected elements that will be executed only once */ + once( + eventName: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Live/delegated event handler that will be executed only once */ + once( + eventName: string, + delegatedTarget: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Remove event handler */ + off( + eventName: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Remove live/delegated event handler */ + off( + eventName: string, + delegatedTarget: string, + handler: (event: Event) => void, + useCapture?: boolean, + ): Dom7Array; + /** Execute all handlers added to the matched elements for the specified event */ + trigger(eventName: string, eventData?: any): Dom7Array; + /** Adds transitionEnd event handler to collection */ + transitionEnd(callback: () => void): Dom7Array; + /** Adds animationEnd event handler to collection */ + animationEnd(callback: () => void): Dom7Array; + + // STYLES + /** Get the current computed width for the first element in the set of matched elements */ + width(): number; + /** Set width for the first element in the set of matched elements */ + width(value: string | number): Dom7Array; + /** Get the current computed width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ + outerWidth(includeMargin?: boolean): number; + /** Set width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ + outerWidth(value: string | number): Dom7Array; + /** Get the current computed height for the first element in the set of matched elements */ + height(): number; + /** Set height for the first element in the set of matched elements */ + height(value: string | number): Dom7Array; + /** Get the current computed height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ + outerHeight(includeMargin?: boolean): number; + /** Set height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ + outerHeight(value: string | number): Dom7Array; + /** Get the current coordinates of the first element relative to the document */ + offset(): { top: number; left: number }; + /** Set the coordinates of the first element relative to the document */ + offset(value: string | number): Dom7Array; + /** Set "display:none" to the matched elements */ + hide(): void; + /** Set "display:block" to the matched elements */ + show(): void; + /** Get value of specified CSS property for the first element */ + css(property: string): string | number; + /** Set specified CSS property to the matched elements */ + css(property: string, value: string | number): Dom7Array; + /** Set multiple CSS properties to the matched elements */ + css(propertiesObject: any): Dom7Array; + + // SCROLL + /** Get scrollTop position of element */ + scrollTop(): number; + /** Set scrollTop "position" with animation during "duration" (in ms). Scroll top position will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ + scrollTop( + position: number, + duration?: number, + callback?: () => void, + ): Dom7Array; + /** Get scrollLeft position of element */ + scrollLeft(): number; + /** Set scrollLeft "position" with animation during "duration" (in ms). Scroll left postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ + scrollLeft( + position: number, + duration?: number, + callback?: () => void, + ): Dom7Array; + /** Set scroll left and scroll top with animation during "duration" (in ms). Scroll postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ + scrollTo( + left: number, + top: number, + duration?: number, + callback?: () => void, + ): Dom7Array; + + // DOM MANIPULATION + /** Add HTML element to the set of matched elements */ + add(html: string): Dom7Array; + /** Create a new Dom7Array collection with elements added to the set of matched elements */ + add(...elements: Array): Dom7Array; + /** Iterate over collection, executing a callback function for each matched element */ + each(callback: (element: any, index: number) => void): Dom7Array; + /** Get the HTML contents of the first element in the set of matched elements */ + html(): string; + /** Set the HTML contents of every matched element */ + html(newInnerHTML: string): Dom7Array; + /** Get the text contents of the first element in the set of matched elements */ + text(): string; + /** Set the text contents of every matched element */ + text(newTextContent: string): Dom7Array; + /** `.is(CSSSelector)` : + * Check the current matched set of elements against CSS selector + * + * `.is(HTMLElement)` : + * Check the current matched set of elements against HTML element or Dom7Array collection + * */ + is(CSSSelector: string | Element | Dom7Array): boolean; + /** Return the position of the first element within the Dom7Array collection relative to its sibling elements */ + index(): number; + /** Reduce the set of matched elements to the one at the specified index */ + eq(index: number): Dom7Array; + /** `.append(HTMLString)` : + * Insert content, specified by the parameter, to the end of each element in the set of matched elements + * + * `.append(HTMLElement)` : + * Insert specified HTML element to the end of element in the set of matched elements + * */ + append(element: string | Element | Dom7Array): Dom7Array; + /** Insert content/elements, to the end of element specified in parameter */ + appendTo(element: string | Element | Dom7Array): Dom7Array; + /** `.prepend(newHTML)` : + * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements + * + * `.prepend(HTMLElement)` : + * Insert specified HTML element to the beginning of element in the set of matched elements + * */ + prepend(element: string | Element | Dom7Array): Dom7Array; + /** Insert content/elements, to the beginning of element specified in parameter */ + prependTo(element: string | Element | Dom7Array): Dom7Array; + /** Insert every element in the set of matched elements before the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ + insertBefore(element: string | Element | Dom7Array): Dom7Array; + /** Insert every element in the set of matched elements after the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ + insertAfter(element: string | Element | Dom7Array): Dom7Array; + /** Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector */ + next(selector?: string): Dom7Array; + /** Get all following siblings of each element in the set of matched elements, optionally filtered by a selector */ + nextAll(selector?: string): Dom7Array; + /** Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector */ + prev(selector?: string): Dom7Array; + /** Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector */ + prevAll(selector?: string): Dom7Array; + /** Get the siblings of each element in the set of matched elements, optionally filtered by a selector */ + siblings(selector?: string): Dom7Array; + /** Get the first parent of each element in the current set of matched elements, optionally filtered by a selector */ + parent(selector?: string): Dom7Array; + /** Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector */ + parents(selector?: string): Dom7Array; + /** For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree */ + closest(selector?: string): Dom7Array; + /** Get the descendants of each element in the current set of matched elements, filtered by a selector */ + find(selector?: string): Dom7Array; + /** Get the children of each element in the set of matched elements, optionally filtered by a selector */ + children(selector?: string): Dom7Array; + /** Filter collection of elements */ + filter(callback: (element: any, index: number) => boolean): Dom7Array; + /** Remove/detach matched elements from the Dom */ + remove(): Dom7Array; + /** Remove all child nodes of the set of matched elements from the DOM. Alias for `.html('')` */ + empty(): Dom7Array; + + // SHORTCUTS + /** Trigger "click" event on collection */ + click(): Dom7Array; + /** Add "click" event handler to collection */ + click(handler: (event: Event) => void): Dom7Array; + /** Trigger "blur" event on collection */ + blur(): Dom7Array; + /** Add "blur" event handler to collection */ + blur(handler: (event: Event) => void): Dom7Array; + /** Trigger "focus" event on collection */ + focus(): Dom7Array; + /** Add "focus" event handler to collection */ + focus(handler: (event: Event) => void): Dom7Array; + /** Trigger "focusin" event on collection */ + focusin(): Dom7Array; + /** Add "focusin" event handler to collection */ + focusin(handler: (event: Event) => void): Dom7Array; + /** Trigger "focusout" event on collection */ + focusout(): Dom7Array; + /** Add "focusout" event handler to collection */ + focusout(handler: (event: Event) => void): Dom7Array; + /** Trigger "keyup" event on collection */ + keyup(): Dom7Array; + /** Add "keyup" event handler to collection */ + keyup(handler: (event: Event) => void): Dom7Array; + /** Trigger "keydown" event on collection */ + keydown(): Dom7Array; + /** Add "keydown" event handler to collection */ + keydown(handler: (event: Event) => void): Dom7Array; + /** Trigger "keypress" event on collection */ + keypress(): Dom7Array; + /** Add "keypress" event handler to collection */ + keypress(handler: (event: Event) => void): Dom7Array; + /** Trigger "submit" event on collection */ + submit(): Dom7Array; + /** Add "submit" event handler to collection */ + submit(handler: (event: Event) => void): Dom7Array; + /** Trigger "change" event on collection */ + change(): Dom7Array; + /** Add "change" event handler to collection */ + change(handler: (event: Event) => void): Dom7Array; + /** Trigger "mousedown" event on collection */ + mousedown(): Dom7Array; + /** Add "mousedown" event handler to collection */ + mousedown(handler: (event: Event) => void): Dom7Array; + /** Trigger "mousemove" event on collection */ + mousemove(): Dom7Array; + /** Add "mousemove" event handler to collection */ + mousemove(handler: (event: Event) => void): Dom7Array; + /** Trigger "mouseup" event on collection */ + mouseup(): Dom7Array; + /** Add "mouseup" event handler to collection */ + mouseup(handler: (event: Event) => void): Dom7Array; + /** Trigger "mouseenter" event on collection */ + mouseenter(): Dom7Array; + /** Add "mouseenter" event handler to collection */ + mouseenter(handler: (event: Event) => void): Dom7Array; + /** Trigger "mouseleave" event on collection */ + mouseleave(): Dom7Array; + /** Add "mouseleave" event handler to collection */ + mouseleave(handler: (event: Event) => void): Dom7Array; + /** Trigger "mouseout" event on collection */ + mouseout(): Dom7Array; + /** Add "mouseout" event handler to collection */ + mouseout(handler: (event: Event) => void): Dom7Array; + /** Trigger "mouseover" event on collection */ + mouseover(): Dom7Array; + /** Add "mouseover" event handler to collection */ + mouseover(handler: (event: Event) => void): Dom7Array; + /** Trigger "touchstart" event on collection */ + touchstart(): Dom7Array; + /** Add "touchstart" event handler to collection */ + touchstart(handler: (event: Event) => void): Dom7Array; + /** Trigger "touchend" event on collection */ + touchend(): Dom7Array; + /** Add "touchend" event handler to collection */ + touchend(handler: (event: Event) => void): Dom7Array; + /** Trigger "touchmove" event on collection */ + touchmove(): Dom7Array; + /** Add "touchmove" event handler to collection */ + touchmove(handler: (event: Event) => void): Dom7Array; + /** Add "resize" event handler to collection */ + resize(handler: (event: Event) => void): Dom7Array; + /** Add "scroll" event handler to collection */ + scroll(handler: (event: Event) => void): Dom7Array; + /** Perform a custom animation of a set of CSS properties */ + animate(properties: any, parameters: any): Dom7Array; +} + +export interface Dom7 { + (): Dom7Array; + (selector: string, context?: Element | Dom7Array): Dom7Array; + (element: Element): Dom7Array; + (element: Document): Dom7Array; + (elementArray: Element[]): Dom7Array; + (event: EventTarget): Dom7Array; + fn: any; +} + +declare const Dom7: Dom7; + +declare const add: () => void; +declare const addClass: () => void; +declare const animate: () => void; +declare const animationEnd: () => void; +declare const append: () => void; +declare const appendTo: () => void; +declare const attr: () => void; +declare const blur: () => void; +declare const change: () => void; +declare const children: () => void; +declare const click: () => void; +declare const closest: () => void; +declare const css: () => void; +declare const data: () => void; +declare const dataset: () => void; +declare const detach: () => void; +declare const each: () => void; +declare const empty: () => void; +declare const eq: () => void; +declare const filter: () => void; +declare const find: () => void; +declare const focus: () => void; +declare const focusin: () => void; +declare const focusout: () => void; +declare const hasClass: () => void; +declare const height: () => void; +declare const hide: () => void; +declare const html: () => void; +declare const insertAfter: () => void; +declare const insertBefore: () => void; +declare const is: () => void; +declare const keydown: () => void; +declare const keypress: () => void; +declare const keyup: () => void; +declare const mousedown: () => void; +declare const mouseenter: () => void; +declare const mouseleave: () => void; +declare const mousemove: () => void; +declare const mouseout: () => void; +declare const mouseover: () => void; +declare const mouseup: () => void; +declare const next: () => void; +declare const nextAll: () => void; +declare const off: () => void; +declare const offset: () => void; +declare const on: () => void; +declare const once: () => void; +declare const outerHeight: () => void; +declare const outerWidth: () => void; +declare const parent: () => void; +declare const parents: () => void; +declare const prepend: () => void; +declare const prependTo: () => void; +declare const prev: () => void; +declare const prevAll: () => void; +declare const prop: () => void; +declare const remove: () => void; +declare const removeAttr: () => void; +declare const removeClass: () => void; +declare const removeData: () => void; +declare const resize: () => void; +declare const scroll: () => void; +declare const scrollLeft: () => void; +declare const scrollTo: () => void; +declare const scrollTop: () => void; +declare const show: () => void; +declare const siblings: () => void; +declare const stop: () => void; +declare const styles: () => void; +declare const submit: () => void; +declare const text: () => void; +declare const toggleClass: () => void; +declare const touchend: () => void; +declare const touchmove: () => void; +declare const touchstart: () => void; +declare const transform: () => void; +declare const transition: () => void; +declare const transitionEnd: () => void; +declare const trigger: () => void; +declare const val: () => void; +declare const value: () => void; +declare const width: () => void; + +export { + Dom7 as $, + add, + addClass, + animate, + animationEnd, + append, + appendTo, + attr, + blur, + change, + children, + click, + closest, + css, + data, + dataset, + detach, + each, + empty, + eq, + filter, + find, + focus, + focusin, + focusout, + hasClass, + height, + hide, + html, + insertAfter, + insertBefore, + is, + keydown, + keypress, + keyup, + mousedown, + mouseenter, + mouseleave, + mousemove, + mouseout, + mouseover, + mouseup, + next, + nextAll, + off, + offset, + on, + once, + outerHeight, + outerWidth, + parent, + parents, + prepend, + prependTo, + prev, + prevAll, + prop, + remove, + removeAttr, + removeClass, + removeData, + resize, + scroll, + scrollLeft, + scrollTo, + scrollTop, + show, + siblings, + stop, + styles, + submit, + text, + toggleClass, + touchend, + touchmove, + touchstart, + transform, + transition, + transitionEnd, + trigger, + val, + value, + width, +}; +export default Dom7; diff --git a/swiper/node_modules/dom7/dom7.esm.js b/swiper/node_modules/dom7/dom7.esm.js new file mode 100644 index 0000000..b210dd5 --- /dev/null +++ b/swiper/node_modules/dom7/dom7.esm.js @@ -0,0 +1,1482 @@ +/** + * Dom7 4.0.4 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * https://framework7.io/docs/dom7.html + * + * Copyright 2022, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: January 11, 2022 + */ +import { getWindow, getDocument } from 'ssr-window'; + +/* eslint-disable no-proto */ +function makeReactive(obj) { + const proto = obj.__proto__; + Object.defineProperty(obj, '__proto__', { + get() { + return proto; + }, + + set(value) { + proto.__proto__ = value; + } + + }); +} + +class Dom7 extends Array { + constructor(items) { + if (typeof items === 'number') { + super(items); + } else { + super(...(items || [])); + makeReactive(this); + } + } + +} + +function arrayFlat(arr = []) { + const res = []; + arr.forEach(el => { + if (Array.isArray(el)) { + res.push(...arrayFlat(el)); + } else { + res.push(el); + } + }); + return res; +} +function arrayFilter(arr, callback) { + return Array.prototype.filter.call(arr, callback); +} +function arrayUnique(arr) { + const uniqueArray = []; + + for (let i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); + } + + return uniqueArray; +} +function toCamelCase(string) { + return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); +} + +// eslint-disable-next-line + +function qsa(selector, context) { + if (typeof selector !== 'string') { + return [selector]; + } + + const a = []; + const res = context.querySelectorAll(selector); + + for (let i = 0; i < res.length; i += 1) { + a.push(res[i]); + } + + return a; +} + +function $(selector, context) { + const window = getWindow(); + const document = getDocument(); + let arr = []; + + if (!context && selector instanceof Dom7) { + return selector; + } + + if (!selector) { + return new Dom7(arr); + } + + if (typeof selector === 'string') { + const html = selector.trim(); + + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + let toCreate = 'div'; + if (html.indexOf(' c.split(' '))); + this.forEach(el => { + el.classList.add(...classNames); + }); + return this; +} + +function removeClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + el.classList.remove(...classNames); + }); + return this; +} + +function toggleClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + classNames.forEach(className => { + el.classList.toggle(className); + }); + }); +} + +function hasClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + return arrayFilter(this, el => { + return classNames.filter(className => el.classList.contains(className)).length > 0; + }).length > 0; +} + +function attr(attrs, value) { + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) return this[0].getAttribute(attrs); + return undefined; + } // Set attrs + + + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + for (const attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + + return this; +} + +function removeAttr(attr) { + for (let i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + + return this; +} + +function prop(props, value) { + if (arguments.length === 1 && typeof props === 'string') { + // Get prop + if (this[0]) return this[0][props]; + } else { + // Set props + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i][props] = value; + } else { + // Object + for (const propName in props) { + this[i][propName] = props[propName]; + } + } + } + + return this; + } + + return this; +} + +function data(key, value) { + let el; + + if (typeof value === 'undefined') { + el = this[0]; + if (!el) return undefined; // Get value + + if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { + return el.dom7ElementDataStorage[key]; + } + + const dataKey = el.getAttribute(`data-${key}`); + + if (dataKey) { + return dataKey; + } + + return undefined; + } // Set value + + + for (let i = 0; i < this.length; i += 1) { + el = this[i]; + if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; + el.dom7ElementDataStorage[key] = value; + } + + return this; +} + +function removeData(key) { + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { + el.dom7ElementDataStorage[key] = null; + delete el.dom7ElementDataStorage[key]; + } + } +} + +function dataset() { + const el = this[0]; + if (!el) return undefined; + const dataset = {}; // eslint-disable-line + + if (el.dataset) { + for (const dataKey in el.dataset) { + dataset[dataKey] = el.dataset[dataKey]; + } + } else { + for (let i = 0; i < el.attributes.length; i += 1) { + const attr = el.attributes[i]; + + if (attr.name.indexOf('data-') >= 0) { + dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; + } + } + } + + for (const key in dataset) { + if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; + } + + return dataset; +} + +function val(value) { + if (typeof value === 'undefined') { + // get value + const el = this[0]; + if (!el) return undefined; + + if (el.multiple && el.nodeName.toLowerCase() === 'select') { + const values = []; + + for (let i = 0; i < el.selectedOptions.length; i += 1) { + values.push(el.selectedOptions[i].value); + } + + return values; + } + + return el.value; + } // set value + + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { + for (let j = 0; j < el.options.length; j += 1) { + el.options[j].selected = value.indexOf(el.options[j].value) >= 0; + } + } else { + el.value = value; + } + } + + return this; +} + +function value(value) { + return this.val(value); +} + +function transform(transform) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transform = transform; + } + + return this; +} + +function transition(duration) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; + } + + return this; +} + +function on(...args) { + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + + function handleLiveEvent(e) { + const target = e.target; + if (!target) return; + const eventData = e.target.dom7EventData || []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + if ($(target).is(targetSelector)) listener.apply(target, eventData);else { + const parents = $(target).parents(); // eslint-disable-line + + for (let k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); + } + } + } + + function handleEvent(e) { + const eventData = e && e.target ? e.target.dom7EventData || [] : []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + listener.apply(this, eventData); + } + + const events = eventType.split(' '); + let j; + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7Listeners) el.dom7Listeners = {}; + if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; + el.dom7Listeners[event].push({ + listener, + proxyListener: handleEvent + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; + if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; + el.dom7LiveListeners[event].push({ + listener, + proxyListener: handleLiveEvent + }); + el.addEventListener(event, handleLiveEvent, capture); + } + } + } + + return this; +} + +function off(...args) { + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + const events = eventType.split(' '); + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let handlers; + + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + + if (handlers && handlers.length) { + for (let k = handlers.length - 1; k >= 0; k -= 1) { + const handler = handlers[k]; + + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + + return this; +} + +function once(...args) { + const dom = this; + let [eventName, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventName, listener, capture] = args; + targetSelector = undefined; + } + + function onceHandler(...eventArgs) { + listener.apply(this, eventArgs); + dom.off(eventName, targetSelector, onceHandler, capture); + + if (onceHandler.dom7proxy) { + delete onceHandler.dom7proxy; + } + } + + onceHandler.dom7proxy = listener; + return dom.on(eventName, targetSelector, onceHandler, capture); +} + +function trigger(...args) { + const window = getWindow(); + const events = args[0].split(' '); + const eventData = args[1]; + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + + if (window.CustomEvent) { + const evt = new window.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true + }); + el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + } + + return this; +} + +function transitionEnd(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('transitionend', fireCallBack); + } + + if (callback) { + dom.on('transitionend', fireCallBack); + } + + return this; +} + +function animationEnd(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('animationend', fireCallBack); + } + + if (callback) { + dom.on('animationend', fireCallBack); + } + + return this; +} + +function width() { + const window = getWindow(); + + if (this[0] === window) { + return window.innerWidth; + } + + if (this.length > 0) { + return parseFloat(this.css('width')); + } + + return null; +} + +function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + + return this[0].offsetWidth; + } + + return null; +} + +function height() { + const window = getWindow(); + + if (this[0] === window) { + return window.innerHeight; + } + + if (this.length > 0) { + return parseFloat(this.css('height')); + } + + return null; +} + +function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + + return this[0].offsetHeight; + } + + return null; +} + +function offset() { + if (this.length > 0) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + + return null; +} + +function hide() { + for (let i = 0; i < this.length; i += 1) { + this[i].style.display = 'none'; + } + + return this; +} + +function show() { + const window = getWindow(); + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.style.display === 'none') { + el.style.display = ''; + } + + if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { + // Still not visible + el.style.display = 'block'; + } + } + + return this; +} + +function styles() { + const window = getWindow(); + if (this[0]) return window.getComputedStyle(this[0], null); + return {}; +} + +function css(props, value) { + const window = getWindow(); + let i; + + if (arguments.length === 1) { + if (typeof props === 'string') { + // .css('width') + if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); + } else { + // .css({ width: '100px' }) + for (i = 0; i < this.length; i += 1) { + for (const prop in props) { + this[i].style[prop] = props[prop]; + } + } + + return this; + } + } + + if (arguments.length === 2 && typeof props === 'string') { + // .css('width', '100px') + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + + return this; + } + + return this; +} + +function each(callback) { + if (!callback) return this; + this.forEach((el, index) => { + callback.apply(el, [el, index]); + }); + return this; +} + +function filter(callback) { + const result = arrayFilter(this, callback); + return $(result); +} + +function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + + return this; +} + +function text(text) { + if (typeof text === 'undefined') { + return this[0] ? this[0].textContent.trim() : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + + return this; +} + +function is(selector) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + let compareWith; + let i; + if (!el || typeof selector === 'undefined') return false; + + if (typeof selector === 'string') { + if (el.matches) return el.matches(selector); + if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); + if (el.msMatchesSelector) return el.msMatchesSelector(selector); + compareWith = $(selector); + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + if (selector === document) { + return el === document; + } + + if (selector === window) { + return el === window; + } + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + return false; +} + +function index() { + let child = this[0]; + let i; + + if (child) { + i = 0; // eslint-disable-next-line + + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + + return i; + } + + return undefined; +} + +function eq(index) { + if (typeof index === 'undefined') return this; + const length = this.length; + + if (index > length - 1) { + return $([]); + } + + if (index < 0) { + const returnIndex = length + index; + if (returnIndex < 0) return $([]); + return $([this[returnIndex]]); + } + + return $([this[index]]); +} + +function append(...els) { + let newChild; + const document = getDocument(); + + for (let k = 0; k < els.length; k += 1) { + newChild = els[k]; + + for (let i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (let j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; +} + +function appendTo(parent) { + $(parent).append(this); + return this; +} + +function prepend(newChild) { + const document = getDocument(); + let i; + let j; + + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + + return this; +} + +function prependTo(parent) { + $(parent).prepend(this); + return this; +} + +function insertBefore(selector) { + const before = $(selector); + + for (let i = 0; i < this.length; i += 1) { + if (before.length === 1) { + before[0].parentNode.insertBefore(this[i], before[0]); + } else if (before.length > 1) { + for (let j = 0; j < before.length; j += 1) { + before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); + } + } + } +} + +function insertAfter(selector) { + const after = $(selector); + + for (let i = 0; i < this.length; i += 1) { + if (after.length === 1) { + after[0].parentNode.insertBefore(this[i], after[0].nextSibling); + } else if (after.length > 1) { + for (let j = 0; j < after.length; j += 1) { + after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); + } + } + } +} + +function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return $([this[0].nextElementSibling]); + } + + return $([]); + } + + if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); + return $([]); + } + + return $([]); +} + +function nextAll(selector) { + const nextEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + + if (selector) { + if ($(next).is(selector)) nextEls.push(next); + } else nextEls.push(next); + + el = next; + } + + return $(nextEls); +} + +function prev(selector) { + if (this.length > 0) { + const el = this[0]; + + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return $([el.previousElementSibling]); + } + + return $([]); + } + + if (el.previousElementSibling) return $([el.previousElementSibling]); + return $([]); + } + + return $([]); +} + +function prevAll(selector) { + const prevEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + + if (selector) { + if ($(prev).is(selector)) prevEls.push(prev); + } else prevEls.push(prev); + + el = prev; + } + + return $(prevEls); +} + +function siblings(selector) { + return this.nextAll(selector).add(this.prevAll(selector)); +} + +function parent(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); + } else { + parents.push(this[i].parentNode); + } + } + } + + return $(parents); +} + +function parents(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + let parent = this[i].parentNode; // eslint-disable-line + + while (parent) { + if (selector) { + if ($(parent).is(selector)) parents.push(parent); + } else { + parents.push(parent); + } + + parent = parent.parentNode; + } + } + + return $(parents); +} + +function closest(selector) { + let closest = this; // eslint-disable-line + + if (typeof selector === 'undefined') { + return $([]); + } + + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + + return closest; +} + +function find(selector) { + const foundElements = []; + + for (let i = 0; i < this.length; i += 1) { + const found = this[i].querySelectorAll(selector); + + for (let j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + + return $(foundElements); +} + +function children(selector) { + const children = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + const childNodes = this[i].children; + + for (let j = 0; j < childNodes.length; j += 1) { + if (!selector || $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + + return $(children); +} + +function remove() { + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); + } + + return this; +} + +function detach() { + return this.remove(); +} + +function add(...els) { + const dom = this; + let i; + let j; + + for (i = 0; i < els.length; i += 1) { + const toAdd = $(els[i]); + + for (j = 0; j < toAdd.length; j += 1) { + dom.push(toAdd[j]); + } + } + + return dom; +} + +function empty() { + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.nodeType === 1) { + for (let j = 0; j < el.childNodes.length; j += 1) { + if (el.childNodes[j].parentNode) { + el.childNodes[j].parentNode.removeChild(el.childNodes[j]); + } + } + + el.textContent = ''; + } + } + + return this; +} + +// eslint-disable-next-line + +function scrollTo(...args) { + const window = getWindow(); + let [left, top, duration, easing, callback] = args; + + if (args.length === 4 && typeof easing === 'function') { + callback = easing; + [left, top, duration, callback, easing] = args; + } + + if (typeof easing === 'undefined') easing = 'swing'; + return this.each(function animate() { + const el = this; + let currentTop; + let currentLeft; + let maxTop; + let maxLeft; + let newTop; + let newLeft; + let scrollTop; // eslint-disable-line + + let scrollLeft; // eslint-disable-line + + let animateTop = top > 0 || top === 0; + let animateLeft = left > 0 || left === 0; + + if (typeof easing === 'undefined') { + easing = 'swing'; + } + + if (animateTop) { + currentTop = el.scrollTop; + + if (!duration) { + el.scrollTop = top; + } + } + + if (animateLeft) { + currentLeft = el.scrollLeft; + + if (!duration) { + el.scrollLeft = left; + } + } + + if (!duration) return; + + if (animateTop) { + maxTop = el.scrollHeight - el.offsetHeight; + newTop = Math.max(Math.min(top, maxTop), 0); + } + + if (animateLeft) { + maxLeft = el.scrollWidth - el.offsetWidth; + newLeft = Math.max(Math.min(left, maxLeft), 0); + } + + let startTime = null; + if (animateTop && newTop === currentTop) animateTop = false; + if (animateLeft && newLeft === currentLeft) animateLeft = false; + + function render(time = new Date().getTime()) { + if (startTime === null) { + startTime = time; + } + + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; + let done; + if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); + if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); + + if (animateTop && newTop > currentTop && scrollTop >= newTop) { + el.scrollTop = newTop; + done = true; + } + + if (animateTop && newTop < currentTop && scrollTop <= newTop) { + el.scrollTop = newTop; + done = true; + } + + if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { + el.scrollLeft = newLeft; + done = true; + } + + if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { + el.scrollLeft = newLeft; + done = true; + } + + if (done) { + if (callback) callback(); + return; + } + + if (animateTop) el.scrollTop = scrollTop; + if (animateLeft) el.scrollLeft = scrollLeft; + window.requestAnimationFrame(render); + } + + window.requestAnimationFrame(render); + }); +} // scrollTop(top, duration, easing, callback) { + + +function scrollTop(...args) { + let [top, duration, easing, callback] = args; + + if (args.length === 3 && typeof easing === 'function') { + [top, duration, callback, easing] = args; + } + + const dom = this; + + if (typeof top === 'undefined') { + if (dom.length > 0) return dom[0].scrollTop; + return null; + } + + return dom.scrollTo(undefined, top, duration, easing, callback); +} + +function scrollLeft(...args) { + let [left, duration, easing, callback] = args; + + if (args.length === 3 && typeof easing === 'function') { + [left, duration, callback, easing] = args; + } + + const dom = this; + + if (typeof left === 'undefined') { + if (dom.length > 0) return dom[0].scrollLeft; + return null; + } + + return dom.scrollTo(left, undefined, duration, easing, callback); +} + +// eslint-disable-next-line + +function animate(initialProps, initialParams) { + const window = getWindow(); + const els = this; + const a = { + props: Object.assign({}, initialProps), + params: Object.assign({ + duration: 300, + easing: 'swing' // or 'linear' + + /* Callbacks + begin(elements) + complete(elements) + progress(elements, complete, remaining, start, tweenValue) + */ + + }, initialParams), + elements: els, + animating: false, + que: [], + + easingProgress(easing, progress) { + if (easing === 'swing') { + return 0.5 - Math.cos(progress * Math.PI) / 2; + } + + if (typeof easing === 'function') { + return easing(progress); + } + + return progress; + }, + + stop() { + if (a.frameId) { + window.cancelAnimationFrame(a.frameId); + } + + a.animating = false; + a.elements.each(el => { + const element = el; + delete element.dom7AnimateInstance; + }); + a.que = []; + }, + + done(complete) { + a.animating = false; + a.elements.each(el => { + const element = el; + delete element.dom7AnimateInstance; + }); + if (complete) complete(els); + + if (a.que.length > 0) { + const que = a.que.shift(); + a.animate(que[0], que[1]); + } + }, + + animate(props, params) { + if (a.animating) { + a.que.push([props, params]); + return a; + } + + const elements = []; // Define & Cache Initials & Units + + a.elements.each((el, index) => { + let initialFullValue; + let initialValue; + let unit; + let finalValue; + let finalFullValue; + if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; + elements[index] = { + container: el + }; + Object.keys(props).forEach(prop => { + initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); + initialValue = parseFloat(initialFullValue); + unit = initialFullValue.replace(initialValue, ''); + finalValue = parseFloat(props[prop]); + finalFullValue = props[prop] + unit; + elements[index][prop] = { + initialFullValue, + initialValue, + unit, + finalValue, + finalFullValue, + currentValue: initialValue + }; + }); + }); + let startTime = null; + let time; + let elementsDone = 0; + let propsDone = 0; + let done; + let began = false; + a.animating = true; + + function render() { + time = new Date().getTime(); + let progress; + let easeProgress; // let el; + + if (!began) { + began = true; + if (params.begin) params.begin(els); + } + + if (startTime === null) { + startTime = time; + } + + if (params.progress) { + // eslint-disable-next-line + params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); + } + + elements.forEach(element => { + const el = element; + if (done || el.done) return; + Object.keys(props).forEach(prop => { + if (done || el.done) return; + progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); + easeProgress = a.easingProgress(params.easing, progress); + const { + initialValue, + finalValue, + unit + } = el[prop]; + el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); + const currentValue = el[prop].currentValue; + + if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { + el.container.style[prop] = finalValue + unit; + propsDone += 1; + + if (propsDone === Object.keys(props).length) { + el.done = true; + elementsDone += 1; + } + + if (elementsDone === elements.length) { + done = true; + } + } + + if (done) { + a.done(params.complete); + return; + } + + el.container.style[prop] = currentValue + unit; + }); + }); + if (done) return; // Then call + + a.frameId = window.requestAnimationFrame(render); + } + + a.frameId = window.requestAnimationFrame(render); + return a; + } + + }; + + if (a.elements.length === 0) { + return els; + } + + let animateInstance; + + for (let i = 0; i < a.elements.length; i += 1) { + if (a.elements[i].dom7AnimateInstance) { + animateInstance = a.elements[i].dom7AnimateInstance; + } else a.elements[i].dom7AnimateInstance = a; + } + + if (!animateInstance) { + animateInstance = a; + } + + if (initialProps === 'stop') { + animateInstance.stop(); + } else { + animateInstance.animate(a.props, a.params); + } + + return els; +} + +function stop() { + const els = this; + + for (let i = 0; i < els.length; i += 1) { + if (els[i].dom7AnimateInstance) { + els[i].dom7AnimateInstance.stop(); + } + } +} + +const noTrigger = 'resize scroll'.split(' '); + +function shortcut(name) { + function eventHandler(...args) { + if (typeof args[0] === 'undefined') { + for (let i = 0; i < this.length; i += 1) { + if (noTrigger.indexOf(name) < 0) { + if (name in this[i]) this[i][name]();else { + $(this[i]).trigger(name); + } + } + } + + return this; + } + + return this.on(name, ...args); + } + + return eventHandler; +} + +const click = shortcut('click'); +const blur = shortcut('blur'); +const focus = shortcut('focus'); +const focusin = shortcut('focusin'); +const focusout = shortcut('focusout'); +const keyup = shortcut('keyup'); +const keydown = shortcut('keydown'); +const keypress = shortcut('keypress'); +const submit = shortcut('submit'); +const change = shortcut('change'); +const mousedown = shortcut('mousedown'); +const mousemove = shortcut('mousemove'); +const mouseup = shortcut('mouseup'); +const mouseenter = shortcut('mouseenter'); +const mouseleave = shortcut('mouseleave'); +const mouseout = shortcut('mouseout'); +const mouseover = shortcut('mouseover'); +const touchstart = shortcut('touchstart'); +const touchend = shortcut('touchend'); +const touchmove = shortcut('touchmove'); +const resize = shortcut('resize'); +const scroll = shortcut('scroll'); + +export default $; +export { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width }; diff --git a/swiper/node_modules/dom7/dom7.js b/swiper/node_modules/dom7/dom7.js new file mode 100644 index 0000000..1b5a7a9 --- /dev/null +++ b/swiper/node_modules/dom7/dom7.js @@ -0,0 +1,1772 @@ +/** + * Dom7 4.0.4 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * https://framework7.io/docs/dom7.html + * + * Copyright 2022, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: January 11, 2022 + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dom7 = factory()); +}(this, (function () { 'use strict'; + + /** + * SSR Window 4.0.0 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: August 25, 2021 + */ + + /* eslint-disable no-param-reassign */ + function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + + function extend(target = {}, src = {}) { + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); + } + + const ssrDocument = { + body: {}, + + addEventListener() {}, + + removeEventListener() {}, + + activeElement: { + blur() {}, + + nodeName: '' + }, + + querySelector() { + return null; + }, + + querySelectorAll() { + return []; + }, + + getElementById() { + return null; + }, + + createEvent() { + return { + initEvent() {} + + }; + }, + + createElement() { + return { + children: [], + childNodes: [], + style: {}, + + setAttribute() {}, + + getElementsByTagName() { + return []; + } + + }; + }, + + createElementNS() { + return {}; + }, + + importNode() { + return null; + }, + + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; + } + + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + + pushState() {}, + + go() {}, + + back() {} + + }, + CustomEvent: function CustomEvent() { + return this; + }, + + addEventListener() {}, + + removeEventListener() {}, + + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + + }; + }, + + Image() {}, + + Date() {}, + + screen: {}, + + setTimeout() {}, + + clearTimeout() {}, + + matchMedia() { + return {}; + }, + + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + + return setTimeout(callback, 0); + }, + + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + + clearTimeout(id); + } + + }; + + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; + } + + /* eslint-disable no-proto */ + function makeReactive(obj) { + const proto = obj.__proto__; + Object.defineProperty(obj, '__proto__', { + get() { + return proto; + }, + + set(value) { + proto.__proto__ = value; + } + + }); + } + + class Dom7 extends Array { + constructor(items) { + if (typeof items === 'number') { + super(items); + } else { + super(...(items || [])); + makeReactive(this); + } + } + + } + + function arrayFlat(arr = []) { + const res = []; + arr.forEach(el => { + if (Array.isArray(el)) { + res.push(...arrayFlat(el)); + } else { + res.push(el); + } + }); + return res; + } + function arrayFilter(arr, callback) { + return Array.prototype.filter.call(arr, callback); + } + function arrayUnique(arr) { + const uniqueArray = []; + + for (let i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); + } + + return uniqueArray; + } + function toCamelCase(string) { + return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); + } + + // eslint-disable-next-line + + function qsa(selector, context) { + if (typeof selector !== 'string') { + return [selector]; + } + + const a = []; + const res = context.querySelectorAll(selector); + + for (let i = 0; i < res.length; i += 1) { + a.push(res[i]); + } + + return a; + } + + function $(selector, context) { + const window = getWindow(); + const document = getDocument(); + let arr = []; + + if (!context && selector instanceof Dom7) { + return selector; + } + + if (!selector) { + return new Dom7(arr); + } + + if (typeof selector === 'string') { + const html = selector.trim(); + + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + let toCreate = 'div'; + if (html.indexOf(' c.split(' '))); + this.forEach(el => { + el.classList.add(...classNames); + }); + return this; + } + + function removeClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + el.classList.remove(...classNames); + }); + return this; + } + + function toggleClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + classNames.forEach(className => { + el.classList.toggle(className); + }); + }); + } + + function hasClass(...classes) { + const classNames = arrayFlat(classes.map(c => c.split(' '))); + return arrayFilter(this, el => { + return classNames.filter(className => el.classList.contains(className)).length > 0; + }).length > 0; + } + + function attr(attrs, value) { + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) return this[0].getAttribute(attrs); + return undefined; + } // Set attrs + + + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + for (const attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + + return this; + } + + function removeAttr(attr) { + for (let i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + + return this; + } + + function prop(props, value) { + if (arguments.length === 1 && typeof props === 'string') { + // Get prop + if (this[0]) return this[0][props]; + } else { + // Set props + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i][props] = value; + } else { + // Object + for (const propName in props) { + this[i][propName] = props[propName]; + } + } + } + + return this; + } + + return this; + } + + function data(key, value) { + let el; + + if (typeof value === 'undefined') { + el = this[0]; + if (!el) return undefined; // Get value + + if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { + return el.dom7ElementDataStorage[key]; + } + + const dataKey = el.getAttribute(`data-${key}`); + + if (dataKey) { + return dataKey; + } + + return undefined; + } // Set value + + + for (let i = 0; i < this.length; i += 1) { + el = this[i]; + if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; + el.dom7ElementDataStorage[key] = value; + } + + return this; + } + + function removeData(key) { + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { + el.dom7ElementDataStorage[key] = null; + delete el.dom7ElementDataStorage[key]; + } + } + } + + function dataset() { + const el = this[0]; + if (!el) return undefined; + const dataset = {}; // eslint-disable-line + + if (el.dataset) { + for (const dataKey in el.dataset) { + dataset[dataKey] = el.dataset[dataKey]; + } + } else { + for (let i = 0; i < el.attributes.length; i += 1) { + const attr = el.attributes[i]; + + if (attr.name.indexOf('data-') >= 0) { + dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; + } + } + } + + for (const key in dataset) { + if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; + } + + return dataset; + } + + function val(value) { + if (typeof value === 'undefined') { + // get value + const el = this[0]; + if (!el) return undefined; + + if (el.multiple && el.nodeName.toLowerCase() === 'select') { + const values = []; + + for (let i = 0; i < el.selectedOptions.length; i += 1) { + values.push(el.selectedOptions[i].value); + } + + return values; + } + + return el.value; + } // set value + + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { + for (let j = 0; j < el.options.length; j += 1) { + el.options[j].selected = value.indexOf(el.options[j].value) >= 0; + } + } else { + el.value = value; + } + } + + return this; + } + + function value(value) { + return this.val(value); + } + + function transform(transform) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transform = transform; + } + + return this; + } + + function transition(duration) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; + } + + return this; + } + + function on(...args) { + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + + function handleLiveEvent(e) { + const target = e.target; + if (!target) return; + const eventData = e.target.dom7EventData || []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + if ($(target).is(targetSelector)) listener.apply(target, eventData);else { + const parents = $(target).parents(); // eslint-disable-line + + for (let k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); + } + } + } + + function handleEvent(e) { + const eventData = e && e.target ? e.target.dom7EventData || [] : []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + listener.apply(this, eventData); + } + + const events = eventType.split(' '); + let j; + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7Listeners) el.dom7Listeners = {}; + if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; + el.dom7Listeners[event].push({ + listener, + proxyListener: handleEvent + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; + if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; + el.dom7LiveListeners[event].push({ + listener, + proxyListener: handleLiveEvent + }); + el.addEventListener(event, handleLiveEvent, capture); + } + } + } + + return this; + } + + function off(...args) { + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + const events = eventType.split(' '); + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let handlers; + + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + + if (handlers && handlers.length) { + for (let k = handlers.length - 1; k >= 0; k -= 1) { + const handler = handlers[k]; + + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + + return this; + } + + function once(...args) { + const dom = this; + let [eventName, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventName, listener, capture] = args; + targetSelector = undefined; + } + + function onceHandler(...eventArgs) { + listener.apply(this, eventArgs); + dom.off(eventName, targetSelector, onceHandler, capture); + + if (onceHandler.dom7proxy) { + delete onceHandler.dom7proxy; + } + } + + onceHandler.dom7proxy = listener; + return dom.on(eventName, targetSelector, onceHandler, capture); + } + + function trigger(...args) { + const window = getWindow(); + const events = args[0].split(' '); + const eventData = args[1]; + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + + if (window.CustomEvent) { + const evt = new window.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true + }); + el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + } + + return this; + } + + function transitionEnd(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('transitionend', fireCallBack); + } + + if (callback) { + dom.on('transitionend', fireCallBack); + } + + return this; + } + + function animationEnd(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('animationend', fireCallBack); + } + + if (callback) { + dom.on('animationend', fireCallBack); + } + + return this; + } + + function width() { + const window = getWindow(); + + if (this[0] === window) { + return window.innerWidth; + } + + if (this.length > 0) { + return parseFloat(this.css('width')); + } + + return null; + } + + function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + + return this[0].offsetWidth; + } + + return null; + } + + function height() { + const window = getWindow(); + + if (this[0] === window) { + return window.innerHeight; + } + + if (this.length > 0) { + return parseFloat(this.css('height')); + } + + return null; + } + + function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + + return this[0].offsetHeight; + } + + return null; + } + + function offset() { + if (this.length > 0) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + + return null; + } + + function hide() { + for (let i = 0; i < this.length; i += 1) { + this[i].style.display = 'none'; + } + + return this; + } + + function show() { + const window = getWindow(); + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.style.display === 'none') { + el.style.display = ''; + } + + if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { + // Still not visible + el.style.display = 'block'; + } + } + + return this; + } + + function styles() { + const window = getWindow(); + if (this[0]) return window.getComputedStyle(this[0], null); + return {}; + } + + function css(props, value) { + const window = getWindow(); + let i; + + if (arguments.length === 1) { + if (typeof props === 'string') { + // .css('width') + if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); + } else { + // .css({ width: '100px' }) + for (i = 0; i < this.length; i += 1) { + for (const prop in props) { + this[i].style[prop] = props[prop]; + } + } + + return this; + } + } + + if (arguments.length === 2 && typeof props === 'string') { + // .css('width', '100px') + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + + return this; + } + + return this; + } + + function each(callback) { + if (!callback) return this; + this.forEach((el, index) => { + callback.apply(el, [el, index]); + }); + return this; + } + + function filter(callback) { + const result = arrayFilter(this, callback); + return $(result); + } + + function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + + return this; + } + + function text(text) { + if (typeof text === 'undefined') { + return this[0] ? this[0].textContent.trim() : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + + return this; + } + + function is(selector) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + let compareWith; + let i; + if (!el || typeof selector === 'undefined') return false; + + if (typeof selector === 'string') { + if (el.matches) return el.matches(selector); + if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); + if (el.msMatchesSelector) return el.msMatchesSelector(selector); + compareWith = $(selector); + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + if (selector === document) { + return el === document; + } + + if (selector === window) { + return el === window; + } + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + return false; + } + + function index() { + let child = this[0]; + let i; + + if (child) { + i = 0; // eslint-disable-next-line + + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + + return i; + } + + return undefined; + } + + function eq(index) { + if (typeof index === 'undefined') return this; + const length = this.length; + + if (index > length - 1) { + return $([]); + } + + if (index < 0) { + const returnIndex = length + index; + if (returnIndex < 0) return $([]); + return $([this[returnIndex]]); + } + + return $([this[index]]); + } + + function append(...els) { + let newChild; + const document = getDocument(); + + for (let k = 0; k < els.length; k += 1) { + newChild = els[k]; + + for (let i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (let j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; + } + + function appendTo(parent) { + $(parent).append(this); + return this; + } + + function prepend(newChild) { + const document = getDocument(); + let i; + let j; + + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + + return this; + } + + function prependTo(parent) { + $(parent).prepend(this); + return this; + } + + function insertBefore(selector) { + const before = $(selector); + + for (let i = 0; i < this.length; i += 1) { + if (before.length === 1) { + before[0].parentNode.insertBefore(this[i], before[0]); + } else if (before.length > 1) { + for (let j = 0; j < before.length; j += 1) { + before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); + } + } + } + } + + function insertAfter(selector) { + const after = $(selector); + + for (let i = 0; i < this.length; i += 1) { + if (after.length === 1) { + after[0].parentNode.insertBefore(this[i], after[0].nextSibling); + } else if (after.length > 1) { + for (let j = 0; j < after.length; j += 1) { + after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); + } + } + } + } + + function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return $([this[0].nextElementSibling]); + } + + return $([]); + } + + if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); + return $([]); + } + + return $([]); + } + + function nextAll(selector) { + const nextEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + + if (selector) { + if ($(next).is(selector)) nextEls.push(next); + } else nextEls.push(next); + + el = next; + } + + return $(nextEls); + } + + function prev(selector) { + if (this.length > 0) { + const el = this[0]; + + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return $([el.previousElementSibling]); + } + + return $([]); + } + + if (el.previousElementSibling) return $([el.previousElementSibling]); + return $([]); + } + + return $([]); + } + + function prevAll(selector) { + const prevEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + + if (selector) { + if ($(prev).is(selector)) prevEls.push(prev); + } else prevEls.push(prev); + + el = prev; + } + + return $(prevEls); + } + + function siblings(selector) { + return this.nextAll(selector).add(this.prevAll(selector)); + } + + function parent(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); + } else { + parents.push(this[i].parentNode); + } + } + } + + return $(parents); + } + + function parents(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + let parent = this[i].parentNode; // eslint-disable-line + + while (parent) { + if (selector) { + if ($(parent).is(selector)) parents.push(parent); + } else { + parents.push(parent); + } + + parent = parent.parentNode; + } + } + + return $(parents); + } + + function closest(selector) { + let closest = this; // eslint-disable-line + + if (typeof selector === 'undefined') { + return $([]); + } + + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + + return closest; + } + + function find(selector) { + const foundElements = []; + + for (let i = 0; i < this.length; i += 1) { + const found = this[i].querySelectorAll(selector); + + for (let j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + + return $(foundElements); + } + + function children(selector) { + const children = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + const childNodes = this[i].children; + + for (let j = 0; j < childNodes.length; j += 1) { + if (!selector || $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + + return $(children); + } + + function remove() { + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); + } + + return this; + } + + function detach() { + return this.remove(); + } + + function add(...els) { + const dom = this; + let i; + let j; + + for (i = 0; i < els.length; i += 1) { + const toAdd = $(els[i]); + + for (j = 0; j < toAdd.length; j += 1) { + dom.push(toAdd[j]); + } + } + + return dom; + } + + function empty() { + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (el.nodeType === 1) { + for (let j = 0; j < el.childNodes.length; j += 1) { + if (el.childNodes[j].parentNode) { + el.childNodes[j].parentNode.removeChild(el.childNodes[j]); + } + } + + el.textContent = ''; + } + } + + return this; + } + + var methods = /*#__PURE__*/Object.freeze({ + __proto__: null, + addClass: addClass, + removeClass: removeClass, + toggleClass: toggleClass, + hasClass: hasClass, + attr: attr, + removeAttr: removeAttr, + prop: prop, + data: data, + removeData: removeData, + dataset: dataset, + val: val, + value: value, + transform: transform, + transition: transition, + on: on, + off: off, + once: once, + trigger: trigger, + transitionEnd: transitionEnd, + animationEnd: animationEnd, + width: width, + outerWidth: outerWidth, + height: height, + outerHeight: outerHeight, + offset: offset, + hide: hide, + show: show, + styles: styles, + css: css, + each: each, + filter: filter, + html: html, + text: text, + is: is, + index: index, + eq: eq, + append: append, + appendTo: appendTo, + prepend: prepend, + prependTo: prependTo, + insertBefore: insertBefore, + insertAfter: insertAfter, + next: next, + nextAll: nextAll, + prev: prev, + prevAll: prevAll, + siblings: siblings, + parent: parent, + parents: parents, + closest: closest, + find: find, + children: children, + remove: remove, + detach: detach, + add: add, + empty: empty + }); + + // eslint-disable-next-line + + function scrollTo(...args) { + const window = getWindow(); + let [left, top, duration, easing, callback] = args; + + if (args.length === 4 && typeof easing === 'function') { + callback = easing; + [left, top, duration, callback, easing] = args; + } + + if (typeof easing === 'undefined') easing = 'swing'; + return this.each(function animate() { + const el = this; + let currentTop; + let currentLeft; + let maxTop; + let maxLeft; + let newTop; + let newLeft; + let scrollTop; // eslint-disable-line + + let scrollLeft; // eslint-disable-line + + let animateTop = top > 0 || top === 0; + let animateLeft = left > 0 || left === 0; + + if (typeof easing === 'undefined') { + easing = 'swing'; + } + + if (animateTop) { + currentTop = el.scrollTop; + + if (!duration) { + el.scrollTop = top; + } + } + + if (animateLeft) { + currentLeft = el.scrollLeft; + + if (!duration) { + el.scrollLeft = left; + } + } + + if (!duration) return; + + if (animateTop) { + maxTop = el.scrollHeight - el.offsetHeight; + newTop = Math.max(Math.min(top, maxTop), 0); + } + + if (animateLeft) { + maxLeft = el.scrollWidth - el.offsetWidth; + newLeft = Math.max(Math.min(left, maxLeft), 0); + } + + let startTime = null; + if (animateTop && newTop === currentTop) animateTop = false; + if (animateLeft && newLeft === currentLeft) animateLeft = false; + + function render(time = new Date().getTime()) { + if (startTime === null) { + startTime = time; + } + + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; + let done; + if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); + if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); + + if (animateTop && newTop > currentTop && scrollTop >= newTop) { + el.scrollTop = newTop; + done = true; + } + + if (animateTop && newTop < currentTop && scrollTop <= newTop) { + el.scrollTop = newTop; + done = true; + } + + if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { + el.scrollLeft = newLeft; + done = true; + } + + if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { + el.scrollLeft = newLeft; + done = true; + } + + if (done) { + if (callback) callback(); + return; + } + + if (animateTop) el.scrollTop = scrollTop; + if (animateLeft) el.scrollLeft = scrollLeft; + window.requestAnimationFrame(render); + } + + window.requestAnimationFrame(render); + }); + } // scrollTop(top, duration, easing, callback) { + + + function scrollTop(...args) { + let [top, duration, easing, callback] = args; + + if (args.length === 3 && typeof easing === 'function') { + [top, duration, callback, easing] = args; + } + + const dom = this; + + if (typeof top === 'undefined') { + if (dom.length > 0) return dom[0].scrollTop; + return null; + } + + return dom.scrollTo(undefined, top, duration, easing, callback); + } + + function scrollLeft(...args) { + let [left, duration, easing, callback] = args; + + if (args.length === 3 && typeof easing === 'function') { + [left, duration, callback, easing] = args; + } + + const dom = this; + + if (typeof left === 'undefined') { + if (dom.length > 0) return dom[0].scrollLeft; + return null; + } + + return dom.scrollTo(left, undefined, duration, easing, callback); + } + + var scroll$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + scrollTo: scrollTo, + scrollTop: scrollTop, + scrollLeft: scrollLeft + }); + + // eslint-disable-next-line + + function animate(initialProps, initialParams) { + const window = getWindow(); + const els = this; + const a = { + props: Object.assign({}, initialProps), + params: Object.assign({ + duration: 300, + easing: 'swing' // or 'linear' + + /* Callbacks + begin(elements) + complete(elements) + progress(elements, complete, remaining, start, tweenValue) + */ + + }, initialParams), + elements: els, + animating: false, + que: [], + + easingProgress(easing, progress) { + if (easing === 'swing') { + return 0.5 - Math.cos(progress * Math.PI) / 2; + } + + if (typeof easing === 'function') { + return easing(progress); + } + + return progress; + }, + + stop() { + if (a.frameId) { + window.cancelAnimationFrame(a.frameId); + } + + a.animating = false; + a.elements.each(el => { + const element = el; + delete element.dom7AnimateInstance; + }); + a.que = []; + }, + + done(complete) { + a.animating = false; + a.elements.each(el => { + const element = el; + delete element.dom7AnimateInstance; + }); + if (complete) complete(els); + + if (a.que.length > 0) { + const que = a.que.shift(); + a.animate(que[0], que[1]); + } + }, + + animate(props, params) { + if (a.animating) { + a.que.push([props, params]); + return a; + } + + const elements = []; // Define & Cache Initials & Units + + a.elements.each((el, index) => { + let initialFullValue; + let initialValue; + let unit; + let finalValue; + let finalFullValue; + if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; + elements[index] = { + container: el + }; + Object.keys(props).forEach(prop => { + initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); + initialValue = parseFloat(initialFullValue); + unit = initialFullValue.replace(initialValue, ''); + finalValue = parseFloat(props[prop]); + finalFullValue = props[prop] + unit; + elements[index][prop] = { + initialFullValue, + initialValue, + unit, + finalValue, + finalFullValue, + currentValue: initialValue + }; + }); + }); + let startTime = null; + let time; + let elementsDone = 0; + let propsDone = 0; + let done; + let began = false; + a.animating = true; + + function render() { + time = new Date().getTime(); + let progress; + let easeProgress; // let el; + + if (!began) { + began = true; + if (params.begin) params.begin(els); + } + + if (startTime === null) { + startTime = time; + } + + if (params.progress) { + // eslint-disable-next-line + params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); + } + + elements.forEach(element => { + const el = element; + if (done || el.done) return; + Object.keys(props).forEach(prop => { + if (done || el.done) return; + progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); + easeProgress = a.easingProgress(params.easing, progress); + const { + initialValue, + finalValue, + unit + } = el[prop]; + el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); + const currentValue = el[prop].currentValue; + + if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { + el.container.style[prop] = finalValue + unit; + propsDone += 1; + + if (propsDone === Object.keys(props).length) { + el.done = true; + elementsDone += 1; + } + + if (elementsDone === elements.length) { + done = true; + } + } + + if (done) { + a.done(params.complete); + return; + } + + el.container.style[prop] = currentValue + unit; + }); + }); + if (done) return; // Then call + + a.frameId = window.requestAnimationFrame(render); + } + + a.frameId = window.requestAnimationFrame(render); + return a; + } + + }; + + if (a.elements.length === 0) { + return els; + } + + let animateInstance; + + for (let i = 0; i < a.elements.length; i += 1) { + if (a.elements[i].dom7AnimateInstance) { + animateInstance = a.elements[i].dom7AnimateInstance; + } else a.elements[i].dom7AnimateInstance = a; + } + + if (!animateInstance) { + animateInstance = a; + } + + if (initialProps === 'stop') { + animateInstance.stop(); + } else { + animateInstance.animate(a.props, a.params); + } + + return els; + } + + function stop() { + const els = this; + + for (let i = 0; i < els.length; i += 1) { + if (els[i].dom7AnimateInstance) { + els[i].dom7AnimateInstance.stop(); + } + } + } + + var animate$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + animate: animate, + stop: stop + }); + + const noTrigger = 'resize scroll'.split(' '); + + function shortcut(name) { + function eventHandler(...args) { + if (typeof args[0] === 'undefined') { + for (let i = 0; i < this.length; i += 1) { + if (noTrigger.indexOf(name) < 0) { + if (name in this[i]) this[i][name]();else { + $(this[i]).trigger(name); + } + } + } + + return this; + } + + return this.on(name, ...args); + } + + return eventHandler; + } + + const click = shortcut('click'); + const blur = shortcut('blur'); + const focus = shortcut('focus'); + const focusin = shortcut('focusin'); + const focusout = shortcut('focusout'); + const keyup = shortcut('keyup'); + const keydown = shortcut('keydown'); + const keypress = shortcut('keypress'); + const submit = shortcut('submit'); + const change = shortcut('change'); + const mousedown = shortcut('mousedown'); + const mousemove = shortcut('mousemove'); + const mouseup = shortcut('mouseup'); + const mouseenter = shortcut('mouseenter'); + const mouseleave = shortcut('mouseleave'); + const mouseout = shortcut('mouseout'); + const mouseover = shortcut('mouseover'); + const touchstart = shortcut('touchstart'); + const touchend = shortcut('touchend'); + const touchmove = shortcut('touchmove'); + const resize = shortcut('resize'); + const scroll = shortcut('scroll'); + + var shortcuts = /*#__PURE__*/Object.freeze({ + __proto__: null, + click: click, + blur: blur, + focus: focus, + focusin: focusin, + focusout: focusout, + keyup: keyup, + keydown: keydown, + keypress: keypress, + submit: submit, + change: change, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseenter: mouseenter, + mouseleave: mouseleave, + mouseout: mouseout, + mouseover: mouseover, + touchstart: touchstart, + touchend: touchend, + touchmove: touchmove, + resize: resize, + scroll: scroll + }); + + [methods, scroll$1, animate$1, shortcuts].forEach(group => { + Object.keys(group).forEach(methodName => { + $.fn[methodName] = group[methodName]; + }); + }); + + return $; + +}))); +//# sourceMappingURL=dom7.js.map diff --git a/swiper/node_modules/dom7/dom7.js.map b/swiper/node_modules/dom7/dom7.js.map new file mode 100644 index 0000000..e4f16d7 --- /dev/null +++ b/swiper/node_modules/dom7/dom7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dom7.js","sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","toCamelCase","string","toLowerCase","replace","match","group","toUpperCase","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","prop","props","propName","data","dom7ElementDataStorage","dataKey","removeData","dataset","attributes","name","parseFloat","val","multiple","values","selectedOptions","j","options","selected","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","once","dom","eventName","onceHandler","eventArgs","trigger","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","height","innerHeight","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","show","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","appendTo","parent","prepend","insertBefore","prependTo","before","parentNode","cloneNode","insertAfter","after","nextSibling","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","removeChild","detach","toAdd","empty","scrollTo","easing","animate","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","element","dom7AnimateInstance","complete","shift","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","animateInstance","noTrigger","shortcut","eventHandler","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","shortcuts","methodName"],"mappings":"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"} \ No newline at end of file diff --git a/swiper/node_modules/dom7/dom7.min.js b/swiper/node_modules/dom7/dom7.min.js new file mode 100644 index 0000000..8f4c98a --- /dev/null +++ b/swiper/node_modules/dom7/dom7.min.js @@ -0,0 +1,13 @@ +/** + * Dom7 4.0.4 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * https://framework7.io/docs/dom7.html + * + * Copyright 2022, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: January 11, 2022 + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Dom7=e()}(this,(function(){"use strict";function t(t){return null!==t&&"object"==typeof t&&"constructor"in t&&t.constructor===Object}function e(n={},i={}){Object.keys(i).forEach((o=>{void 0===n[o]?n[o]=i[o]:t(i[o])&&t(n[o])&&Object.keys(i[o]).length>0&&e(n[o],i[o])}))}const n={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const t="undefined"!=typeof document?document:{};return e(t,n),t}const o={document:n,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:t=>"undefined"==typeof setTimeout?(t(),null):setTimeout(t,0),cancelAnimationFrame(t){"undefined"!=typeof setTimeout&&clearTimeout(t)}};function s(){const t="undefined"!=typeof window?window:{};return e(t,o),t}class r extends Array{constructor(t){"number"==typeof t?super(t):(super(...t||[]),function(t){const e=t.__proto__;Object.defineProperty(t,"__proto__",{get:()=>e,set(t){e.__proto__=t}})}(this))}}function l(t=[]){const e=[];return t.forEach((t=>{Array.isArray(t)?e.push(...l(t)):e.push(t)})),e}function h(t,e){return Array.prototype.filter.call(t,e)}function u(t,e){const n=s(),o=i();let l=[];if(!e&&t instanceof r)return t;if(!t)return new r(l);if("string"==typeof t){const n=t.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){let t="div";0===n.indexOf("t.split(" "))));return this.forEach((t=>{t.classList.add(...e)})),this},removeClass:function(...t){const e=l(t.map((t=>t.split(" "))));return this.forEach((t=>{t.classList.remove(...e)})),this},toggleClass:function(...t){const e=l(t.map((t=>t.split(" "))));this.forEach((t=>{e.forEach((e=>{t.classList.toggle(e)}))}))},hasClass:function(...t){const e=l(t.map((t=>t.split(" "))));return h(this,(t=>e.filter((e=>t.classList.contains(e))).length>0)).length>0},attr:function(t,e){if(1===arguments.length&&"string"==typeof t)return this[0]?this[0].getAttribute(t):void 0;for(let n=0;n=0&&(e[(n=o.name.split("data-")[1],n.toLowerCase().replace(/-(.)/g,((t,e)=>e.toUpperCase())))]=o.value)}var n;for(const t in e)"false"===e[t]?e[t]=!1:"true"===e[t]?e[t]=!0:parseFloat(e[t])===1*e[t]&&(e[t]*=1);return e},val:function(t){if(void 0===t){const t=this[0];if(!t)return;if(t.multiple&&"select"===t.nodeName.toLowerCase()){const e=[];for(let n=0;n=0;else n.value=t}return this},value:function(t){return this.val(t)},transform:function(t){for(let e=0;e=0;t-=1){const n=r[t];i&&n.listener===i||i&&n.listener&&n.listener.dom7proxy&&n.listener.dom7proxy===i?(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1)):i||(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1))}}}return this},once:function(...t){const e=this;let[n,i,o,s]=t;function r(...t){o.apply(this,t),e.off(n,i,r,s),r.dom7proxy&&delete r.dom7proxy}return"function"==typeof t[1]&&([n,o,s]=t,i=void 0),r.dom7proxy=o,e.on(n,i,r,s)},trigger:function(...t){const e=s(),n=t[0].split(" "),i=t[1];for(let o=0;oe>0)),o.dispatchEvent(n),o.dom7EventData=[],delete o.dom7EventData}}}return this},transitionEnd:function(t){const e=this;return t&&e.on("transitionend",(function n(i){i.target===this&&(t.call(this,i),e.off("transitionend",n))})),this},animationEnd:function(t){const e=this;return t&&e.on("animationend",(function n(i){i.target===this&&(t.call(this,i),e.off("animationend",n))})),this},width:function(){const t=s();return this[0]===t?t.innerWidth:this.length>0?parseFloat(this.css("width")):null},outerWidth:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},height:function(){const t=s();return this[0]===t?t.innerHeight:this.length>0?parseFloat(this.css("height")):null},outerHeight:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},offset:function(){if(this.length>0){const t=s(),e=i(),n=this[0],o=n.getBoundingClientRect(),r=e.body,l=n.clientTop||r.clientTop||0,h=n.clientLeft||r.clientLeft||0,u=n===t?t.scrollY:n.scrollTop,a=n===t?t.scrollX:n.scrollLeft;return{top:o.top+u-l,left:o.left+a-h}}return null},hide:function(){for(let t=0;t{t.apply(e,[e,n])})),this):this},filter:function(t){return u(h(this,t))},html:function(t){if(void 0===t)return this[0]?this[0].innerHTML:null;for(let e=0;ee-1)return u([]);if(t<0){const n=e+t;return u(n<0?[]:[this[n]])}return u([this[t]])},append:function(...t){let e;const n=i();for(let i=0;i=0;o-=1)this[n].insertBefore(i.childNodes[o],this[n].childNodes[0])}else if(t instanceof r)for(o=0;o1)for(let n=0;n1)for(let n=0;n0?t?this[0].nextElementSibling&&u(this[0].nextElementSibling).is(t)?u([this[0].nextElementSibling]):u([]):this[0].nextElementSibling?u([this[0].nextElementSibling]):u([]):u([])},nextAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.nextElementSibling;){const i=n.nextElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},prev:function(t){if(this.length>0){const e=this[0];return t?e.previousElementSibling&&u(e.previousElementSibling).is(t)?u([e.previousElementSibling]):u([]):e.previousElementSibling?u([e.previousElementSibling]):u([])}return u([])},prevAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.previousElementSibling;){const i=n.previousElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},siblings:function(t){return this.nextAll(t).add(this.prevAll(t))},parent:function(t){const e=[];for(let n=0;n0||0===i,g=n>0||0===n;if(void 0===r&&(r="swing"),m&&(s=t.scrollTop,o||(t.scrollTop=i)),g&&(h=t.scrollLeft,o||(t.scrollLeft=n)),!o)return;m&&(u=t.scrollHeight-t.offsetHeight,c=Math.max(Math.min(i,u),0)),g&&(a=t.scrollWidth-t.offsetWidth,f=Math.max(Math.min(n,a),0));let y=null;m&&c===s&&(m=!1),g&&f===h&&(g=!1),e.requestAnimationFrame((function n(i=(new Date).getTime()){null===y&&(y=i);const u=Math.max(Math.min((i-y)/o,1),0),a="linear"===r?u:.5-Math.cos(u*Math.PI)/2;let v;m&&(d=s+a*(c-s)),g&&(p=h+a*(f-h)),m&&c>s&&d>=c&&(t.scrollTop=c,v=!0),m&&ch&&p>=f&&(t.scrollLeft=f,v=!0),g&&f0?s[0].scrollTop:null:s.scrollTo(void 0,e,n,i,o)},scrollLeft:function(...t){let[e,n,i,o]=t;3===t.length&&"function"==typeof i&&([e,n,o,i]=t);const s=this;return void 0===e?s.length>0?s[0].scrollLeft:null:s.scrollTo(e,void 0,n,i,o)}});var f=Object.freeze({__proto__:null,animate:function(t,e){const n=s(),i=this,o={props:Object.assign({},t),params:Object.assign({duration:300,easing:"swing"},e),elements:i,animating:!1,que:[],easingProgress:(t,e)=>"swing"===t?.5-Math.cos(e*Math.PI)/2:"function"==typeof t?t(e):e,stop(){o.frameId&&n.cancelAnimationFrame(o.frameId),o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),o.que=[]},done(t){if(o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),t&&t(i),o.que.length>0){const t=o.que.shift();o.animate(t[0],t[1])}},animate(t,e){if(o.animating)return o.que.push([t,e]),o;const s=[];o.elements.each(((e,i)=>{let r,l,h,u,a;e.dom7AnimateInstance||(o.elements[i].dom7AnimateInstance=o),s[i]={container:e},Object.keys(t).forEach((o=>{r=n.getComputedStyle(e,null).getPropertyValue(o).replace(",","."),l=parseFloat(r),h=r.replace(l,""),u=parseFloat(t[o]),a=t[o]+h,s[i][o]={initialFullValue:r,initialValue:l,unit:h,finalValue:u,finalFullValue:a,currentValue:l}}))}));let r,l,h=null,u=0,a=0,c=!1;return o.animating=!0,o.frameId=n.requestAnimationFrame((function f(){let d,p;r=(new Date).getTime(),c||(c=!0,e.begin&&e.begin(i)),null===h&&(h=r),e.progress&&e.progress(i,Math.max(Math.min((r-h)/e.duration,1),0),h+e.duration-r<0?0:h+e.duration-r,h),s.forEach((n=>{const i=n;l||i.done||Object.keys(t).forEach((n=>{if(l||i.done)return;d=Math.max(Math.min((r-h)/e.duration,1),0),p=o.easingProgress(e.easing,d);const{initialValue:c,finalValue:f,unit:m}=i[n];i[n].currentValue=c+p*(f-c);const g=i[n].currentValue;(f>c&&g>=f||f{Object.keys(t).forEach((e=>{u.fn[e]=t[e]}))})),u})); +//# sourceMappingURL=dom7.min.js.map \ No newline at end of file diff --git a/swiper/node_modules/dom7/dom7.min.js.map b/swiper/node_modules/dom7/dom7.min.js.map new file mode 100644 index 0000000..eb30018 --- /dev/null +++ b/swiper/node_modules/dom7/dom7.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","classes","classNames","map","c","split","classList","add","remove","className","toggle","contains","attrs","arguments","getAttribute","attrName","attr","removeAttribute","props","propName","dom7ElementDataStorage","dataKey","dataset","attributes","name","string","toLowerCase","replace","match","group","toUpperCase","parseFloat","multiple","values","selectedOptions","j","options","selected","val","transform","duration","transitionDuration","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","handlers","handler","dom7proxy","splice","dom","eventName","onceHandler","eventArgs","off","on","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","fireCallBack","innerWidth","css","includeMargins","styles","offsetWidth","innerHeight","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","display","prop","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","els","newChild","tempDiv","firstChild","appendChild","parent","append","insertBefore","prepend","before","parentNode","cloneNode","after","nextSibling","nextElementSibling","nextEls","next","previousElementSibling","prevEls","prev","nextAll","prevAll","closest","eq","foundElements","found","removeChild","toAdd","easing","each","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","scrollTo","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","dom7AnimateInstance","complete","shift","animate","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","element","animateInstance","noTrigger","shortcut","trigger","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","methodName"],"mappings":"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","file":"dom7.min.js","sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"]} \ No newline at end of file diff --git a/swiper/node_modules/dom7/package.json b/swiper/node_modules/dom7/package.json new file mode 100644 index 0000000..0454e5b --- /dev/null +++ b/swiper/node_modules/dom7/package.json @@ -0,0 +1,61 @@ +{ + "_from": "dom7@^4.0.4", + "_id": "dom7@4.0.4", + "_inBundle": false, + "_integrity": "sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw==", + "_location": "/swiper/dom7", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "dom7@^4.0.4", + "name": "dom7", + "escapedName": "dom7", + "rawSpec": "^4.0.4", + "saveSpec": null, + "fetchSpec": "^4.0.4" + }, + "_requiredBy": [ + "/swiper" + ], + "_resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.4.tgz", + "_shasum": "8b68c5d8e5e2ed0fddb1cb93e433bc9060c8f3fb", + "_spec": "dom7@^4.0.4", + "_where": "C:\\Users\\Adminis\\node_modules\\swiper", + "author": { + "name": "Vladimir Kharlampidi" + }, + "bugs": { + "url": "https://github.com/nolimits4web/dom7/issues" + }, + "bundleDependencies": false, + "dependencies": { + "ssr-window": "^4.0.0" + }, + "deprecated": false, + "description": "Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API", + "exports": { + "./package.json": "./package.json", + ".": "./dom7.esm.js" + }, + "homepage": "https://framework7.io/docs/dom7.html", + "keywords": [ + "dom", + "dom7", + "jquery", + "mobile", + "framework7" + ], + "license": "MIT", + "main": "./dom7.esm.js", + "module": "./dom7.esm.js", + "name": "dom7", + "repository": { + "type": "git", + "url": "git+https://github.com/nolimits4web/dom7.git" + }, + "sideEffects": false, + "type": "module", + "types": "dom7.d.ts", + "version": "4.0.4" +} diff --git a/swiper/node_modules/ssr-window/LICENSE b/swiper/node_modules/ssr-window/LICENSE new file mode 100644 index 0000000..27267db --- /dev/null +++ b/swiper/node_modules/ssr-window/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/swiper/node_modules/ssr-window/README.md b/swiper/node_modules/ssr-window/README.md new file mode 100644 index 0000000..f7c227a --- /dev/null +++ b/swiper/node_modules/ssr-window/README.md @@ -0,0 +1,59 @@ +# SSR Window + +Better handling for `window` and `document` object in SSR environment. + +This library doesn't implement the DOM (like JSDOM), it just patches (or creates `window` and `document` objects) to avoid them to fail (throw errors) during server-side rendering. + +Was created for use in: + +- [Dom7](https://github.com/nolimits4web/dom7) +- [Swiper](https://github.com/nolimits4web/swiper) +- [Framework7](https://github.com/framework7io/framework7) + +## Installation + +Library available on NPM: + +``` +npm i ssr-window +``` + +## Usage + +```js +import { window, document } from 'ssr-window'; + +window.addEventListener('resize', () => {}); + +const div = document.querySelectorAll('div'); +``` + +## Extending + +If you rely on some window/document properties which are not included here, you can use `extend` helper to add them: + +```js +import { window, document, extend } from 'ssr-window'; + +// add window.navigator.language +extend(window, { + navigator: { + language: 'en', + }, +}); + +// add document.body +extend(document, { + body: { + /* ... */ + }, +}); +``` + +## Contribution + +Yes please! See the [contributing guidelines](https://github.com/nolimits4web/ssr-window/blob/master/CONTRIBUTING.md) for details. + +## Licence + +This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/ssr-window/blob/master/LICENSE). diff --git a/swiper/node_modules/ssr-window/package.json b/swiper/node_modules/ssr-window/package.json new file mode 100644 index 0000000..3f0b020 --- /dev/null +++ b/swiper/node_modules/ssr-window/package.json @@ -0,0 +1,56 @@ +{ + "_from": "ssr-window@^4.0.2", + "_id": "ssr-window@4.0.2", + "_inBundle": false, + "_integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==", + "_location": "/swiper/ssr-window", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "ssr-window@^4.0.2", + "name": "ssr-window", + "escapedName": "ssr-window", + "rawSpec": "^4.0.2", + "saveSpec": null, + "fetchSpec": "^4.0.2" + }, + "_requiredBy": [ + "/swiper", + "/swiper/dom7" + ], + "_resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "_shasum": "dc6b3ee37be86ac0e3ddc60030f7b3bc9b8553be", + "_spec": "ssr-window@^4.0.2", + "_where": "C:\\Users\\Adminis\\node_modules\\swiper", + "author": { + "name": "Vladimir Kharlampidi" + }, + "bugs": { + "url": "https://github.com/nolimits4web/ssr-window/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Better handling for window object in SSR environment", + "exports": { + "./package.json": "./package.json", + ".": "./ssr-window.esm.js" + }, + "homepage": "https://github.com/nolimits4web/ssr-window", + "keywords": [ + "ssr", + "window", + "document" + ], + "license": "MIT", + "main": "./ssr-window.esm.js", + "module": "./ssr-window.esm.js", + "name": "ssr-window", + "repository": { + "type": "git", + "url": "git+https://github.com/nolimits4web/ssr-window.git" + }, + "type": "module", + "typings": "types/ssr-window.d.ts", + "version": "4.0.2" +} diff --git a/swiper/node_modules/ssr-window/ssr-window.esm.js b/swiper/node_modules/ssr-window/ssr-window.esm.js new file mode 100644 index 0000000..42e70d4 --- /dev/null +++ b/swiper/node_modules/ssr-window/ssr-window.esm.js @@ -0,0 +1,148 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return (obj !== null && + typeof obj === 'object' && + 'constructor' in obj && + obj.constructor === Object); +} +function extend(target = {}, src = {}) { + Object.keys(src).forEach((key) => { + if (typeof target[key] === 'undefined') + target[key] = src[key]; + else if (isObject(src[key]) && + isObject(target[key]) && + Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} + +const ssrDocument = { + body: {}, + addEventListener() { }, + removeEventListener() { }, + activeElement: { + blur() { }, + nodeName: '', + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() { }, + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() { }, + getElementsByTagName() { + return []; + }, + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '', + }, +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} + +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '', + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '', + }, + history: { + replaceState() { }, + pushState() { }, + go() { }, + back() { }, + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() { }, + removeEventListener() { }, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + }, + }; + }, + Image() { }, + Date() { }, + screen: {}, + setTimeout() { }, + clearTimeout() { }, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + }, +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { extend, getDocument, getWindow, ssrDocument, ssrWindow }; diff --git a/swiper/node_modules/ssr-window/ssr-window.umd.js b/swiper/node_modules/ssr-window/ssr-window.umd.js new file mode 100644 index 0000000..dfef000 --- /dev/null +++ b/swiper/node_modules/ssr-window/ssr-window.umd.js @@ -0,0 +1,163 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ssrWindow = {})); +}(this, (function (exports) { 'use strict'; + + /* eslint-disable no-param-reassign */ + function isObject(obj) { + return (obj !== null && + typeof obj === 'object' && + 'constructor' in obj && + obj.constructor === Object); + } + function extend(target = {}, src = {}) { + Object.keys(src).forEach((key) => { + if (typeof target[key] === 'undefined') + target[key] = src[key]; + else if (isObject(src[key]) && + isObject(target[key]) && + Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); + } + + const ssrDocument = { + body: {}, + addEventListener() { }, + removeEventListener() { }, + activeElement: { + blur() { }, + nodeName: '', + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() { }, + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() { }, + getElementsByTagName() { + return []; + }, + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '', + }, + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; + } + + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '', + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '', + }, + history: { + replaceState() { }, + pushState() { }, + go() { }, + back() { }, + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() { }, + removeEventListener() { }, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + }, + }; + }, + Image() { }, + Date() { }, + screen: {}, + setTimeout() { }, + clearTimeout() { }, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + }, + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; + } + + exports.extend = extend; + exports.getDocument = getDocument; + exports.getWindow = getWindow; + exports.ssrDocument = ssrDocument; + exports.ssrWindow = ssrWindow; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=ssr-window.umd.js.map diff --git a/swiper/node_modules/ssr-window/ssr-window.umd.js.map b/swiper/node_modules/ssr-window/ssr-window.umd.js.map new file mode 100644 index 0000000..712accd --- /dev/null +++ b/swiper/node_modules/ssr-window/ssr-window.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.umd.js.map","sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/swiper/node_modules/ssr-window/ssr-window.umd.min.js b/swiper/node_modules/ssr-window/ssr-window.umd.min.js new file mode 100644 index 0000000..ee22292 --- /dev/null +++ b/swiper/node_modules/ssr-window/ssr-window.umd.min.js @@ -0,0 +1,13 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ssrWindow={})}(this,(function(e){"use strict";function t(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function n(e={},o={}){Object.keys(o).forEach((i=>{void 0===e[i]?e[i]=o[i]:t(o[i])&&t(e[i])&&Object.keys(o[i]).length>0&&n(e[i],o[i])}))}const o={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};const i={document:o,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};e.extend=n,e.getDocument=function(){const e="undefined"!=typeof document?document:{};return n(e,o),e},e.getWindow=function(){const e="undefined"!=typeof window?window:{};return n(e,i),e},e.ssrDocument=o,e.ssrWindow=i,Object.defineProperty(e,"__esModule",{value:!0})})); +//# sourceMappingURL=ssr-window.umd.min.js.map \ No newline at end of file diff --git a/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map b/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map new file mode 100644 index 0000000..a3fe002 --- /dev/null +++ b/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","ssrWindow","document","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","doc","win","window"],"mappings":";;;;;;;;;;;iPACA,SAASA,EAASC,GAChB,OACU,OAARA,GACe,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,OAIxB,SAASC,EAAOC,EAAc,GAAIC,EAAW,IAC3CH,OAAOI,KAAKD,GAAKE,SAASC,SACG,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAExDT,EAASM,EAAIG,KACbT,EAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAE/BN,EAAOC,EAAOI,GAAMH,EAAIG,aChBxBE,EAAc,CAClBC,KAAM,GACNC,qBACAC,wBACAC,cAAe,CACbC,SACAC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACLC,gBAGJC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,iBACAC,qBAAoB,IACX,KAIbC,gBAAe,KACN,IAETC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,WC9CNC,EAAY,CAChBC,SAAU9B,EACV+B,UAAW,CACTC,UAAW,IAEbZ,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVK,QAAS,CACPC,iBACAC,cACAC,OACAC,UAEFC,YAAa,WACX,OAAOC,MAETrC,qBACAC,wBACAqC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIbC,UACAC,SACAC,OAAQ,GACRC,eACAC,iBACAC,WAAU,KACD,IAETC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9BC,qBAAqBC,GACO,oBAAfN,YAGXC,aAAaK,8BDFjB,WACE,MAAMC,EACgB,oBAAbtB,SAA2BA,SAAY,GAEhD,OADArC,EAAO2D,EAAKpD,GACLoD,eCET,WACE,MAAMC,EAAgC,oBAAXC,OAAyBA,OAAU,GAE9D,OADA7D,EAAO4D,EAAKxB,GACLwB","file":"ssr-window.umd.min.js"} \ No newline at end of file diff --git a/swiper/node_modules/ssr-window/types/document.d.ts b/swiper/node_modules/ssr-window/types/document.d.ts new file mode 100644 index 0000000..63b28de --- /dev/null +++ b/swiper/node_modules/ssr-window/types/document.d.ts @@ -0,0 +1,36 @@ +declare const ssrDocument: { + body: {}; + addEventListener(): void; + removeEventListener(): void; + activeElement: { + blur(): void; + nodeName: string; + }; + querySelector(): any; + querySelectorAll(): any[]; + getElementById(): any; + createEvent(): { + initEvent(): void; + }; + createElement(): { + children: any[]; + childNodes: any[]; + style: {}; + setAttribute(): void; + getElementsByTagName(): any[]; + }; + createElementNS(): {}; + importNode(): any; + location: { + hash: string; + host: string; + hostname: string; + href: string; + origin: string; + pathname: string; + protocol: string; + search: string; + }; +}; +declare function getDocument(): Document; +export { getDocument, ssrDocument }; diff --git a/swiper/node_modules/ssr-window/types/extend.d.ts b/swiper/node_modules/ssr-window/types/extend.d.ts new file mode 100644 index 0000000..5044ccf --- /dev/null +++ b/swiper/node_modules/ssr-window/types/extend.d.ts @@ -0,0 +1,2 @@ +declare function extend(target?: any, src?: any): void; +export default extend; diff --git a/swiper/node_modules/ssr-window/types/ssr-window.d.ts b/swiper/node_modules/ssr-window/types/ssr-window.d.ts new file mode 100644 index 0000000..feb2e20 --- /dev/null +++ b/swiper/node_modules/ssr-window/types/ssr-window.d.ts @@ -0,0 +1,4 @@ +import { getDocument, ssrDocument } from './document'; +import { getWindow, ssrWindow } from './window'; +import extend from './extend'; +export { getDocument, ssrDocument, getWindow, ssrWindow, extend }; diff --git a/swiper/node_modules/ssr-window/types/window.d.ts b/swiper/node_modules/ssr-window/types/window.d.ts new file mode 100644 index 0000000..734a96c --- /dev/null +++ b/swiper/node_modules/ssr-window/types/window.d.ts @@ -0,0 +1,72 @@ +/// +declare const ssrWindow: { + document: { + body: {}; + addEventListener(): void; + removeEventListener(): void; + activeElement: { + blur(): void; + nodeName: string; + }; + querySelector(): any; + querySelectorAll(): any[]; + getElementById(): any; + createEvent(): { + initEvent(): void; + }; + createElement(): { + children: any[]; + childNodes: any[]; + style: {}; + setAttribute(): void; + getElementsByTagName(): any[]; + }; + createElementNS(): {}; + importNode(): any; + location: { + hash: string; + host: string; + hostname: string; + href: string; + origin: string; + pathname: string; + protocol: string; + search: string; + }; + }; + navigator: { + userAgent: string; + }; + location: { + hash: string; + host: string; + hostname: string; + href: string; + origin: string; + pathname: string; + protocol: string; + search: string; + }; + history: { + replaceState(): void; + pushState(): void; + go(): void; + back(): void; + }; + CustomEvent: () => any; + addEventListener(): void; + removeEventListener(): void; + getComputedStyle(): { + getPropertyValue(): string; + }; + Image(): void; + Date(): void; + screen: {}; + setTimeout(): void; + clearTimeout(): void; + matchMedia(): {}; + requestAnimationFrame(callback: any): NodeJS.Timeout; + cancelAnimationFrame(id: any): void; +}; +declare function getWindow(): Window; +export { getWindow, ssrWindow }; diff --git a/swiper/package.json b/swiper/package.json new file mode 100644 index 0000000..3279fd8 --- /dev/null +++ b/swiper/package.json @@ -0,0 +1,197 @@ +{ + "_from": "swiper", + "_id": "swiper@8.3.0", + "_inBundle": false, + "_integrity": "sha512-pdrENUco8MVyJ/cTZMQ5c9AqZDRYGJChd+5lcDsoGpKhgOloSzS7hMvgH+ipvTVCaNOCTlSaf5ZYm1Jz5TqKDQ==", + "_location": "/swiper", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "swiper", + "name": "swiper", + "escapedName": "swiper", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://registry.npmjs.org/swiper/-/swiper-8.3.0.tgz", + "_shasum": "3ed7498d978c03fdcebc77e1780c5f17829c6857", + "_spec": "swiper", + "_where": "C:\\Users\\Adminis", + "author": { + "name": "Vladimir Kharlampidi" + }, + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "bundleDependencies": false, + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "deprecated": false, + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "engines": { + "node": ">= 4.7.0" + }, + "exports": { + ".": "./swiper.esm.js", + "./core": "./swiper.esm.js", + "./bundle": "./swiper-bundle.esm.js", + "./css": "./swiper.min.css", + "./css/bundle": "./swiper-bundle.min.css", + "./css/a11y": "./modules/a11y/a11y.min.css", + "./css/autoplay": "./modules/autoplay/autoplay.min.css", + "./css/controller": "./modules/controller/controller.min.css", + "./css/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.min.css", + "./css/effect-cube": "./modules/effect-cube/effect-cube.min.css", + "./css/effect-fade": "./modules/effect-fade/effect-fade.min.css", + "./css/effect-flip": "./modules/effect-flip/effect-flip.min.css", + "./css/effect-creative": "./modules/effect-creative/effect-creative.min.css", + "./css/effect-cards": "./modules/effect-cards/effect-cards.min.css", + "./css/free-mode": "./modules/free-mode/free-mode.min.css", + "./css/grid": "./modules/grid/grid.min.css", + "./css/hash-navigation": "./modules/hash-navigation/hash-navigation.min.css", + "./css/history": "./modules/history/history.min.css", + "./css/keyboard": "./modules/keyboard/keyboard.min.css", + "./css/lazy": "./modules/lazy/lazy.min.css", + "./css/manipulation": "./modules/manipulation/manipulation.min.css", + "./css/mousewheel": "./modules/mousewheel/mousewheel.min.css", + "./css/navigation": "./modules/navigation/navigation.min.css", + "./css/pagination": "./modules/pagination/pagination.min.css", + "./css/parallax": "./modules/parallax/parallax.min.css", + "./css/scrollbar": "./modules/scrollbar/scrollbar.min.css", + "./css/thumbs": "./modules/thumbs/thumbs.min.css", + "./css/virtual": "./modules/virtual/virtual.min.css", + "./css/zoom": "./modules/zoom/zoom.min.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y/a11y.less", + "./less/autoplay": "./modules/autoplay/autoplay.less", + "./less/controller": "./modules/controller/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards/effect-cards.less", + "./less/free-mode": "./modules/free-mode/free-mode.less", + "./less/grid": "./modules/grid/grid.less", + "./less/hash-navigation": "./modules/hash-navigation/hash-navigation.less", + "./less/history": "./modules/history/history.less", + "./less/keyboard": "./modules/keyboard/keyboard.less", + "./less/lazy": "./modules/lazy/lazy.less", + "./less/manipulation": "./modules/manipulation/manipulation.less", + "./less/mousewheel": "./modules/mousewheel/mousewheel.less", + "./less/navigation": "./modules/navigation/navigation.less", + "./less/pagination": "./modules/pagination/pagination.less", + "./less/parallax": "./modules/parallax/parallax.less", + "./less/scrollbar": "./modules/scrollbar/scrollbar.less", + "./less/thumbs": "./modules/thumbs/thumbs.less", + "./less/virtual": "./modules/virtual/virtual.less", + "./less/zoom": "./modules/zoom/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y/a11y.scss", + "./scss/autoplay": "./modules/autoplay/autoplay.scss", + "./scss/controller": "./modules/controller/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode/free-mode.scss", + "./scss/grid": "./modules/grid/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation/hash-navigation.scss", + "./scss/history": "./modules/history/history.scss", + "./scss/keyboard": "./modules/keyboard/keyboard.scss", + "./scss/lazy": "./modules/lazy/lazy.scss", + "./scss/manipulation": "./modules/manipulation/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel/mousewheel.scss", + "./scss/navigation": "./modules/navigation/navigation.scss", + "./scss/pagination": "./modules/pagination/pagination.scss", + "./scss/parallax": "./modules/parallax/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs/thumbs.scss", + "./scss/virtual": "./modules/virtual/virtual.scss", + "./scss/zoom": "./modules/zoom/zoom.scss", + "./angular": "./angular/fesm2015/swiper_angular.mjs", + "./react": "./react/swiper-react.js", + "./vue": "./vue/swiper-vue.js", + "./solid": "./solid/swiper-solid.js", + "./svelte": "./svelte/swiper-svelte.js", + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "homepage": "https://swiperjs.com", + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "solid-js", + "vue", + "angular", + "svelte", + "slideshow" + ], + "license": "MIT", + "main": "./swiper.esm.js", + "module": "./swiper.esm.js", + "name": "swiper", + "repository": { + "type": "git", + "url": "git+https://github.com/nolimits4web/Swiper.git" + }, + "scripts": { + "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\"" + }, + "svelte": "./swiper.esm.js", + "type": "module", + "typesVersions": { + "*": { + "angular": [ + "angular/swiper_angular.d.ts" + ], + "react": [ + "react/swiper-react.d.ts" + ], + "svelte": [ + "svelte/swiper-svelte.d.ts" + ], + "solid": [ + "solid/swiper-solid.d.ts" + ], + "vue": [ + "vue/swiper-vue.d.ts" + ] + } + }, + "typings": "swiper.d.ts", + "version": "8.3.0" +} diff --git a/swiper/postinstall.js b/swiper/postinstall.js new file mode 100644 index 0000000..90cce0b --- /dev/null +++ b/swiper/postinstall.js @@ -0,0 +1,36 @@ +/* eslint-disable max-len -- for better formatting */ +var env = process.env; + +var ADBLOCK = is(env.ADBLOCK); +var COLOR = is(env.npm_config_color); +var DISABLE_OPENCOLLECTIVE = is(env.DISABLE_OPENCOLLECTIVE); +var SILENT = ['silent', 'error', 'warn'].indexOf(env.npm_config_loglevel) !== -1; +var OPEN_SOURCE_CONTRIBUTOR = is(env.OPEN_SOURCE_CONTRIBUTOR); + +// you could add a PR with an env variable for your CI detection +var CI = [ + 'BUILD_NUMBER', + 'CI', + 'CONTINUOUS_INTEGRATION', + 'DRONE', + 'RUN_ID' +].some(function (it) { return is(env[it]); }); + +var BANNER = '\u001b[35m\u001b[1mLove Swiper? Support Vladimir\'s work by donating or pledging: \u001B[0m\n' + +'\u001b[22m\u001b[39m\u001b[32m> On Patreon https://patreon.com/swiperjs \u001B[0m\n' + +'\u001b[22m\u001b[39m\u001b[32m> On Open Collective https://opencollective.com/swiper'; + +function is(it) { + return !!it && it !== '0' && it !== 'false'; +} + +function isBannerRequired() { + return !(ADBLOCK || CI || DISABLE_OPENCOLLECTIVE || SILENT || OPEN_SOURCE_CONTRIBUTOR); +} + +function showBanner() { + // eslint-disable-next-line no-console,no-control-regex -- output + console.log(COLOR ? BANNER : BANNER.replace(/\u001B\[\d+m/g, '')); +} + +if (isBannerRequired()) showBanner(); diff --git a/swiper/react/context.js b/swiper/react/context.js new file mode 100644 index 0000000..8e210fb --- /dev/null +++ b/swiper/react/context.js @@ -0,0 +1,9 @@ +import { createContext, useContext } from 'react'; +export const SwiperSlideContext = /*#__PURE__*/createContext(null); +export const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +export const SwiperContext = /*#__PURE__*/createContext(null); +export const useSwiper = () => { + return useContext(SwiperContext); +}; \ No newline at end of file diff --git a/swiper/react/get-children.js b/swiper/react/get-children.js new file mode 100644 index 0000000..8e01a9f --- /dev/null +++ b/swiper/react/get-children.js @@ -0,0 +1,46 @@ +import React from 'react'; + +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (child.type && child.type.displayName === 'SwiperSlide') { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} + +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (child.type && child.type.displayName === 'SwiperSlide') { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +export { getChildren }; \ No newline at end of file diff --git a/swiper/react/loop.js b/swiper/react/loop.js new file mode 100644 index 0000000..962fe8d --- /dev/null +++ b/swiper/react/loop.js @@ -0,0 +1,78 @@ +import React from 'react'; +import Swiper from 'swiper'; + +function calcLoopedSlides(slides, swiperParams) { + let slidesPerViewParams = swiperParams.slidesPerView; + + if (swiperParams.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); + const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; + + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + + let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); + loopedSlides += swiperParams.loopAdditionalSlides; + + if (loopedSlides > slides.length) { + loopedSlides = slides.length; + } + + return loopedSlides; +} + +function renderLoop(swiper, slides, swiperParams) { + const modifiedSlides = slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + 'data-swiper-slide-index': index + }); + }); + + function duplicateSlide(child, index, position) { + return /*#__PURE__*/React.cloneElement(child, { + key: `${child.key}-duplicate-${index}-${position}`, + className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}` + }); + } + + if (swiperParams.loopFillGroupWithBlank) { + const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; + + if (blankSlidesNum !== swiperParams.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankSlide = /*#__PURE__*/React.createElement("div", { + className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` + }); + modifiedSlides.push(blankSlide); + } + } + } + + if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { + swiperParams.loopedSlides = modifiedSlides.length; + } + + const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); + const prependSlides = []; + const appendSlides = []; + modifiedSlides.forEach((child, index) => { + if (index < loopedSlides) { + appendSlides.push(duplicateSlide(child, index, 'prepend')); + } + + if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { + prependSlides.push(duplicateSlide(child, index, 'append')); + } + }); + + if (swiper) { + swiper.loopedSlides = loopedSlides; + } + + return [...prependSlides, ...modifiedSlides, ...appendSlides]; +} + +export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/swiper/react/swiper-react.d.ts b/swiper/react/swiper-react.d.ts new file mode 100644 index 0000000..170ede9 --- /dev/null +++ b/swiper/react/swiper-react.d.ts @@ -0,0 +1,486 @@ +import * as React from 'react'; + +import { SwiperOptions, Swiper as SwiperClass } from '../types/'; + +interface SwiperProps extends SwiperOptions { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause (on mouse/pointer enter), when `pauseOnMouseEnter` enabled + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume (on mouse/pointer leave), when `pauseOnMouseEnter` enabled + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired in the beginning of lazy loading of image + */ + onLazyImageLoad?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; + /** + * Event will be fired when lazy loading image will be loaded + */ + onLazyImageReady?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled + */ + onImagesReady?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + +} + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isDuplicate: boolean; + isPrev: boolean; + isNext: boolean; +} + +interface SwiperSlideProps { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +} + +interface SwiperProps + extends Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + > {} +interface SwiperSlideProps extends React.HTMLAttributes {} + +declare const Swiper: React.FunctionComponent; +declare const SwiperSlide: React.VoidFunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { Swiper, SwiperSlide, SwiperProps, SwiperSlideProps, useSwiper, useSwiperSlide }; diff --git a/swiper/react/swiper-react.js b/swiper/react/swiper-react.js new file mode 100644 index 0000000..b763fc4 --- /dev/null +++ b/swiper/react/swiper-react.js @@ -0,0 +1,16 @@ +/** + * Swiper React 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +import { Swiper } from './swiper.js'; +import { SwiperSlide } from './swiper-slide.js'; +export { useSwiperSlide, useSwiper } from './context.js'; +export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/swiper/react/swiper-slide.js b/swiper/react/swiper-slide.js new file mode 100644 index 0000000..04587b8 --- /dev/null +++ b/swiper/react/swiper-slide.js @@ -0,0 +1,79 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import React, { useRef, useState, forwardRef } from 'react'; +import { uniqueClasses } from '../components-shared/utils.js'; +import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; +import { SwiperSlideContext } from './context.js'; +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + virtualIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + + useIsomorphicLayoutEffect(() => { + if (externalRef) { + externalRef.current = slideElRef.current; + } + + if (!slideElRef.current || !swiper) { + return; + } + + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + + return; + } + + swiper.on('_slideClass', updateClasses); // eslint-disable-next-line + + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0 + }; + + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex + }, rest), /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, zoom ? /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren()) : renderChildren())); +}); +SwiperSlide.displayName = 'SwiperSlide'; +export { SwiperSlide }; \ No newline at end of file diff --git a/swiper/react/swiper.js b/swiper/react/swiper.js new file mode 100644 index 0000000..958fd63 --- /dev/null +++ b/swiper/react/swiper.js @@ -0,0 +1,217 @@ +function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +import React, { useRef, useState, useEffect, forwardRef } from 'react'; +import SwiperCore from 'swiper'; +import { getParams } from '../components-shared/get-params.js'; +import { mountSwiper } from '../components-shared/mount-swiper.js'; +import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js'; +import { renderLoop, calcLoopedSlides } from './loop.js'; +import { getChangedParams } from '../components-shared/get-changed-params.js'; +import { getChildren } from './get-children.js'; +import { updateSwiper } from '../components-shared/update-swiper.js'; +import { renderVirtual } from './virtual.js'; +import { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js'; +import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; +import { SwiperContext } from './context.js'; +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + + }); + + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + swiperRef.current = new SwiperCore(swiperParams); + + swiperRef.current.loopCreate = () => {}; + + swiperRef.current.loopDestroy = () => {}; + + if (swiperParams.loop) { + swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams); + } + + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + + if (!swiperElRef.current) { + initSwiper(); + } // Listen for breakpoints change + + + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); // set initialized flag + + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); // mount swiper + + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + + if (!swiperElRef.current) return; + + if (swiperRef.current.destroyed) { + initSwiper(); + } + + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line + + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); // watch for params change + + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + + return () => { + detachEvents(); + }; + }); // update on virtual update + + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); // bypass swiper instance to slides + + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + + if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) { + return slides.map(child => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current + }); + }); + } + + return renderLoop(swiperRef.current, slides, swiperParams); + } + + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: "swiper-wrapper" + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; +export { Swiper }; \ No newline at end of file diff --git a/swiper/react/use-isomorphic-layout-effect.js b/swiper/react/use-isomorphic-layout-effect.js new file mode 100644 index 0000000..25d33b1 --- /dev/null +++ b/swiper/react/use-isomorphic-layout-effect.js @@ -0,0 +1,9 @@ +import { useEffect, useLayoutEffect } from 'react'; + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +export { useIsomorphicLayoutEffect }; \ No newline at end of file diff --git a/swiper/react/virtual.js b/swiper/react/virtual.js new file mode 100644 index 0000000..466b3c6 --- /dev/null +++ b/swiper/react/virtual.js @@ -0,0 +1,18 @@ +import React from 'react'; + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style + }); + }); +} + +export { renderVirtual }; \ No newline at end of file diff --git a/swiper/shared/classes-to-selector.js b/swiper/shared/classes-to-selector.js new file mode 100644 index 0000000..62cb812 --- /dev/null +++ b/swiper/shared/classes-to-selector.js @@ -0,0 +1,8 @@ +export default function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + + return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} \ No newline at end of file diff --git a/swiper/shared/create-element-if-not-defined.js b/swiper/shared/create-element-if-not-defined.js new file mode 100644 index 0000000..9fd2450 --- /dev/null +++ b/swiper/shared/create-element-if-not-defined.js @@ -0,0 +1,23 @@ +import { getDocument } from 'ssr-window'; +export default function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + const document = getDocument(); + + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = swiper.$el.children(`.${checkProps[key]}`)[0]; + + if (!element) { + element = document.createElement('div'); + element.className = checkProps[key]; + swiper.$el.append(element); + } + + params[key] = element; + originalParams[key] = element; + } + }); + } + + return params; +} \ No newline at end of file diff --git a/swiper/shared/create-shadow.js b/swiper/shared/create-shadow.js new file mode 100644 index 0000000..9564898 --- /dev/null +++ b/swiper/shared/create-shadow.js @@ -0,0 +1,13 @@ +import $ from './dom.js'; +export default function createShadow(params, $slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; + const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; + let $shadowEl = $shadowContainer.children(`.${shadowClass}`); + + if (!$shadowEl.length) { + $shadowEl = $(`
`); + $shadowContainer.append($shadowEl); + } + + return $shadowEl; +} \ No newline at end of file diff --git a/swiper/shared/dom.js b/swiper/shared/dom.js new file mode 100644 index 0000000..d66471c --- /dev/null +++ b/swiper/shared/dom.js @@ -0,0 +1,46 @@ +import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7'; +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + transform, + transition, + on, + off, + trigger, + transitionEnd, + outerWidth, + outerHeight, + styles, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove +}; +Object.keys(Methods).forEach(methodName => { + Object.defineProperty($.fn, methodName, { + value: Methods[methodName], + writable: true + }); +}); +export default $; \ No newline at end of file diff --git a/swiper/shared/effect-init.js b/swiper/shared/effect-init.js new file mode 100644 index 0000000..ba4d132 --- /dev/null +++ b/swiper/shared/effect-init.js @@ -0,0 +1,62 @@ +export default function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows + + swiper.slides.each(slideEl => { + const $slideEl = swiper.$(slideEl); + $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove(); + }); // create new one + + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} \ No newline at end of file diff --git a/swiper/shared/effect-target.js b/swiper/shared/effect-target.js new file mode 100644 index 0000000..2f9fa04 --- /dev/null +++ b/swiper/shared/effect-target.js @@ -0,0 +1,10 @@ +export default function effectTarget(effectParams, $slideEl) { + if (effectParams.transformEl) { + return $slideEl.find(effectParams.transformEl).css({ + 'backface-visibility': 'hidden', + '-webkit-backface-visibility': 'hidden' + }); + } + + return $slideEl; +} \ No newline at end of file diff --git a/swiper/shared/effect-virtual-transition-end.js b/swiper/shared/effect-virtual-transition-end.js new file mode 100644 index 0000000..780a918 --- /dev/null +++ b/swiper/shared/effect-virtual-transition-end.js @@ -0,0 +1,36 @@ +export default function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformEl, + allSlides + } = _ref; + const { + slides, + activeIndex, + $wrapperEl + } = swiper; + + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let $transitionEndTarget; + + if (allSlides) { + $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; + } else { + $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); + } + + $transitionEndTarget.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } +} \ No newline at end of file diff --git a/swiper/shared/get-browser.js b/swiper/shared/get-browser.js new file mode 100644 index 0000000..78804c5 --- /dev/null +++ b/swiper/shared/get-browser.js @@ -0,0 +1,26 @@ +import { getWindow } from 'ssr-window'; +let browser; + +function calcBrowser() { + const window = getWindow(); + + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + + return { + isSafari: isSafari(), + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; +} + +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + + return browser; +} + +export { getBrowser }; \ No newline at end of file diff --git a/swiper/shared/get-device.js b/swiper/shared/get-device.js new file mode 100644 index 0000000..9215ed1 --- /dev/null +++ b/swiper/shared/get-device.js @@ -0,0 +1,62 @@ +import { getWindow } from 'ssr-window'; +import { getSupport } from './get-support.js'; +let deviceCached; + +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; // iPadOs 13 fix + + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } // Android + + + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } // Export object + + + return device; +} + +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + + return deviceCached; +} + +export { getDevice }; \ No newline at end of file diff --git a/swiper/shared/get-support.js b/swiper/shared/get-support.js new file mode 100644 index 0000000..d26e153 --- /dev/null +++ b/swiper/shared/get-support.js @@ -0,0 +1,41 @@ +import { getWindow, getDocument } from 'ssr-window'; +let support; + +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), + passiveListener: function checkPassiveListener() { + let supportsPassive = false; + + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + } + + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) {// No support + } + + return supportsPassive; + }(), + gestures: function checkGestures() { + return 'ongesturestart' in window; + }() + }; +} + +function getSupport() { + if (!support) { + support = calcSupport(); + } + + return support; +} + +export { getSupport }; \ No newline at end of file diff --git a/swiper/shared/utils.js b/swiper/shared/utils.js new file mode 100644 index 0000000..7b264cf --- /dev/null +++ b/swiper/shared/utils.js @@ -0,0 +1,206 @@ +import { getWindow } from 'ssr-window'; + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) {// no getter for object + } + + try { + delete object[key]; + } catch (e) {// something got wrong + } + }); +} + +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + + return setTimeout(callback, delay); +} + +function now() { + return Date.now(); +} + +function getComputedStyle(el) { + const window = getWindow(); + let style; + + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + + if (!style && el.currentStyle) { + style = el.currentStyle; + } + + if (!style) { + style = el.style; + } + + return style; +} + +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el, null); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + + + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + + return curTransform || 0; +} + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} + +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + + return node && (node.nodeType === 1 || node.nodeType === 11); +} + +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + + return to; +} + +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} + +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + + const animate = () => { + time = new Date().getTime(); + + if (startTime === null) { + startTime = time; + } + + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + + animate(); +} + +export { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty }; \ No newline at end of file diff --git a/swiper/solid/context.js b/swiper/solid/context.js new file mode 100644 index 0000000..f92b988 --- /dev/null +++ b/swiper/solid/context.js @@ -0,0 +1,9 @@ +import { createContext, useContext } from 'solid-js'; +export const SwiperSlideContext = createContext(null); +export const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +export const SwiperContext = createContext(null); +export const useSwiper = () => { + return useContext(SwiperContext); +}; \ No newline at end of file diff --git a/swiper/solid/get-children.js b/swiper/solid/get-children.js new file mode 100644 index 0000000..55745b5 --- /dev/null +++ b/swiper/solid/get-children.js @@ -0,0 +1,55 @@ +import { children } from 'solid-js'; + +function childrenAsArray(c) { + const cachedChildren = children(() => c); + return Array.isArray(cachedChildren()) ? cachedChildren() : [cachedChildren()]; +} + +function processChildren(c) { + const slides = []; + childrenAsArray(c).forEach(child => { + if (!child) return; + + if (child.className && child.className.indexOf('swiper-slide') >= 0) { + slides.push(child); + } else if (child.children) { + processChildren(child.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} + +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + childrenAsArray(c).forEach(child => { + if (!child) return; + + if (child.className && child.className.indexOf('swiper-slide') >= 0) { + slides.push(child); + } else if (child.slot && slots[child.slot]) { + slots[child.slot].push(child); + } else if (child.children) { + const foundSlides = processChildren(child.children); + + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +export { getChildren }; \ No newline at end of file diff --git a/swiper/solid/loop.js b/swiper/solid/loop.js new file mode 100644 index 0000000..d2d9fef --- /dev/null +++ b/swiper/solid/loop.js @@ -0,0 +1,88 @@ +import { template as _$template } from "solid-js/web"; +import { effect as _$effect } from "solid-js/web"; + +const _tmpl$ = /*#__PURE__*/_$template(`
`, 2); + +import Swiper from 'swiper'; + +function calcLoopedSlides(slides, swiperParams) { + let slidesPerViewParams = swiperParams.slidesPerView; + + if (swiperParams.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); + const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; + + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + + let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); + loopedSlides += swiperParams.loopAdditionalSlides; + + if (loopedSlides > slides.length) { + loopedSlides = slides.length; + } + + return loopedSlides; +} + +function renderLoop(swiper, slides, swiperParams) { + const modifiedSlides = slides.map((child, index) => { + const node = child.cloneNode(true); + node.swiper = swiper; + node['data-swiper-slide-index'] = index; + return node; + }); + + function duplicateSlide(child, index, position) { + const node = child.cloneNode(true); + node.key = `${child.key}-duplicate-${index}-${position}`; + node.className = `${child.className || ''} ${swiperParams.slideDuplicateClass}`; + return node; + } + + if (swiperParams.loopFillGroupWithBlank) { + const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; + + if (blankSlidesNum !== swiperParams.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankSlide = // eslint-disable-next-line react/react-in-jsx-scope + (() => { + const _el$ = _tmpl$.cloneNode(true); + + _$effect(() => _el$.className = `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`); + + return _el$; + })(); + + modifiedSlides.push(blankSlide); + } + } + } + + if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { + swiperParams.loopedSlides = modifiedSlides.length; + } + + const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); + const prependSlides = []; + const appendSlides = []; + modifiedSlides.forEach((child, index) => { + if (index < loopedSlides) { + appendSlides.push(duplicateSlide(child, index, 'prepend')); + } + + if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { + prependSlides.push(duplicateSlide(child, index, 'append')); + } + }); + + if (swiper) { + swiper.loopedSlides = loopedSlides; + } + + return [...prependSlides, ...modifiedSlides, ...appendSlides]; +} + +export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/swiper/solid/swiper-slide.js b/swiper/solid/swiper-slide.js new file mode 100644 index 0000000..ed0c16e --- /dev/null +++ b/swiper/solid/swiper-slide.js @@ -0,0 +1,117 @@ +import { template as _$template } from "solid-js/web"; +import { setAttribute as _$setAttribute } from "solid-js/web"; +import { effect as _$effect } from "solid-js/web"; +import { insert as _$insert } from "solid-js/web"; +import { mergeProps as _$mergeProps } from "solid-js/web"; +import { createComponent as _$createComponent } from "solid-js/web"; +import { memo as _$memo } from "solid-js/web"; + +const _tmpl$ = /*#__PURE__*/_$template(`
`, 2); + +import { createEffect, createSignal, onCleanup, splitProps } from 'solid-js'; +import { Dynamic } from 'solid-js/web'; +import { SwiperSlideContext } from './context.js'; +import { uniqueClasses } from '../components-shared/utils.js'; + +const SwiperSlide = props => { + const [local, rest] = splitProps(props, ['children', 'class', 'ref', 'swiper', 'tag', 'virtualIndex', 'zoom']); + const [slideClasses, setSlideClasses] = createSignal('swiper-slide'); + let ref = null; + + function updateClasses(_s, el, classNames) { + if (el === ref) { + setSlideClasses(classNames); + } + } + + createEffect(() => { + if (!ref || !local.swiper) { + return; + } + + if (local.swiper.destroyed) { + if (slideClasses() !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + + return; + } + + local.swiper.on('_slideClass', updateClasses); // eslint-disable-next-line + + onCleanup(() => { + if (!local.swiper) return; + local.swiper.off('_slideClass', updateClasses); + }); + }); + createEffect(() => { + if (local.swiper && ref && !local.swiper.destroyed) { + setSlideClasses(local.swiper.getSlideClasses(ref)); + } + }); + + const slideData = () => ({ + isActive: slideClasses().indexOf('swiper-slide-active') >= 0 || slideClasses().indexOf('swiper-slide-duplicate-active') >= 0, + isVisible: slideClasses().indexOf('swiper-slide-visible') >= 0, + isDuplicate: slideClasses().indexOf('swiper-slide-duplicate') >= 0, + isPrev: slideClasses().indexOf('swiper-slide-prev') >= 0 || slideClasses().indexOf('swiper-slide-duplicate-prev') >= 0, + isNext: slideClasses().indexOf('swiper-slide-next') >= 0 || slideClasses().indexOf('swiper-slide-duplicate-next') >= 0 + }); + + const renderChildren = () => { + return typeof local.children === 'function' ? local.children(slideData()) : local.children; + }; + /* eslint-disable react/react-in-jsx-scope */ + + /* eslint-disable react/no-unknown-property */ + + + return _$createComponent(Dynamic, _$mergeProps({ + get component() { + return local.tag || 'div'; + }, + + ref: el => { + ref = el; + + if (typeof local.ref === 'function') { + local.ref(el); + } else { + local.ref = el; + } + }, + + get ["class"]() { + return uniqueClasses(`${slideClasses()}${local.class ? ` ${local.class}` : ''}`); + }, + + get ["data-swiper-slide-index"]() { + return local.virtualIndex; + } + + }, rest, { + get children() { + return _$createComponent(SwiperSlideContext.Provider, { + get value() { + return slideData(); + }, + + get children() { + return _$memo(() => !!local.zoom, true)() ? (() => { + const _el$ = _tmpl$.cloneNode(true); + + _$insert(_el$, renderChildren); + + _$effect(() => _$setAttribute(_el$, "data-swiper-zoom", typeof local.zoom === 'number' ? local.zoom : undefined)); + + return _el$; + })() : renderChildren(); + } + + }); + } + + })); +}; + +export { SwiperSlide }; \ No newline at end of file diff --git a/swiper/solid/swiper-solid.d.ts b/swiper/solid/swiper-solid.d.ts new file mode 100644 index 0000000..559495b --- /dev/null +++ b/swiper/solid/swiper-solid.d.ts @@ -0,0 +1,485 @@ +import { Component, JSX } from 'solid-js'; +import { SwiperOptions, Swiper as SwiperClass } from '../types'; + +interface SwiperProps extends SwiperOptions { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause (on mouse/pointer enter), when `pauseOnMouseEnter` enabled + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume (on mouse/pointer leave), when `pauseOnMouseEnter` enabled + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired in the beginning of lazy loading of image + */ + onLazyImageLoad?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; + /** + * Event will be fired when lazy loading image will be loaded + */ + onLazyImageReady?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled + */ + onImagesReady?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + +} + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isDuplicate: boolean; + isPrev: boolean; + isNext: boolean; +} + +interface SwiperSlideProps { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: JSX.Element | ((slideData: SlideData) => JSX.Element); +} + +interface SwiperProps + extends Omit< + JSX.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + > {} +interface SwiperSlideProps extends Omit, 'children'> {} + +declare const Swiper: Component; +declare const SwiperSlide: Component; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { Swiper, SwiperSlide, SwiperProps, SwiperSlideProps, useSwiper, useSwiperSlide }; diff --git a/swiper/solid/swiper-solid.js b/swiper/solid/swiper-solid.js new file mode 100644 index 0000000..c6129ed --- /dev/null +++ b/swiper/solid/swiper-solid.js @@ -0,0 +1,15 @@ +/** + * Swiper SolidJS 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +export { Swiper } from './swiper.js'; +export { SwiperSlide } from './swiper-slide.js'; +export { useSwiperSlide, useSwiper } from './context.js'; \ No newline at end of file diff --git a/swiper/solid/swiper.js b/swiper/solid/swiper.js new file mode 100644 index 0000000..fc7acb0 --- /dev/null +++ b/swiper/solid/swiper.js @@ -0,0 +1,295 @@ +import { template as _$template } from "solid-js/web"; +import { mergeProps as _$mergeProps } from "solid-js/web"; +import { createComponent as _$createComponent } from "solid-js/web"; +import { memo as _$memo } from "solid-js/web"; + +const _tmpl$ = /*#__PURE__*/_$template(`
`, 2), + _tmpl$2 = /*#__PURE__*/_$template(`
`, 2), + _tmpl$3 = /*#__PURE__*/_$template(`
`, 2), + _tmpl$4 = /*#__PURE__*/_$template(`
`, 2); + +import { createEffect, createMemo, createSignal, onCleanup, Show, splitProps } from 'solid-js'; +import { Dynamic } from 'solid-js/web'; +import SwiperCore from 'swiper'; +import { SwiperContext } from './context.js'; +import { getChangedParams } from '../components-shared/get-changed-params.js'; +import { getChildren } from './get-children.js'; +import { getParams } from '../components-shared/get-params.js'; +import { calcLoopedSlides, renderLoop } from './loop.js'; +import { mountSwiper } from '../components-shared/mount-swiper.js'; +import { updateSwiper } from '../components-shared/update-swiper.js'; +import { extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses } from '../components-shared/utils.js'; +import { renderVirtual } from './virtual.js'; +import { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js'; + +const Swiper = props => { + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = createSignal('swiper'); + const [virtualData, setVirtualData] = createSignal(null); + const [, setBreakpointChanged] = createSignal(false); // The variables bellow are mofied by SolidJS and can't be const + + let initializedRef = false; // eslint-disable-line prefer-const + + let swiperElRef = null; // eslint-disable-line prefer-const + + let swiperRef = null; // eslint-disable-line prefer-const + + let oldPassedParamsRef = null; // eslint-disable-line prefer-const + + let oldSlides = null; // eslint-disable-line prefer-const + + let nextElRef = null; // eslint-disable-line prefer-const + + let prevElRef = null; // eslint-disable-line prefer-const + + let paginationElRef = null; // eslint-disable-line prefer-const + + let scrollbarElRef = null; // eslint-disable-line prefer-const + + const [local, rest] = splitProps(props, ['children', 'class', 'onSwiper', 'ref', 'tag', 'wrapperTag']); + const params = createMemo(() => getParams(rest)); + const { + slides, + slots + } = getChildren(local.children); + + const onBeforeBreakpoint = () => { + setBreakpointChanged(state => !state); + }; + + Object.assign(params().params.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + + }); + + const initSwiper = () => { + // init swiper + Object.assign(params().params.on, params().events); + eventsAssigned = true; + swiperRef = new SwiperCore(params().params); + + swiperRef.loopCreate = () => {}; + + swiperRef.loopDestroy = () => {}; + + if (params().params.loop) { + swiperRef.loopedSlides = calcLoopedSlides(slides, params().params); + } + + if (swiperRef.virtual && swiperRef.params.virtual.enabled) { + swiperRef.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: data => setVirtualData(data), + renderExternalUpdate: true + }; + extend(swiperRef.params.virtual, extendWith); + extend(swiperRef.originalParams.virtual, extendWith); + } + }; + + if (!swiperElRef) { + initSwiper(); + } // Listen for breakpoints change + + + if (swiperRef) { + swiperRef.on('_beforeBreakpoint', onBeforeBreakpoint); + } + + const attachEvents = () => { + if (eventsAssigned || !params().events || !swiperRef) return; + Object.keys(params().events).forEach(eventName => { + swiperRef.on(eventName, params().events[eventName]); + }); + }; + + const detachEvents = () => { + if (!params().events || !swiperRef) return; + Object.keys(params().events).forEach(eventName => { + swiperRef.off(eventName, params().events[eventName]); + }); + }; + + onCleanup(() => { + if (swiperRef) swiperRef.off('_beforeBreakpoint', onBeforeBreakpoint); + }); // set initialized flag + + createEffect(() => { + if (!initializedRef && swiperRef) { + swiperRef.emitSlidesClasses(); + initializedRef = true; + } + }); // mount swiper + + createEffect(() => { + if (local.ref) { + if (typeof local.ref === 'function') { + local.ref(swiperElRef); + } else { + local.ref = swiperElRef; + } + } + + if (!swiperElRef) return; + + if (swiperRef.destroyed) { + initSwiper(); + } + + mountSwiper({ + el: swiperElRef, + nextEl: nextElRef, + prevEl: prevElRef, + paginationEl: paginationElRef, + scrollbarEl: scrollbarElRef, + swiper: swiperRef + }, params().params); + if (local.onSwiper) local.onSwiper(swiperRef); + onCleanup(() => { + if (swiperRef && !swiperRef.destroyed) { + swiperRef.destroy(true, false); + } + }); + }); // watch for params change + + createEffect(() => { + attachEvents(); + const { + passedParams + } = params(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef, slides, oldSlides, c => c.key); + oldPassedParamsRef = passedParams; + oldSlides = slides; + + if (changedParams.length && swiperRef && !swiperRef.destroyed) { + updateSwiper({ + swiper: swiperRef, + slides, + passedParams, + changedParams, + nextEl: nextElRef, + prevEl: prevElRef, + scrollbarEl: scrollbarElRef, + paginationEl: paginationElRef + }); + } + + onCleanup(detachEvents); + }); // update on virtual update + + createEffect(() => { + updateOnVirtualData(swiperRef); + }); // bypass swiper instance to slides + + function renderSlides() { + if (params().params.virtual) { + return renderVirtual(swiperRef, slides, virtualData()); + } + + if (!params().params.loop || swiperRef && swiperRef.destroyed) { + return slides.map(child => { + const node = child.cloneNode(true); + node.swiper = swiperRef; + return node; + }); + } + + return renderLoop(swiperRef, slides, params().params); + } + /* eslint-disable react/react-in-jsx-scope */ + + /* eslint-disable react/no-unknown-property */ + + + return _$createComponent(Dynamic, _$mergeProps({ + get component() { + return local.tag || 'div'; + }, + + ref(r$) { + const _ref$ = swiperElRef; + typeof _ref$ === "function" ? _ref$(r$) : swiperElRef = r$; + }, + + get ["class"]() { + return uniqueClasses(`${containerClasses()}${local.class ? ` ${local.class}` : ''}`); + } + + }, () => params().rest, { + get children() { + return _$createComponent(SwiperContext.Provider, { + value: swiperRef, + + get children() { + return [_$memo(() => slots['container-start']), _$createComponent(Dynamic, { + get component() { + return local.wrapperTag || 'div'; + }, + + "class": "swiper-wrapper", + + get children() { + return [_$memo(() => slots['wrapper-start']), _$memo(() => renderSlides()), _$memo(() => slots['wrapper-end'])]; + } + + }), _$createComponent(Show, { + get when() { + return needsNavigation(params().params); + }, + + get children() { + return [(() => { + const _el$ = _tmpl$.cloneNode(true); + + const _ref$2 = prevElRef; + typeof _ref$2 === "function" ? _ref$2(_el$) : prevElRef = _el$; + return _el$; + })(), (() => { + const _el$2 = _tmpl$2.cloneNode(true); + + const _ref$3 = nextElRef; + typeof _ref$3 === "function" ? _ref$3(_el$2) : nextElRef = _el$2; + return _el$2; + })()]; + } + + }), _$createComponent(Show, { + get when() { + return needsScrollbar(params().params); + }, + + get children() { + const _el$3 = _tmpl$3.cloneNode(true); + + const _ref$4 = scrollbarElRef; + typeof _ref$4 === "function" ? _ref$4(_el$3) : scrollbarElRef = _el$3; + return _el$3; + } + + }), _$createComponent(Show, { + get when() { + return needsPagination(params().params); + }, + + get children() { + const _el$4 = _tmpl$4.cloneNode(true); + + const _ref$5 = paginationElRef; + typeof _ref$5 === "function" ? _ref$5(_el$4) : paginationElRef = _el$4; + return _el$4; + } + + }), _$memo(() => slots['container-end'])]; + } + + }); + } + + })); +}; + +export { Swiper }; \ No newline at end of file diff --git a/swiper/solid/virtual.js b/swiper/solid/virtual.js new file mode 100644 index 0000000..1a7a550 --- /dev/null +++ b/swiper/solid/virtual.js @@ -0,0 +1,16 @@ +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => { + const node = child.cloneNode(true); + node.swiper = swiper; + Object.assign(node.style, style); + return node; + }); +} + +export { renderVirtual }; \ No newline at end of file diff --git a/swiper/svelte/index.js b/swiper/svelte/index.js new file mode 100644 index 0000000..50ad283 --- /dev/null +++ b/swiper/svelte/index.js @@ -0,0 +1 @@ +export { Swiper, SwiperSlide } from './swiper-svelte.js'; \ No newline at end of file diff --git a/swiper/svelte/swiper-slide.svelte b/swiper/svelte/swiper-slide.svelte new file mode 100644 index 0000000..f2ca13b --- /dev/null +++ b/swiper/svelte/swiper-slide.svelte @@ -0,0 +1,95 @@ + + +
+ {#if zoom} +
+ +
+ {:else} + + {/if} +
diff --git a/swiper/svelte/swiper-svelte.d.ts b/swiper/svelte/swiper-svelte.d.ts new file mode 100644 index 0000000..61db695 --- /dev/null +++ b/swiper/svelte/swiper-svelte.d.ts @@ -0,0 +1,463 @@ +import { SvelteComponentTyped } from 'svelte'; +import { SwiperOptions, Swiper as SwiperClass } from '../types/'; + +// @ts-ignore +interface SwiperProps extends svelte.JSX.HTMLAttributes {} +interface SwiperProps extends SwiperOptions {} + +// @ts-ignore +interface SwiperSlideProps extends svelte.JSX.HTMLAttributes { + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; +} + +declare class Swiper extends SvelteComponentTyped< + SwiperProps, + { + swiper: CustomEvent; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on autoplay pause (on mouse/pointer enter), when `pauseOnMouseEnter` enabled + */ + autoplayPause: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on autoplay resume (on mouse/pointer leave), when `pauseOnMouseEnter` enabled + */ + autoplayResume: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: SwiperClass]>;/** + * Event will be fired on window hash change + */ + hashChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: CustomEvent<[swiper: SwiperClass]>;/** + * Event will be fired on key press + */ + keyPress: CustomEvent<[swiper: SwiperClass, keyCode: string]>;/** + * Event will be fired in the beginning of lazy loading of image + */ + lazyImageLoad: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>; + /** + * Event will be fired when lazy loading image will be loaded + */ + lazyImageReady: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: SwiperClass, event: WheelEvent]>;/** + * Event will be fired after pagination rendered + */ + paginationRender: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationHide: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired on pagination show + */ + paginationShow: CustomEvent<[swiper: SwiperClass]>;/** + * Event will be fired on navigation hide + */ + navigationHide: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on navigation show + */ + navigationShow: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on navigation next button click + */ + navigationNext: CustomEvent<[swiper: SwiperClass]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomChange: CustomEvent<[swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when currently active slide is changed + */ + slideChange: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: CustomEvent<[swiper: SwiperClass]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: CustomEvent<[swiper: SwiperClass]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: CustomEvent<[swiper: SwiperClass]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: CustomEvent<[swiper: SwiperClass]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired after transition. + */ + transitionEnd: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. + */ + touchStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. + */ + touchMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. + */ + touchMoveOpposite: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. + */ + sliderMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. + */ + touchEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + click: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + tap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments + */ + doubleTap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled + */ + imagesReady: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: SwiperClass, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: CustomEvent<[swiper: SwiperClass, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: CustomEvent<[swiper: SwiperClass, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired after "loop fix" + */ + loopFix: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: CustomEvent<[swiper: SwiperClass, classNames: string]>; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, classNames: string]>; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: CustomEvent<[ + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ]>; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: CustomEvent<[swiper: SwiperClass]>; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: CustomEvent<[swiper: SwiperClass]>; + + /** + * Event will fired on active index change + */ + activeIndexChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired on snap index change + */ + snapIndexChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired on real index change + */ + realIndexChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired right after initialization + */ + afterInit: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired right before initialization + */ + beforeInit: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired before resize handler + */ + beforeResize: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will fired before transition start + */ + beforeTransitionStart: CustomEvent<[swiper: SwiperClass, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: CustomEvent<[swiper: SwiperClass, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: SwiperClass]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: SwiperClass]>; + + }, + { + default: { + virtualData: { + slides: any[]; + offset: number; + from: number; + to: number; + slidesGrid: number[]; + }; + }; + 'container-start': {}; + 'wrapper-start': {}; + 'wrapper-end': {}; + 'container-end': {}; + } +> {} + +declare class SwiperSlide extends SvelteComponentTyped< + SwiperSlideProps, + {}, + { + default: { + data: { + isActive: boolean; + isVisible: boolean; + isDuplicate: boolean; + isPrev: boolean; + isNext: boolean; + }; + }; + } +> {} + +export { Swiper, SwiperSlide }; diff --git a/swiper/svelte/swiper-svelte.js b/swiper/svelte/swiper-svelte.js new file mode 100644 index 0000000..478b676 --- /dev/null +++ b/swiper/svelte/swiper-svelte.js @@ -0,0 +1,15 @@ +/** + * Swiper Svelte 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +import Swiper from './swiper.svelte'; +import SwiperSlide from './swiper-slide.svelte'; +export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/swiper/svelte/swiper.svelte b/swiper/svelte/swiper.svelte new file mode 100644 index 0000000..bbf8c99 --- /dev/null +++ b/swiper/svelte/swiper.svelte @@ -0,0 +1,173 @@ + + +
+ +
+ + + +
+ {#if needsNavigation(swiperParams)} +
+
+ {/if} + {#if needsScrollbar(swiperParams)} +
+ {/if} + {#if needsPagination(swiperParams)} +
+ {/if} + +
diff --git a/swiper/swiper-bundle.css b/swiper/swiper-bundle.css new file mode 100644 index 0000000..a995259 --- /dev/null +++ b/swiper/swiper-bundle.css @@ -0,0 +1,647 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +:root { + --swiper-theme-color: #007aff; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-pointer-events { + touch-action: pan-y; +} +.swiper-pointer-events.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d, +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper, +.swiper-3d .swiper-slide, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-horizontal.swiper-css-mode > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-vertical.swiper-css-mode > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; +} +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: 10px; + right: auto; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: 10px; + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +.swiper-button-lock { + display: none; +} +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: 10px; + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: 50%; + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: 10px; + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, 200ms right; +} +/* Progress */ +.swiper-pagination-progressbar { + background: rgba(0, 0, 0, 0.25); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: 4px; + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: 4px; + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +.swiper-slide-zoomed { + cursor: move; +} +/* Preloader */ +:root { + /* + --swiper-preloader-color: var(--swiper-theme-color); + */ +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active, +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev, +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-flip .swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/swiper/swiper-bundle.esm.browser.js b/swiper/swiper-bundle.esm.browser.js new file mode 100644 index 0000000..4ce9fbe --- /dev/null +++ b/swiper/swiper-bundle.esm.browser.js @@ -0,0 +1,10655 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + +/* eslint-disable no-param-reassign */ +function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} + +function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + + if (src === void 0) { + src = {}; + } + + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); +} + +const ssrDocument = { + body: {}, + + addEventListener() {}, + + removeEventListener() {}, + + activeElement: { + blur() {}, + + nodeName: '' + }, + + querySelector() { + return null; + }, + + querySelectorAll() { + return []; + }, + + getElementById() { + return null; + }, + + createEvent() { + return { + initEvent() {} + + }; + }, + + createElement() { + return { + children: [], + childNodes: [], + style: {}, + + setAttribute() {}, + + getElementsByTagName() { + return []; + } + + }; + }, + + createElementNS() { + return {}; + }, + + importNode() { + return null; + }, + + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; + +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; +} + +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + + pushState() {}, + + go() {}, + + back() {} + + }, + CustomEvent: function CustomEvent() { + return this; + }, + + addEventListener() {}, + + removeEventListener() {}, + + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + + }; + }, + + Image() {}, + + Date() {}, + + screen: {}, + + setTimeout() {}, + + clearTimeout() {}, + + matchMedia() { + return {}; + }, + + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + + return setTimeout(callback, 0); + }, + + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + + clearTimeout(id); + } + +}; + +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; +} + +/** + * Dom7 4.0.4 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * https://framework7.io/docs/dom7.html + * + * Copyright 2022, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: January 11, 2022 + */ +/* eslint-disable no-proto */ + +function makeReactive(obj) { + const proto = obj.__proto__; + Object.defineProperty(obj, '__proto__', { + get() { + return proto; + }, + + set(value) { + proto.__proto__ = value; + } + + }); +} + +class Dom7 extends Array { + constructor(items) { + if (typeof items === 'number') { + super(items); + } else { + super(...(items || [])); + makeReactive(this); + } + } + +} + +function arrayFlat(arr) { + if (arr === void 0) { + arr = []; + } + + const res = []; + arr.forEach(el => { + if (Array.isArray(el)) { + res.push(...arrayFlat(el)); + } else { + res.push(el); + } + }); + return res; +} + +function arrayFilter(arr, callback) { + return Array.prototype.filter.call(arr, callback); +} + +function arrayUnique(arr) { + const uniqueArray = []; + + for (let i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); + } + + return uniqueArray; +} + + +function qsa(selector, context) { + if (typeof selector !== 'string') { + return [selector]; + } + + const a = []; + const res = context.querySelectorAll(selector); + + for (let i = 0; i < res.length; i += 1) { + a.push(res[i]); + } + + return a; +} + +function $(selector, context) { + const window = getWindow(); + const document = getDocument(); + let arr = []; + + if (!context && selector instanceof Dom7) { + return selector; + } + + if (!selector) { + return new Dom7(arr); + } + + if (typeof selector === 'string') { + const html = selector.trim(); + + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + let toCreate = 'div'; + if (html.indexOf(' c.split(' '))); + this.forEach(el => { + el.classList.add(...classNames); + }); + return this; +} + +function removeClass() { + for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + classes[_key2] = arguments[_key2]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + el.classList.remove(...classNames); + }); + return this; +} + +function toggleClass() { + for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + classes[_key3] = arguments[_key3]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + classNames.forEach(className => { + el.classList.toggle(className); + }); + }); +} + +function hasClass() { + for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + classes[_key4] = arguments[_key4]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + return arrayFilter(this, el => { + return classNames.filter(className => el.classList.contains(className)).length > 0; + }).length > 0; +} + +function attr(attrs, value) { + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) return this[0].getAttribute(attrs); + return undefined; + } // Set attrs + + + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + for (const attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + + return this; +} + +function removeAttr(attr) { + for (let i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + + return this; +} + +function transform(transform) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transform = transform; + } + + return this; +} + +function transition$1(duration) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; + } + + return this; +} + +function on() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + + function handleLiveEvent(e) { + const target = e.target; + if (!target) return; + const eventData = e.target.dom7EventData || []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + if ($(target).is(targetSelector)) listener.apply(target, eventData);else { + const parents = $(target).parents(); // eslint-disable-line + + for (let k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); + } + } + } + + function handleEvent(e) { + const eventData = e && e.target ? e.target.dom7EventData || [] : []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + listener.apply(this, eventData); + } + + const events = eventType.split(' '); + let j; + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7Listeners) el.dom7Listeners = {}; + if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; + el.dom7Listeners[event].push({ + listener, + proxyListener: handleEvent + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; + if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; + el.dom7LiveListeners[event].push({ + listener, + proxyListener: handleLiveEvent + }); + el.addEventListener(event, handleLiveEvent, capture); + } + } + } + + return this; +} + +function off() { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + const events = eventType.split(' '); + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let handlers; + + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + + if (handlers && handlers.length) { + for (let k = handlers.length - 1; k >= 0; k -= 1) { + const handler = handlers[k]; + + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + + return this; +} + +function trigger() { + const window = getWindow(); + + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + + const events = args[0].split(' '); + const eventData = args[1]; + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + + if (window.CustomEvent) { + const evt = new window.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true + }); + el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + } + + return this; +} + +function transitionEnd$1(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('transitionend', fireCallBack); + } + + if (callback) { + dom.on('transitionend', fireCallBack); + } + + return this; +} + +function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + + return this[0].offsetWidth; + } + + return null; +} + +function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + + return this[0].offsetHeight; + } + + return null; +} + +function offset() { + if (this.length > 0) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + + return null; +} + +function styles() { + const window = getWindow(); + if (this[0]) return window.getComputedStyle(this[0], null); + return {}; +} + +function css(props, value) { + const window = getWindow(); + let i; + + if (arguments.length === 1) { + if (typeof props === 'string') { + // .css('width') + if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); + } else { + // .css({ width: '100px' }) + for (i = 0; i < this.length; i += 1) { + for (const prop in props) { + this[i].style[prop] = props[prop]; + } + } + + return this; + } + } + + if (arguments.length === 2 && typeof props === 'string') { + // .css('width', '100px') + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + + return this; + } + + return this; +} + +function each(callback) { + if (!callback) return this; + this.forEach((el, index) => { + callback.apply(el, [el, index]); + }); + return this; +} + +function filter(callback) { + const result = arrayFilter(this, callback); + return $(result); +} + +function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + + return this; +} + +function text(text) { + if (typeof text === 'undefined') { + return this[0] ? this[0].textContent.trim() : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + + return this; +} + +function is(selector) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + let compareWith; + let i; + if (!el || typeof selector === 'undefined') return false; + + if (typeof selector === 'string') { + if (el.matches) return el.matches(selector); + if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); + if (el.msMatchesSelector) return el.msMatchesSelector(selector); + compareWith = $(selector); + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + if (selector === document) { + return el === document; + } + + if (selector === window) { + return el === window; + } + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + return false; +} + +function index() { + let child = this[0]; + let i; + + if (child) { + i = 0; // eslint-disable-next-line + + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + + return i; + } + + return undefined; +} + +function eq(index) { + if (typeof index === 'undefined') return this; + const length = this.length; + + if (index > length - 1) { + return $([]); + } + + if (index < 0) { + const returnIndex = length + index; + if (returnIndex < 0) return $([]); + return $([this[returnIndex]]); + } + + return $([this[index]]); +} + +function append() { + let newChild; + const document = getDocument(); + + for (let k = 0; k < arguments.length; k += 1) { + newChild = k < 0 || arguments.length <= k ? undefined : arguments[k]; + + for (let i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (let j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; +} + +function prepend(newChild) { + const document = getDocument(); + let i; + let j; + + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + + return this; +} + +function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return $([this[0].nextElementSibling]); + } + + return $([]); + } + + if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); + return $([]); + } + + return $([]); +} + +function nextAll(selector) { + const nextEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + + if (selector) { + if ($(next).is(selector)) nextEls.push(next); + } else nextEls.push(next); + + el = next; + } + + return $(nextEls); +} + +function prev(selector) { + if (this.length > 0) { + const el = this[0]; + + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return $([el.previousElementSibling]); + } + + return $([]); + } + + if (el.previousElementSibling) return $([el.previousElementSibling]); + return $([]); + } + + return $([]); +} + +function prevAll(selector) { + const prevEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + + if (selector) { + if ($(prev).is(selector)) prevEls.push(prev); + } else prevEls.push(prev); + + el = prev; + } + + return $(prevEls); +} + +function parent(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); + } else { + parents.push(this[i].parentNode); + } + } + } + + return $(parents); +} + +function parents(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + let parent = this[i].parentNode; // eslint-disable-line + + while (parent) { + if (selector) { + if ($(parent).is(selector)) parents.push(parent); + } else { + parents.push(parent); + } + + parent = parent.parentNode; + } + } + + return $(parents); +} + +function closest(selector) { + let closest = this; // eslint-disable-line + + if (typeof selector === 'undefined') { + return $([]); + } + + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + + return closest; +} + +function find(selector) { + const foundElements = []; + + for (let i = 0; i < this.length; i += 1) { + const found = this[i].querySelectorAll(selector); + + for (let j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + + return $(foundElements); +} + +function children(selector) { + const children = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + const childNodes = this[i].children; + + for (let j = 0; j < childNodes.length; j += 1) { + if (!selector || $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + + return $(children); +} + +function remove() { + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); + } + + return this; +} + +const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + transform, + transition: transition$1, + on, + off, + trigger, + transitionEnd: transitionEnd$1, + outerWidth, + outerHeight, + styles, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove +}; +Object.keys(Methods).forEach(methodName => { + Object.defineProperty($.fn, methodName, { + value: Methods[methodName], + writable: true + }); +}); + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) {// no getter for object + } + + try { + delete object[key]; + } catch (e) {// something got wrong + } + }); +} + +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + + return setTimeout(callback, delay); +} + +function now() { + return Date.now(); +} + +function getComputedStyle$1(el) { + const window = getWindow(); + let style; + + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + + if (!style && el.currentStyle) { + style = el.currentStyle; + } + + if (!style) { + style = el.style; + } + + return style; +} + +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + + + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + + return curTransform || 0; +} + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} + +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + + return node && (node.nodeType === 1 || node.nodeType === 11); +} + +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + + return to; +} + +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} + +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + + const animate = () => { + time = new Date().getTime(); + + if (startTime === null) { + startTime = time; + } + + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + + animate(); +} + +let support; + +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), + passiveListener: function checkPassiveListener() { + let supportsPassive = false; + + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + } + + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) {// No support + } + + return supportsPassive; + }(), + gestures: function checkGestures() { + return 'ongesturestart' in window; + }() + }; +} + +function getSupport() { + if (!support) { + support = calcSupport(); + } + + return support; +} + +let deviceCached; + +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; // iPadOs 13 fix + + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } // Android + + + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } // Export object + + + return device; +} + +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + + return deviceCached; +} + +let browser; + +function calcBrowser() { + const window = getWindow(); + + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + + return { + isSafari: isSafari(), + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; +} + +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + + const init = () => { + if (!swiper.params.observer) return; + + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } // Observe container + + + attach(swiper.$el[0], { + childList: swiper.params.observeSlideChildren + }); // Observe wrapper + + attach(swiper.$wrapperEl[0], { + attributes: false + }); + }; + + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + + function onceHandler() { + self.off(events, onceHandler); + + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + handler.apply(self, args); + } + + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + + return self; + }, + + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + + return self; + }, + + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } // Subtract paddings + + + width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); + height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + + function getDirectionLabel(property) { + if (swiper.isHorizontal()) { + return property; + } // prettier-ignore + + + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); + } + + const params = swiper.params; + const { + $wrapperEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + + if (typeof swiperSize === 'undefined') { + return; + } + + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } + + swiper.virtualSize = -spaceBetween; // reset margins + + if (rtl) slides.css({ + marginLeft: '', + marginBottom: '', + marginTop: '' + });else slides.css({ + marginRight: '', + marginBottom: '', + marginTop: '' + }); // reset cssMode offsets + + if (params.centeredSlides && params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); + } + + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + + if (gridEnabled) { + swiper.grid.initSlides(slidesLength); + } // Calc slides + + + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); + } + + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[getDirectionLabel('width')] = ``; + } + + const slideStyles = getComputedStyle(slide[0]); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + + if (currentTransform) { + slide[0].style.transform = 'none'; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide[0]; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; + } + } + + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + + slidesSizesGrid.push(slideSize); + + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ + width: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (params.setWrapperSize) { + $wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); + } // Remove last grid elements depending on width + + + if (!params.centeredSlides) { + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + + snapGrid = newSlidesGrid; + + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode) return true; + + if (slideIndex === slides.length - 1) { + return false; + } + + return true; + }).css({ + [key]: `${spaceBetween}px` + }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass); + + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.$el.removeClass(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; + } + + return swiper.slides.eq(index)[0]; + }; // Find slides currently in view + + + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || $([])).each(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } // Find new height from highest slide in view + + + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } // Update Height + + + if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`); +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } +} + +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; // Visible Slides + + slides.removeClass(params.slideVisibleClass); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + + swiper.visibleSlides = $(swiper.visibleSlides); +} + +function updateProgress(translate) { + const swiper = this; + + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line + + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + + Object.assign(swiper, { + progress, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); +} + +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + $wrapperEl, + activeIndex, + realIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + let activeSlide; + + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } // Active classes + + + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } + } // Next Slide + + + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } // Prev Slide + + + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } + + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } + } + + swiper.emitSlidesClasses(); +} + +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } // Normalize slideIndex + + + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + + return; + } // Get real index + + + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + Object.assign(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(e) { + const swiper = this; + const params = swiper.params; + const slide = $(e).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + let slideIndex; + + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + $wrapperEl + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + + if (params.cssMode) { + return translate; + } + + let currentTranslate = getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + $wrapperEl, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (translateBounds === void 0) { + translateBounds = true; + } + + const swiper = this; + const { + params, + wrapperEl + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress + + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + + if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + + swiper.emit(`transition${step}`); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + + swiper.emit(`slideChangeTransition${step}`); + + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index !== 'number' && typeof index !== 'string') { + throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; // Update progress + + swiper.updateProgress(translate); // Normalize slideIndex + + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } // Directions locks + + + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index + + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); // Update Height + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + swiper.updateSlidesClasses(); + + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + + return false; + } + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._swiperImmediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + + return true; + } + + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let newIndex = index; + + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + animating, + enabled, + params + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params, + animating, + snapGrid, + slidesGrid, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return swiper; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + + let prevIndex = 0; + + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } + + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (threshold === void 0) { + threshold = 0.5; + } + + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + const { + params, + $wrapperEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate() { + const swiper = this; + const document = getDocument(); + const { + params, + $wrapperEl + } = swiper; // Remove duplicated slides + + const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl; + $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + let slides = $selector.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; + + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $selector.append(blankNode); + } + + slides = $selector.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((el, index) => { + const slide = $(el); + + if (index < swiper.loopedSlides) { + appendSlides.push(el); + } + + if (index < slides.length && index >= slides.length - swiper.loopedSlides) { + prependSlides.push(el); + } + + slide.attr('data-swiper-slide-index', index); + }); + + for (let i = 0; i < appendSlides.length; i += 1) { + $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } +} + +function loopFix() { + const swiper = this; + swiper.emit('beforeLoopFix'); + const { + activeIndex, + slides, + loopedSlides, + allowSlidePrev, + allowSlideNext, + snapGrid, + rtlTranslate: rtl + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding + + if (activeIndex < loopedSlides) { + newIndex = slides.length - loopedSlides * 3 + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + $wrapperEl, + params, + slides + } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; +} + +function unsetGrabCursor() { + const swiper = this; + + if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + + if (!found && !el.getRootNode) { + return null; + } + + return found || __closestFrom(el.getRootNode().host); + } + + return __closestFrom(base); +} + +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + const window = getWindow(); + const data = swiper.touchEventsData; + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + + let e = event; + if (e.originalEvent) e = e.originalEvent; + let $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; // change target el for shadow root component + + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + + if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { + $targetEl = $(event.path[0]); + } + + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element + + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) { + swiper.allowClick = true; + return; + } + + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + } else { + return; + } + } + + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + + if (e.type !== 'touchstart') { + let preventDefault = true; + + if ($targetEl.is(data.focusableElements)) { + preventDefault = false; + + if ($targetEl[0].nodeName === 'SELECT') { + data.isTouched = false; + } + } + + if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { + document.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { + e.preventDefault(); + } + } + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + return; + } + + if (data.isTouchEvent && e.type !== 'touchmove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + + if (!swiper.allowTouchMove) { + if (!$(e.target).is(data.focusableElements)) { + swiper.allowClick = false; + } + + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + + return; + } + + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + + if (data.isTouchEvent && document.activeElement) { + if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + + if (e.targetTouches && e.targetTouches.length > 1) return; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + + if (data.isScrolling) { + data.isTouched = false; + return; + } + + if (!data.startMoving) { + return; + } + + swiper.allowClick = false; + + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop && !params.cssMode) { + swiper.loopFix(); + } + + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + + data.allowMomentumBounce = false; // Grab Cursor + + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + + swiper.emit('sliderFirstMove', e); + } + + swiper.emit('sliderMove', e); + data.isMoved = true; + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) diff = -diff; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + + if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } // Directions locks + + + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } // Threshold + + + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; // Update active index in free mode + + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } // Update progress + + + swiper.updateProgress(data.currentTranslate); // Update translate + + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + + data.allowTouchCallbacks = false; + + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + + data.isMoved = false; + data.startMoving = false; + return; + } // Return Grab Cursor + + + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } // Time diff + + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click + + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target); + swiper.emit('tap click', e); + + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (swiper.params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } // Find current slide + + + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + let rewindFirstIndex = null; + let rewindLastIndex = null; + + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } // Find current slide size + + + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } // Save locks + + + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; // Disable locks on resize + + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } // Return locks after resize + + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } // eslint-disable-next-line + + + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); +} + +let dummyEventAttached = false; + +function dummyEventListener() {} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + touchEvents, + el, + wrapperEl, + device, + support + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; // Touch Events + + if (!support.touch) { + el[domMethod](touchEvents.start, swiper.onTouchStart, false); + document[domMethod](touchEvents.move, swiper.onTouchMove, capture); + document[domMethod](touchEvents.end, swiper.onTouchEnd, false); + } else { + const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); + el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { + passive: false, + capture + } : capture); + el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); + + if (touchEvents.cancel) { + el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } // Prevent Links Clicks + + + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } // Resize handler + + + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } +}; + +function attachEvents() { + const swiper = this; + const document = getDocument(); + const { + params, + support + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + if (support.touch && !dummyEventAttached) { + document.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + + events(swiper, 'on'); +} + +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} + +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; + +function setBreakpoint() { + const swiper = this; + const { + activeIndex, + initialized, + loopedSlides = 0, + params, + $el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters + + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}grid`); + + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + $el.addClass(`${params.containerModifierClass}grid-column`); + } + + swiper.emitContainerClasses(); + } // Toggle navigation, pagination, scrollbar + + + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} + +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + $el, + device, + support + } = swiper; // prettier-ignore + + const suffixes = prepareClasses(['initialized', params.direction, { + 'pointer-events': !support.touch + }, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + $el.addClass([...classNames].join(' ')); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + $el, + classNames + } = swiper; + $el.removeClass(classNames.join(' ')); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { + const window = getWindow(); + let image; + + function onReady() { + if (callback) callback(); + } + + const isPicture = $(imageEl).parent('picture')[0]; + + if (!isPicture && (!imageEl.complete || !checkForComplete)) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + + if (sizes) { + image.sizes = sizes; + } + + if (srcset) { + image.srcset = srcset; + } + + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } +} + +function preloadImages() { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); + } +} + +var images = { + loadImage, + preloadImages +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} + +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // Images + preloadImages: true, + updateOnImagesReady: true, + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + loopPreventsSlide: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + + if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { + params[moduleParamName] = { + auto: true + }; + } + + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes, + images +}; +const extendedDefaults = {}; + +class Swiper { + constructor() { + let el; + let params; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + + if (params.el && $(params.el).length > 1) { + const swipers = []; + $(params.el).each(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } // Swiper Instance + + + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); // Extend defaults with modules params + + const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params + + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); // add event listeners + + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } // Save Dom lib + + + swiper.$ = $; // Extend Swiper + + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + + isVertical() { + return swiper.params.direction === 'vertical'; + }, + + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEvents: function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + const desktop = ['pointerdown', 'pointermove', 'pointerup']; + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3] + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2] + }; + return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }(), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); // Init + + if (swiper.params.init) { + swiper.init(); + } // Return app instance + + + return swiper; + } + + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + swiper.emit('enable'); + } + + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + + swiper.emit('disable'); + } + + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.each(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + + if (exact === void 0) { + exact = false; + } + + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } + } + + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + let translated; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled) { + setTranslate(); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (!translated) { + setTranslate(); + } + } + + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + + const swiper = this; + const currentDirection = swiper.params.direction; + + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + + swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.each(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + + if (swiper.rtl) { + swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + + swiper.update(); + } + + mount(el) { + const swiper = this; + if (swiper.mounted) return true; // Find el + + const $el = $(el || swiper.params.el); + el = $el[0]; + + if (!el) { + return false; + } + + el.swiper = swiper; + + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items + + res.children = options => $el.children(options); + + return res; + } + + if (!$el.children) { + return $($el).children(getWrapperSelector()); + } + + return $el.children(getWrapperSelector()); + }; // Find Wrapper + + + let $wrapperEl = getWrapper(); + + if ($wrapperEl.length === 0 && swiper.params.createElements) { + const document = getDocument(); + const wrapper = document.createElement('div'); + $wrapperEl = $(wrapper); + wrapper.className = swiper.params.wrapperClass; + $el.append(wrapper); + $el.children(`.${swiper.params.slideClass}`).each(slideEl => { + $wrapperEl.append(slideEl); + }); + } + + Object.assign(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box' + }); + return true; + } + + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); // Set breakpoint + + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } // Add Classes + + + swiper.addClasses(); // Create loop + + if (swiper.params.loop) { + swiper.loopCreate(); + } // Update size + + + swiper.updateSize(); // Update slides + + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } // Set Grab Cursor + + + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } // Slide To Initial Slide + + + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } // Attach events + + + swiper.attachEvents(); // Init Flag + + swiper.initialized = true; // Emit + + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + + if (cleanStyles === void 0) { + cleanStyles = true; + } + + const swiper = this; + const { + params, + $el, + $wrapperEl, + slides + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); // Init Flag + + swiper.initialized = false; // Detach events + + swiper.detachEvents(); // Destroy loop + + if (params.loop) { + swiper.loopDestroy(); + } // Cleanup styles + + + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + + if (slides && slides.length) { + slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); // Detach emitter events + + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + deleteProps(swiper); + } + + swiper.destroyed = true; + return null; + } + + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + + Swiper.installModule(module); + return Swiper; + } + +} + +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + + function renderSlide(slide, index) { + const params = swiper.params.virtual; + + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + + const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + } + + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = slidesPerGroup + addSlidesBefore; + } + + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + + emit('virtualUpdate'); + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + + return slidesToRender; + }() + }); + + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + + return; + } + + const prependIndexes = []; + const appendIndexes = []; + + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + + appendIndexes.forEach(index => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach(index => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + } + + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + + update(true); + } + + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + + update(true); + swiper.slideTo(newActiveIndex, 0); + } + + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + + update(true); + swiper.slideTo(activeIndex, 0); + } + + function removeAllSlides() { + swiper.virtual.slides = []; + + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + + update(true); + swiper.slideTo(0, 0); + } + + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + swiper.virtual.slides = swiper.params.virtual.slides; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + + if (!swiper.params.initialSlide) { + update(); + } + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; // Directions locks + + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; // Check that swiper should be inside of visible area of window + + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + + const $el = swiper.$el; + const swiperWidth = $el[0].clientWidth; + const swiperHeight = $el[0].clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + if (!inView) return undefined; + } + + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + + emit('keyPress', kc); + return undefined; + } + + function enable() { + if (swiper.keyboard.enabled) return; + $(document).on('keydown', handle); + swiper.keyboard.enabled = true; + } + + function disable() { + if (!swiper.keyboard.enabled) return; + $(document).off('keydown', handle); + swiper.keyboard.enabled = false; + } + + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + + let pX = 0; + let pY = 0; // pixelX, pixelY + // Legacy + + if ('detail' in e) { + sY = e.detail; + } + + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } // side scrolling on FF with DOMMouseScroll + + + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } // Fall-back if spin cannot be determined + + + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + + + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + + + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } // If you got here is because an animation has been triggered so store the current time + + + lastScrollTime = new window.Date().getTime(); // Return false as a default + + return false; + } + + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + + return false; + } + + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + if (params.invert) delta = -delta; // Get the scroll positions + + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; // Keep the most recent events + + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + + + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } // Emit event + + + if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay + + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions + + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + + function events(method) { + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + target[method]('mouseenter', handleMouseEnter); + target[method]('mouseleave', handleMouseLeave); + target[method]('wheel', handle); + } + + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + + if (swiper.mousewheel.enabled) return false; + events('on'); + swiper.mousewheel.enabled = true; + return true; + } + + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + + if (!swiper.mousewheel.enabled) return false; + events('off'); + swiper.mousewheel.enabled = false; + return true; + } + + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + const document = getDocument(); + + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = swiper.$el.children(`.${checkProps[key]}`)[0]; + + if (!element) { + element = document.createElement('div'); + element.className = checkProps[key]; + swiper.$el.append(element); + } + + params[key] = element; + originalParams[key] = element; + } + }); + } + + return params; +} + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + $nextEl: null, + prevEl: null, + $prevEl: null + }; + + function getEl(el) { + let $el; + + if (el) { + $el = $(el); + + if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { + $el = swiper.$el.find(el); + } + } + + return $el; + } + + function toggleEl($el, disabled) { + const params = swiper.params.navigation; + + if ($el && $el.length > 0) { + $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); + if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + } + + function update() { + // Update Navigation Buttons + if (swiper.params.loop) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind); + } + + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + const $nextEl = getEl(params.nextEl); + const $prevEl = getEl(params.prevEl); + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', onNextClick); + } + + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', onPrevClick); + } + + Object.assign(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0] + }); + + if (!swiper.enabled) { + if ($nextEl) $nextEl.addClass(params.lockClass); + if ($prevEl) $prevEl.addClass(params.lockClass); + } + } + + function destroy() { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl && $nextEl.length) { + $nextEl.off('click', onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + + if ($prevEl && $prevEl.length) { + $prevEl.off('click', onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + } + + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl) { + $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + + if ($prevEl) { + $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + }); + on('click', (_s, e) => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + const targetEl = e.target; + + if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass); + init(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass); + destroy(); + }; + + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + + return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + $el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; + } + + function setSideBullets($bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); + } + + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; // Current/Total + + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + + if (current > slidesLength - 1 - swiper.loopedSlides * 2) { + current -= slidesLength - swiper.loopedSlides * 2; + } + + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } // Types + + + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + + if (params.dynamicBullets) { + bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); + + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0); + + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + + bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); + + if ($el.length > 1) { + bullets.each(bullet => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + + if (bulletIndex === firstIndex) { + setSideBullets($bullet, 'prev'); + } + + if (bulletIndex === lastIndex) { + setSideBullets($bullet, 'next'); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + + if (swiper.params.loop) { + if (bulletIndex >= bullets.length) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } + } + + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + + if (params.type === 'fraction') { + $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); + $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total)); + } + + if (params.type === 'progressbar') { + let progressbarDirection; + + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + + $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + emit('paginationRender', $el[0]); + } else { + emit('paginationUpdate', $el[0]); + } + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + let paginationHTML = ''; + + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); + } + + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + + $el.html(paginationHTML); + } + + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + + $el.html(paginationHTML); + } + + if (params.type !== 'custom') { + emit('paginationRender', swiper.pagination.$el[0]); + } + } + + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let $el = $(params.el); + if ($el.length === 0) return; + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { + $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper + + if ($el.length > 1) { + $el = $el.filter(el => { + if ($(el).parents('.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Object.assign(swiper.pagination, { + $el, + el: $el[0] + }); + + if (!swiper.enabled) { + $el.addClass(params.lockClass); + } + } + + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const $el = swiper.pagination.$el; + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + + if (params.clickable) { + $el.off('click', classesToSelector(params.bulletClass)); + } + } + + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (swiper.params.loop) { + update(); + } else if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + if (!swiper.params.loop) { + update(); + } + }); + on('slidesLengthChange', () => { + if (swiper.params.loop) { + render(); + update(); + } + }); + on('snapGridLengthChange', () => { + if (!swiper.params.loop) { + render(); + update(); + } + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $el + } = swiper.pagination; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const { + $el + } = swiper.pagination; + + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass); + + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + + $el.toggleClass(swiper.params.pagination.hiddenClass); + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + } + + init(); + render(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null, + $el: null, + $dragEl: null + }; + + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl, + progress + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + const params = swiper.params.scrollbar; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + + if (rtl) { + newPos = -newPos; + + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + + if (params.hide) { + clearTimeout(timeout); + $el[0].style.opacity = 1; + timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + } + + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + } + + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + } + } + + function getPointerPosition(e) { + if (swiper.isHorizontal()) { + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; + } + + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; + } + + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + $el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + $wrapperEl.transition(100); + $dragEl.transition(100); + setDragPosition(e); + clearTimeout(dragTimeout); + $el.transition(0); + + if (params.hide) { + $el.css('opacity', 1); + } + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + + emit('scrollbarDragStart', e); + } + + function onDragMove(e) { + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + emit('scrollbarDragMove', e); + } + + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + + emit('scrollbarDragEnd', e); + + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + + function events(method) { + const { + scrollbar, + touchEventsTouch, + touchEventsDesktop, + params, + support + } = swiper; + const $el = scrollbar.$el; + if (!$el) return; + const target = $el[0]; + const activeListener = support.passiveListener && params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + + if (!support.touch) { + target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); + document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); + document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); + } else { + target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); + target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); + target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); + } + } + + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + + function init() { + const { + scrollbar, + $el: $swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let $el = $(params.el); + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + + if ($dragEl.length === 0) { + $dragEl = $(`
`); + $el.append($dragEl); + } + + Object.assign(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0] + }); + + if (params.draggable) { + enableDraggable(); + } + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + } + + function destroy() { + const params = swiper.params.scrollbar; + const $el = swiper.scrollbar.$el; + + if ($el) { + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + } + + disableDraggable(); + } + + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + $el + } = swiper.scrollbar; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + }); + on('destroy', () => { + destroy(); + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + init(); + updateSize(); + setTranslate(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + $el[0].style.opacity = currentOpacity; + } + + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }; + + const setTranslate = () => { + const { + $el, + slides, + progress, + snapGrid + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, progress); + }); + slides.each((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, slideProgress); + }); + }); + }; + + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + + const { + $el + } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }; + + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let gesturesEnabled; + let fakeGestureTouched; + let fakeGestureMoved; + const gesture = { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + + set(value) { + if (scale !== value) { + const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined; + const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; + emit('zoomChange', value, imageEl, slideEl); + } + + scale = value; + } + + }); + + function getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } // Events + + + function onGestureStart(e) { + const support = swiper.support; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + + if (!support.gestures) { + if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { + return; + } + + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(e); + } + + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + + isScaling = true; + } + + function onGestureChange(e) { + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { + return; + } + + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(e); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { + if (e.type === 'gesturechange') onGestureStart(e); + return; + } + + if (support.gestures) { + zoom.scale = e.scale * currentScale; + } else { + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + } + + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function onGestureEnd(e) { + const device = swiper.device; + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + + if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { + return; + } + + fakeGestureTouched = false; + fakeGestureMoved = false; + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + } + + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + } + + function onTouchMove(e) { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + } // Define if we need image drag + + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + return; + } + + 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)) { + image.isTouched = false; + return; + } + } + + if (e.cancelable) { + e.preventDefault(); + } + + e.stopPropagation(); + image.isMoved = true; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; + + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } // Velocity + + + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; // Fix duration + + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; // Define if we need image drag + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTransitionEnd() { + const zoom = swiper.zoom; + + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + currentScale = 1; + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + } + + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (e && e.target) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + } + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left + window.scrollX; + offsetY = gesture.$slideEl.offset().top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + + zoom.scale = 1; + currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + } // Toggle Zoom + + + function zoomToggle(e) { + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + + function getListeners() { + const support = swiper.support; + const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = support.passiveListener ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + function getSlideSelector() { + return `.${swiper.params.slideClass}`; + } + + function toggleGestures(method) { + const { + passiveListener + } = getListeners(); + const slideSelector = getSlideSelector(); + swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); + swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); + } + + function enableGestures() { + if (gesturesEnabled) return; + gesturesEnabled = true; + toggleGestures('on'); + } + + function disableGestures() { + if (!gesturesEnabled) return; + gesturesEnabled = false; + toggleGestures('off'); + } // Attach/Detach Events + + + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const support = swiper.support; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + const support = swiper.support; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +function Lazy(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + lazy: { + checkInView: false, + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + scrollingElement: '', + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader' + } + }); + swiper.lazy = {}; + let scrollHandlerAttached = false; + let initialImageLoaded = false; + + function loadInSlide(index, loadInDuplicate) { + if (loadInDuplicate === void 0) { + loadInDuplicate = true; + } + + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); + const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images.push($slideEl[0]); + } + + if ($images.length === 0) return; + $images.each(imageEl => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + const $pictureEl = $imageEl.parent('picture'); + swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; + + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + + if ($pictureEl.length) { + $pictureEl.children('source').each(sourceEl => { + const $source = $(sourceEl); + + if ($source.attr('data-srcset')) { + $source.attr('srcset', $source.attr('data-srcset')); + $source.removeAttr('data-srcset'); + } + }); + } + + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + loadInSlide(duplicatedSlide.index(), false); + } + } + + emit('lazyImageReady', $slideEl[0], $imageEl[0]); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + } + + function load() { + const { + $wrapperEl, + params: swiperParams, + slides, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + let slidesPerView = swiperParams.slidesPerView; + + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + + return false; + } + + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + + return $(slideEl).index(); + } + + if (!initialImageLoaded) initialImageLoaded = true; + + if (swiper.params.watchSlidesProgress) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + loadInSlide(activeIndex); + } + + if (params.loadPrevNext) { + if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { + const amount = params.loadPrevNextAmount; + const spv = Math.ceil(slidesPerView); + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides + + for (let i = activeIndex + spv; i < maxIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } // Prev Slides + + + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); + } + } + } + + function checkInViewOnLoad() { + const window = getWindow(); + if (!swiper || swiper.destroyed) return; + const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); + const isWindow = $scrollElement[0] === window; + const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; + const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; + const swiperOffset = swiper.$el.offset(); + const { + rtlTranslate: rtl + } = swiper; + let inView = false; + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + + if (inView) { + load(); + $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); + } else if (!scrollHandlerAttached) { + scrollHandlerAttached = true; + $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); + } + } + + on('beforeInit', () => { + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }); + on('init', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('scroll', () => { + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { + load(); + } + }); + on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('transitionStart', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + } + }); + on('transitionEnd', () => { + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('slideChange', () => { + const { + lazy, + cssMode, + watchSlidesProgress, + touchReleaseOnEdges, + resistanceRatio + } = swiper.params; + + if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { + load(); + } + }); + on('destroy', () => { + if (!swiper.$el) return; + swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass); + }); + Object.assign(swiper.lazy, { + load, + loadInSlide + }); +} + +/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + + } + }); + swiper.controller = { + control: undefined + }; + + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + + return maxIndex; + }; + }(); + + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2): + + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + + return this; + } // xxx: for now i will just save one spline function to to + + + function getInterpolateFunction(c) { + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + } + + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + + function setControlledTransition(c) { + c.setTransition(duration, swiper); + + if (duration !== 0) { + c.transitionStart(); + + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + + c.transitionEnd(); + }); + } + } + + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + + function removeSpline() { + if (!swiper.controller.control) return; + + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + + on('beforeInit', () => { + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + let liveRegion = null; + + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + } + + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + + const randomChar = () => Math.round(16 * Math.random()).toString(16); + + return 'x'.repeat(size).replace(/x/g, randomChar); + } + + function makeElFocusable($el) { + $el.attr('tabIndex', '0'); + } + + function makeElNotFocusable($el) { + $el.attr('tabIndex', '-1'); + } + + function addElRole($el, role) { + $el.attr('role', role); + } + + function addElRoleDescription($el, description) { + $el.attr('aria-roledescription', description); + } + + function addElControls($el, controls) { + $el.attr('aria-controls', controls); + } + + function addElLabel($el, label) { + $el.attr('aria-label', label); + } + + function addElId($el, id) { + $el.attr('id', id); + } + + function addElLive($el, live) { + $el.attr('aria-live', live); + } + + function disableEl($el) { + $el.attr('aria-disabled', true); + } + + function enableEl($el) { + $el.attr('aria-disabled', false); + } + + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const $targetEl = $(e.target); + + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + + if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { + $targetEl[0].click(); + } + } + + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + disableEl($prevEl); + makeElNotFocusable($prevEl); + } else { + enableEl($prevEl); + makeElFocusable($prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + disableEl($nextEl); + makeElNotFocusable($nextEl); + } else { + enableEl($nextEl); + makeElFocusable($nextEl); + } + } + } + + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.each(bulletEl => { + const $bulletEl = $(bulletEl); + + if (swiper.params.pagination.clickable) { + makeElFocusable($bulletEl); + + if (!swiper.params.pagination.renderBullet) { + addElRole($bulletEl, 'button'); + addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + } + } + + if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) { + $bulletEl.attr('aria-current', 'true'); + } else { + $bulletEl.removeAttr('aria-current'); + } + }); + } + + const initNavEl = ($el, wrapperId, message) => { + makeElFocusable($el); + + if ($el[0].tagName !== 'BUTTON') { + addElRole($el, 'button'); + $el.on('keydown', onEnterOrSpaceKey); + } + + addElLabel($el, message); + addElControls($el, wrapperId); + }; + + const handleFocus = e => { + const slideEl = e.target.closest(`.${swiper.params.slideClass}`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + + const initSlides = () => { + const params = swiper.params.a11y; + + if (params.itemRoleDescriptionMessage) { + addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); + } + + if (params.slideRole) { + addElRole($(swiper.slides), params.slideRole); + } + + const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; + + if (params.slideLabelMessage) { + swiper.slides.each((slideEl, index) => { + const $slideEl = $(slideEl); + const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel($slideEl, ariaLabelMessage); + }); + } + }; + + const init = () => { + const params = swiper.params.a11y; + swiper.$el.append(liveRegion); // Container + + const $containerEl = swiper.$el; + + if (params.containerRoleDescriptionMessage) { + addElRoleDescription($containerEl, params.containerRoleDescriptionMessage); + } + + if (params.containerMessage) { + addElLabel($containerEl, params.containerMessage); + } // Wrapper + + + const $wrapperEl = swiper.$wrapperEl; + const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId($wrapperEl, wrapperId); + addElLive($wrapperEl, live); // Slide + + initSlides(); // Navigation + + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl && $nextEl.length) { + initNavEl($nextEl, wrapperId, params.nextSlideMessage); + } + + if ($prevEl && $prevEl.length) { + initNavEl($prevEl, wrapperId, params.prevSlideMessage); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.on('focus', handleFocus, true); + }; + + function destroy() { + if (liveRegion && liveRegion.length > 0) liveRegion.remove(); + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl) { + $nextEl.off('keydown', onEnterOrSpaceKey); + } + + if ($prevEl) { + $prevEl.off('keydown', onEnterOrSpaceKey); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.off('focus', handleFocus, true); + } + + on('beforeInit', () => { + liveRegion = $(``); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + + const slide = swiper.slides.eq(index); + let value = slugify(slide.attr('data-history')); + + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key}/${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key}/${value}`; + } + + if (swiper.params.history.keepQuery) { + value += location.search; + } + + const currentState = window.history.state; + + if (currentState && currentState.value === value) { + return; + } + + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = slugify(slide.attr('data-history')); + + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) return; + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + + const destroy = () => { + const window = getWindow(); + + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false + } + }); + + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }; + + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); + emit('hashSet'); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document.location.hash = hash || ''; + emit('hashSet'); + } + }; + + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + + if (hash) { + const speed = 0; + + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', onHashChange); + } + }; + + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', onHashChange); + } + }; + + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +/* eslint no-underscore-dangle: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + let timeout; + swiper.autoplay = { + running: false, + paused: false + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + + function run() { + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + + clearTimeout(timeout); + timeout = nextTick(() => { + let autoplayResult; + + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isBeginning) { + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isEnd) { + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + + if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { + run(); + } + }, delay); + } + + function start() { + if (typeof timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + emit('autoplayStart'); + run(); + return true; + } + + function stop() { + if (!swiper.autoplay.running) return false; + if (typeof timeout === 'undefined') return false; + + if (timeout) { + clearTimeout(timeout); + timeout = undefined; + } + + swiper.autoplay.running = false; + emit('autoplayStop'); + return true; + } + + function pause(speed) { + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (timeout) clearTimeout(timeout); + swiper.autoplay.paused = true; + + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + run(); + } else { + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); + }); + } + } + + function onVisibilityChange() { + const document = getDocument(); + + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + pause(); + } + + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + run(); + swiper.autoplay.paused = false; + } + } + + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== swiper.$wrapperEl[0]) return; + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + swiper.autoplay.paused = false; + + if (!swiper.autoplay.running) { + stop(); + } else { + run(); + } + } + + function onMouseEnter() { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + emit('autoplayPause'); + pause(); + } + + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + } + + function onMouseLeave() { + if (swiper.params.autoplay.disableOnInteraction) { + return; + } + + swiper.autoplay.paused = false; + emit('autoplayResume'); + run(); + } + + function attachMouseEvents() { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.$el.on('mouseenter', onMouseEnter); + swiper.$el.on('mouseleave', onMouseLeave); + } + } + + function detachMouseEvents() { + swiper.$el.off('mouseenter', onMouseEnter); + swiper.$el.off('mouseleave', onMouseLeave); + } + + on('init', () => { + if (swiper.params.autoplay.enabled) { + start(); + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + attachMouseEvents(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + stop(); + } + } + }); + on('sliderFirstMove', () => { + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + pause(); + } + } + }); + on('touchEnd', () => { + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + run(); + } + }); + on('destroy', () => { + detachMouseEvents(); + + if (swiper.autoplay.running) { + stop(); + } + + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }); + Object.assign(swiper.autoplay, { + pause, + run, + start, + stop + }); +} + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; + } + + swiper.slideTo(slideToIndex); + } + + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs + + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.removeClass(thumbActiveClass); + + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); // eslint-disable-next-line + + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } // Find actual thumbs index to slide to + + + const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + + if (typeof prevThumbsIndex === 'undefined') { + newThumbsIndex = nextThumbsIndex; + } else if (typeof nextThumbsIndex === 'undefined') { + newThumbsIndex = prevThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = nextThumbsIndex; + } else { + newThumbsIndex = prevThumbsIndex; + } + + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + init(); + update(true); + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + + function onTouchStart() { + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + + function onTouchMove() { + const { + touchEventsData: data, + touches + } = swiper; // Velocity + + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + const { + params, + $wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; // Time diff + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + + return; + } + + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + + + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + + newPosition = -newPosition; + } + + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } // Fix duration + + + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +function Grid(_ref) { + let { + swiper, + extendParams + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + + const initSlides = slidesLength => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + slidesPerRow = slidesNumberEvenToRows / rows; + numFullColumns = Math.floor(slidesLength / rows); + + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + }; + + const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { + const { + slidesPerGroup, + spaceBetween + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; // Set slides order + + let newSlideOrderIndex; + let column; + let row; + + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.css({ + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex + }); + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + + slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); + }; + + const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { + const { + spaceBetween, + centeredSlides, + roundLengths + } = swiper.params; + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + swiper.$wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` + }); + + if (centeredSlides) { + snapGrid.splice(0, snapGrid.length); + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + + snapGrid.push(...newSlidesGrid); + } + }; + + swiper.grid = { + initSlides, + updateSlide, + updateWrapperSize + }; +} + +function appendSlide(slides) { + const swiper = this; + const { + $wrapperEl, + params + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + let newActiveIndex = activeIndex + 1; + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + $wrapperEl, + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + const baseLength = swiper.slides.length; + + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows + + swiper.slides.each(slideEl => { + const $slideEl = swiper.$(slideEl); + $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove(); + }); // create new one + + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +function effectTarget(effectParams, $slideEl) { + if (effectParams.transformEl) { + return $slideEl.find(effectParams.transformEl).css({ + 'backface-visibility': 'hidden', + '-webkit-backface-visibility': 'hidden' + }); + } + + return $slideEl; +} + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformEl, + allSlides + } = _ref; + const { + slides, + activeIndex, + $wrapperEl + } = swiper; + + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let $transitionEndTarget; + + if (allSlides) { + $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; + } else { + $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); + } + + $transitionEndTarget.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } +} + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false, + transformEl: null + } + }); + + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + const $targetEl = effectTarget(params, $slideEl); + $targetEl.css({ + opacity: slideOpacity + }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.fadeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + + const createSlideShadows = ($slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = $(`
`); + $slideEl.append(shadowBefore); + } + + if (shadowAfter.length === 0) { + shadowAfter = $(`
`); + $slideEl.append(shadowAfter); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.each(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows($(slideEl), progress, isHorizontal); + }); + }; + + const setTranslate = () => { + const { + $el, + $wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $wrapperEl.append($cubeShadowEl); + } + + $cubeShadowEl.css({ + height: `${swiperWidth}px` + }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $el.append($cubeShadowEl); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + + $slideEl.transform(transform); + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, isHorizontal); + } + } + + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px` + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + + const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; + $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + + const setTransition = duration => { + const { + $el, + slides + } = swiper; + slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }; + + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +function createShadow(params, $slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; + const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; + let $shadowEl = $shadowContainer.children(`.${shadowClass}`); + + if (!$shadowEl.length) { + $shadowEl = $(`
`); + $shadowContainer.append($shadowEl); + } + + return $shadowEl; +} + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true, + transformEl: null + } + }); + + const createSlideShadows = ($slideEl, progress, params) => { + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + + if (shadowAfter.length === 0) { + shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // Set shadows + const params = swiper.params.flipEffect; + swiper.slides.each(slideEl => { + const $slideEl = $(slideEl); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + + createSlideShadows($slideEl, progress, params); + }); + }; + + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, params); + } + + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.flipEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true, + transformEl: null + } + }); + + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; // Each slide offset from center + + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0 + + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders + + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values + + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); + } + + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); + } + + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.coverflowEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + }; + + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + transformEl: null, + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + + const setTranslate = () => { + const { + slides, + $wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); + } + + const offset = $slideEl[0].swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } // set translate + + + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); // set rotates + + r.forEach((value, index) => { + r[index] = data.rotate[index] * Math.abs(progress * multiplier); + }); + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows + + if (custom && data.shadow || !custom) { + let $shadowEl = $slideEl.children('.swiper-slide-shadow'); + + if ($shadowEl.length === 0 && data.shadow) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform).css({ + opacity: opacityString + }); + + if (data.origin) { + $targetEl.css('transform-origin', data.origin); + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.creativeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + transformEl: null, + rotate: true + } + }); + + const setTranslate = () => { + const { + slides, + activeIndex + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = swiper.translate; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = $slideEl[0].swiperSlideOffset; + + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`); + } + + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -2 * progress; + let tXAdd = 8 - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + + if (progress < 0) { + // next + tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rotate : 0}deg) + scale(${scaleString}) + `; + + if (params.slideShadows) { + // Set shadows + let $shadowEl = $slideEl.find('.swiper-slide-shadow'); + + if ($shadowEl.length === 0) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.cardsEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; +//# sourceMappingURL=swiper-bundle.esm.browser.js.map diff --git a/swiper/swiper-bundle.esm.browser.js.map b/swiper/swiper-bundle.esm.browser.js.map new file mode 100644 index 0000000..5a77d0c --- /dev/null +++ b/swiper/swiper-bundle.esm.browser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.esm.browser.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector =\n $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, $targetEl[0])\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n swiper.freeMode &&\n swiper.animating &&\n !params.cssMode\n ) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || (e.composedPath && e.composedPath());\n swiper.updateClickedSlide((pathTree && pathTree[0]) || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (\n rewindLastIndex !== null &&\n ratio < 0 &&\n Math.abs(ratio) > params.longSwipesRatio\n ) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach((prop) => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n { 'watch-progress': params.watchSlidesProgress },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // rewind\n rewind: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n maxBackfaceHiddenSlides: 10,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if ((swiper.rtl && direction === 'rtl') || (!swiper.rtl && direction === 'ltr')) return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on, emit }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`,\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el\n .find(`.${swiper.params.lazy.loadingClass}`)\n .removeClass(swiper.params.lazy.loadingClass);\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n }\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = (e) => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible =\n swiper.params.watchSlidesProgress &&\n swiper.visibleSlides &&\n swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.on('focus', handleFocus, true);\n };\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false,\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({ currentPos: swiper.rtl ? swiper.translate : -swiper.translate });\n }\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams,\n } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.each((slideEl) => {\n const $slideEl = swiper.$(slideEl);\n $slideEl\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .remove();\n });\n // create new one\n recreateShadows();\n }\n });\n\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each((slideEl) => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier =\n typeof params.modifier === 'function'\n ? params.modifier(centerOffset)\n : centerOffset * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const slideIndex =\n swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n\n const isSwipeToNext =\n (slideIndex === activeIndex || slideIndex === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (slideIndex === activeIndex || slideIndex === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","eventsListeners","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","scrollbarDisabledClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","hasClickablePagination","updatePagination","bulletEl","initNavEl","wrapperId","handleFocus","includes","isActive","ariaLabelMessage","$containerEl","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","requireUpdateOnVirtual","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/swiper/swiper-bundle.esm.browser.min.js b/swiper/swiper-bundle.esm.browser.min.js new file mode 100644 index 0000000..6414793 --- /dev/null +++ b/swiper/swiper-bundle.esm.browser.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +function isObject$1(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend$1(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((s=>{void 0===e[s]?e[s]=t[s]:isObject$1(t[s])&&isObject$1(e[s])&&Object.keys(t[s]).length>0&&extend$1(e[s],t[s])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend$1(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend$1(e,ssrWindow),e}function makeReactive(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}class Dom7 extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),makeReactive(this))}}function arrayFlat(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...arrayFlat(e)):t.push(e)})),t}function arrayFilter(e,t){return Array.prototype.filter.call(e,t)}function arrayUnique(e){const t=[];for(let s=0;s=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this}function removeClass(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this}function toggleClass(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))}function hasClass(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return arrayFilter(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0}function attr(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this}function trigger(){const e=getWindow();for(var t=arguments.length,s=new Array(t),a=0;at>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this}function transitionEnd$1(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this}function outerWidth(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){const e=getWindow(),t=getDocument(),s=this[0],a=s.getBoundingClientRect(),i=t.body,r=s.clientTop||i.clientTop||0,n=s.clientLeft||i.clientLeft||0,l=s===e?e.scrollY:s.scrollTop,o=s===e?e.scrollX:s.scrollLeft;return{top:a.top+l-r,left:a.left+o-n}}return null}function styles(){const e=getWindow();return this[0]?e.getComputedStyle(this[0],null):{}}function css(e,t){const s=getWindow();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this}function filter(e){return $(arrayFilter(this,e))}function html(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return $([]);if(e<0){const s=t+e;return $(s<0?[]:[this[s]])}return $([this[e]])}function append(){let e;const t=getDocument();for(let s=0;s=0;a-=1)this[s].insertBefore(i.childNodes[a],this[s].childNodes[0])}else if(e instanceof Dom7)for(a=0;a0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?$([this[0].nextElementSibling]):$([]):this[0].nextElementSibling?$([this[0].nextElementSibling]):$([]):$([])}function nextAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function prev(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?$([t.previousElementSibling]):$([]):t.previousElementSibling?$([t.previousElementSibling]):$([])}return $([])}function prevAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function parent(e){const t=[];for(let s=0;s{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle$1(e){const t=getWindow();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}function getTranslate(e,t){void 0===t&&(t="x");const s=getWindow();let a,i,r;const n=getComputedStyle$1(e);return s.WebKitCSSMatrix?(i=n.transform||n.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),r=new s.WebKitCSSMatrix("none"===i?"":i)):(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=r.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?r.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?r.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;st.indexOf(e)<0));for(let t=0,i=s.length;tr?"next":"prev",c=(e,t)=>"next"===d&&e>=t||"prev"===d&&e<=t,p=()=>{n=(new Date).getTime(),null===l&&(l=n);const e=Math.max(Math.min((n-l)/o,1),0),d=.5-Math.cos(e*Math.PI)/2;let u=r+d*(s-r);if(c(u,s)&&(u=s),t.wrapperEl.scrollTo({[a]:u}),c(u,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:u})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(p)};p()}let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),a=getWindow(),i=a.navigator.platform,r=t||a.navigator.userAgent,n={ios:!1,android:!1},l=a.screen.width,o=a.screen.height,d=r.match(/(Android);?[\s\/]+([\d.]+)?/);let c=r.match(/(iPad).*OS\s([\d_]+)/);const p=r.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let m="MacIntel"===i;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=r.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(n.os="android",n.android=!0),(c||u||p)&&(n.os="ios",n.ios=!0),n}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:a}=e;const i=getWindow();let r=null,n=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(r=new ResizeObserver((e=>{n=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||l()}))})),r.observe(t.el)):(i.addEventListener("resize",l),i.addEventListener("orientationchange",o))})),s("destroy",(()=>{n&&i.cancelAnimationFrame(n),r&&r.unobserve&&t.el&&(r.unobserve(t.el),r=null),i.removeEventListener("resize",l),i.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r=[],n=getWindow(),l=function(e,t){void 0===t&&(t={});const s=new(n.MutationObserver||n.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};n.requestAnimationFrame?n.requestAnimationFrame(t):n.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),r.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t{r.forEach((e=>{e.disconnect()})),r.splice(0,r.length)}))}Object.keys(Methods).forEach((e=>{Object.defineProperty($.fn,e,{value:Methods[e],writable:!0})}));var eventsEmitter={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};function updateSize(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const v=e.snapGrid.length,w=e.slidesGrid.length;let b=a.spaceBetween,x=-f,y=0,$=0;if(void 0===r)return;"string"==typeof b&&b.indexOf("%")>=0&&(b=parseFloat(b.replace("%",""))/100*r),e.virtualSize=-b,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",""),setCSSProperty(e.wrapperEl,"--swiper-centered-offset-after",""));const E=a.grid&&a.grid.rows>1&&e.grid;let C;E&&e.grid.initSlides(p);const T="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${b}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==v&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}}function updateAutoHeight(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||$([])).each((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)}function updateSlidesOffset(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=$(t.visibleSlides)}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)}function updateSlidesClasses(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")}function updateClickedSlide(e){const t=this,s=t.params,a=$(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&en?"next":r=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let w;if(w=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return animateCSSModeScroll({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,w),0===t?r.transitionEnd(s,w):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,w))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)}function slideNext(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)}function slideReset(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)}function slideToClickedSlide(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){const e=this,t=getDocument(),{params:s,$wrapperEl:a}=e,i=a.children().length>0?$(a.children()[0].parentNode):a;i.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let r=i.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-r.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;ar.length&&(e.loopedSlides=r.length);const n=[],l=[];r.each(((t,s)=>{const a=$(t);s=r.length-e.loopedSlides&&n.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)i.prepend($(n[e].cloneNode(!0)).addClass(s.slideDuplicateClass))}function loopFix(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")}function loopDestroy(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"}function unsetGrabCursor(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}function onTouchStart(e){const t=this,s=getDocument(),a=getWindow(),i=t.touchEventsData,{params:r,touches:n,enabled:l}=t;if(!l)return;if(t.animating&&r.preventInteractionOnTransition)return;!t.animating&&r.cssMode&&r.loop&&t.loopFix();let o=e;o.originalEvent&&(o=o.originalEvent);let d=$(o.target);if("wrapper"===r.touchEventsTarget&&!d.closest(t.wrapperEl).length)return;if(i.isTouchEvent="touchstart"===o.type,!i.isTouchEvent&&"which"in o&&3===o.which)return;if(!i.isTouchEvent&&"button"in o&&o.button>0)return;if(i.isTouched&&i.isMoved)return;!!r.noSwipingClass&&""!==r.noSwipingClass&&o.target&&o.target.shadowRoot&&e.path&&e.path[0]&&(d=$(e.path[0]));const c=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,p=!(!o.target||!o.target.shadowRoot);if(r.noSwiping&&(p?closestElement(c,d[0]):d.closest(c)[0]))return void(t.allowClick=!0);if(r.swipeHandler&&!d.closest(r.swipeHandler)[0])return;n.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,n.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;const u=n.currentX,h=n.currentY,m=r.edgeSwipeDetection||r.iOSEdgeSwipeDetection,f=r.edgeSwipeThreshold||r.iOSEdgeSwipeThreshold;if(m&&(u<=f||u>=a.innerWidth-f)){if("prevent"!==m)return;e.preventDefault()}if(Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=u,n.startY=h,i.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,r.threshold>0&&(i.allowThresholdMove=!1),"touchstart"!==o.type){let e=!0;d.is(i.focusableElements)&&(e=!1,"SELECT"===d[0].nodeName&&(i.isTouched=!1)),s.activeElement&&$(s.activeElement).is(i.focusableElements)&&s.activeElement!==d[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!a||d[0].isContentEditable||o.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!r.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",o)}function onTouchMove(e){const t=getDocument(),s=this,a=s.touchEventsData,{params:i,touches:r,rtlTranslate:n,enabled:l}=s;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",o));if(a.isTouchEvent&&"touchmove"!==o.type)return;const d="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),c="touchmove"===o.type?d.pageX:o.pageX,p="touchmove"===o.type?d.pageY:o.pageY;if(o.preventedByNestedSwiper)return r.startX=c,void(r.startY=p);if(!s.allowTouchMove)return $(o.target).is(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(r,{startX:c,startY:p,currentX:c,currentY:p}),a.touchStartTime=now()));if(a.isTouchEvent&&i.touchReleaseOnEdges&&!i.loop)if(s.isVertical()){if(pr.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(cr.startX&&s.translate>=s.minTranslate())return;if(a.isTouchEvent&&t.activeElement&&o.target===t.activeElement&&$(o.target).is(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);if(a.allowTouchCallbacks&&s.emit("touchMove",o),o.targetTouches&&o.targetTouches.length>1)return;r.currentX=c,r.currentY=p;const u=r.currentX-r.startX,h=r.currentY-r.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,a.isScrolling=s.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",o),void 0===a.startMoving&&(r.currentX===r.startX&&r.currentY===r.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!i.cssMode&&o.cancelable&&o.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&o.stopPropagation(),a.isMoved||(i.loop&&!i.cssMode&&s.loopFix(),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),a.allowMomentumBounce=!1,!i.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",o)),s.emit("sliderMove",o),a.isMoved=!0;let m=s.isHorizontal()?u:h;r.diff=m,m*=i.touchRatio,n&&(m=-m),s.swipeDirection=m>0?"prev":"next",a.currentTranslate=m+a.startTranslate;let f=!0,g=i.resistanceRatio;if(i.touchReleaseOnEdges&&(g=0),m>0&&a.currentTranslate>s.minTranslate()?(f=!1,i.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+m)**g)):m<0&&a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),i.threshold>0){if(!(Math.abs(m)>i.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,a.currentTranslate=a.startTranslate,void(r.diff=s.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}i.followFinger&&!i.cssMode&&((i.freeMode&&i.freeMode.enabled&&s.freeMode||i.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&i.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=now(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let p;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,p=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:p});let u=0,h=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&p=n[e]&&(u=e,h=n[n.length-1]-n[n.length-2])}let m=null,f=null;a.rewind&&(t.isBeginning?f=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(m=0));const g=(p-n[u])/h,v=ua.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(g>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?m:u+v):t.slideTo(u)),"prev"===t.swipeDirection&&(g>1-a.longSwipesRatio?t.slideTo(u+v):null!==f&&g<0&&Math.abs(g)>a.longSwipesRatio?t.slideTo(f):t.slideTo(u))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(u+v):t.slideTo(u):("next"===t.swipeDirection&&t.slideTo(null!==m?m:u+v),"prev"===t.swipeDirection&&t.slideTo(null!==f?f:u))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let dummyEventAttached=!1;function dummyEventListener(){}const events=(e,t)=>{const s=getDocument(),{params:a,touchEvents:i,el:r,wrapperEl:n,device:l,support:o}=e,d=!!a.nested,c="on"===t?"addEventListener":"removeEventListener",p=t;if(o.touch){const t=!("touchstart"!==i.start||!o.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};r[c](i.start,e.onTouchStart,t),r[c](i.move,e.onTouchMove,o.passiveListener?{passive:!1,capture:d}:d),r[c](i.end,e.onTouchEnd,t),i.cancel&&r[c](i.cancel,e.onTouchEnd,t)}else r[c](i.start,e.onTouchStart,!1),s[c](i.move,e.onTouchMove,d),s[c](i.end,e.onTouchEnd,!1);(a.preventClicks||a.preventClicksPropagation)&&r[c]("click",e.onClick,!0),a.cssMode&&n[c]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[p]("observerUpdate",onResize,!0)};function attachEvents(){const e=this,t=getDocument(),{params:s,support:a}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),s.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),a.touch&&!dummyEventAttached&&(t.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=isGridEnabled(e,i),c=isGridEnabled(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),extend(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=getWindow(),r="window"===t?i.innerHeight:s.clientHeight,n=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:r*t,point:e}}return{value:e,point:e}}));n.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=prepareClasses(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()}function removeClasses(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,s,a,i,r){const n=getWindow();let l;function o(){r&&r()}$(e).parent("picture")[0]||e.complete&&i?o():t?(l=new n.Image,l.onload=o,l.onerror=o,a&&(l.sizes=a),s&&(l.srcset=s),t&&(l.src=t)):o()}function preloadImages(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;ss}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes,images:images},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),i=0;i1){const e=[];return $(t.el).each((s=>{const a=extend({},t,{el:s});e.push(new Swiper(a))})),e}const r=this;r.__swiper__=!0,r.support=getSupport(),r.device=getDevice({userAgent:t.userAgent}),r.browser=getBrowser(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:moduleExtendParams(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=extend({},defaults,n);return r.params=extend({},l,extendedDefaults,t),r.originalParams=extend({},r.params),r.passedParams=extend({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=$,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:$(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const s=$(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=$(e.shadowRoot.querySelector(a()));return t.children=e=>s.children(e),t}return s.children?s.children(a()):$(s).children(a())})();if(0===i.length&&t.params.createElements){const e=getDocument().createElement("div");i=$(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{i.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:i,wrapperEl:i[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===i.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}function Virtual(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?$(a.renderSlide.call(s,e,t)):$(`
${e}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const $=[],E=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(eb)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t=w&&t<=b&&(void 0===c||e?E.push(t):(t>c&&E.push(t),t{s.$wrapperEl.append(n(p[e],e))})),$.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&setCSSProperty(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,l=n.innerWidth,o=n.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=l&&s[1]>=0&&s[1]<=o){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),i("keyPress",l)}}function o(){t.keyboard.enabled||($(r).on("keydown",l),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&($(r).off("keydown",l),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&o()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:o,disable:d})}function Mousewheel(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r=getWindow();let n;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let l,o=now();const d=[];function c(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),o=(new r.Date).getTime(),!1)))}function h(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let o=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(o=$(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!o[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const p=t.rtlTranslate?-1:1,h=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(h.pixelX)>Math.abs(h.pixelY)))return!0;c=-h.pixelX*p}else{if(!(Math.abs(h.pixelY)>Math.abs(h.pixelX)))return!0;c=-h.pixelY}else c=Math.abs(h.pixelX)>Math.abs(h.pixelY)?-h.pixelX*p:-h.pixelY;if(0===c)return!0;r.invert&&(c=-c);let m=t.getTranslate()+c*r.sensitivity;if(m>=t.minTranslate()&&(m=t.minTranslate()),m<=t.maxTranslate()&&(m=t.maxTranslate()),a=!!t.params.loop||!(m===t.minTranslate()||m===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(c),direction:Math.sign(c)},a=l&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!p&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(n),n=void 0,d.length>=15&&d.shift();const s=d.length?d[d.length-1]:void 0,a=d[0];if(d.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))d.splice(0);else if(d.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;l=e,d.splice(0),n=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}n||(n=nextTick((()=>{l=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),o===t.minTranslate()||o===t.maxTranslate())return!0}}else{const s={time:now(),delta:Math.abs(c),direction:Math.sign(c),raw:e};d.length>=2&&d.shift();const a=d.length?d[d.length-1]:void 0;if(d.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&u(s):u(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function m(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=$(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",c),s[e]("mouseleave",p),s[e]("wheel",h)}function f(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(m("on"),t.mousewheel.enabled=!0,!0)}function g(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(m("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&g(),t.params.mousewheel.enabled&&f()})),a("destroy",(()=>{t.params.cssMode&&f(),t.mousewheel.enabled&&g()})),Object.assign(t.mousewheel,{enable:f,disable:g})}function createElementIfNotDefined(e,t,s,a){const i=getDocument();return e.params.createElements&&Object.keys(a).forEach((r=>{if(!s[r]&&!0===s.auto){let n=e.$el.children(`.${a[r]}`)[0];n||(n=i.createElement("div"),n.className=a[r],e.$el.append(n)),s[r]=n,t[r]=n}})),s}function Navigation(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=$(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=createElementIfNotDefined(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",d),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function p(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",d),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!$(n).is(r)&&!$(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const u=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),p()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),c(),l()},disable:u,update:l,init:c,destroy:p})}function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function Pagination(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function c(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let c;const p=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(c=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),c>a-1-2*t.loopedSlides&&(c-=a-2*t.loopedSlides),c>p-1&&(c-=p),c<0&&"bullets"!==t.params.paginationType&&(c=p+c)):c=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,p;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=c-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(c-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),p=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=$(e),a=t.index();a===c&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&d(t,"prev"),a===o&&d(t,"next"))}));else{const e=a.eq(c),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else d(e,"prev"),d(n,"next");else d(e,"prev"),d(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-p*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(classesToSelector(s.currentClass)).text(s.formatFractionCurrent(c+1)),r.find(classesToSelector(s.totalClass)).text(s.formatFractionTotal(p))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(c+1)/p;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(classesToSelector(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,c+1,p)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function p(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s`;a.html(r),t.pagination.bullets=a.find(classesToSelector(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function u(){t.params.pagination=createElementIfNotDefined(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=$(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>$(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",classesToSelector(e.bulletClass),(function(e){e.preventDefault();let s=$(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function h(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",classesToSelector(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?m():(u(),p(),c())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&c()})),a("snapIndexChange",(()=>{t.params.loop||c()})),a("slidesLengthChange",(()=>{t.params.loop&&(p(),c())})),a("snapGridLengthChange",(()=>{t.params.loop||(p(),c())})),a("destroy",(()=>{h()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{c()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!$(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const m=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),h()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),u(),p(),c()},disable:m,render:p,update:c,init:u,destroy:h})}function Scrollbar(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r=getDocument();let n,l,o,d,c=!1,p=null,u=null;function h(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let d=l,c=(o-l)*a;s?(c=-c,c>0?(d=l-c,c=0):-c+l>o&&(d=o+c)):c<0?(d=l+c,c=0):c+l>o&&(d=o-c),t.isHorizontal()?(i.transform(`translate3d(${c}px, 0, 0)`),i[0].style.width=`${d}px`):(i.transform(`translate3d(0px, ${c}px, 0)`),i[0].style.height=`${d}px`),n.hide&&(clearTimeout(p),r[0].style.opacity=1,p=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function m(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",o=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,d=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),l="auto"===t.params.scrollbar.dragSize?o*d:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${l}px`:s[0].style.height=`${l}px`,a[0].style.display=d>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function f(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function g(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(f(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==n?n:l/2))/(o-l),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const d=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(d),t.setTranslate(d),t.updateActiveIndex(),t.updateSlidesClasses()}function v(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:r}=t,{$el:l,$dragEl:o}=a;c=!0,n=e.target===o[0]||e.target===o?f(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),r.transition(100),o.transition(100),g(e),clearTimeout(u),l.transition(0),s.hide&&l.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),i("scrollbarDragStart",e)}function w(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:r,$dragEl:n}=s;c&&(e.preventDefault?e.preventDefault():e.returnValue=!1,g(e),a.transition(0),r.transition(0),n.transition(0),i("scrollbarDragMove",e))}function b(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:r}=t,{$el:n}=a;c&&(c=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),r.transition("")),s.hide&&(clearTimeout(u),u=nextTick((()=>{n.css("opacity",0),n.transition(400)}),1e3)),i("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function x(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:n,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,v,c),d[u](a.move,w,c),d[u](a.end,b,p)):(d[u](i.start,v,c),r[u](i.move,w,c),r[u](i.end,b,p))}function y(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=createElementIfNotDefined(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=$(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=$(`
`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&x("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function E(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&x("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},a("init",(()=>{!1===t.params.scrollbar.enabled?C():(y(),m(),h())})),a("update resize observerUpdate lock unlock",(()=>{m()})),a("setTranslate",(()=>{h()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),a("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),a("destroy",(()=>{E()}));const C=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),E()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),y(),m(),h()},disable:C,updateSize:m,setTranslate:h,init:y,destroy:E})}function Parallax(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=$(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const d=i.attr("data-swiper-parallax-scale"),c=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=c){const e=c-(c-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==d)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=d-(d-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),$(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=$(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))}function Zoom(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r=getWindow();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let n,l,o,d=1,c=!1;const p={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},h={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let m=1;function f(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function g(e){const s=t.support,a=t.params.zoom;if(l=!1,o=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;l=!0,p.scaleStart=f(e)}p.$slideEl&&p.$slideEl.length||(p.$slideEl=$(e.target).closest(`.${t.params.slideClass}`),0===p.$slideEl.length&&(p.$slideEl=t.slides.eq(t.activeIndex)),p.$imageEl=p.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),p.$imageWrapEl=p.$imageEl.parent(`.${a.containerClass}`),p.maxRatio=p.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==p.$imageWrapEl.length)?(p.$imageEl&&p.$imageEl.transition(0),c=!0):p.$imageEl=void 0}function v(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;o=!0,p.scaleMove=f(e)}p.$imageEl&&0!==p.$imageEl.length?(s.gestures?i.scale=e.scale*d:i.scale=p.scaleMove/p.scaleStart*d,i.scale>p.maxRatio&&(i.scale=p.maxRatio-1+(i.scale-p.maxRatio+1)**.5),i.scaleu.touchesStart.x))return void(u.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return void(u.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),u.isMoved=!0,u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX,u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY,u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),h.prevPositionX||(h.prevPositionX=u.touchesCurrent.x),h.prevPositionY||(h.prevPositionY=u.touchesCurrent.y),h.prevTime||(h.prevTime=Date.now()),h.x=(u.touchesCurrent.x-h.prevPositionX)/(Date.now()-h.prevTime)/2,h.y=(u.touchesCurrent.y-h.prevPositionY)/(Date.now()-h.prevTime)/2,Math.abs(u.touchesCurrent.x-h.prevPositionX)<2&&(h.x=0),Math.abs(u.touchesCurrent.y-h.prevPositionY)<2&&(h.y=0),h.prevPositionX=u.touchesCurrent.x,h.prevPositionY=u.touchesCurrent.y,h.prevTime=Date.now(),p.$imageWrapEl.transform(`translate3d(${u.currentX}px, ${u.currentY}px,0)`)}}function x(){const e=t.zoom;p.$slideEl&&t.previousIndex!==t.activeIndex&&(p.$imageEl&&p.$imageEl.transform("translate3d(0,0,0) scale(1)"),p.$imageWrapEl&&p.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,d=1,p.$slideEl=void 0,p.$imageEl=void 0,p.$imageWrapEl=void 0)}function y(e){const s=t.zoom,a=t.params.zoom;if(p.$slideEl||(e&&e.target&&(p.$slideEl=$(e.target).closest(`.${t.params.slideClass}`)),p.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?p.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):p.$slideEl=t.slides.eq(t.activeIndex)),p.$imageEl=p.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),p.$imageWrapEl=p.$imageEl.parent(`.${a.containerClass}`)),!p.$imageEl||0===p.$imageEl.length||!p.$imageWrapEl||0===p.$imageWrapEl.length)return;let i,n,l,o,c,h,m,f,g,v,w,b,x,y,E,C,T,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),p.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,n="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=u.touchesStart.x,n=u.touchesStart.y),s.scale=p.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,d=p.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?(T=p.$slideEl[0].offsetWidth,S=p.$slideEl[0].offsetHeight,l=p.$slideEl.offset().left+r.scrollX,o=p.$slideEl.offset().top+r.scrollY,c=l+T/2-i,h=o+S/2-n,g=p.$imageEl[0].offsetWidth,v=p.$imageEl[0].offsetHeight,w=g*s.scale,b=v*s.scale,x=Math.min(T/2-w/2,0),y=Math.min(S/2-b/2,0),E=-x,C=-y,m=c*s.scale,f=h*s.scale,mE&&(m=E),fC&&(f=C)):(m=0,f=0),p.$imageWrapEl.transition(300).transform(`translate3d(${m}px, ${f}px,0)`),p.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function E(){const e=t.zoom,s=t.params.zoom;p.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?p.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):p.$slideEl=t.slides.eq(t.activeIndex),p.$imageEl=p.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),p.$imageWrapEl=p.$imageEl.parent(`.${s.containerClass}`)),p.$imageEl&&0!==p.$imageEl.length&&p.$imageWrapEl&&0!==p.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,d=1,p.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),p.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),p.$slideEl.removeClass(`${s.zoomedSlideClass}`),p.$slideEl=void 0)}function C(e){const s=t.zoom;s.scale&&1!==s.scale?E():y(e)}function T(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function S(){return`.${t.params.slideClass}`}function M(e){const{passiveListener:s}=T(),a=S();t.$wrapperEl[e]("gesturestart",a,g,s),t.$wrapperEl[e]("gesturechange",a,v,s),t.$wrapperEl[e]("gestureend",a,w,s)}function P(){n||(n=!0,M("on"))}function k(){n&&(n=!1,M("off"))}function z(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,P,a),t.$wrapperEl.on(t.touchEvents.end,k,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,g,a),t.$wrapperEl.on(t.touchEvents.move,r,v,i),t.$wrapperEl.on(t.touchEvents.end,r,w,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,w,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,b,i)}function O(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,P,a),t.$wrapperEl.off(t.touchEvents.end,k,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,g,a),t.$wrapperEl.off(t.touchEvents.move,r,v,i),t.$wrapperEl.off(t.touchEvents.end,r,w,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,w,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,b,i)}Object.defineProperty(t.zoom,"scale",{get:()=>m,set(e){if(m!==e){const t=p.$imageEl?p.$imageEl[0]:void 0,s=p.$slideEl?p.$slideEl[0]:void 0;i("zoomChange",e,t,s)}m=e}}),a("init",(()=>{t.params.zoom.enabled&&z()})),a("destroy",(()=>{O()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;p.$imageEl&&0!==p.$imageEl.length&&(u.isTouched||(s.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0,u.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,u.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!p.$imageEl||0===p.$imageEl.length)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let s=300,a=300;const i=h.x*s,r=u.currentX+i,n=h.y*a,l=u.currentY+n;0!==h.x&&(s=Math.abs((r-u.currentX)/h.x)),0!==h.y&&(a=Math.abs((l-u.currentY)/h.y));const o=Math.max(s,a);u.currentX=r,u.currentY=l;const d=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(p.slideWidth/2-d/2,0),u.maxX=-u.minX,u.minY=Math.min(p.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),p.$imageWrapEl.transition(o).transform(`translate3d(${u.currentX}px, ${u.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&C(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&x()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&x()})),Object.assign(t.zoom,{enable:z,disable:O,in:y,out:E,toggle:C})}function Lazy(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let r=!1,n=!1;function l(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=$(e);n.addClass(a.loadingClass);const o=n.attr("data-background"),d=n.attr("data-src"),c=n.attr("data-srcset"),p=n.attr("data-sizes"),u=n.parent("picture");t.loadImage(n[0],d||o,c,p,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(o?(n.css("background-image",`url("${o}")`),n.removeAttr("data-background")):(c&&(n.attr("srcset",c),n.removeAttr("data-srcset")),p&&(n.attr("sizes",p),n.removeAttr("data-sizes")),u.length&&u.children("source").each((e=>{const t=$(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),d&&(n.attr("src",d),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){l(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{l(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function o(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,o=s.lazy;let d=s.slidesPerView;function c(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function p(e){return r?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===d&&(d=0),n||(n=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{l(r?$(e).attr("data-swiper-slide-index"):$(e).index())}));else if(d>1)for(let e=i;e1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){const e=o.loadPrevNextAmount,t=Math.ceil(d),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e0&&l(p(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&l(p(a))}}function d(){const e=getWindow();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?$(t.params.lazy.scrollingElement):$(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,n=a?e.innerHeight:s[0].offsetHeight,l=t.$el.offset(),{rtlTranslate:c}=t;let p=!1;c&&(l.left-=t.$el[0].scrollLeft);const u=[[l.left,l.top],[l.left+t.width,l.top],[l.left,l.top+t.height],[l.left+t.width,l.top+t.height]];for(let e=0;e=0&&t[0]<=i&&t[1]>=0&&t[1]<=n){if(0===t[0]&&0===t[1])continue;p=!0}}const h=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};p?(o(),s.off("scroll",d,h)):r||(r=!0,s.on("scroll",d,h))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?d():o())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&o()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?d():o())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!n)&&(t.params.lazy.checkInView?d():o())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?d():o())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&o()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:o,loadInSlide:l})}function Controller(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",h)),c(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},v=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||t.slideTo(t.slides.indexOf(s),0)},w=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&d($(t.slides),e.itemRoleDescriptionMessage),e.slideRole&&o($(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=$(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;c(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},b=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&d(s,e.containerRoleDescriptionMessage),e.containerMessage&&c(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let p,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),w(),t.navigation&&t.navigation.$nextEl&&(p=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),p&&p.length&&g(p,r,e.nextSlideMessage),u&&u.length&&g(u,r,e.prevSlideMessage),f()&&t.pagination.$el.on("keydown",classesToSelector(t.params.pagination.bulletClass),h),t.$el.on("focus",v,!0)};a("beforeInit",(()=>{i=$(``)})),a("afterInit",(()=>{t.params.a11y.enabled&&b()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&w()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(p(s),l(s)):(u(s),n(s))),e&&e.length>0&&(t.isEnd?(p(e),l(e)):(u(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;m()&&t.pagination.bullets.each((s=>{const a=$(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),c(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",h),s&&s.off("keydown",h),f()&&t.pagination.$el.off("keydown",classesToSelector(t.params.pagination.bulletClass),h),t.$el.off("focus",v,!0)}()}))}function History(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,r={};const n=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),l=e=>{const t=getWindow();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},o=(e,s)=>{const a=getWindow();if(!i||!t.params.history.enabled)return;let r;r=t.params.url?new URL(t.params.url):a.location;const l=t.slides.eq(s);let o=n(l.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),o=`${s}/${e}/${o}`}else r.pathname.includes(e)||(o=`${e}/${o}`);t.params.history.keepQuery&&(o+=r.search);const d=a.history.state;d&&d.value===o||(t.params.history.replaceState?a.history.replaceState({value:o},null,o):a.history.pushState({value:o},null,o))},d=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{r=l(t.params.url),d(t.params.speed,r.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,r=l(t.params.url),(r.key||r.value)&&(d(0,r.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&o(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&o(t.params.history.key,t.activeIndex)}))}function HashNavigation(e){let{swiper:t,extendParams:s,emit:a,on:i}=e,r=!1;const n=getDocument(),l=getWindow();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const o=()=>{a("hashChange");const e=n.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},d=()=>{if(r&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&l.history&&l.history.replaceState)l.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),a("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");n.location.hash=s||"",a("hashSet")}};i("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;r=!0;const e=n.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&$(l).off("hashchange",o)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&d()})),i("slideChange",(()=>{r&&t.params.cssMode&&d()}))}function Autoplay(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(){const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=nextTick((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),r("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?o():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),r("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),r("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),r("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?o():(e=s.slideTo(0,s.params.speed,!0,!0),r("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),r("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&n()}),a)}function l(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,r("autoplayStart"),n(),!0))}function o(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,r("autoplayStop"),!0))}function d(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,p)})):(s.autoplay.paused=!1,n())))}function c(){const e=getDocument();"hidden"===e.visibilityState&&s.autoplay.running&&d(),"visible"===e.visibilityState&&s.autoplay.paused&&(n(),s.autoplay.paused=!1)}function p(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,p)})),s.autoplay.paused=!1,s.autoplay.running?n():o())}function u(){s.params.autoplay.disableOnInteraction?o():(r("autoplayPause"),d()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,p)}))}function h(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,r("autoplayResume"),n())}s.autoplay={running:!1,paused:!1},a({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),i("init",(()=>{if(s.params.autoplay.enabled){l();getDocument().addEventListener("visibilitychange",c),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",u),s.$el.on("mouseleave",h))}})),i("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):o())})),i("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?o():d())})),i("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&n()})),i("destroy",(()=>{s.$el.off("mouseenter",u),s.$el.off("mouseleave",h),s.autoplay.running&&o();getDocument().removeEventListener("visibilitychange",c)})),Object.assign(s.autoplay,{pause:d,run:n,start:l,stop:o})}function Thumb(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&$(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.removeClass(r),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e1?a:o:a-ot.previousIndex?"next":"prev"}else i=t.realIndex,r=i>t.previousIndex?"next":"prev";l&&(i+="next"===r?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(i)<0&&(s.params.centeredSlides?i=i>o?i-Math.floor(a/2)+1:i+Math.floor(a/2)-1:i>o&&s.params.slidesPerGroup,s.slideTo(i,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})}function freeMode(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=now()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,u=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let m;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),p=t.minTranslate(),u=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(m=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(o[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}function Grid(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}});i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else a.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function effectTarget(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function effectVirtualTransitionEnd(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),effectVirtualTransitionEnd({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=$(`
`),e.append(a)),0===i.length&&(i=$(`
`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let h,m=0;c.shadow&&(p?(h=s.find(".swiper-cube-shadow"),0===h.length&&(h=$('
'),s.append(h)),h.css({height:`${r}px`})):(h=e.find(".swiper-cube-shadow"),0===h.length&&(h=$('
'),e.append(h))));for(let e=0;e-1&&(m=90*s+90*d,l&&(m=90*-s-90*d)),t.transform(v),c.slideShadows&&i(t,d,p)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),c.shadow)if(p)h.transform(`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`);else{const e=Math.abs(m)-90*Math.floor(Math.abs(m)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;h.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const f=d.isSafari||d.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:m}deg) rotateY(${t.isHorizontal()?-m:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i($(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}function createShadow(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=$(`
`),i.append(r)),r}function EffectFlip(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=createShadow(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=createShadow(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),effectVirtualTransitionEnd({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=$(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}function EffectCoverflow(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}});effectInit({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}function EffectCreative(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=createShadow(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=effectTarget(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),effectVirtualTransitionEnd({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}function EffectCards(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}});effectInit({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l0&&c<1&&(r||t.params.cssMode)&&n-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),$=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=createShadow(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;effectTarget(a,o).transform($)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),effectVirtualTransitionEnd({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Lazy,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.esm.browser.min.js.map \ No newline at end of file diff --git a/swiper/swiper-bundle.esm.browser.min.js.map b/swiper/swiper-bundle.esm.browser.min.js.map new file mode 100644 index 0000000..53901be --- /dev/null +++ b/swiper/swiper-bundle.esm.browser.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.esm.browser.min.js","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","super","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","addClass","_len","arguments","classes","_key","classNames","map","c","split","classList","add","removeClass","_len2","_key2","remove","toggleClass","_len3","_key3","className","toggle","hasClass","_len4","_key4","contains","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","_len5","args","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","splice","trigger","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","fn","Methods","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","getSupport","calcDevice","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getDevice","overrides","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","resizeObserver","ResizeObserver","entries","newWidth","newHeight","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","$el","$wrapperEl","disconnect","methodName","writable","eventsEmitter","priority","self","eventsListeners","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","autoheight","centered","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults","init","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","static","newDefaults","module","m","installModule","Virtual","cssModeTimeout","renderSlide","cache","$slideEl","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","createElementIfNotDefined","checkProps","element","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","Parallax","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handleFocus","includes","isActive","isVisible","$containerEl","repeat","round","random","live","addElLive","updateNavigation","bulletEl","updatePagination","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","setHash","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","prototypeGroup","protoMethod","use"],"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector =\n $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, $targetEl[0])\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n swiper.freeMode &&\n swiper.animating &&\n !params.cssMode\n ) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || (e.composedPath && e.composedPath());\n swiper.updateClickedSlide((pathTree && pathTree[0]) || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (\n rewindLastIndex !== null &&\n ratio < 0 &&\n Math.abs(ratio) > params.longSwipesRatio\n ) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach((prop) => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n { 'watch-progress': params.watchSlidesProgress },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // rewind\n rewind: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n maxBackfaceHiddenSlides: 10,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if ((swiper.rtl && direction === 'rtl') || (!swiper.rtl && direction === 'ltr')) return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on, emit }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`,\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el\n .find(`.${swiper.params.lazy.loadingClass}`)\n .removeClass(swiper.params.lazy.loadingClass);\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n }\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = (e) => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible =\n swiper.params.watchSlidesProgress &&\n swiper.visibleSlides &&\n swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.on('focus', handleFocus, true);\n };\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false,\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({ currentPos: swiper.rtl ? swiper.translate : -swiper.translate });\n }\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams,\n } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.each((slideEl) => {\n const $slideEl = swiper.$(slideEl);\n $slideEl\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .remove();\n });\n // create new one\n recreateShadows();\n }\n });\n\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each((slideEl) => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier =\n typeof params.modifier === 'function'\n ? params.modifier(centerOffset)\n : centerOffset * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const slideIndex =\n swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n\n const isSwipeToNext =\n (slideIndex === activeIndex || slideIndex === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (slideIndex === activeIndex || slideIndex === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"mappings":"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"} \ No newline at end of file diff --git a/swiper/swiper-bundle.esm.js b/swiper/swiper-bundle.esm.js new file mode 100644 index 0000000..5d774f1 --- /dev/null +++ b/swiper/swiper-bundle.esm.js @@ -0,0 +1,42 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +import Swiper from './core/core.js'; +export { default as Swiper, default } from './core/core.js'; +import Virtual from './modules/virtual/virtual.js'; +import Keyboard from './modules/keyboard/keyboard.js'; +import Mousewheel from './modules/mousewheel/mousewheel.js'; +import Navigation from './modules/navigation/navigation.js'; +import Pagination from './modules/pagination/pagination.js'; +import Scrollbar from './modules/scrollbar/scrollbar.js'; +import Parallax from './modules/parallax/parallax.js'; +import Zoom from './modules/zoom/zoom.js'; +import Lazy from './modules/lazy/lazy.js'; +import Controller from './modules/controller/controller.js'; +import A11y from './modules/a11y/a11y.js'; +import History from './modules/history/history.js'; +import HashNavigation from './modules/hash-navigation/hash-navigation.js'; +import Autoplay from './modules/autoplay/autoplay.js'; +import Thumbs from './modules/thumbs/thumbs.js'; +import FreeMode from './modules/free-mode/free-mode.js'; +import Grid from './modules/grid/grid.js'; +import Manipulation from './modules/manipulation/manipulation.js'; +import EffectFade from './modules/effect-fade/effect-fade.js'; +import EffectCube from './modules/effect-cube/effect-cube.js'; +import EffectFlip from './modules/effect-flip/effect-flip.js'; +import EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js'; +import EffectCreative from './modules/effect-creative/effect-creative.js'; +import EffectCards from './modules/effect-cards/effect-cards.js'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); diff --git a/swiper/swiper-bundle.js b/swiper/swiper-bundle.js new file mode 100644 index 0000000..424678c --- /dev/null +++ b/swiper/swiper-bundle.js @@ -0,0 +1,10663 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swiper = factory()); +})(this, (function () { 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + + if (src === void 0) { + src = {}; + } + + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + + const ssrDocument = { + body: {}, + + addEventListener() {}, + + removeEventListener() {}, + + activeElement: { + blur() {}, + + nodeName: '' + }, + + querySelector() { + return null; + }, + + querySelectorAll() { + return []; + }, + + getElementById() { + return null; + }, + + createEvent() { + return { + initEvent() {} + + }; + }, + + createElement() { + return { + children: [], + childNodes: [], + style: {}, + + setAttribute() {}, + + getElementsByTagName() { + return []; + } + + }; + }, + + createElementNS() { + return {}; + }, + + importNode() { + return null; + }, + + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + + pushState() {}, + + go() {}, + + back() {} + + }, + CustomEvent: function CustomEvent() { + return this; + }, + + addEventListener() {}, + + removeEventListener() {}, + + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + + }; + }, + + Image() {}, + + Date() {}, + + screen: {}, + + setTimeout() {}, + + clearTimeout() {}, + + matchMedia() { + return {}; + }, + + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + + return setTimeout(callback, 0); + }, + + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + + clearTimeout(id); + } + + }; + + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + /** + * Dom7 4.0.4 + * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API + * https://framework7.io/docs/dom7.html + * + * Copyright 2022, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: January 11, 2022 + */ + /* eslint-disable no-proto */ + + function makeReactive(obj) { + const proto = obj.__proto__; + Object.defineProperty(obj, '__proto__', { + get() { + return proto; + }, + + set(value) { + proto.__proto__ = value; + } + + }); + } + + class Dom7 extends Array { + constructor(items) { + if (typeof items === 'number') { + super(items); + } else { + super(...(items || [])); + makeReactive(this); + } + } + + } + + function arrayFlat(arr) { + if (arr === void 0) { + arr = []; + } + + const res = []; + arr.forEach(el => { + if (Array.isArray(el)) { + res.push(...arrayFlat(el)); + } else { + res.push(el); + } + }); + return res; + } + + function arrayFilter(arr, callback) { + return Array.prototype.filter.call(arr, callback); + } + + function arrayUnique(arr) { + const uniqueArray = []; + + for (let i = 0; i < arr.length; i += 1) { + if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); + } + + return uniqueArray; + } + + + function qsa(selector, context) { + if (typeof selector !== 'string') { + return [selector]; + } + + const a = []; + const res = context.querySelectorAll(selector); + + for (let i = 0; i < res.length; i += 1) { + a.push(res[i]); + } + + return a; + } + + function $(selector, context) { + const window = getWindow(); + const document = getDocument(); + let arr = []; + + if (!context && selector instanceof Dom7) { + return selector; + } + + if (!selector) { + return new Dom7(arr); + } + + if (typeof selector === 'string') { + const html = selector.trim(); + + if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { + let toCreate = 'div'; + if (html.indexOf(' c.split(' '))); + this.forEach(el => { + el.classList.add(...classNames); + }); + return this; + } + + function removeClass() { + for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + classes[_key2] = arguments[_key2]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + el.classList.remove(...classNames); + }); + return this; + } + + function toggleClass() { + for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + classes[_key3] = arguments[_key3]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + this.forEach(el => { + classNames.forEach(className => { + el.classList.toggle(className); + }); + }); + } + + function hasClass() { + for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + classes[_key4] = arguments[_key4]; + } + + const classNames = arrayFlat(classes.map(c => c.split(' '))); + return arrayFilter(this, el => { + return classNames.filter(className => el.classList.contains(className)).length > 0; + }).length > 0; + } + + function attr(attrs, value) { + if (arguments.length === 1 && typeof attrs === 'string') { + // Get attr + if (this[0]) return this[0].getAttribute(attrs); + return undefined; + } // Set attrs + + + for (let i = 0; i < this.length; i += 1) { + if (arguments.length === 2) { + // String + this[i].setAttribute(attrs, value); + } else { + // Object + for (const attrName in attrs) { + this[i][attrName] = attrs[attrName]; + this[i].setAttribute(attrName, attrs[attrName]); + } + } + } + + return this; + } + + function removeAttr(attr) { + for (let i = 0; i < this.length; i += 1) { + this[i].removeAttribute(attr); + } + + return this; + } + + function transform(transform) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transform = transform; + } + + return this; + } + + function transition$1(duration) { + for (let i = 0; i < this.length; i += 1) { + this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; + } + + return this; + } + + function on() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + + function handleLiveEvent(e) { + const target = e.target; + if (!target) return; + const eventData = e.target.dom7EventData || []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + if ($(target).is(targetSelector)) listener.apply(target, eventData);else { + const parents = $(target).parents(); // eslint-disable-line + + for (let k = 0; k < parents.length; k += 1) { + if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); + } + } + } + + function handleEvent(e) { + const eventData = e && e.target ? e.target.dom7EventData || [] : []; + + if (eventData.indexOf(e) < 0) { + eventData.unshift(e); + } + + listener.apply(this, eventData); + } + + const events = eventType.split(' '); + let j; + + for (let i = 0; i < this.length; i += 1) { + const el = this[i]; + + if (!targetSelector) { + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7Listeners) el.dom7Listeners = {}; + if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; + el.dom7Listeners[event].push({ + listener, + proxyListener: handleEvent + }); + el.addEventListener(event, handleEvent, capture); + } + } else { + // Live events + for (j = 0; j < events.length; j += 1) { + const event = events[j]; + if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; + if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; + el.dom7LiveListeners[event].push({ + listener, + proxyListener: handleLiveEvent + }); + el.addEventListener(event, handleLiveEvent, capture); + } + } + } + + return this; + } + + function off() { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + + let [eventType, targetSelector, listener, capture] = args; + + if (typeof args[1] === 'function') { + [eventType, listener, capture] = args; + targetSelector = undefined; + } + + if (!capture) capture = false; + const events = eventType.split(' '); + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + let handlers; + + if (!targetSelector && el.dom7Listeners) { + handlers = el.dom7Listeners[event]; + } else if (targetSelector && el.dom7LiveListeners) { + handlers = el.dom7LiveListeners[event]; + } + + if (handlers && handlers.length) { + for (let k = handlers.length - 1; k >= 0; k -= 1) { + const handler = handlers[k]; + + if (listener && handler.listener === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } else if (!listener) { + el.removeEventListener(event, handler.proxyListener, capture); + handlers.splice(k, 1); + } + } + } + } + } + + return this; + } + + function trigger() { + const window = getWindow(); + + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + + const events = args[0].split(' '); + const eventData = args[1]; + + for (let i = 0; i < events.length; i += 1) { + const event = events[i]; + + for (let j = 0; j < this.length; j += 1) { + const el = this[j]; + + if (window.CustomEvent) { + const evt = new window.CustomEvent(event, { + detail: eventData, + bubbles: true, + cancelable: true + }); + el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); + el.dispatchEvent(evt); + el.dom7EventData = []; + delete el.dom7EventData; + } + } + } + + return this; + } + + function transitionEnd$1(callback) { + const dom = this; + + function fireCallBack(e) { + if (e.target !== this) return; + callback.call(this, e); + dom.off('transitionend', fireCallBack); + } + + if (callback) { + dom.on('transitionend', fireCallBack); + } + + return this; + } + + function outerWidth(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); + } + + return this[0].offsetWidth; + } + + return null; + } + + function outerHeight(includeMargins) { + if (this.length > 0) { + if (includeMargins) { + const styles = this.styles(); + return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); + } + + return this[0].offsetHeight; + } + + return null; + } + + function offset() { + if (this.length > 0) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + + return null; + } + + function styles() { + const window = getWindow(); + if (this[0]) return window.getComputedStyle(this[0], null); + return {}; + } + + function css(props, value) { + const window = getWindow(); + let i; + + if (arguments.length === 1) { + if (typeof props === 'string') { + // .css('width') + if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); + } else { + // .css({ width: '100px' }) + for (i = 0; i < this.length; i += 1) { + for (const prop in props) { + this[i].style[prop] = props[prop]; + } + } + + return this; + } + } + + if (arguments.length === 2 && typeof props === 'string') { + // .css('width', '100px') + for (i = 0; i < this.length; i += 1) { + this[i].style[props] = value; + } + + return this; + } + + return this; + } + + function each(callback) { + if (!callback) return this; + this.forEach((el, index) => { + callback.apply(el, [el, index]); + }); + return this; + } + + function filter(callback) { + const result = arrayFilter(this, callback); + return $(result); + } + + function html(html) { + if (typeof html === 'undefined') { + return this[0] ? this[0].innerHTML : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].innerHTML = html; + } + + return this; + } + + function text(text) { + if (typeof text === 'undefined') { + return this[0] ? this[0].textContent.trim() : null; + } + + for (let i = 0; i < this.length; i += 1) { + this[i].textContent = text; + } + + return this; + } + + function is(selector) { + const window = getWindow(); + const document = getDocument(); + const el = this[0]; + let compareWith; + let i; + if (!el || typeof selector === 'undefined') return false; + + if (typeof selector === 'string') { + if (el.matches) return el.matches(selector); + if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); + if (el.msMatchesSelector) return el.msMatchesSelector(selector); + compareWith = $(selector); + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + if (selector === document) { + return el === document; + } + + if (selector === window) { + return el === window; + } + + if (selector.nodeType || selector instanceof Dom7) { + compareWith = selector.nodeType ? [selector] : selector; + + for (i = 0; i < compareWith.length; i += 1) { + if (compareWith[i] === el) return true; + } + + return false; + } + + return false; + } + + function index() { + let child = this[0]; + let i; + + if (child) { + i = 0; // eslint-disable-next-line + + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + + return i; + } + + return undefined; + } + + function eq(index) { + if (typeof index === 'undefined') return this; + const length = this.length; + + if (index > length - 1) { + return $([]); + } + + if (index < 0) { + const returnIndex = length + index; + if (returnIndex < 0) return $([]); + return $([this[returnIndex]]); + } + + return $([this[index]]); + } + + function append() { + let newChild; + const document = getDocument(); + + for (let k = 0; k < arguments.length; k += 1) { + newChild = k < 0 || arguments.length <= k ? undefined : arguments[k]; + + for (let i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + while (tempDiv.firstChild) { + this[i].appendChild(tempDiv.firstChild); + } + } else if (newChild instanceof Dom7) { + for (let j = 0; j < newChild.length; j += 1) { + this[i].appendChild(newChild[j]); + } + } else { + this[i].appendChild(newChild); + } + } + } + + return this; + } + + function prepend(newChild) { + const document = getDocument(); + let i; + let j; + + for (i = 0; i < this.length; i += 1) { + if (typeof newChild === 'string') { + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newChild; + + for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { + this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); + } + } else if (newChild instanceof Dom7) { + for (j = 0; j < newChild.length; j += 1) { + this[i].insertBefore(newChild[j], this[i].childNodes[0]); + } + } else { + this[i].insertBefore(newChild, this[i].childNodes[0]); + } + } + + return this; + } + + function next(selector) { + if (this.length > 0) { + if (selector) { + if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { + return $([this[0].nextElementSibling]); + } + + return $([]); + } + + if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); + return $([]); + } + + return $([]); + } + + function nextAll(selector) { + const nextEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + + if (selector) { + if ($(next).is(selector)) nextEls.push(next); + } else nextEls.push(next); + + el = next; + } + + return $(nextEls); + } + + function prev(selector) { + if (this.length > 0) { + const el = this[0]; + + if (selector) { + if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { + return $([el.previousElementSibling]); + } + + return $([]); + } + + if (el.previousElementSibling) return $([el.previousElementSibling]); + return $([]); + } + + return $([]); + } + + function prevAll(selector) { + const prevEls = []; + let el = this[0]; + if (!el) return $([]); + + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + + if (selector) { + if ($(prev).is(selector)) prevEls.push(prev); + } else prevEls.push(prev); + + el = prev; + } + + return $(prevEls); + } + + function parent(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode !== null) { + if (selector) { + if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); + } else { + parents.push(this[i].parentNode); + } + } + } + + return $(parents); + } + + function parents(selector) { + const parents = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + let parent = this[i].parentNode; // eslint-disable-line + + while (parent) { + if (selector) { + if ($(parent).is(selector)) parents.push(parent); + } else { + parents.push(parent); + } + + parent = parent.parentNode; + } + } + + return $(parents); + } + + function closest(selector) { + let closest = this; // eslint-disable-line + + if (typeof selector === 'undefined') { + return $([]); + } + + if (!closest.is(selector)) { + closest = closest.parents(selector).eq(0); + } + + return closest; + } + + function find(selector) { + const foundElements = []; + + for (let i = 0; i < this.length; i += 1) { + const found = this[i].querySelectorAll(selector); + + for (let j = 0; j < found.length; j += 1) { + foundElements.push(found[j]); + } + } + + return $(foundElements); + } + + function children(selector) { + const children = []; // eslint-disable-line + + for (let i = 0; i < this.length; i += 1) { + const childNodes = this[i].children; + + for (let j = 0; j < childNodes.length; j += 1) { + if (!selector || $(childNodes[j]).is(selector)) { + children.push(childNodes[j]); + } + } + } + + return $(children); + } + + function remove() { + for (let i = 0; i < this.length; i += 1) { + if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); + } + + return this; + } + + const Methods = { + addClass, + removeClass, + hasClass, + toggleClass, + attr, + removeAttr, + transform, + transition: transition$1, + on, + off, + trigger, + transitionEnd: transitionEnd$1, + outerWidth, + outerHeight, + styles, + offset, + css, + each, + html, + text, + is, + index, + eq, + append, + prepend, + next, + nextAll, + prev, + prevAll, + parent, + parents, + closest, + find, + children, + filter, + remove + }; + Object.keys(Methods).forEach(methodName => { + Object.defineProperty($.fn, methodName, { + value: Methods[methodName], + writable: true + }); + }); + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) {// no getter for object + } + + try { + delete object[key]; + } catch (e) {// something got wrong + } + }); + } + + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + + return setTimeout(callback, delay); + } + + function now() { + return Date.now(); + } + + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + + if (!style && el.currentStyle) { + style = el.currentStyle; + } + + if (!style) { + style = el.style; + } + + return style; + } + + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + + + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + + return curTransform || 0; + } + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + + return node && (node.nodeType === 1 || node.nodeType === 11); + } + + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + + return to; + } + + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + + const animate = () => { + time = new Date().getTime(); + + if (startTime === null) { + startTime = time; + } + + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + + animate(); + } + + let support; + + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), + passiveListener: function checkPassiveListener() { + let supportsPassive = false; + + try { + const opts = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line + get() { + supportsPassive = true; + } + + }); + window.addEventListener('testPassiveListener', null, opts); + } catch (e) {// No support + } + + return supportsPassive; + }(), + gestures: function checkGestures() { + return 'ongesturestart' in window; + }() + }; + } + + function getSupport() { + if (!support) { + support = calcSupport(); + } + + return support; + } + + let deviceCached; + + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; // iPadOs 13 fix + + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } // Android + + + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } // Export object + + + return device; + } + + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + + return deviceCached; + } + + let browser; + + function calcBrowser() { + const window = getWindow(); + + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + + return { + isSafari: isSafari(), + isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) + }; + } + + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + + const init = () => { + if (!swiper.params.observer) return; + + if (swiper.params.observeParents) { + const containerParents = swiper.$el.parents(); + + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } // Observe container + + + attach(swiper.$el[0], { + childList: swiper.params.observeSlideChildren + }); // Observe wrapper + + attach(swiper.$wrapperEl[0], { + attributes: false + }); + }; + + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + + function onceHandler() { + self.off(events, onceHandler); + + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + handler.apply(self, args); + } + + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + + return self; + }, + + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + + return self; + }, + + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const $el = swiper.$el; + + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = $el[0].clientWidth; + } + + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = $el[0].clientHeight; + } + + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } // Subtract paddings + + + width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); + height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + + function getDirectionLabel(property) { + if (swiper.isHorizontal()) { + return property; + } // prettier-ignore + + + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); + } + + const params = swiper.params; + const { + $wrapperEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + + let offsetAfter = params.slidesOffsetAfter; + + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + + if (typeof swiperSize === 'undefined') { + return; + } + + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } + + swiper.virtualSize = -spaceBetween; // reset margins + + if (rtl) slides.css({ + marginLeft: '', + marginBottom: '', + marginTop: '' + });else slides.css({ + marginRight: '', + marginBottom: '', + marginTop: '' + }); // reset cssMode offsets + + if (params.centeredSlides && params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); + } + + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + + if (gridEnabled) { + swiper.grid.initSlides(slidesLength); + } // Calc slides + + + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + const slide = slides.eq(i); + + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); + } + + if (slide.css('display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[getDirectionLabel('width')] = ``; + } + + const slideStyles = getComputedStyle(slide[0]); + const currentTransform = slide[0].style.transform; + const currentWebKitTransform = slide[0].style.webkitTransform; + + if (currentTransform) { + slide[0].style.transform = 'none'; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = 'none'; + } + + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide[0]; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + + if (currentTransform) { + slide[0].style.transform = currentTransform; + } + + if (currentWebKitTransform) { + slide[0].style.webkitTransform = currentWebKitTransform; + } + + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + + if (slides[i]) { + slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; + } + } + + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + + slidesSizesGrid.push(slideSize); + + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + $wrapperEl.css({ + width: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (params.setWrapperSize) { + $wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` + }); + } + + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); + } // Remove last grid elements depending on width + + + if (!params.centeredSlides) { + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + + snapGrid = newSlidesGrid; + + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + + if (snapGrid.length === 0) snapGrid = [0]; + + if (params.spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode) return true; + + if (slideIndex === slides.length - 1) { + return false; + } + + return true; + }).css({ + [key]: `${spaceBetween}px` + }); + } + + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap < 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); + }); + allSlidesSize -= params.spaceBetween; + + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass); + + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.$el.removeClass(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; + } + + return swiper.slides.eq(index)[0]; + }; // Find slides currently in view + + + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || $([])).each(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } // Find new height from highest slide in view + + + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } // Update Height + + + if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`); + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; // Visible Slides + + slides.removeClass(params.slideVisibleClass); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides.eq(i).addClass(params.slideVisibleClass); + } + + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + + swiper.visibleSlides = $(swiper.visibleSlides); + } + + function updateProgress(translate) { + const swiper = this; + + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line + + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + isBeginning = progress <= 0; + isEnd = progress >= 1; + } + + Object.assign(swiper, { + progress, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + $wrapperEl, + activeIndex, + realIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); + let activeSlide; + + if (isVirtual) { + activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); + } else { + activeSlide = slides.eq(activeIndex); + } // Active classes + + + activeSlide.addClass(params.slideActiveClass); + + if (params.loop) { + // Duplicate to all looped slides + if (activeSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); + } + } // Next Slide + + + let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); + + if (params.loop && nextSlide.length === 0) { + nextSlide = slides.eq(0); + nextSlide.addClass(params.slideNextClass); + } // Prev Slide + + + let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); + + if (params.loop && prevSlide.length === 0) { + prevSlide = slides.eq(-1); + prevSlide.addClass(params.slidePrevClass); + } + + if (params.loop) { + // Duplicate to all looped slides + if (nextSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); + } + + if (prevSlide.hasClass(params.slideDuplicateClass)) { + $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } else { + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); + } + } + + swiper.emitSlidesClasses(); + } + + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + slidesGrid, + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + + if (typeof activeIndex === 'undefined') { + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } // Normalize slideIndex + + + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + } + + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if (activeIndex === previousIndex) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + + return; + } // Get real index + + + const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); + Object.assign(swiper, { + snapIndex, + realIndex, + previousIndex, + activeIndex + }); + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(e) { + const swiper = this; + const params = swiper.params; + const slide = $(e).closest(`.${params.slideClass}`)[0]; + let slideFound = false; + let slideIndex; + + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + + if (slide && slideFound) { + swiper.clickedSlide = slide; + + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + $wrapperEl + } = swiper; + + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + + if (params.cssMode) { + return translate; + } + + let currentTranslate = getTranslate($wrapperEl[0], axis); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + $wrapperEl, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); + } + + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress + + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (translateBounds === void 0) { + translateBounds = true; + } + + const swiper = this; + const { + params, + wrapperEl + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress + + swiper.updateProgress(newTranslate); + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + + return true; + } + + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + + if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); + } + } + + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + + if (!swiper.params.cssMode) { + swiper.$wrapperEl.transition(duration); + } + + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + + swiper.emit(`transition${step}`); + + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + + swiper.emit(`slideChangeTransition${step}`); + + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index !== 'number' && typeof index !== 'string') { + throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { + return false; + } + + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + + if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + const translate = -snapGrid[snapIndex]; // Update progress + + swiper.updateProgress(translate); // Normalize slideIndex + + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } // Directions locks + + + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { + return false; + } + + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) return false; + } + } + + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index + + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); // Update Height + + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + + swiper.updateSlidesClasses(); + + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + + return false; + } + + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._swiperImmediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + + return true; + } + + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + + swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); + } + + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (typeof index === 'string') { + /** + * The `index` argument converted from `string` to `number`. + * @type {number} + */ + const indexAsNumber = parseInt(index, 10); + /** + * Determines whether the `index` argument is a valid `number` + * after being converted from the `string` type. + * @type {boolean} + */ + + const isValidNumber = isFinite(indexAsNumber); + + if (!isValidNumber) { + throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); + } // Knowing that the converted `index` is a valid number, + // we can update the original argument's value. + + + index = indexAsNumber; + } + + const swiper = this; + let newIndex = index; + + if (swiper.params.loop) { + newIndex += swiper.loopedSlides; + } + + return swiper.slideTo(newIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + animating, + enabled, + params + } = swiper; + if (!enabled) return swiper; + let perGroup = params.slidesPerGroup; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + const { + params, + animating, + snapGrid, + slidesGrid, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return swiper; + + if (params.loop) { + if (animating && params.loopPreventsSlide) return false; + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + } + + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + + let prevIndex = 0; + + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } + + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + const swiper = this; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + + if (runCallbacks === void 0) { + runCallbacks = true; + } + + if (threshold === void 0) { + threshold = 0.5; + } + + const swiper = this; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + const { + params, + $wrapperEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); + + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate() { + const swiper = this; + const document = getDocument(); + const { + params, + $wrapperEl + } = swiper; // Remove duplicated slides + + const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl; + $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); + let slides = $selector.children(`.${params.slideClass}`); + + if (params.loopFillGroupWithBlank) { + const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; + + if (blankSlidesNum !== params.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); + $selector.append(blankNode); + } + + slides = $selector.children(`.${params.slideClass}`); + } + } + + if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; + swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); + swiper.loopedSlides += params.loopAdditionalSlides; + + if (swiper.loopedSlides > slides.length) { + swiper.loopedSlides = slides.length; + } + + const prependSlides = []; + const appendSlides = []; + slides.each((el, index) => { + const slide = $(el); + + if (index < swiper.loopedSlides) { + appendSlides.push(el); + } + + if (index < slides.length && index >= slides.length - swiper.loopedSlides) { + prependSlides.push(el); + } + + slide.attr('data-swiper-slide-index', index); + }); + + for (let i = 0; i < appendSlides.length; i += 1) { + $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + + for (let i = prependSlides.length - 1; i >= 0; i -= 1) { + $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); + } + } + + function loopFix() { + const swiper = this; + swiper.emit('beforeLoopFix'); + const { + activeIndex, + slides, + loopedSlides, + allowSlidePrev, + allowSlideNext, + snapGrid, + rtlTranslate: rtl + } = swiper; + let newIndex; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + const snapTranslate = -snapGrid[activeIndex]; + const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding + + if (activeIndex < loopedSlides) { + newIndex = slides.length - loopedSlides * 3 + activeIndex; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } else if (activeIndex >= slides.length - loopedSlides) { + // Fix For Positive Oversliding + newIndex = -slides.length + activeIndex + loopedSlides; + newIndex += loopedSlides; + const slideChanged = swiper.slideTo(newIndex, 0, false, true); + + if (slideChanged && diff !== 0) { + swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); + } + } + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + $wrapperEl, + params, + slides + } = swiper; + $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); + slides.removeAttr('data-swiper-slide-index'); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + } + + function unsetGrabCursor() { + const swiper = this; + + if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + + if (!found && !el.getRootNode) { + return null; + } + + return found || __closestFrom(el.getRootNode().host); + } + + return __closestFrom(base); + } + + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + const window = getWindow(); + const data = swiper.touchEventsData; + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + + let e = event; + if (e.originalEvent) e = e.originalEvent; + let $targetEl = $(e.target); + + if (params.touchEventsTarget === 'wrapper') { + if (!$targetEl.closest(swiper.wrapperEl).length) return; + } + + data.isTouchEvent = e.type === 'touchstart'; + if (!data.isTouchEvent && 'which' in e && e.which === 3) return; + if (!data.isTouchEvent && 'button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; // change target el for shadow root component + + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + + if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { + $targetEl = $(event.path[0]); + } + + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element + + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) { + swiper.allowClick = true; + return; + } + + if (params.swipeHandler) { + if (!$targetEl.closest(params.swipeHandler)[0]) return; + } + + touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; + + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + } else { + return; + } + } + + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + + if (e.type !== 'touchstart') { + let preventDefault = true; + + if ($targetEl.is(data.focusableElements)) { + preventDefault = false; + + if ($targetEl[0].nodeName === 'SELECT') { + data.isTouched = false; + } + } + + if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { + document.activeElement.blur(); + } + + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { + e.preventDefault(); + } + } + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + return; + } + + if (data.isTouchEvent && e.type !== 'touchmove') return; + const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); + const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; + const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; + + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + + if (!swiper.allowTouchMove) { + if (!$(e.target).is(data.focusableElements)) { + swiper.allowClick = false; + } + + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + + return; + } + + if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + + if (data.isTouchEvent && document.activeElement) { + if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + + if (e.targetTouches && e.targetTouches.length > 1) return; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + + if (data.isScrolling) { + data.isTouched = false; + return; + } + + if (!data.startMoving) { + return; + } + + swiper.allowClick = false; + + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + + if (!data.isMoved) { + if (params.loop && !params.cssMode) { + swiper.loopFix(); + } + + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + + if (swiper.animating) { + swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); + } + + data.allowMomentumBounce = false; // Grab Cursor + + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + + swiper.emit('sliderFirstMove', e); + } + + swiper.emit('sliderMove', e); + data.isMoved = true; + let diff = swiper.isHorizontal() ? diffX : diffY; + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) diff = -diff; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + + if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } // Directions locks + + + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } // Threshold + + + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + + if (!params.followFinger || params.cssMode) return; // Update active index in free mode + + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } // Update progress + + + swiper.updateProgress(data.currentTranslate); // Update translate + + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + + data.allowTouchCallbacks = false; + + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + + data.isMoved = false; + data.startMoving = false; + return; + } // Return Grab Cursor + + + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } // Time diff + + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click + + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target); + swiper.emit('tap click', e); + + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + + if (params.cssMode) { + return; + } + + if (swiper.params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } // Find current slide + + + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + + let rewindFirstIndex = null; + let rewindLastIndex = null; + + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } // Find current slide size + + + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } // Save locks + + + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; // Disable locks on resize + + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.run(); + } // Return locks after resize + + + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } // eslint-disable-next-line + + + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + + swiper.emit('setTranslate', swiper.translate, false); + } + + let dummyEventAttached = false; + + function dummyEventListener() {} + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + touchEvents, + el, + wrapperEl, + device, + support + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; // Touch Events + + if (!support.touch) { + el[domMethod](touchEvents.start, swiper.onTouchStart, false); + document[domMethod](touchEvents.move, swiper.onTouchMove, capture); + document[domMethod](touchEvents.end, swiper.onTouchEnd, false); + } else { + const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); + el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { + passive: false, + capture + } : capture); + el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); + + if (touchEvents.cancel) { + el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); + } + } // Prevent Links Clicks + + + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } // Resize handler + + + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + }; + + function attachEvents() { + const swiper = this; + const document = getDocument(); + const { + params, + support + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + + swiper.onClick = onClick.bind(swiper); + + if (support.touch && !dummyEventAttached) { + document.addEventListener('touchstart', dummyEventListener); + dummyEventAttached = true; + } + + events(swiper, 'on'); + } + + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + + function setBreakpoint() { + const swiper = this; + const { + activeIndex, + initialized, + loopedSlides = 0, + params, + $el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters + + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + + if (wasMultiRow && !isMultiRow) { + $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + $el.addClass(`${params.containerModifierClass}grid`); + + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + $el.addClass(`${params.containerModifierClass}grid-column`); + } + + swiper.emitContainerClasses(); + } // Toggle navigation, pagination, scrollbar + + + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + + if (directionChanged && initialized) { + swiper.changeDirection(); + } + + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + + if (needsReLoop && initialized) { + swiper.loopDestroy(); + swiper.loopCreate(); + swiper.updateSlides(); + swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); + } + + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + $el, + device, + support + } = swiper; // prettier-ignore + + const suffixes = prepareClasses(['initialized', params.direction, { + 'pointer-events': !support.touch + }, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + $el.addClass([...classNames].join(' ')); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + $el, + classNames + } = swiper; + $el.removeClass(classNames.join(' ')); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { + const window = getWindow(); + let image; + + function onReady() { + if (callback) callback(); + } + + const isPicture = $(imageEl).parent('picture')[0]; + + if (!isPicture && (!imageEl.complete || !checkForComplete)) { + if (src) { + image = new window.Image(); + image.onload = onReady; + image.onerror = onReady; + + if (sizes) { + image.sizes = sizes; + } + + if (srcset) { + image.srcset = srcset; + } + + if (src) { + image.src = src; + } + } else { + onReady(); + } + } else { + // image already loaded... + onReady(); + } + } + + function preloadImages() { + const swiper = this; + swiper.imagesToLoad = swiper.$el.find('img'); + + function onReady() { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; + if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; + + if (swiper.imagesLoaded === swiper.imagesToLoad.length) { + if (swiper.params.updateOnImagesReady) swiper.update(); + swiper.emit('imagesReady'); + } + } + + for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { + const imageEl = swiper.imagesToLoad[i]; + swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); + } + } + + var images = { + loadImage, + preloadImages + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 0, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // Images + preloadImages: true, + updateOnImagesReady: true, + // loop + loop: false, + loopAdditionalSlides: 0, + loopedSlides: null, + loopFillGroupWithBlank: false, + loopPreventsSlide: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-invisible-blank', + slideActiveClass: 'swiper-slide-active', + slideDuplicateActiveClass: 'swiper-slide-duplicate-active', + slideVisibleClass: 'swiper-slide-visible', + slideDuplicateClass: 'swiper-slide-duplicate', + slideNextClass: 'swiper-slide-next', + slideDuplicateNextClass: 'swiper-slide-duplicate-next', + slidePrevClass: 'swiper-slide-prev', + slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', + wrapperClass: 'swiper-wrapper', + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + + if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { + params[moduleParamName] = { + auto: true + }; + } + + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes, + images + }; + const extendedDefaults = {}; + + class Swiper { + constructor() { + let el; + let params; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + + if (params.el && $(params.el).length > 1) { + const swipers = []; + $(params.el).each(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + return swipers; + } // Swiper Instance + + + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); // Extend defaults with modules params + + const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params + + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); // add event listeners + + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } // Save Dom lib + + + swiper.$ = $; // Extend Swiper + + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: $(), + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + + isVertical() { + return swiper.params.direction === 'vertical'; + }, + + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEvents: function touchEvents() { + const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; + const desktop = ['pointerdown', 'pointermove', 'pointerup']; + swiper.touchEventsTouch = { + start: touch[0], + move: touch[1], + end: touch[2], + cancel: touch[3] + }; + swiper.touchEventsDesktop = { + start: desktop[0], + move: desktop[1], + end: desktop[2] + }; + return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; + }(), + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: now(), + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + isTouchEvent: undefined, + startMoving: undefined + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); // Init + + if (swiper.params.init) { + swiper.init(); + } // Return app instance + + + return swiper; + } + + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + + swiper.emit('enable'); + } + + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + + swiper.emit('disable'); + } + + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.each(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + + if (exact === void 0) { + exact = false; + } + + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + + if (params.centeredSlides) { + let slideSize = slides[activeIndex].swiperSlideSize; + let breakLoop; + + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + + if (slideInView) { + spv += 1; + } + } + } + } + + return spv; + } + + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; // Breakpoints + + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + let translated; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled) { + setTranslate(); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { + translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + + if (!translated) { + setTranslate(); + } + } + + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + + swiper.emit('update'); + } + + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + + const swiper = this; + const currentDirection = swiper.params.direction; + + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + + swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.each(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + + if (swiper.rtl) { + swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + + swiper.update(); + } + + mount(el) { + const swiper = this; + if (swiper.mounted) return true; // Find el + + const $el = $(el || swiper.params.el); + el = $el[0]; + + if (!el) { + return false; + } + + el.swiper = swiper; + + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items + + res.children = options => $el.children(options); + + return res; + } + + if (!$el.children) { + return $($el).children(getWrapperSelector()); + } + + return $el.children(getWrapperSelector()); + }; // Find Wrapper + + + let $wrapperEl = getWrapper(); + + if ($wrapperEl.length === 0 && swiper.params.createElements) { + const document = getDocument(); + const wrapper = document.createElement('div'); + $wrapperEl = $(wrapper); + wrapper.className = swiper.params.wrapperClass; + $el.append(wrapper); + $el.children(`.${swiper.params.slideClass}`).each(slideEl => { + $wrapperEl.append(slideEl); + }); + } + + Object.assign(swiper, { + $el, + el, + $wrapperEl, + wrapperEl: $wrapperEl[0], + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), + wrongRTL: $wrapperEl.css('display') === '-webkit-box' + }); + return true; + } + + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); // Set breakpoint + + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } // Add Classes + + + swiper.addClasses(); // Create loop + + if (swiper.params.loop) { + swiper.loopCreate(); + } // Update size + + + swiper.updateSize(); // Update slides + + swiper.updateSlides(); + + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } // Set Grab Cursor + + + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + if (swiper.params.preloadImages) { + swiper.preloadImages(); + } // Slide To Initial Slide + + + if (swiper.params.loop) { + swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } // Attach events + + + swiper.attachEvents(); // Init Flag + + swiper.initialized = true; // Emit + + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + + if (cleanStyles === void 0) { + cleanStyles = true; + } + + const swiper = this; + const { + params, + $el, + $wrapperEl, + slides + } = swiper; + + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + + swiper.emit('beforeDestroy'); // Init Flag + + swiper.initialized = false; // Detach events + + swiper.detachEvents(); // Destroy loop + + if (params.loop) { + swiper.loopDestroy(); + } // Cleanup styles + + + if (cleanStyles) { + swiper.removeClasses(); + $el.removeAttr('style'); + $wrapperEl.removeAttr('style'); + + if (slides && slides.length) { + slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); + } + } + + swiper.emit('destroy'); // Detach emitter events + + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + + if (deleteInstance !== false) { + swiper.$el[0].swiper = null; + deleteProps(swiper); + } + + swiper.destroyed = true; + return null; + } + + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + + static get extendedDefaults() { + return extendedDefaults; + } + + static get defaults() { + return defaults; + } + + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + + Swiper.installModule(module); + return Swiper; + } + + } + + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + + function renderSlide(slide, index) { + const params = swiper.params.virtual; + + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + + const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); + if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); + if (params.cache) swiper.virtual.cache[index] = $slideEl; + return $slideEl; + } + + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = slidesPerGroup + addSlidesBefore; + } + + const from = Math.max((activeIndex || 0) - slidesBefore, 0); + const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); + const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid + }); + + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + + if (swiper.lazy && swiper.params.lazy.enabled) { + swiper.lazy.load(); + } + + emit('virtualUpdate'); + } + + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.css(offsetProp, `${offset}px`); + } + + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + + return slidesToRender; + }() + }); + + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + + return; + } + + const prependIndexes = []; + const appendIndexes = []; + + if (force) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + if (i >= from && i <= to) { + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(i); + } else { + if (i > previousTo) appendIndexes.push(i); + if (i < previousFrom) prependIndexes.push(i); + } + } + } + + appendIndexes.forEach(index => { + swiper.$wrapperEl.append(renderSlide(slides[index], index)); + }); + prependIndexes.sort((a, b) => b - a).forEach(index => { + swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); + }); + swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); + onRendered(); + } + + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + + update(true); + } + + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const $cachedEl = cache[cachedIndex]; + const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); + + if (cachedElIndex) { + $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; + }); + swiper.virtual.cache = newCache; + } + + update(true); + swiper.slideTo(newActiveIndex, 0); + } + + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + swiper.virtual.slides.splice(slidesIndexes[i], 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + } + + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + swiper.virtual.slides.splice(slidesIndexes, 1); + + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + } + + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + + update(true); + swiper.slideTo(activeIndex, 0); + } + + function removeAllSlides() { + swiper.virtual.slides = []; + + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + + update(true); + swiper.slideTo(0, 0); + } + + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + swiper.virtual.slides = swiper.params.virtual.slides; + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + + if (!swiper.params.initialSlide) { + update(); + } + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; // Directions locks + + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; // Check that swiper should be inside of visible area of window + + if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + + const $el = swiper.$el; + const swiperWidth = $el[0].clientWidth; + const swiperHeight = $el[0].clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = swiper.$el.offset(); + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + if (!inView) return undefined; + } + + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + + emit('keyPress', kc); + return undefined; + } + + function enable() { + if (swiper.keyboard.enabled) return; + $(document).on('keydown', handle); + swiper.keyboard.enabled = true; + } + + function disable() { + if (!swiper.keyboard.enabled) return; + $(document).off('keydown', handle); + swiper.keyboard.enabled = false; + } + + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + + let pX = 0; + let pY = 0; // pixelX, pixelY + // Legacy + + if ('detail' in e) { + sY = e.detail; + } + + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } // side scrolling on FF with DOMMouseScroll + + + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in e) { + pY = e.deltaY; + } + + if ('deltaX' in e) { + pX = e.deltaX; + } + + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } // Fall-back if spin cannot be determined + + + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + + + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + + + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } // If you got here is because an animation has been triggered so store the current time + + + lastScrollTime = new window.Date().getTime(); // Return false as a default + + return false; + } + + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + + return false; + } + + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + const params = swiper.params.mousewheel; + + if (swiper.params.cssMode) { + e.preventDefault(); + } + + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + + if (delta === 0) return true; + if (params.invert) delta = -delta; // Get the scroll positions + + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; // Keep the most recent events + + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + + + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + + if (swiper.params.loop) { + swiper.loopFix(); + } + + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } // Emit event + + + if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay + + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions + + if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; + } + } + + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + + function events(method) { + let target = swiper.$el; + + if (swiper.params.mousewheel.eventsTarget !== 'container') { + target = $(swiper.params.mousewheel.eventsTarget); + } + + target[method]('mouseenter', handleMouseEnter); + target[method]('mouseleave', handleMouseLeave); + target[method]('wheel', handle); + } + + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + + if (swiper.mousewheel.enabled) return false; + events('on'); + swiper.mousewheel.enabled = true; + return true; + } + + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + + if (!swiper.mousewheel.enabled) return false; + events('off'); + swiper.mousewheel.enabled = false; + return true; + } + + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + const document = getDocument(); + + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = swiper.$el.children(`.${checkProps[key]}`)[0]; + + if (!element) { + element = document.createElement('div'); + element.className = checkProps[key]; + swiper.$el.append(element); + } + + params[key] = element; + originalParams[key] = element; + } + }); + } + + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + $nextEl: null, + prevEl: null, + $prevEl: null + }; + + function getEl(el) { + let $el; + + if (el) { + $el = $(el); + + if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { + $el = swiper.$el.find(el); + } + } + + return $el; + } + + function toggleEl($el, disabled) { + const params = swiper.params.navigation; + + if ($el && $el.length > 0) { + $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); + if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + } + + function update() { + // Update Navigation Buttons + if (swiper.params.loop) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind); + } + + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + const $nextEl = getEl(params.nextEl); + const $prevEl = getEl(params.prevEl); + + if ($nextEl && $nextEl.length > 0) { + $nextEl.on('click', onNextClick); + } + + if ($prevEl && $prevEl.length > 0) { + $prevEl.on('click', onPrevClick); + } + + Object.assign(swiper.navigation, { + $nextEl, + nextEl: $nextEl && $nextEl[0], + $prevEl, + prevEl: $prevEl && $prevEl[0] + }); + + if (!swiper.enabled) { + if ($nextEl) $nextEl.addClass(params.lockClass); + if ($prevEl) $prevEl.addClass(params.lockClass); + } + } + + function destroy() { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl && $nextEl.length) { + $nextEl.off('click', onNextClick); + $nextEl.removeClass(swiper.params.navigation.disabledClass); + } + + if ($prevEl && $prevEl.length) { + $prevEl.off('click', onPrevClick); + $prevEl.removeClass(swiper.params.navigation.disabledClass); + } + } + + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($nextEl) { + $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + + if ($prevEl) { + $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); + } + }); + on('click', (_s, e) => { + const { + $nextEl, + $prevEl + } = swiper.navigation; + const targetEl = e.target; + + if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + + if ($nextEl) { + isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); + } else if ($prevEl) { + isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); + } + + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + + if ($nextEl) { + $nextEl.toggleClass(swiper.params.navigation.hiddenClass); + } + + if ($prevEl) { + $prevEl.toggleClass(swiper.params.navigation.hiddenClass); + } + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass); + init(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass); + destroy(); + }; + + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + + return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + $el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; + } + + function setSideBullets($bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); + } + + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; // Current/Total + + let current; + const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.loop) { + current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); + + if (current > slidesLength - 1 - swiper.loopedSlides * 2) { + current -= slidesLength - swiper.loopedSlides * 2; + } + + if (current > total - 1) current -= total; + if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + } else { + current = swiper.activeIndex || 0; + } // Types + + + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + + if (params.dynamicBullets) { + bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); + $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); + + if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { + dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0); + + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + + bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); + + if ($el.length > 1) { + bullets.each(bullet => { + const $bullet = $(bullet); + const bulletIndex = $bullet.index(); + + if (bulletIndex === current) { + $bullet.addClass(params.bulletActiveClass); + } + + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + $bullet.addClass(`${params.bulletActiveClass}-main`); + } + + if (bulletIndex === firstIndex) { + setSideBullets($bullet, 'prev'); + } + + if (bulletIndex === lastIndex) { + setSideBullets($bullet, 'next'); + } + } + }); + } else { + const $bullet = bullets.eq(current); + const bulletIndex = $bullet.index(); + $bullet.addClass(params.bulletActiveClass); + + if (params.dynamicBullets) { + const $firstDisplayedBullet = bullets.eq(firstIndex); + const $lastDisplayedBullet = bullets.eq(lastIndex); + + for (let i = firstIndex; i <= lastIndex; i += 1) { + bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); + } + + if (swiper.params.loop) { + if (bulletIndex >= bullets.length) { + for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { + bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); + } + + bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } else { + setSideBullets($firstDisplayedBullet, 'prev'); + setSideBullets($lastDisplayedBullet, 'next'); + } + } + } + + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); + } + } + + if (params.type === 'fraction') { + $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); + $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total)); + } + + if (params.type === 'progressbar') { + let progressbarDirection; + + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + + $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); + } + + if (params.type === 'custom' && params.renderCustom) { + $el.html(params.renderCustom(swiper, current + 1, total)); + emit('paginationRender', $el[0]); + } else { + emit('paginationUpdate', $el[0]); + } + + if (swiper.params.watchOverflow && swiper.enabled) { + $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); + } + } + + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const $el = swiper.pagination.$el; + let paginationHTML = ''; + + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; + } + } + + $el.html(paginationHTML); + swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); + } + + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + + $el.html(paginationHTML); + } + + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + + $el.html(paginationHTML); + } + + if (params.type !== 'custom') { + emit('paginationRender', swiper.pagination.$el[0]); + } + } + + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let $el = $(params.el); + if ($el.length === 0) return; + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { + $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper + + if ($el.length > 1) { + $el = $el.filter(el => { + if ($(el).parents('.swiper')[0] !== swiper.el) return false; + return true; + }); + } + } + + if (params.type === 'bullets' && params.clickable) { + $el.addClass(params.clickableClass); + } + + $el.addClass(params.modifierClass + params.type); + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + + if (params.type === 'bullets' && params.dynamicBullets) { + $el.addClass(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + + if (params.type === 'progressbar' && params.progressbarOpposite) { + $el.addClass(params.progressbarOppositeClass); + } + + if (params.clickable) { + $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { + e.preventDefault(); + let index = $(this).index() * swiper.params.slidesPerGroup; + if (swiper.params.loop) index += swiper.loopedSlides; + swiper.slideTo(index); + }); + } + + Object.assign(swiper.pagination, { + $el, + el: $el[0] + }); + + if (!swiper.enabled) { + $el.addClass(params.lockClass); + } + } + + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const $el = swiper.pagination.$el; + $el.removeClass(params.hiddenClass); + $el.removeClass(params.modifierClass + params.type); + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); + + if (params.clickable) { + $el.off('click', classesToSelector(params.bulletClass)); + } + } + + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (swiper.params.loop) { + update(); + } else if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + if (!swiper.params.loop) { + update(); + } + }); + on('slidesLengthChange', () => { + if (swiper.params.loop) { + render(); + update(); + } + }); + on('snapGridLengthChange', () => { + if (!swiper.params.loop) { + render(); + update(); + } + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + const { + $el + } = swiper.pagination; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const { + $el + } = swiper.pagination; + + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass); + + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + + $el.toggleClass(swiper.params.pagination.hiddenClass); + } + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass); + } + + init(); + render(); + update(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass); + + if (swiper.pagination.$el) { + swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null, + $el: null, + $dragEl: null + }; + + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl, + progress + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + const params = swiper.params.scrollbar; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + + if (rtl) { + newPos = -newPos; + + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + + if (swiper.isHorizontal()) { + $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); + $dragEl[0].style.width = `${newSize}px`; + } else { + $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); + $dragEl[0].style.height = `${newSize}px`; + } + + if (params.hide) { + clearTimeout(timeout); + $el[0].style.opacity = 1; + timeout = setTimeout(() => { + $el[0].style.opacity = 0; + $el.transition(400); + }, 1000); + } + } + + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.$dragEl.transition(duration); + } + + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + $dragEl, + $el + } = scrollbar; + $dragEl[0].style.width = ''; + $dragEl[0].style.height = ''; + trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + + if (swiper.isHorizontal()) { + $dragEl[0].style.width = `${dragSize}px`; + } else { + $dragEl[0].style.height = `${dragSize}px`; + } + + if (divider >= 1) { + $el[0].style.display = 'none'; + } else { + $el[0].style.display = ''; + } + + if (swiper.params.scrollbar.hide) { + $el[0].style.opacity = 0; + } + + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); + } + } + + function getPointerPosition(e) { + if (swiper.isHorizontal()) { + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; + } + + return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; + } + + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + $el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + + if (rtl) { + positionRatio = 1 - positionRatio; + } + + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + $wrapperEl.transition(100); + $dragEl.transition(100); + setDragPosition(e); + clearTimeout(dragTimeout); + $el.transition(0); + + if (params.hide) { + $el.css('opacity', 1); + } + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', 'none'); + } + + emit('scrollbarDragStart', e); + } + + function onDragMove(e) { + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el, + $dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + $wrapperEl.transition(0); + $el.transition(0); + $dragEl.transition(0); + emit('scrollbarDragMove', e); + } + + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + $wrapperEl + } = swiper; + const { + $el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + + if (swiper.params.cssMode) { + swiper.$wrapperEl.css('scroll-snap-type', ''); + $wrapperEl.transition(''); + } + + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + $el.css('opacity', 0); + $el.transition(400); + }, 1000); + } + + emit('scrollbarDragEnd', e); + + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + + function events(method) { + const { + scrollbar, + touchEventsTouch, + touchEventsDesktop, + params, + support + } = swiper; + const $el = scrollbar.$el; + if (!$el) return; + const target = $el[0]; + const activeListener = support.passiveListener && params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = support.passiveListener && params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + + if (!support.touch) { + target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); + document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); + document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); + } else { + target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); + target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); + target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); + } + } + + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + + function init() { + const { + scrollbar, + $el: $swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let $el = $(params.el); + + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { + $el = $swiperEl.find(params.el); + } + + $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); + + if ($dragEl.length === 0) { + $dragEl = $(`
`); + $el.append($dragEl); + } + + Object.assign(scrollbar, { + $el, + el: $el[0], + $dragEl, + dragEl: $dragEl[0] + }); + + if (params.draggable) { + enableDraggable(); + } + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + } + + function destroy() { + const params = swiper.params.scrollbar; + const $el = swiper.scrollbar.$el; + + if ($el) { + $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + } + + disableDraggable(); + } + + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + $el + } = swiper.scrollbar; + + if ($el) { + $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); + } + }); + on('destroy', () => { + destroy(); + }); + + const enable = () => { + swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + init(); + updateSize(); + setTranslate(); + }; + + const disable = () => { + swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + + if (swiper.scrollbar.$el) { + swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); + } + + destroy(); + }; + + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const $el = $(el); + const rtlFactor = rtl ? -1 : 1; + const p = $el.attr('data-swiper-parallax') || '0'; + let x = $el.attr('data-swiper-parallax-x'); + let y = $el.attr('data-swiper-parallax-y'); + const scale = $el.attr('data-swiper-parallax-scale'); + const opacity = $el.attr('data-swiper-parallax-opacity'); + + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + $el[0].style.opacity = currentOpacity; + } + + if (typeof scale === 'undefined' || scale === null) { + $el.transform(`translate3d(${x}, ${y}, 0px)`); + } else { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); + } + }; + + const setTranslate = () => { + const { + $el, + slides, + progress, + snapGrid + } = swiper; + $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, progress); + }); + slides.each((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { + setTransform(el, slideProgress); + }); + }); + }; + + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + + const { + $el + } = swiper; + $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { + const $parallaxEl = $(parallaxEl); + let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + $parallaxEl.transition(parallaxDuration); + }); + }; + + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let gesturesEnabled; + let fakeGestureTouched; + let fakeGestureMoved; + const gesture = { + $slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + $imageEl: undefined, + $imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + + set(value) { + if (scale !== value) { + const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined; + const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; + emit('zoomChange', value, imageEl, slideEl); + } + + scale = value; + } + + }); + + function getDistanceBetweenTouches(e) { + if (e.targetTouches.length < 2) return 1; + const x1 = e.targetTouches[0].pageX; + const y1 = e.targetTouches[0].pageY; + const x2 = e.targetTouches[1].pageX; + const y2 = e.targetTouches[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } // Events + + + function onGestureStart(e) { + const support = swiper.support; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + + if (!support.gestures) { + if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { + return; + } + + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(e); + } + + if (!gesture.$slideEl || !gesture.$slideEl.length) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (gesture.$imageWrapEl.length === 0) { + gesture.$imageEl = undefined; + return; + } + } + + if (gesture.$imageEl) { + gesture.$imageEl.transition(0); + } + + isScaling = true; + } + + function onGestureChange(e) { + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { + return; + } + + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(e); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) { + if (e.type === 'gesturechange') onGestureStart(e); + return; + } + + if (support.gestures) { + zoom.scale = e.scale * currentScale; + } else { + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + } + + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + + gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function onGestureEnd(e) { + const device = swiper.device; + const support = swiper.support; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + + if (!support.gestures) { + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + + if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { + return; + } + + fakeGestureTouched = false; + fakeGestureMoved = false; + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale === 1) gesture.$slideEl = undefined; + } + + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; + image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; + } + + function onTouchMove(e) { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + swiper.allowClick = false; + if (!image.isTouched || !gesture.$slideEl) return; + + if (!image.isMoved) { + image.width = gesture.$imageEl[0].offsetWidth; + image.height = gesture.$imageEl[0].offsetHeight; + image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; + image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; + gesture.slideWidth = gesture.$slideEl[0].offsetWidth; + gesture.slideHeight = gesture.$slideEl[0].offsetHeight; + gesture.$imageWrapEl.transition(0); + } // Define if we need image drag + + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; + image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; + + if (!image.isMoved && !isScaling) { + 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)) { + image.isTouched = false; + return; + } + + 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)) { + image.isTouched = false; + return; + } + } + + if (e.cancelable) { + e.preventDefault(); + } + + e.stopPropagation(); + image.isMoved = true; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; + + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } // Velocity + + + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; + + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; // Fix duration + + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; // Define if we need image drag + + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); + } + + function onTransitionEnd() { + const zoom = swiper.zoom; + + if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { + if (gesture.$imageEl) { + gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); + } + + if (gesture.$imageWrapEl) { + gesture.$imageWrapEl.transform('translate3d(0,0,0)'); + } + + zoom.scale = 1; + currentScale = 1; + gesture.$slideEl = undefined; + gesture.$imageEl = undefined; + gesture.$imageWrapEl = undefined; + } + } + + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (e && e.target) { + gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); + } + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + + gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; + touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + + zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; + + if (e) { + slideWidth = gesture.$slideEl[0].offsetWidth; + slideHeight = gesture.$slideEl[0].offsetHeight; + offsetX = gesture.$slideEl.offset().left + window.scrollX; + offsetY = gesture.$slideEl.offset().top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.$imageEl[0].offsetWidth; + imageHeight = gesture.$imageEl[0].offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + + if (translateX < translateMinX) { + translateX = translateMinX; + } + + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + + if (translateY < translateMinY) { + translateY = translateMinY; + } + + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + + gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); + gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); + } + + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + + if (!gesture.$slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); + } else { + gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); + } + + gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); + gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); + } + + if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; + + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + + zoom.scale = 1; + currentScale = 1; + gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); + gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); + gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); + gesture.$slideEl = undefined; + } // Toggle Zoom + + + function zoomToggle(e) { + const zoom = swiper.zoom; + + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + + function getListeners() { + const support = swiper.support; + const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = support.passiveListener ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + function getSlideSelector() { + return `.${swiper.params.slideClass}`; + } + + function toggleGestures(method) { + const { + passiveListener + } = getListeners(); + const slideSelector = getSlideSelector(); + swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); + swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); + } + + function enableGestures() { + if (gesturesEnabled) return; + gesturesEnabled = true; + toggleGestures('on'); + } + + function disableGestures() { + if (!gesturesEnabled) return; + gesturesEnabled = false; + toggleGestures('off'); + } // Attach/Detach Events + + + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const support = swiper.support; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + const support = swiper.support; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + const slideSelector = getSlideSelector(); // Scale image + + if (support.gestures) { + swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); + } else if (swiper.touchEvents.start === 'touchstart') { + swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); + swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); + swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); + + if (swiper.touchEvents.cancel) { + swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); + } + } // Move image + + + swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); + } + + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + function Lazy(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + lazy: { + checkInView: false, + enabled: false, + loadPrevNext: false, + loadPrevNextAmount: 1, + loadOnTransitionStart: false, + scrollingElement: '', + elementClass: 'swiper-lazy', + loadingClass: 'swiper-lazy-loading', + loadedClass: 'swiper-lazy-loaded', + preloaderClass: 'swiper-lazy-preloader' + } + }); + swiper.lazy = {}; + let scrollHandlerAttached = false; + let initialImageLoaded = false; + + function loadInSlide(index, loadInDuplicate) { + if (loadInDuplicate === void 0) { + loadInDuplicate = true; + } + + const params = swiper.params.lazy; + if (typeof index === 'undefined') return; + if (swiper.slides.length === 0) return; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); + const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); + + if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { + $images.push($slideEl[0]); + } + + if ($images.length === 0) return; + $images.each(imageEl => { + const $imageEl = $(imageEl); + $imageEl.addClass(params.loadingClass); + const background = $imageEl.attr('data-background'); + const src = $imageEl.attr('data-src'); + const srcset = $imageEl.attr('data-srcset'); + const sizes = $imageEl.attr('data-sizes'); + const $pictureEl = $imageEl.parent('picture'); + swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { + if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; + + if (background) { + $imageEl.css('background-image', `url("${background}")`); + $imageEl.removeAttr('data-background'); + } else { + if (srcset) { + $imageEl.attr('srcset', srcset); + $imageEl.removeAttr('data-srcset'); + } + + if (sizes) { + $imageEl.attr('sizes', sizes); + $imageEl.removeAttr('data-sizes'); + } + + if ($pictureEl.length) { + $pictureEl.children('source').each(sourceEl => { + const $source = $(sourceEl); + + if ($source.attr('data-srcset')) { + $source.attr('srcset', $source.attr('data-srcset')); + $source.removeAttr('data-srcset'); + } + }); + } + + if (src) { + $imageEl.attr('src', src); + $imageEl.removeAttr('data-src'); + } + } + + $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); + $slideEl.find(`.${params.preloaderClass}`).remove(); + + if (swiper.params.loop && loadInDuplicate) { + const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); + + if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { + const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); + loadInSlide(originalSlide.index(), false); + } else { + const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); + loadInSlide(duplicatedSlide.index(), false); + } + } + + emit('lazyImageReady', $slideEl[0], $imageEl[0]); + + if (swiper.params.autoHeight) { + swiper.updateAutoHeight(); + } + }); + emit('lazyImageLoad', $slideEl[0], $imageEl[0]); + }); + } + + function load() { + const { + $wrapperEl, + params: swiperParams, + slides, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && swiperParams.virtual.enabled; + const params = swiperParams.lazy; + let slidesPerView = swiperParams.slidesPerView; + + if (slidesPerView === 'auto') { + slidesPerView = 0; + } + + function slideExist(index) { + if (isVirtual) { + if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { + return true; + } + } else if (slides[index]) return true; + + return false; + } + + function slideIndex(slideEl) { + if (isVirtual) { + return $(slideEl).attr('data-swiper-slide-index'); + } + + return $(slideEl).index(); + } + + if (!initialImageLoaded) initialImageLoaded = true; + + if (swiper.params.watchSlidesProgress) { + $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { + const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); + loadInSlide(index); + }); + } else if (slidesPerView > 1) { + for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + loadInSlide(activeIndex); + } + + if (params.loadPrevNext) { + if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { + const amount = params.loadPrevNextAmount; + const spv = Math.ceil(slidesPerView); + const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); + const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides + + for (let i = activeIndex + spv; i < maxIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } // Prev Slides + + + for (let i = minIndex; i < activeIndex; i += 1) { + if (slideExist(i)) loadInSlide(i); + } + } else { + const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); + if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); + const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); + if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); + } + } + } + + function checkInViewOnLoad() { + const window = getWindow(); + if (!swiper || swiper.destroyed) return; + const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); + const isWindow = $scrollElement[0] === window; + const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; + const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; + const swiperOffset = swiper.$el.offset(); + const { + rtlTranslate: rtl + } = swiper; + let inView = false; + if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; + + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + + if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + + inView = true; + } + } + + const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + + if (inView) { + load(); + $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); + } else if (!scrollHandlerAttached) { + scrollHandlerAttached = true; + $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); + } + } + + on('beforeInit', () => { + if (swiper.params.lazy.enabled && swiper.params.preloadImages) { + swiper.params.preloadImages = false; + } + }); + on('init', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('scroll', () => { + if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { + load(); + } + }); + on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('transitionStart', () => { + if (swiper.params.lazy.enabled) { + if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + } + }); + on('transitionEnd', () => { + if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { + if (swiper.params.lazy.checkInView) { + checkInViewOnLoad(); + } else { + load(); + } + } + }); + on('slideChange', () => { + const { + lazy, + cssMode, + watchSlidesProgress, + touchReleaseOnEdges, + resistanceRatio + } = swiper.params; + + if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { + load(); + } + }); + on('destroy', () => { + if (!swiper.$el) return; + swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass); + }); + Object.assign(swiper.lazy, { + load, + loadInSlide + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + + } + }); + swiper.controller = { + control: undefined + }; + + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + + return maxIndex; + }; + }(); + + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + + let i1; + let i3; + + this.interpolate = function interpolate(x2) { + if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2): + + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + + return this; + } // xxx: for now i will just save one spline function to to + + + function getInterpolateFunction(c) { + if (!swiper.controller.spline) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + } + + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + + function setControlledTranslate(c) { + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + + function setControlledTransition(c) { + c.setTransition(duration, swiper); + + if (duration !== 0) { + c.transitionStart(); + + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + + c.$wrapperEl.transitionEnd(() => { + if (!controlled) return; + + if (c.params.loop && swiper.params.controller.by === 'slide') { + c.loopFix(); + } + + c.transitionEnd(); + }); + } + } + + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + + function removeSpline() { + if (!swiper.controller.control) return; + + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + + on('beforeInit', () => { + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + let liveRegion = null; + + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.html(''); + notification.html(message); + } + + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + + const randomChar = () => Math.round(16 * Math.random()).toString(16); + + return 'x'.repeat(size).replace(/x/g, randomChar); + } + + function makeElFocusable($el) { + $el.attr('tabIndex', '0'); + } + + function makeElNotFocusable($el) { + $el.attr('tabIndex', '-1'); + } + + function addElRole($el, role) { + $el.attr('role', role); + } + + function addElRoleDescription($el, description) { + $el.attr('aria-roledescription', description); + } + + function addElControls($el, controls) { + $el.attr('aria-controls', controls); + } + + function addElLabel($el, label) { + $el.attr('aria-label', label); + } + + function addElId($el, id) { + $el.attr('id', id); + } + + function addElLive($el, live) { + $el.attr('aria-live', live); + } + + function disableEl($el) { + $el.attr('aria-disabled', true); + } + + function enableEl($el) { + $el.attr('aria-disabled', false); + } + + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const $targetEl = $(e.target); + + if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + + if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + + if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { + $targetEl[0].click(); + } + } + + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + $nextEl, + $prevEl + } = swiper.navigation; + + if ($prevEl && $prevEl.length > 0) { + if (swiper.isBeginning) { + disableEl($prevEl); + makeElNotFocusable($prevEl); + } else { + enableEl($prevEl); + makeElFocusable($prevEl); + } + } + + if ($nextEl && $nextEl.length > 0) { + if (swiper.isEnd) { + disableEl($nextEl); + makeElNotFocusable($nextEl); + } else { + enableEl($nextEl); + makeElFocusable($nextEl); + } + } + } + + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.each(bulletEl => { + const $bulletEl = $(bulletEl); + + if (swiper.params.pagination.clickable) { + makeElFocusable($bulletEl); + + if (!swiper.params.pagination.renderBullet) { + addElRole($bulletEl, 'button'); + addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); + } + } + + if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) { + $bulletEl.attr('aria-current', 'true'); + } else { + $bulletEl.removeAttr('aria-current'); + } + }); + } + + const initNavEl = ($el, wrapperId, message) => { + makeElFocusable($el); + + if ($el[0].tagName !== 'BUTTON') { + addElRole($el, 'button'); + $el.on('keydown', onEnterOrSpaceKey); + } + + addElLabel($el, message); + addElControls($el, wrapperId); + }; + + const handleFocus = e => { + const slideEl = e.target.closest(`.${swiper.params.slideClass}`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + + const initSlides = () => { + const params = swiper.params.a11y; + + if (params.itemRoleDescriptionMessage) { + addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); + } + + if (params.slideRole) { + addElRole($(swiper.slides), params.slideRole); + } + + const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; + + if (params.slideLabelMessage) { + swiper.slides.each((slideEl, index) => { + const $slideEl = $(slideEl); + const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel($slideEl, ariaLabelMessage); + }); + } + }; + + const init = () => { + const params = swiper.params.a11y; + swiper.$el.append(liveRegion); // Container + + const $containerEl = swiper.$el; + + if (params.containerRoleDescriptionMessage) { + addElRoleDescription($containerEl, params.containerRoleDescriptionMessage); + } + + if (params.containerMessage) { + addElLabel($containerEl, params.containerMessage); + } // Wrapper + + + const $wrapperEl = swiper.$wrapperEl; + const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId($wrapperEl, wrapperId); + addElLive($wrapperEl, live); // Slide + + initSlides(); // Navigation + + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl && $nextEl.length) { + initNavEl($nextEl, wrapperId, params.nextSlideMessage); + } + + if ($prevEl && $prevEl.length) { + initNavEl($prevEl, wrapperId, params.prevSlideMessage); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.on('focus', handleFocus, true); + }; + + function destroy() { + if (liveRegion && liveRegion.length > 0) liveRegion.remove(); + let $nextEl; + let $prevEl; + + if (swiper.navigation && swiper.navigation.$nextEl) { + $nextEl = swiper.navigation.$nextEl; + } + + if (swiper.navigation && swiper.navigation.$prevEl) { + $prevEl = swiper.navigation.$prevEl; + } + + if ($nextEl) { + $nextEl.off('keydown', onEnterOrSpaceKey); + } + + if ($prevEl) { + $prevEl.off('keydown', onEnterOrSpaceKey); + } // Pagination + + + if (hasClickablePagination()) { + swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); + } // Tab focus + + + swiper.$el.off('focus', handleFocus, true); + } + + on('beforeInit', () => { + liveRegion = $(``); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + + const slide = swiper.slides.eq(index); + let value = slugify(slide.attr('data-history')); + + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key}/${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key}/${value}`; + } + + if (swiper.params.history.keepQuery) { + value += location.search; + } + + const currentState = window.history.state; + + if (currentState && currentState.value === value) { + return; + } + + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHistory = slugify(slide.attr('data-history')); + + if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) return; + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + + const destroy = () => { + const window = getWindow(); + + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false + } + }); + + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); + + if (newHash !== activeSlideHash) { + const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); + if (typeof newIndex === 'undefined') return; + swiper.slideTo(newIndex); + } + }; + + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); + emit('hashSet'); + } else { + const slide = swiper.slides.eq(swiper.activeIndex); + const hash = slide.attr('data-hash') || slide.attr('data-history'); + document.location.hash = hash || ''; + emit('hashSet'); + } + }; + + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + + if (hash) { + const speed = 0; + + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides.eq(i); + const slideHash = slide.attr('data-hash') || slide.attr('data-history'); + + if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { + const index = slide.index(); + swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); + } + } + } + + if (swiper.params.hashNavigation.watchState) { + $(window).on('hashchange', onHashChange); + } + }; + + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + $(window).off('hashchange', onHashChange); + } + }; + + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + let timeout; + swiper.autoplay = { + running: false, + paused: false + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: true, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + + function run() { + const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); + let delay = swiper.params.autoplay.delay; + + if ($activeSlideEl.attr('data-swiper-autoplay')) { + delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; + } + + clearTimeout(timeout); + timeout = nextTick(() => { + let autoplayResult; + + if (swiper.params.autoplay.reverseDirection) { + if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isBeginning) { + autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + } else if (swiper.params.loop) { + swiper.loopFix(); + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.isEnd) { + autoplayResult = swiper.slideNext(swiper.params.speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); + emit('autoplay'); + } else { + stop(); + } + + if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { + run(); + } + }, delay); + } + + function start() { + if (typeof timeout !== 'undefined') return false; + if (swiper.autoplay.running) return false; + swiper.autoplay.running = true; + emit('autoplayStart'); + run(); + return true; + } + + function stop() { + if (!swiper.autoplay.running) return false; + if (typeof timeout === 'undefined') return false; + + if (timeout) { + clearTimeout(timeout); + timeout = undefined; + } + + swiper.autoplay.running = false; + emit('autoplayStop'); + return true; + } + + function pause(speed) { + if (!swiper.autoplay.running) return; + if (swiper.autoplay.paused) return; + if (timeout) clearTimeout(timeout); + swiper.autoplay.paused = true; + + if (speed === 0 || !swiper.params.autoplay.waitForTransition) { + swiper.autoplay.paused = false; + run(); + } else { + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); + }); + } + } + + function onVisibilityChange() { + const document = getDocument(); + + if (document.visibilityState === 'hidden' && swiper.autoplay.running) { + pause(); + } + + if (document.visibilityState === 'visible' && swiper.autoplay.paused) { + run(); + swiper.autoplay.paused = false; + } + } + + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; + if (e.target !== swiper.$wrapperEl[0]) return; + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + swiper.autoplay.paused = false; + + if (!swiper.autoplay.running) { + stop(); + } else { + run(); + } + } + + function onMouseEnter() { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + emit('autoplayPause'); + pause(); + } + + ['transitionend', 'webkitTransitionEnd'].forEach(event => { + swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); + }); + } + + function onMouseLeave() { + if (swiper.params.autoplay.disableOnInteraction) { + return; + } + + swiper.autoplay.paused = false; + emit('autoplayResume'); + run(); + } + + function attachMouseEvents() { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.$el.on('mouseenter', onMouseEnter); + swiper.$el.on('mouseleave', onMouseLeave); + } + } + + function detachMouseEvents() { + swiper.$el.off('mouseenter', onMouseEnter); + swiper.$el.off('mouseleave', onMouseLeave); + } + + on('init', () => { + if (swiper.params.autoplay.enabled) { + start(); + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + attachMouseEvents(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.autoplay.running) { + if (internal || !swiper.params.autoplay.disableOnInteraction) { + swiper.autoplay.pause(speed); + } else { + stop(); + } + } + }); + on('sliderFirstMove', () => { + if (swiper.autoplay.running) { + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + } else { + pause(); + } + } + }); + on('touchEnd', () => { + if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { + run(); + } + }); + on('destroy', () => { + detachMouseEvents(); + + if (swiper.autoplay.running) { + stop(); + } + + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }); + Object.assign(swiper.autoplay, { + pause, + run, + start, + stop + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + + if (swiper.params.loop) { + let currentIndex = swiper.activeIndex; + + if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { + swiper.loopFix(); // eslint-disable-next-line + + swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; + currentIndex = swiper.activeIndex; + } + + const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); + if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; + } + + swiper.slideTo(slideToIndex); + } + + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + + swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs + + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.removeClass(thumbActiveClass); + + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); + } + } + + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + let currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + + if (thumbsSwiper.params.loop) { + if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { + thumbsSwiper.loopFix(); // eslint-disable-next-line + + thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; + currentThumbsIndex = thumbsSwiper.activeIndex; + } // Find actual thumbs index to slide to + + + const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); + + if (typeof prevThumbsIndex === 'undefined') { + newThumbsIndex = nextThumbsIndex; + } else if (typeof nextThumbsIndex === 'undefined') { + newThumbsIndex = prevThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; + } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { + newThumbsIndex = nextThumbsIndex; + } else { + newThumbsIndex = prevThumbsIndex; + } + + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + init(); + update(true); + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + + function onTouchStart() { + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + + function onTouchMove() { + const { + touchEventsData: data, + touches + } = swiper; // Velocity + + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + const { + params, + $wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; // Time diff + + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + + return; + } + + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + + + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + + newPosition = -newPosition; + } + + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } // Fix duration + + + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + + if (!swiper.animating) { + swiper.animating = true; + $wrapperEl.transitionEnd(() => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + + const initSlides = slidesLength => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + slidesPerRow = slidesNumberEvenToRows / rows; + numFullColumns = Math.floor(slidesLength / rows); + + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + }; + + const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { + const { + slidesPerGroup, + spaceBetween + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; // Set slides order + + let newSlideOrderIndex; + let column; + let row; + + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.css({ + '-webkit-order': newSlideOrderIndex, + order: newSlideOrderIndex + }); + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + + slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); + }; + + const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { + const { + spaceBetween, + centeredSlides, + roundLengths + } = swiper.params; + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + swiper.$wrapperEl.css({ + [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` + }); + + if (centeredSlides) { + snapGrid.splice(0, snapGrid.length); + const newSlidesGrid = []; + + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + + snapGrid.push(...newSlidesGrid); + } + }; + + swiper.grid = { + initSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + $wrapperEl, + params + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + } else { + $wrapperEl.append(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + + if (params.loop) { + swiper.loopDestroy(); + } + + let newActiveIndex = activeIndex + 1; + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.prepend(slides[i]); + } + + newActiveIndex = activeIndex + slides.length; + } else { + $wrapperEl.prepend(slides); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + $wrapperEl, + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + const baseLength = swiper.slides.length; + + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides.eq(i); + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) $wrapperEl.append(slides[i]); + } + + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + $wrapperEl.append(slides); + } + + for (let i = 0; i < slidesBuffer.length; i += 1) { + $wrapperEl.append(slidesBuffer[i]); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + $wrapperEl, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.slides = $wrapperEl.children(`.${params.slideClass}`); + } + + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + + if (params.loop) { + swiper.loopCreate(); + } + + if (!params.observer) { + swiper.update(); + } + + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows + + swiper.slides.each(slideEl => { + const $slideEl = swiper.$(slideEl); + $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove(); + }); // create new one + + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, $slideEl) { + if (effectParams.transformEl) { + return $slideEl.find(effectParams.transformEl).css({ + 'backface-visibility': 'hidden', + '-webkit-backface-visibility': 'hidden' + }); + } + + return $slideEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformEl, + allSlides + } = _ref; + const { + slides, + activeIndex, + $wrapperEl + } = swiper; + + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let $transitionEndTarget; + + if (allSlides) { + $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; + } else { + $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); + } + + $transitionEndTarget.transitionEnd(() => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const triggerEvents = ['webkitTransitionEnd', 'transitionend']; + + for (let i = 0; i < triggerEvents.length; i += 1) { + $wrapperEl.trigger(triggerEvents[i]); + } + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false, + transformEl: null + } + }); + + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = swiper.slides.eq(i); + const offset = $slideEl[0].swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); + const $targetEl = effectTarget(params, $slideEl); + $targetEl.css({ + opacity: slideOpacity + }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.fadeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + + const createSlideShadows = ($slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = $(`
`); + $slideEl.append(shadowBefore); + } + + if (shadowAfter.length === 0) { + shadowAfter = $(`
`); + $slideEl.append(shadowAfter); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.each(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows($(slideEl), progress, isHorizontal); + }); + }; + + const setTranslate = () => { + const { + $el, + $wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let $cubeShadowEl; + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $wrapperEl.append($cubeShadowEl); + } + + $cubeShadowEl.css({ + height: `${swiperWidth}px` + }); + } else { + $cubeShadowEl = $el.find('.swiper-cube-shadow'); + + if ($cubeShadowEl.length === 0) { + $cubeShadowEl = $('
'); + $el.append($cubeShadowEl); + } + } + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let slideIndex = i; + + if (isVirtual) { + slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); + } + + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + + const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + + if (rtl) { + tx = -tx; + } + + if (!isHorizontal) { + ty = tx; + tx = 0; + } + + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + + $slideEl.transform(transform); + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, isHorizontal); + } + } + + $wrapperEl.css({ + '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, + 'transform-origin': `50% 50% -${swiperSize / 2}px` + }); + + if (params.shadow) { + if (isHorizontal) { + $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); + } + } + + const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; + $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); + $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + + const setTransition = duration => { + const { + $el, + slides + } = swiper; + slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + $el.find('.swiper-cube-shadow').transition(duration); + } + }; + + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(params, $slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; + const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; + let $shadowEl = $shadowContainer.children(`.${shadowClass}`); + + if (!$shadowEl.length) { + $shadowEl = $(`
`); + $shadowContainer.append($shadowEl); + } + + return $shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true, + transformEl: null + } + }); + + const createSlideShadows = ($slideEl, progress, params) => { + let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if (shadowBefore.length === 0) { + shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + + if (shadowAfter.length === 0) { + shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + + if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); + if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); + }; + + const recreateShadows = () => { + // Set shadows + const params = swiper.params.flipEffect; + swiper.slides.each(slideEl => { + const $slideEl = $(slideEl); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + + createSlideShadows($slideEl, progress, params); + }); + }; + + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + let progress = $slideEl[0].progress; + + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min($slideEl[0].progress, 1), -1); + } + + const offset = $slideEl[0].swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + + if (params.slideShadows) { + createSlideShadows($slideEl, progress, params); + } + + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.flipEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true, + transformEl: null + } + }); + + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; // Each slide offset from center + + for (let i = 0, length = slides.length; i < length; i += 1) { + const $slideEl = slides.eq(i); + const slideSize = slidesSizesGrid[i]; + const slideOffset = $slideEl[0].swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0 + + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders + + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values + + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(slideTransform); + $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + + if (params.slideShadows) { + // Set shadows + let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); + let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); + + if ($shadowBeforeEl.length === 0) { + $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); + } + + if ($shadowAfterEl.length === 0) { + $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); + } + + if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.coverflowEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); + }; + + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + transformEl: null, + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + + const setTranslate = () => { + const { + slides, + $wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); + } + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); + } + + const offset = $slideEl[0].swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } // set translate + + + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); // set rotates + + r.forEach((value, index) => { + r[index] = data.rotate[index] * Math.abs(progress * multiplier); + }); + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows + + if (custom && data.shadow || !custom) { + let $shadowEl = $slideEl.children('.swiper-slide-shadow'); + + if ($shadowEl.length === 0 && data.shadow) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform).css({ + opacity: opacityString + }); + + if (data.origin) { + $targetEl.css('transform-origin', data.origin); + } + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.creativeEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl, + allSlides: true + }); + }; + + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + transformEl: null, + rotate: true + } + }); + + const setTranslate = () => { + const { + slides, + activeIndex + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = swiper.translate; + + for (let i = 0; i < slides.length; i += 1) { + const $slideEl = slides.eq(i); + const slideProgress = $slideEl[0].progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = $slideEl[0].swiperSlideOffset; + + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`); + } + + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -2 * progress; + let tXAdd = 8 - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + + if (progress < 0) { + // next + tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rotate : 0}deg) + scale(${scaleString}) + `; + + if (params.slideShadows) { + // Set shadows + let $shadowEl = $slideEl.find('.swiper-slide-shadow'); + + if ($shadowEl.length === 0) { + $shadowEl = createShadow(params, $slideEl); + } + + if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + + $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const $targetEl = effectTarget(params, $slideEl); + $targetEl.transform(transform); + } + }; + + const setTransition = duration => { + const { + transformEl + } = swiper.params.cardsEffect; + const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; + $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); + effectVirtualTransitionEnd({ + swiper, + duration, + transformEl + }); + }; + + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})); +//# sourceMappingURL=swiper-bundle.js.map diff --git a/swiper/swiper-bundle.js.map b/swiper/swiper-bundle.js.map new file mode 100644 index 0000000..019bf82 --- /dev/null +++ b/swiper/swiper-bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector =\n $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, $targetEl[0])\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n swiper.freeMode &&\n swiper.animating &&\n !params.cssMode\n ) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || (e.composedPath && e.composedPath());\n swiper.updateClickedSlide((pathTree && pathTree[0]) || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (\n rewindLastIndex !== null &&\n ratio < 0 &&\n Math.abs(ratio) > params.longSwipesRatio\n ) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach((prop) => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n { 'watch-progress': params.watchSlidesProgress },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // rewind\n rewind: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n maxBackfaceHiddenSlides: 10,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if ((swiper.rtl && direction === 'rtl') || (!swiper.rtl && direction === 'ltr')) return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on, emit }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`,\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el\n .find(`.${swiper.params.lazy.loadingClass}`)\n .removeClass(swiper.params.lazy.loadingClass);\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n }\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = (e) => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible =\n swiper.params.watchSlidesProgress &&\n swiper.visibleSlides &&\n swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.on('focus', handleFocus, true);\n };\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false,\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({ currentPos: swiper.rtl ? swiper.translate : -swiper.translate });\n }\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams,\n } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.each((slideEl) => {\n const $slideEl = swiper.$(slideEl);\n $slideEl\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .remove();\n });\n // create new one\n recreateShadows();\n }\n });\n\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each((slideEl) => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier =\n typeof params.modifier === 'function'\n ? params.modifier(centerOffset)\n : centerOffset * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const slideIndex =\n swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n\n const isSwipeToNext =\n (slideIndex === activeIndex || slideIndex === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (slideIndex === activeIndex || slideIndex === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","eventsListeners","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","scrollbarDisabledClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","hasClickablePagination","updatePagination","bulletEl","initNavEl","wrapperId","handleFocus","includes","isActive","ariaLabelMessage","$containerEl","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","requireUpdateOnVirtual","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/swiper/swiper-bundle.min.css b/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..4aefc47 --- /dev/null +++ b/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/swiper/swiper-bundle.min.js b/swiper/swiper-bundle.min.js new file mode 100644 index 0000000..3f3e022 --- /dev/null +++ b/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;se.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;at>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;st.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([])).each((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&en?"next":r=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;an.length&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((t,s)=>{const a=d(t);s=n.length-e.loopedSlides&&l.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(hn.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&h=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=ma.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const _={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,q,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){g(q,e)}static get extendedDefaults(){return q}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else a.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t
`),i.append(r)),r}Object.keys(_).forEach((e=>{Object.keys(_[e]).forEach((t=>{V.prototype[t]=_[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`
${e}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(eb)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`
`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalef.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,hC&&(h=C),gT&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||t.slideTo(t.slides.indexOf(s),0)},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),e.slideRole&&o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(``)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.removeClass(r),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e1?a:o:a-ot.previousIndex?"next":"prev"}else i=t.realIndex,r=i>t.previousIndex?"next":"prev";l&&(i+="next"===r?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(i)<0&&(s.params.centeredSlides?i=i>o?i-Math.floor(a/2)+1:i+Math.floor(a/2)-1:i>o&&s.params.slidesPerGroup,s.slideTo(i,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(o[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`
`),e.append(a)),0===i.length&&(i=d(`
`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('
'),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('
'),e.append(m))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l0&&c<1&&(r||t.params.cssMode)&&n-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V})); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/swiper/swiper-bundle.min.js.map b/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000..7f62a86 --- /dev/null +++ b/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.min.js","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","Methods","addClass","_len","arguments","classes","_key","classNames","map","c","split","classList","add","removeClass","_len2","_key2","remove","hasClass","_len4","_key4","className","contains","toggleClass","_len3","_key3","toggle","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","transform","duration","transitionDuration","on","_len5","args","_key5","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","handler","dom7proxy","splice","trigger","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","writable","eventsEmitter","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","update","updateSize","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","events$1","attachEvents","bind","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","fill","centered","emitContainerClasses","removeClasses","defaults","init","resizeObserver","createElements","url","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","module","m","installModule","createElementIfNotDefined","checkProps","element","classesToSelector","appendSlide","observer","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","effectTarget","effectParams","$slideEl","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","createShadow","shadowClass","$shadowContainer","$shadowEl","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","cache","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","targetEl","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handleFocus","includes","isActive","isVisible","$containerEl","repeat","round","random","live","addElLive","updateNavigation","bulletEl","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","onHashChange","newHash","setHash","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/events-emitter.js","../src/core/update/index.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/translate/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/transition/transitionEmit.js","../src/core/slide/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/loop/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/classes/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/core/transition/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/grab-cursor/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/breakpoints/index.js","../src/core/breakpoints/getBreakpoint.js","../src/core/images/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/shared/create-element-if-not-defined.js","../src/shared/classes-to-selector.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/shared/create-shadow.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/swiper.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/modules/navigation/navigation.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/manipulation.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector =\n $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, $targetEl[0])\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n swiper.freeMode &&\n swiper.animating &&\n !params.cssMode\n ) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || (e.composedPath && e.composedPath());\n swiper.updateClickedSlide((pathTree && pathTree[0]) || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (\n rewindLastIndex !== null &&\n ratio < 0 &&\n Math.abs(ratio) > params.longSwipesRatio\n ) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach((prop) => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n { 'watch-progress': params.watchSlidesProgress },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // rewind\n rewind: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n maxBackfaceHiddenSlides: 10,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if ((swiper.rtl && direction === 'rtl') || (!swiper.rtl && direction === 'ltr')) return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams,\n } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.each((slideEl) => {\n const $slideEl = swiper.$(slideEl);\n $slideEl\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .remove();\n });\n // create new one\n recreateShadows();\n }\n });\n\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on, emit }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`,\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('picture, img, svg, canvas, .swiper-zoom-target')\n .eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el\n .find(`.${swiper.params.lazy.loadingClass}`)\n .removeClass(swiper.params.lazy.loadingClass);\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n }\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = (e) => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible =\n swiper.params.watchSlidesProgress &&\n swiper.visibleSlides &&\n swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.on('focus', handleFocus, true);\n };\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasClickablePagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n\n // Tab focus\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false,\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({ currentPos: swiper.rtl ? swiper.translate : -swiper.translate });\n }\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each((slideEl) => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier =\n typeof params.modifier === 'function'\n ? params.modifier(centerOffset)\n : centerOffset * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const slideIndex =\n swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n\n const isSwipeToNext =\n (slideIndex === activeIndex || slideIndex === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (slideIndex === activeIndex || slideIndex === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n"],"mappings":";;;;;;;;;;;;uOAYA,SAASA,EAASC,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,OAE5B,SAASC,EAAOC,EAAaC,QAAU,IAAvBD,MAAS,SAAc,IAAVC,MAAM,IAC/BH,OAAOI,KAAKD,GAAKE,SAASC,SACK,IAAhBJ,EAAOI,GACdJ,EAAOI,GAAOH,EAAIG,GACbT,EAASM,EAAIG,KAClBT,EAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAC/BN,EAAOC,EAAOI,GAAMH,EAAIG,OAKpC,MAAME,EAAc,CAChBC,KAAM,GACNC,qBACAC,wBACAC,cAAe,CACXC,SACAC,SAAU,IAEdC,cAAa,IACF,KAEXC,iBAAgB,IACL,GAEXC,eAAc,IACH,KAEXC,YAAW,KACA,CACHC,gBAGRC,cAAa,KACF,CACHC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,iBACAC,qBAAoB,IACT,KAInBC,gBAAe,KACJ,IAEXC,WAAU,IACC,KAEXC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhB,SAASC,IACL,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,GAEzD,OADAtC,EAAOqC,EAAK9B,GACL8B,EAGX,MAAME,EAAY,CACdD,SAAU/B,EACViC,UAAW,CACPC,UAAW,IAEfd,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZO,QAAS,CACLC,iBACAC,cACAC,OACAC,UAEJC,YAAa,WACT,OAAOC,MAEXvC,qBACAC,wBACAuC,iBAAgB,KACL,CACHC,iBAAgB,IACL,KAInBC,UACAC,SACAC,OAAQ,GACRC,eACAC,iBACAC,WAAU,KACC,IAEXC,sBAAsBC,GACQ,oBAAfJ,YACPI,IACO,MAEJJ,WAAWI,EAAU,GAEhCC,qBAAqBC,GACS,oBAAfN,YAGXC,aAAaK,KAGrB,SAASC,IACL,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,GAErD,OADA/D,EAAO8D,EAAKvB,GACLuB,ECpHX,MAAME,UAAaC,MACjBnE,YAAYoE,GACW,iBAAVA,EACTC,MAAMD,IAENC,SAAUD,GAAS,IAnBzB,SAAsBrE,GACpB,MAAMuE,EAAQvE,EAAIwE,UAClBtE,OAAOuE,eAAezE,EAAK,YAAa,CACtC0E,IAAG,IACMH,EAGTI,IAAIC,GACFL,EAAMC,UAAYI,KAYlBC,CAAa1B,QAMnB,SAAS2B,EAAUC,QAAU,IAAVA,MAAM,IACvB,MAAMC,EAAM,GAQZ,OAPAD,EAAIxE,SAAQ0E,IACNb,MAAMc,QAAQD,GAChBD,EAAIG,QAAQL,EAAUG,IAEtBD,EAAIG,KAAKF,MAGND,EAET,SAASI,EAAYL,EAAKlB,GACxB,OAAOO,MAAMiB,UAAUC,OAAOC,KAAKR,EAAKlB,GAgC1C,SAAS2B,EAAEC,EAAUC,GACnB,MAAMxB,EAASF,IACTvB,EAAWF,IACjB,IAAIwC,EAAM,GAEV,IAAKW,GAAWD,aAAoBtB,EAClC,OAAOsB,EAGT,IAAKA,EACH,OAAO,IAAItB,EAAKY,GAGlB,GAAwB,iBAAbU,EAAuB,CAChC,MAAME,EAAOF,EAASG,OAEtB,GAAID,EAAKE,QAAQ,MAAQ,GAAKF,EAAKE,QAAQ,MAAQ,EAAG,CACpD,IAAIC,EAAW,MACa,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,MACd,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,SACd,IAAxBH,EAAKE,QAAQ,QAAwC,IAAxBF,EAAKE,QAAQ,SAAcC,EAAW,MACxC,IAA3BH,EAAKE,QAAQ,YAAiBC,EAAW,SACb,IAA5BH,EAAKE,QAAQ,aAAkBC,EAAW,UAC9C,MAAMC,EAAatD,EAASnB,cAAcwE,GAC1CC,EAAWC,UAAYL,EAEvB,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAWvE,WAAWf,OAAQwF,GAAK,EACrDlB,EAAII,KAAKY,EAAWvE,WAAWyE,SAGjClB,EA7CN,SAAaU,EAAUC,GACrB,GAAwB,iBAAbD,EACT,MAAO,CAACA,GAGV,MAAMS,EAAI,GACJlB,EAAMU,EAAQxE,iBAAiBuE,GAErC,IAAK,IAAIQ,EAAI,EAAGA,EAAIjB,EAAIvE,OAAQwF,GAAK,EACnCC,EAAEf,KAAKH,EAAIiB,IAGb,OAAOC,EAiCGC,CAAIV,EAASG,OAAQF,GAAWjD,QAGnC,GAAIgD,EAASW,UAAYX,IAAavB,GAAUuB,IAAahD,EAClEsC,EAAII,KAAKM,QACJ,GAAIrB,MAAMc,QAAQO,GAAW,CAClC,GAAIA,aAAoBtB,EAAM,OAAOsB,EACrCV,EAAMU,EAGR,OAAO,IAAItB,EAtEb,SAAqBY,GACnB,MAAMsB,EAAc,GAEpB,IAAK,IAAIJ,EAAI,EAAGA,EAAIlB,EAAItE,OAAQwF,GAAK,GACE,IAAjCI,EAAYR,QAAQd,EAAIkB,KAAYI,EAAYlB,KAAKJ,EAAIkB,IAG/D,OAAOI,EA+DSC,CAAYvB,IAG9BS,EAAEe,GAAKpC,EAAKkB,UCvFZ,MAAMmB,EAAU,CACdC,SD0FF,WAA8B,QAAAC,EAAAC,UAAAlG,OAATmG,EAAS,IAAAxC,MAAAsC,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAATD,EAASC,GAAAF,UAAAE,GAC5B,MAAMC,EAAahC,EAAU8B,EAAQG,KAAIC,GAAKA,EAAEC,MAAM,QAItD,OAHA9D,KAAK5C,SAAQ0E,IACXA,EAAGiC,UAAUC,OAAOL,MAEf3D,MC9FPiE,YDiGF,WAAiC,QAAAC,EAAAV,UAAAlG,OAATmG,EAAS,IAAAxC,MAAAiD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAATV,EAASU,GAAAX,UAAAW,GAC/B,MAAMR,EAAahC,EAAU8B,EAAQG,KAAIC,GAAKA,EAAEC,MAAM,QAItD,OAHA9D,KAAK5C,SAAQ0E,IACXA,EAAGiC,UAAUK,UAAUT,MAElB3D,MCrGPqE,SDiHF,WAA8B,QAAAC,EAAAd,UAAAlG,OAATmG,EAAS,IAAAxC,MAAAqD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAATd,EAASc,GAAAf,UAAAe,GAC5B,MAAMZ,EAAahC,EAAU8B,EAAQG,KAAIC,GAAKA,EAAEC,MAAM,QACtD,OAAO7B,EAAYjC,MAAM8B,GAChB6B,EAAWxB,QAAOqC,GAAa1C,EAAGiC,UAAUU,SAASD,KAAYlH,OAAS,IAChFA,OAAS,GCpHZoH,YDuGF,WAAiC,QAAAC,EAAAnB,UAAAlG,OAATmG,EAAS,IAAAxC,MAAA0D,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAATnB,EAASmB,GAAApB,UAAAoB,GAC/B,MAAMjB,EAAahC,EAAU8B,EAAQG,KAAIC,GAAKA,EAAEC,MAAM,QACtD9D,KAAK5C,SAAQ0E,IACX6B,EAAWvG,SAAQoH,IACjB1C,EAAGiC,UAAUc,OAAOL,UC1GxBM,KDsHF,SAAcC,EAAOtD,GACnB,GAAyB,IAArB+B,UAAUlG,QAAiC,iBAAVyH,EAEnC,OAAI/E,KAAK,GAAWA,KAAK,GAAGgF,aAAaD,QACzC,EAIF,IAAK,IAAIjC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAyB,IAArBU,UAAUlG,OAEZ0C,KAAK8C,GAAGvE,aAAawG,EAAOtD,QAG5B,IAAK,MAAMwD,KAAYF,EACrB/E,KAAK8C,GAAGmC,GAAYF,EAAME,GAC1BjF,KAAK8C,GAAGvE,aAAa0G,EAAUF,EAAME,IAK3C,OAAOjF,MC1IPkF,WD6IF,SAAoBJ,GAClB,IAAK,IAAIhC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGqC,gBAAgBL,GAG1B,OAAO9E,MCjJPoF,UDsRF,SAAmBA,GACjB,IAAK,IAAItC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGxE,MAAM8G,UAAYA,EAG5B,OAAOpF,M,WAGT,SAAoBqF,GAClB,IAAK,IAAIvC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGxE,MAAMgH,mBAAyC,iBAAbD,EAAyB,GAAEA,MAAeA,EAGtF,OAAOrF,MCjSPuF,GDoSF,WAAqB,QAAAC,EAAAhC,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAuE,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAND,EAAMC,GAAAlC,UAAAkC,GACnB,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWL,EASrD,SAASM,EAAgBC,GACvB,MAAM/I,EAAS+I,EAAE/I,OACjB,IAAKA,EAAQ,OACb,MAAMgJ,EAAYD,EAAE/I,OAAOiJ,eAAiB,GAM5C,GAJID,EAAUvD,QAAQsD,GAAK,GACzBC,EAAUE,QAAQH,GAGhB3D,EAAEpF,GAAQmJ,GAAGR,GAAiBC,EAASQ,MAAMpJ,EAAQgJ,OAAgB,CACvE,MAAMK,EAAUjE,EAAEpF,GAAQqJ,UAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQhJ,OAAQiJ,GAAK,EACnClE,EAAEiE,EAAQC,IAAIH,GAAGR,IAAiBC,EAASQ,MAAMC,EAAQC,GAAIN,IAKvE,SAASO,EAAYR,GACnB,MAAMC,EAAYD,GAAKA,EAAE/I,QAAS+I,EAAE/I,OAAOiJ,eAAsB,GAE7DD,EAAUvD,QAAQsD,GAAK,GACzBC,EAAUE,QAAQH,GAGpBH,EAASQ,MAAMrG,KAAMiG,GAhCA,mBAAZR,EAAK,MACbE,EAAWE,EAAUC,GAAWL,EACjCG,OAAiBa,GAGdX,IAASA,GAAU,GA8BxB,MAAMY,EAASf,EAAU7B,MAAM,KAC/B,IAAI6C,EAEJ,IAAK,IAAI7D,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMhB,EAAK9B,KAAK8C,GAEhB,GAAK8C,EAaH,IAAKe,EAAI,EAAGA,EAAID,EAAOpJ,OAAQqJ,GAAK,EAAG,CACrC,MAAMC,EAAQF,EAAOC,GAChB7E,EAAG+E,oBAAmB/E,EAAG+E,kBAAoB,IAC7C/E,EAAG+E,kBAAkBD,KAAQ9E,EAAG+E,kBAAkBD,GAAS,IAChE9E,EAAG+E,kBAAkBD,GAAO5E,KAAK,CAC/B6D,WACAiB,cAAef,IAEjBjE,EAAGrE,iBAAiBmJ,EAAOb,EAAiBD,QApB9C,IAAKa,EAAI,EAAGA,EAAID,EAAOpJ,OAAQqJ,GAAK,EAAG,CACrC,MAAMC,EAAQF,EAAOC,GAChB7E,EAAGiF,gBAAejF,EAAGiF,cAAgB,IACrCjF,EAAGiF,cAAcH,KAAQ9E,EAAGiF,cAAcH,GAAS,IACxD9E,EAAGiF,cAAcH,GAAO5E,KAAK,CAC3B6D,WACAiB,cAAeN,IAEjB1E,EAAGrE,iBAAiBmJ,EAAOJ,EAAaV,IAiB9C,OAAO9F,MCzWPgH,ID4WF,WAAsB,QAAAC,EAAAzD,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAgG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANzB,EAAMyB,GAAA1D,UAAA0D,GACpB,IAAKvB,EAAWC,EAAgBC,EAAUC,GAAWL,EAE9B,mBAAZA,EAAK,MACbE,EAAWE,EAAUC,GAAWL,EACjCG,OAAiBa,GAGdX,IAASA,GAAU,GACxB,MAAMY,EAASf,EAAU7B,MAAM,KAE/B,IAAK,IAAIhB,EAAI,EAAGA,EAAI4D,EAAOpJ,OAAQwF,GAAK,EAAG,CACzC,MAAM8D,EAAQF,EAAO5D,GAErB,IAAK,IAAI6D,EAAI,EAAGA,EAAI3G,KAAK1C,OAAQqJ,GAAK,EAAG,CACvC,MAAM7E,EAAK9B,KAAK2G,GAChB,IAAIQ,EAQJ,IANKvB,GAAkB9D,EAAGiF,cACxBI,EAAWrF,EAAGiF,cAAcH,GACnBhB,GAAkB9D,EAAG+E,oBAC9BM,EAAWrF,EAAG+E,kBAAkBD,IAG9BO,GAAYA,EAAS7J,OACvB,IAAK,IAAIiJ,EAAIY,EAAS7J,OAAS,EAAGiJ,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMa,EAAUD,EAASZ,GAErBV,GAAYuB,EAAQvB,WAAaA,GAG1BA,GAAYuB,EAAQvB,UAAYuB,EAAQvB,SAASwB,WAAaD,EAAQvB,SAASwB,YAAcxB,GAFtG/D,EAAGpE,oBAAoBkJ,EAAOQ,EAAQN,cAAehB,GACrDqB,EAASG,OAAOf,EAAG,IAITV,IACV/D,EAAGpE,oBAAoBkJ,EAAOQ,EAAQN,cAAehB,GACrDqB,EAASG,OAAOf,EAAG,MAO7B,OAAOvG,MCtZPuH,QD+aF,WACE,MAAMxG,EAASF,IADS,QAAA2G,EAAAhE,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAuG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANhC,EAAMgC,GAAAjE,UAAAiE,GAExB,MAAMf,EAASjB,EAAK,GAAG3B,MAAM,KACvBmC,EAAYR,EAAK,GAEvB,IAAK,IAAI3C,EAAI,EAAGA,EAAI4D,EAAOpJ,OAAQwF,GAAK,EAAG,CACzC,MAAM8D,EAAQF,EAAO5D,GAErB,IAAK,IAAI6D,EAAI,EAAGA,EAAI3G,KAAK1C,OAAQqJ,GAAK,EAAG,CACvC,MAAM7E,EAAK9B,KAAK2G,GAEhB,GAAI5F,EAAOhB,YAAa,CACtB,MAAM2H,EAAM,IAAI3G,EAAOhB,YAAY6G,EAAO,CACxCe,OAAQ1B,EACR2B,SAAS,EACTC,YAAY,IAEd/F,EAAGoE,cAAgBT,EAAKtD,QAAO,CAAC2F,EAAMC,IAAcA,EAAY,IAChEjG,EAAGkG,cAAcN,GACjB5F,EAAGoE,cAAgB,UACZpE,EAAGoE,gBAKhB,OAAOlG,M,cAGT,SAAuBU,GACrB,MAAMuH,EAAMjI,KAYZ,OAJIU,GACFuH,EAAI1C,GAAG,iBAPT,SAAS2C,EAAalC,GAChBA,EAAE/I,SAAW+C,OACjBU,EAAS0B,KAAKpC,KAAMgG,GACpBiC,EAAIjB,IAAI,gBAAiBkB,OAOpBlI,MCtdPmI,WDufF,SAAoBC,GAClB,GAAIpI,KAAK1C,OAAS,EAAG,CACnB,GAAI8K,EAAgB,CAClB,MAAMC,EAASrI,KAAKqI,SACpB,OAAOrI,KAAK,GAAGsI,YAAcC,WAAWF,EAAOnI,iBAAiB,iBAAmBqI,WAAWF,EAAOnI,iBAAiB,gBAGxH,OAAOF,KAAK,GAAGsI,YAGjB,OAAO,MChgBPE,YDihBF,SAAqBJ,GACnB,GAAIpI,KAAK1C,OAAS,EAAG,CACnB,GAAI8K,EAAgB,CAClB,MAAMC,EAASrI,KAAKqI,SACpB,OAAOrI,KAAK,GAAGyI,aAAeF,WAAWF,EAAOnI,iBAAiB,eAAiBqI,WAAWF,EAAOnI,iBAAiB,kBAGvH,OAAOF,KAAK,GAAGyI,aAGjB,OAAO,MC1hBPJ,OD4kBF,WACE,MAAMtH,EAASF,IACf,OAAIb,KAAK,GAAWe,EAAOd,iBAAiBD,KAAK,GAAI,MAC9C,IC9kBP0I,OD4hBF,WACE,GAAI1I,KAAK1C,OAAS,EAAG,CACnB,MAAMyD,EAASF,IACTvB,EAAWF,IACX0C,EAAK9B,KAAK,GACV2I,EAAM7G,EAAG8G,wBACTpL,EAAO8B,EAAS9B,KAChBqL,EAAY/G,EAAG+G,WAAarL,EAAKqL,WAAa,EAC9CC,EAAahH,EAAGgH,YAActL,EAAKsL,YAAc,EACjDC,EAAYjH,IAAOf,EAASA,EAAOiI,QAAUlH,EAAGiH,UAChDE,EAAanH,IAAOf,EAASA,EAAOmI,QAAUpH,EAAGmH,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,GAIlC,OAAO,MC5iBPO,IDglBF,SAAaC,EAAO7H,GAClB,MAAMV,EAASF,IACf,IAAIiC,EAEJ,GAAyB,IAArBU,UAAUlG,OAAc,CAC1B,GAAqB,iBAAVgM,EAGJ,CAEL,IAAKxG,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC,IAAK,MAAMyG,KAAQD,EACjBtJ,KAAK8C,GAAGxE,MAAMiL,GAAQD,EAAMC,GAIhC,OAAOvJ,KATP,GAAIA,KAAK,GAAI,OAAOe,EAAOd,iBAAiBD,KAAK,GAAI,MAAME,iBAAiBoJ,GAahF,GAAyB,IAArB9F,UAAUlG,QAAiC,iBAAVgM,EAAoB,CAEvD,IAAKxG,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC9C,KAAK8C,GAAGxE,MAAMgL,GAAS7H,EAGzB,OAAOzB,KAGT,OAAOA,MC5mBPwJ,KD+mBF,SAAc9I,GACZ,OAAKA,GACLV,KAAK5C,SAAQ,CAAC0E,EAAI2H,KAChB/I,EAAS2F,MAAMvE,EAAI,CAACA,EAAI2H,OAEnBzJ,MAJeA,MC/mBtBwC,KD2nBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAOxC,KAAK,GAAKA,KAAK,GAAG6C,UAAY,KAGvC,IAAK,IAAIC,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAGD,UAAYL,EAGtB,OAAOxC,MCnoBP0J,KDsoBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAO1J,KAAK,GAAKA,KAAK,GAAG2J,YAAYlH,OAAS,KAGhD,IAAK,IAAIK,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC9C,KAAK8C,GAAG6G,YAAcD,EAGxB,OAAO1J,MC9oBPoG,GDipBF,SAAY9D,GACV,MAAMvB,EAASF,IACTvB,EAAWF,IACX0C,EAAK9B,KAAK,GAChB,IAAI4J,EACA9G,EACJ,IAAKhB,QAA0B,IAAbQ,EAA0B,OAAO,EAEnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAIR,EAAG+H,QAAS,OAAO/H,EAAG+H,QAAQvH,GAClC,GAAIR,EAAGgI,sBAAuB,OAAOhI,EAAGgI,sBAAsBxH,GAC9D,GAAIR,EAAGiI,kBAAmB,OAAOjI,EAAGiI,kBAAkBzH,GAGtD,IAFAsH,EAAcvH,EAAEC,GAEXQ,EAAI,EAAGA,EAAI8G,EAAYtM,OAAQwF,GAAK,EACvC,GAAI8G,EAAY9G,KAAOhB,EAAI,OAAO,EAGpC,OAAO,EAGT,GAAIQ,IAAahD,EACf,OAAOwC,IAAOxC,EAGhB,GAAIgD,IAAavB,EACf,OAAOe,IAAOf,EAGhB,GAAIuB,EAASW,UAAYX,aAAoBtB,EAAM,CAGjD,IAFA4I,EAActH,EAASW,SAAW,CAACX,GAAYA,EAE1CQ,EAAI,EAAGA,EAAI8G,EAAYtM,OAAQwF,GAAK,EACvC,GAAI8G,EAAY9G,KAAOhB,EAAI,OAAO,EAGpC,OAAO,EAGT,OAAO,GCvrBP2H,MD0rBF,WACE,IACI3G,EADAkH,EAAQhK,KAAK,GAGjB,GAAIgK,EAAO,CAGT,IAFAlH,EAAI,EAEuC,QAAnCkH,EAAQA,EAAMC,kBACG,IAAnBD,EAAM/G,WAAgBH,GAAK,GAGjC,OAAOA,ICpsBToH,GD0sBF,SAAYT,GACV,QAAqB,IAAVA,EAAuB,OAAOzJ,KACzC,MAAM1C,EAAS0C,KAAK1C,OAEpB,GAAImM,EAAQnM,EAAS,EACnB,OAAO+E,EAAE,IAGX,GAAIoH,EAAQ,EAAG,CACb,MAAMU,EAAc7M,EAASmM,EAC7B,OAA4BpH,EAAxB8H,EAAc,EAAY,GACrB,CAACnK,KAAKmK,KAGjB,OAAO9H,EAAE,CAACrC,KAAKyJ,MCvtBfW,OD0tBF,WACE,IAAIC,EACJ,MAAM/K,EAAWF,IAEjB,IAAK,IAAImH,EAAI,EAAGA,EAAI/C,UAAIlG,OAAQiJ,GAAK,EAAG,CACtC8D,EAAe9D,EAAP,GAAA/C,UAAAlG,QAAOiJ,OAAPE,EAAAjD,UAAO+C,GAEf,IAAK,IAAIzD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACpC,GAAwB,iBAAbuH,EAAuB,CAChC,MAAMC,EAAUhL,EAASnB,cAAc,OAGvC,IAFAmM,EAAQzH,UAAYwH,EAEbC,EAAQC,YACbvK,KAAK8C,GAAG0H,YAAYF,EAAQC,iBAEzB,GAAIF,aAAoBrJ,EAC7B,IAAK,IAAI2F,EAAI,EAAGA,EAAI0D,EAAS/M,OAAQqJ,GAAK,EACxC3G,KAAK8C,GAAG0H,YAAYH,EAAS1D,SAG/B3G,KAAK8C,GAAG0H,YAAYH,GAK1B,OAAOrK,MClvBPyK,QD0vBF,SAAiBJ,GACf,MAAM/K,EAAWF,IACjB,IAAI0D,EACA6D,EAEJ,IAAK7D,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC,GAAwB,iBAAbuH,EAAuB,CAChC,MAAMC,EAAUhL,EAASnB,cAAc,OAGvC,IAFAmM,EAAQzH,UAAYwH,EAEf1D,EAAI2D,EAAQjM,WAAWf,OAAS,EAAGqJ,GAAK,EAAGA,GAAK,EACnD3G,KAAK8C,GAAG4H,aAAaJ,EAAQjM,WAAWsI,GAAI3G,KAAK8C,GAAGzE,WAAW,SAE5D,GAAIgM,aAAoBrJ,EAC7B,IAAK2F,EAAI,EAAGA,EAAI0D,EAAS/M,OAAQqJ,GAAK,EACpC3G,KAAK8C,GAAG4H,aAAaL,EAAS1D,GAAI3G,KAAK8C,GAAGzE,WAAW,SAGvD2B,KAAK8C,GAAG4H,aAAaL,EAAUrK,KAAK8C,GAAGzE,WAAW,IAItD,OAAO2B,MC/wBP2K,KDmzBF,SAAcrI,GACZ,OAAItC,KAAK1C,OAAS,EACZgF,EACEtC,KAAK,GAAG4K,oBAAsBvI,EAAErC,KAAK,GAAG4K,oBAAoBxE,GAAG9D,GAC1DD,EAAE,CAACrC,KAAK,GAAG4K,qBAGbvI,EAAE,IAGPrC,KAAK,GAAG4K,mBAA2BvI,EAAE,CAACrC,KAAK,GAAG4K,qBAC3CvI,EAAE,IAGJA,EAAE,KCh0BTwI,QDm0BF,SAAiBvI,GACf,MAAMwI,EAAU,GAChB,IAAIhJ,EAAK9B,KAAK,GACd,IAAK8B,EAAI,OAAOO,EAAE,IAElB,KAAOP,EAAG8I,oBAAoB,CAC5B,MAAMD,EAAO7I,EAAG8I,mBAEZtI,EACED,EAAEsI,GAAMvE,GAAG9D,IAAWwI,EAAQ9I,KAAK2I,GAClCG,EAAQ9I,KAAK2I,GAEpB7I,EAAK6I,EAGP,OAAOtI,EAAEyI,ICj1BTC,KDo1BF,SAAczI,GACZ,GAAItC,KAAK1C,OAAS,EAAG,CACnB,MAAMwE,EAAK9B,KAAK,GAEhB,OAAIsC,EACER,EAAGkJ,wBAA0B3I,EAAEP,EAAGkJ,wBAAwB5E,GAAG9D,GACxDD,EAAE,CAACP,EAAGkJ,yBAGR3I,EAAE,IAGPP,EAAGkJ,uBAA+B3I,EAAE,CAACP,EAAGkJ,yBACrC3I,EAAE,IAGX,OAAOA,EAAE,KCn2BT4I,QDs2BF,SAAiB3I,GACf,MAAM4I,EAAU,GAChB,IAAIpJ,EAAK9B,KAAK,GACd,IAAK8B,EAAI,OAAOO,EAAE,IAElB,KAAOP,EAAGkJ,wBAAwB,CAChC,MAAMD,EAAOjJ,EAAGkJ,uBAEZ1I,EACED,EAAE0I,GAAM3E,GAAG9D,IAAW4I,EAAQlJ,KAAK+I,GAClCG,EAAQlJ,KAAK+I,GAEpBjJ,EAAKiJ,EAGP,OAAO1I,EAAE6I,ICp3BTC,OD23BF,SAAgB7I,GACd,MAAMgE,EAAU,GAEhB,IAAK,IAAIxD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EACT,OAAvB9C,KAAK8C,GAAGsI,aACN9I,EACED,EAAErC,KAAK8C,GAAGsI,YAAYhF,GAAG9D,IAAWgE,EAAQtE,KAAKhC,KAAK8C,GAAGsI,YAE7D9E,EAAQtE,KAAKhC,KAAK8C,GAAGsI,aAK3B,OAAO/I,EAAEiE,ICv4BTA,QD04BF,SAAiBhE,GACf,MAAMgE,EAAU,GAEhB,IAAK,IAAIxD,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,IAAIqI,EAASnL,KAAK8C,GAAGsI,WAErB,KAAOD,GACD7I,EACED,EAAE8I,GAAQ/E,GAAG9D,IAAWgE,EAAQtE,KAAKmJ,GAEzC7E,EAAQtE,KAAKmJ,GAGfA,EAASA,EAAOC,WAIpB,OAAO/I,EAAEiE,IC15BT+E,QD65BF,SAAiB/I,GACf,IAAI+I,EAAUrL,KAEd,YAAwB,IAAbsC,EACFD,EAAE,KAGNgJ,EAAQjF,GAAG9D,KACd+I,EAAUA,EAAQ/E,QAAQhE,GAAU4H,GAAG,IAGlCmB,ICv6BPC,KD06BF,SAAchJ,GACZ,MAAMiJ,EAAgB,GAEtB,IAAK,IAAIzI,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAM0I,EAAQxL,KAAK8C,GAAG/E,iBAAiBuE,GAEvC,IAAK,IAAIqE,EAAI,EAAGA,EAAI6E,EAAMlO,OAAQqJ,GAAK,EACrC4E,EAAcvJ,KAAKwJ,EAAM7E,IAI7B,OAAOtE,EAAEkJ,ICp7BTnN,SDu7BF,SAAkBkE,GAChB,MAAMlE,EAAW,GAEjB,IAAK,IAAI0E,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAAG,CACvC,MAAMzE,EAAa2B,KAAK8C,GAAG1E,SAE3B,IAAK,IAAIuI,EAAI,EAAGA,EAAItI,EAAWf,OAAQqJ,GAAK,EACrCrE,IAAYD,EAAEhE,EAAWsI,IAAIP,GAAG9D,IACnClE,EAAS4D,KAAK3D,EAAWsI,IAK/B,OAAOtE,EAAEjE,ICn8BT+D,ODsmBF,SAAgBzB,GAEd,OAAO2B,EADQJ,EAAYjC,KAAMU,KCtmBjC0D,ODq8BF,WACE,IAAK,IAAItB,EAAI,EAAGA,EAAI9C,KAAK1C,OAAQwF,GAAK,EAChC9C,KAAK8C,GAAGsI,YAAYpL,KAAK8C,GAAGsI,WAAWK,YAAYzL,KAAK8C,IAG9D,OAAO9C,OErgCT,SAAS0L,EAAShL,EAAUiL,GAC1B,YADqC,IAAXA,MAAQ,GAC3BrL,WAAWI,EAAUiL,GAE9B,SAASC,IACP,OAAOxL,KAAKwL,MAiBd,SAASC,EAAa/J,EAAIgK,QAAY,IAAZA,MAAO,KAC/B,MAAM/K,EAASF,IACf,IAAIkL,EACAC,EACAC,EAEJ,MAAMC,EArBR,SAA0BpK,GACxB,MAAMf,EAASF,IACf,IAAIvC,EAWJ,OAVIyC,EAAOd,mBACT3B,EAAQyC,EAAOd,iBAAiB6B,EAAI,QAEjCxD,GAASwD,EAAGqK,eACf7N,EAAQwD,EAAGqK,cAER7N,IACHA,EAAQwD,EAAGxD,OAGNA,EAQU2B,CAAiB6B,GAwClC,OAtCIf,EAAOqL,iBACTJ,EAAeE,EAAS9G,WAAa8G,EAASG,gBAC1CL,EAAalI,MAAM,KAAKxG,OAAS,IACnC0O,EAAeA,EACZlI,MAAM,MACNF,KAAKb,GAAMA,EAAEuJ,QAAQ,IAAK,OAC1BC,KAAK,OAIVN,EAAkB,IAAIlL,EAAOqL,gBAAiC,SAAjBJ,EAA0B,GAAKA,KAE5EC,EACEC,EAASM,cACTN,EAASO,YACTP,EAASQ,aACTR,EAASS,aACTT,EAAS9G,WACT8G,EAAShM,iBAAiB,aAAaoM,QAAQ,aAAc,sBAC/DP,EAASE,EAAgBW,WAAW9I,MAAM,MAG/B,MAATgI,IAE0BE,EAAxBjL,EAAOqL,gBAAgCH,EAAgBY,IAEhC,KAAlBd,EAAOzO,OAA8BiL,WAAWwD,EAAO,KAE5CxD,WAAWwD,EAAO,KAE3B,MAATD,IAE0BE,EAAxBjL,EAAOqL,gBAAgCH,EAAgBa,IAEhC,KAAlBf,EAAOzO,OAA8BiL,WAAWwD,EAAO,KAE5CxD,WAAWwD,EAAO,KAEjCC,GAAgB,EAEzB,SAASpP,EAASmQ,GAChB,MACe,iBAANA,GACD,OAANA,GACAA,EAAEjQ,aACiD,WAAnDC,OAAOmF,UAAU0K,SAASxK,KAAK2K,GAAGC,MAAM,GAAI,GAGhD,SAASC,EAAOC,GAEd,MAAsB,oBAAXnM,aAAwD,IAAvBA,OAAOoM,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKjK,UAAoC,KAAlBiK,EAAKjK,UAE9C,SAASjG,IACP,MAAMoQ,EAAKrQ,OAAXyG,UAAAlG,QAAA,OAAAmJ,EAAAjD,UAAA,IACM6J,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIvK,EAAI,EAAGA,EAAIU,UAAKlG,OAAQwF,GAAK,EAAG,CACvC,MAAMwK,EAAkBxK,EAAR,GAAAU,UAAAlG,QAAQwF,OAAR2D,EAAAjD,UAAQV,GACxB,GAAIwK,UAAoDL,EAAOK,GAAa,CAC1E,MAAMC,EAAYxQ,OAAOI,KAAKJ,OAAOuQ,IAAanL,QAAQ9E,GAAQgQ,EAAS3K,QAAQrF,GAAO,IAC1F,IAAK,IAAImQ,EAAY,EAAGC,EAAMF,EAAUjQ,OAAQkQ,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAO5Q,OAAO6Q,yBAAyBN,EAAYI,QAC5CjH,IAATkH,GAAsBA,EAAKE,aACzBjR,EAASwQ,EAAGM,KAAa9Q,EAAS0Q,EAAWI,IAC3CJ,EAAWI,GAASI,WACtBV,EAAGM,GAAWJ,EAAWI,GAEzB1Q,EAAOoQ,EAAGM,GAAUJ,EAAWI,KAEvB9Q,EAASwQ,EAAGM,KAAa9Q,EAAS0Q,EAAWI,KACvDN,EAAGM,GAAW,GACVJ,EAAWI,GAASI,WACtBV,EAAGM,GAAWJ,EAAWI,GAEzB1Q,EAAOoQ,EAAGM,GAAUJ,EAAWI,KAGjCN,EAAGM,GAAWJ,EAAWI,MAMnC,OAAON,EAGT,SAASW,EAAejM,EAAIkM,EAASC,GACnCnM,EAAGxD,MAAM4P,YAAYF,EAASC,GAGhC,SAASE,EAAuDC,GAAA,IAAlCC,OAAEA,EAAFC,eAAUA,EAAVC,KAA0BA,GAAQH,EAC9D,MAAMrN,EAASF,IACT2N,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMtJ,EAAWgJ,EAAOO,OAAOC,MAE/BR,EAAOS,UAAUxQ,MAAMyQ,eAAiB,OACxChO,EAAOJ,qBAAqB0N,EAAOW,gBAEnC,MAAMC,EAAMX,EAAiBE,EAAgB,OAAS,OAEhDU,EAAe,CAACC,EAASlS,IACb,SAARgS,GAAkBE,GAAWlS,GAAoB,SAARgS,GAAkBE,GAAWlS,EAG1EmS,EAAU,KACdV,GAAO,IAAItO,MAAOiP,UACA,OAAdV,IACFA,EAAYD,GAGd,MAAMY,EAAWC,KAAKC,IAAID,KAAKE,KAAKf,EAAOC,GAAatJ,EAAU,GAAI,GAChEqK,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBrB,EAAgBkB,GAAgBpB,EAAiBE,GAQvE,GANIU,EAAaW,EAAiBvB,KAChCuB,EAAkBvB,GAEpBD,EAAOS,UAAUgB,SAAS,CACxBvB,CAACA,GAAOsB,IAENX,EAAaW,EAAiBvB,GAUhC,OATAD,EAAOS,UAAUxQ,MAAMyR,SAAW,SAClC1B,EAAOS,UAAUxQ,MAAMyQ,eAAiB,GACxCzO,YAAW,KACT+N,EAAOS,UAAUxQ,MAAMyR,SAAW,GAClC1B,EAAOS,UAAUgB,SAAS,CACxBvB,CAACA,GAAOsB,YAGZ9O,EAAOJ,qBAAqB0N,EAAOW,gBAGrCX,EAAOW,eAAiBjO,EAAON,sBAAsB2O,IAEvDA,ICvLF,IAAIY,ECCAC,ECDAC,EFoCJ,SAASC,IAIP,OAHKH,IACHA,EApCJ,WACE,MAAMjP,EAASF,IACTvB,EAAWF,IAEjB,MAAO,CACLgR,aAAc9Q,EAAS+Q,iBAAmB,mBAAoB/Q,EAAS+Q,gBAAgB/R,MAEvFgS,SACE,iBAAkBvP,GACjBA,EAAOwP,eAAiBjR,aAAoByB,EAAOwP,eAGtDC,gBAAkB,WAChB,IAAIC,GAAkB,EACtB,IACE,MAAMC,EAAO3T,OAAOuE,eAAe,GAAI,UAAW,CAEhDC,MACEkP,GAAkB,KAGtB1P,EAAOtD,iBAAiB,sBAAuB,KAAMiT,GACrD,MAAO1K,IAGT,OAAOyK,EAbS,GAgBlBE,SACS,mBAAoB5P,GAOnB6P,IAELZ,ECwBT,SAASa,EAAUC,GAIjB,YAJiC,IAAhBA,MAAY,IACxBb,IACHA,EA/DJ,SAAwCc,GAAA,IAApBtR,UAAEA,QAAkB,IAAAsR,EAAJ,GAAIA,EACtC,MAAMf,EAAUG,IACVpP,EAASF,IACTmQ,EAAWjQ,EAAOvB,UAAUwR,SAC5BC,EAAKxR,GAAasB,EAAOvB,UAAUC,UAEnCyR,EAAS,CACbC,KAAK,EACLC,SAAS,GAGLC,EAActQ,EAAOV,OAAOiR,MAC5BC,EAAexQ,EAAOV,OAAOmR,OAE7BJ,EAAUH,EAAGQ,MAAM,+BACzB,IAAIC,EAAOT,EAAGQ,MAAM,wBACpB,MAAME,EAAOV,EAAGQ,MAAM,2BAChBG,GAAUF,GAAQT,EAAGQ,MAAM,8BAC3BI,EAAuB,UAAbb,EAChB,IAAIc,EAAqB,aAAbd,EAuCZ,OArBGU,GACDI,GACA9B,EAAQM,OAjBU,CAClB,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAMY5N,QAAS,GAAE2O,KAAeE,MAAmB,IAEzDG,EAAOT,EAAGQ,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINV,IAAYS,IACdX,EAAOa,GAAK,UACZb,EAAOE,SAAU,IAEfM,GAAQE,GAAUD,KACpBT,EAAOa,GAAK,MACZb,EAAOC,KAAM,GAIRD,EAKUc,CAAWlB,IAErBb,ECtDT,SAASgC,IAIP,OAHK/B,IACHA,EAdJ,WACE,MAAMnP,EAASF,IAKf,MAAO,CACLqR,SALF,WACE,MAAMjB,EAAKlQ,EAAOvB,UAAUC,UAAU0S,cACtC,OAAOlB,EAAGvO,QAAQ,WAAa,GAAKuO,EAAGvO,QAAQ,UAAY,GAAKuO,EAAGvO,QAAQ,WAAa,EAG9EwP,GACVE,UAAW,+CAA+CC,KAAKtR,EAAOvB,UAAUC,YAMtE6S,IAELpC,EJ2DTnT,OAAOI,KAAKkG,GAASjG,SAASmV,IAC5BxV,OAAOuE,eAAee,EAAEe,GAAImP,EAAY,CAAE9Q,MAAO4B,EAAQkP,GAAaC,UAAU,OK9ElF,IAAAC,EAAe,CACblN,GAAGmB,EAAQU,EAASsL,GAClB,MAAMC,EAAO3S,KACb,IAAK2S,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZvL,EAAwB,OAAOuL,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAKtC,OAJAhM,EAAO5C,MAAM,KAAK1G,SAASwJ,IACpB+L,EAAKC,gBAAgBhM,KAAQ+L,EAAKC,gBAAgBhM,GAAS,IAChE+L,EAAKC,gBAAgBhM,GAAOkM,GAAQ1L,MAE/BuL,GAGTI,KAAKrM,EAAQU,EAASsL,GACpB,MAAMC,EAAO3S,KACb,IAAK2S,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZvL,EAAwB,OAAOuL,EAC1C,SAASK,IACPL,EAAK3L,IAAIN,EAAQsM,GACbA,EAAYC,uBACPD,EAAYC,eAHO,QAAA1P,EAAAC,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAsC,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAN+B,EAAM/B,GAAAF,UAAAE,GAK5B0D,EAAQf,MAAMsM,EAAMlN,GAGtB,OADAuN,EAAYC,eAAiB7L,EACtBuL,EAAKpN,GAAGmB,EAAQsM,EAAaN,IAGtCQ,MAAM9L,EAASsL,GACb,MAAMC,EAAO3S,KACb,IAAK2S,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZvL,EAAwB,OAAOuL,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAItC,OAHIC,EAAKQ,mBAAmBzQ,QAAQ0E,GAAW,GAC7CuL,EAAKQ,mBAAmBL,GAAQ1L,GAE3BuL,GAGTS,OAAOhM,GACL,MAAMuL,EAAO3S,KACb,IAAK2S,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKQ,mBAAoB,OAAOR,EACrC,MAAMlJ,EAAQkJ,EAAKQ,mBAAmBzQ,QAAQ0E,GAI9C,OAHIqC,GAAS,GACXkJ,EAAKQ,mBAAmB7L,OAAOmC,EAAO,GAEjCkJ,GAGT3L,IAAIN,EAAQU,GACV,MAAMuL,EAAO3S,KACb,OAAK2S,EAAKC,iBAAmBD,EAAKE,UAAkBF,EAC/CA,EAAKC,iBACVlM,EAAO5C,MAAM,KAAK1G,SAASwJ,SACF,IAAZQ,EACTuL,EAAKC,gBAAgBhM,GAAS,GACrB+L,EAAKC,gBAAgBhM,IAC9B+L,EAAKC,gBAAgBhM,GAAOxJ,SAAQ,CAACiW,EAAc5J,MAE/C4J,IAAiBjM,GAChBiM,EAAaJ,gBAAkBI,EAAaJ,iBAAmB7L,IAEhEuL,EAAKC,gBAAgBhM,GAAOU,OAAOmC,EAAO,SAK3CkJ,GAf2BA,GAkBpCW,OACE,MAAMX,EAAO3S,KACb,IAAK2S,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKC,gBAAiB,OAAOD,EAClC,IAAIjM,EACAoB,EACAvF,EANQ,QAAA2B,EAAAV,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAiD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANsB,EAAMtB,GAAAX,UAAAW,GAOW,iBAAZsB,EAAK,IAAmBxE,MAAMc,QAAQ0D,EAAK,KACpDiB,EAASjB,EAAK,GACdqC,EAAOrC,EAAKuH,MAAM,EAAGvH,EAAKnI,QAC1BiF,EAAUoQ,IAEVjM,EAASjB,EAAK,GAAGiB,OACjBoB,EAAOrC,EAAK,GAAGqC,KACfvF,EAAUkD,EAAK,GAAGlD,SAAWoQ,GAE/B7K,EAAK3B,QAAQ5D,GAeb,OAdoBtB,MAAMc,QAAQ2E,GAAUA,EAASA,EAAO5C,MAAM,MAEtD1G,SAASwJ,IACf+L,EAAKQ,oBAAsBR,EAAKQ,mBAAmB7V,QACrDqV,EAAKQ,mBAAmB/V,SAASiW,IAC/BA,EAAahN,MAAM9D,EAAS,CAACqE,KAAUkB,OAGvC6K,EAAKC,iBAAmBD,EAAKC,gBAAgBhM,IAC/C+L,EAAKC,gBAAgBhM,GAAOxJ,SAASiW,IACnCA,EAAahN,MAAM9D,EAASuF,SAI3B6K,IC9FX,IAAAY,EAAe,CACbC,WCXa,WACb,MAAMnF,EAASrO,KACf,IAAIsR,EACAE,EACJ,MAAMiC,EAAMpF,EAAOoF,IAEjBnC,OADiC,IAAxBjD,EAAOO,OAAO0C,OAAiD,OAAxBjD,EAAOO,OAAO0C,MACtDjD,EAAOO,OAAO0C,MAEdmC,EAAI,GAAGC,YAGflC,OADkC,IAAzBnD,EAAOO,OAAO4C,QAAmD,OAAzBnD,EAAOO,OAAO4C,OACtDnD,EAAOO,OAAO4C,OAEdiC,EAAI,GAAGE,aAEH,IAAVrC,GAAejD,EAAOuF,gBAA+B,IAAXpC,GAAgBnD,EAAOwF,eAKtEvC,EACEA,EACAwC,SAASL,EAAIpK,IAAI,iBAAmB,EAAG,IACvCyK,SAASL,EAAIpK,IAAI,kBAAoB,EAAG,IAC1CmI,EACEA,EACAsC,SAASL,EAAIpK,IAAI,gBAAkB,EAAG,IACtCyK,SAASL,EAAIpK,IAAI,mBAAqB,EAAG,IAEvC0K,OAAOC,MAAM1C,KAAQA,EAAQ,GAC7ByC,OAAOC,MAAMxC,KAASA,EAAS,GAEnCzU,OAAOkX,OAAO5F,EAAQ,CACpBiD,QACAE,SACA0C,KAAM7F,EAAOuF,eAAiBtC,EAAQE,MDvBxC2C,aEVa,WACb,MAAM9F,EAASrO,KACf,SAASoU,EAAkBC,GACzB,OAAIhG,EAAOuF,eACFS,EAGF,CACL/C,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjBgD,YAAe,gBACfD,GAEJ,SAASE,EAA0BrH,EAAMsH,GACvC,OAAOjM,WAAW2E,EAAKhN,iBAAiBkU,EAAkBI,KAAW,GAGvE,MAAM5F,EAASP,EAAOO,QAEhB6F,WAAEA,EAAYP,KAAMQ,EAAYC,aAAcC,EAA9CC,SAAmDA,GAAaxG,EAChEyG,EAAYzG,EAAO0G,SAAWnG,EAAOmG,QAAQC,QAC7CC,EAAuBH,EAAYzG,EAAO0G,QAAQG,OAAO5X,OAAS+Q,EAAO6G,OAAO5X,OAChF4X,EAAST,EAAWrW,SAAU,IAAGiQ,EAAOO,OAAOuG,cAC/CC,EAAeN,EAAYzG,EAAO0G,QAAQG,OAAO5X,OAAS4X,EAAO5X,OACvE,IAAI+X,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GAExB,IAAIC,EAAe5G,EAAO6G,mBACE,mBAAjBD,IACTA,EAAe5G,EAAO6G,mBAAmBrT,KAAKiM,IAGhD,IAAIqH,EAAc9G,EAAO+G,kBACE,mBAAhBD,IACTA,EAAc9G,EAAO+G,kBAAkBvT,KAAKiM,IAG9C,MAAMuH,EAAyBvH,EAAOgH,SAAS/X,OACzCuY,EAA2BxH,EAAOiH,WAAWhY,OAEnD,IAAIwY,EAAelH,EAAOkH,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChBvM,EAAQ,EACZ,QAA0B,IAAfiL,EACT,OAE0B,iBAAjBoB,GAA6BA,EAAapT,QAAQ,MAAQ,IACnEoT,EAAgBvN,WAAWuN,EAAaxJ,QAAQ,IAAK,KAAO,IAAOoI,GAGrErG,EAAO4H,aAAeH,EAGlBlB,EAAKM,EAAO7L,IAAI,CAAE6M,WAAY,GAAIC,aAAc,GAAIC,UAAW,KAC9DlB,EAAO7L,IAAI,CAAEiL,YAAa,GAAI6B,aAAc,GAAIC,UAAW,KAG5DxH,EAAOyH,gBAAkBzH,EAAO0H,UAClCvI,EAAeM,EAAOS,UAAW,kCAAmC,IACpEf,EAAeM,EAAOS,UAAW,iCAAkC,KAGrE,MAAMyH,EAAc3H,EAAO4H,MAAQ5H,EAAO4H,KAAKC,KAAO,GAAKpI,EAAOmI,KAMlE,IAAIE,EALAH,GACFlI,EAAOmI,KAAKG,WAAWvB,GAMzB,MAAMwB,EACqB,SAAzBhI,EAAOiI,eACPjI,EAAOkI,aACP/Z,OAAOI,KAAKyR,EAAOkI,aAAa3U,QAAQ9E,QACkB,IAA1CuR,EAAOkI,YAAYzZ,GAAKwZ,gBACrCvZ,OAAS,EAEd,IAAK,IAAIwF,EAAI,EAAGA,EAAIsS,EAActS,GAAK,EAAG,CACxC4T,EAAY,EACZ,MAAMK,EAAQ7B,EAAOhL,GAAGpH,GAIxB,GAHIyT,GACFlI,EAAOmI,KAAKQ,YAAYlU,EAAGiU,EAAO3B,EAAchB,GAErB,SAAzB2C,EAAM1N,IAAI,WAAd,CAEA,GAA6B,SAAzBuF,EAAOiI,cAA0B,CAC/BD,IACF1B,EAAOpS,GAAGxE,MAAM8V,EAAkB,UAAa,IAEjD,MAAM6C,EAAchX,iBAAiB8W,EAAM,IACrCG,EAAmBH,EAAM,GAAGzY,MAAM8G,UAClC+R,EAAyBJ,EAAM,GAAGzY,MAAM+N,gBAO9C,GANI6K,IACFH,EAAM,GAAGzY,MAAM8G,UAAY,QAEzB+R,IACFJ,EAAM,GAAGzY,MAAM+N,gBAAkB,QAE/BuC,EAAOwI,aACTV,EAAYrI,EAAOuF,eAAiBmD,EAAM5O,YAAW,GAAQ4O,EAAMvO,aAAY,OAC1E,CAEL,MAAM8I,EAAQiD,EAA0B0C,EAAa,SAC/CI,EAAc9C,EAA0B0C,EAAa,gBACrDK,EAAe/C,EAA0B0C,EAAa,iBACtDf,EAAa3B,EAA0B0C,EAAa,eACpD3C,EAAcC,EAA0B0C,EAAa,gBACrDM,EAAYN,EAAY/W,iBAAiB,cAC/C,GAAIqX,GAA2B,eAAdA,EACfb,EAAYpF,EAAQ4E,EAAa5B,MAC5B,CACL,MAAMZ,YAAEA,EAAFpL,YAAeA,GAAgByO,EAAM,GAC3CL,EACEpF,EACA+F,EACAC,EACApB,EACA5B,GACChM,EAAcoL,IAGjBwD,IACFH,EAAM,GAAGzY,MAAM8G,UAAY8R,GAEzBC,IACFJ,EAAM,GAAGzY,MAAM+N,gBAAkB8K,GAE/BvI,EAAOwI,eAAcV,EAAYnH,KAAKiI,MAAMd,SAEhDA,GAAahC,GAAc9F,EAAOiI,cAAgB,GAAKf,GAAgBlH,EAAOiI,cAC1EjI,EAAOwI,eAAcV,EAAYnH,KAAKiI,MAAMd,IAE5CxB,EAAOpS,KACToS,EAAOpS,GAAGxE,MAAM8V,EAAkB,UAAa,GAAEsC,OAGjDxB,EAAOpS,KACToS,EAAOpS,GAAG2U,gBAAkBf,GAE9BnB,EAAgBvT,KAAK0U,GAEjB9H,EAAOyH,gBACTN,EAAgBA,EAAgBW,EAAY,EAAIV,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAANlT,IACzBiT,EAAgBA,EAAgBrB,EAAa,EAAIoB,GACzC,IAANhT,IAASiT,EAAgBA,EAAgBrB,EAAa,EAAIoB,GAC1DvG,KAAKmI,IAAI3B,GAAiB,OAAUA,EAAgB,GACpDnH,EAAOwI,eAAcrB,EAAgBxG,KAAKiI,MAAMzB,IAChDtM,EAAQmF,EAAO+I,gBAAmB,GAAGtC,EAASrT,KAAK+T,GACvDT,EAAWtT,KAAK+T,KAEZnH,EAAOwI,eAAcrB,EAAgBxG,KAAKiI,MAAMzB,KAEjDtM,EAAQ8F,KAAKE,IAAIpB,EAAOO,OAAOgJ,mBAAoBnO,IAClD4E,EAAOO,OAAO+I,gBAChB,GAEAtC,EAASrT,KAAK+T,GAChBT,EAAWtT,KAAK+T,GAChBA,EAAgBA,EAAgBW,EAAYZ,GAG9CzH,EAAO4H,aAAeS,EAAYZ,EAElCE,EAAgBU,EAEhBjN,GAAS,GAkBX,GAhBA4E,EAAO4H,YAAc1G,KAAKC,IAAInB,EAAO4H,YAAavB,GAAcgB,EAE5Dd,GAAOC,IAA+B,UAAlBjG,EAAOiJ,QAAwC,cAAlBjJ,EAAOiJ,SAC1DpD,EAAWpL,IAAI,CAAEiI,MAAQ,GAAEjD,EAAO4H,YAAcrH,EAAOkH,mBAErDlH,EAAOkJ,gBACTrD,EAAWpL,IAAI,CACb,CAAC+K,EAAkB,UAAY,GAAE/F,EAAO4H,YAAcrH,EAAOkH,mBAI7DS,GACFlI,EAAOmI,KAAKuB,kBAAkBrB,EAAWrB,EAAUjB,IAIhDxF,EAAOyH,eAAgB,CAC1B,MAAM2B,EAAgB,GACtB,IAAK,IAAIlV,EAAI,EAAGA,EAAIuS,EAAS/X,OAAQwF,GAAK,EAAG,CAC3C,IAAImV,EAAiB5C,EAASvS,GAC1B8L,EAAOwI,eAAca,EAAiB1I,KAAKiI,MAAMS,IACjD5C,EAASvS,IAAMuL,EAAO4H,YAAcvB,GACtCsD,EAAchW,KAAKiW,GAGvB5C,EAAW2C,EAGTzI,KAAKiI,MAAMnJ,EAAO4H,YAAcvB,GAAcnF,KAAKiI,MAAMnC,EAASA,EAAS/X,OAAS,IACpF,GAEA+X,EAASrT,KAAKqM,EAAO4H,YAAcvB,GAKvC,GAFwB,IAApBW,EAAS/X,SAAc+X,EAAW,CAAC,IAEX,IAAxBzG,EAAOkH,aAAoB,CAC7B,MAAMzY,EAAMgR,EAAOuF,gBAAkBgB,EAAM,aAAeR,EAAkB,eAC5Ec,EACG/S,QAAO,CAAC+V,EAAGC,KACLvJ,EAAO0H,SACR6B,IAAejD,EAAO5X,OAAS,IAKpC+L,IAAI,CAAEhM,CAACA,GAAO,GAAEyY,QAGrB,GAAIlH,EAAOyH,gBAAkBzH,EAAOwJ,qBAAsB,CACxD,IAAIC,EAAgB,EACpB9C,EAAgBnY,SAASkb,IACvBD,GAAiBC,GAAkB1J,EAAOkH,aAAelH,EAAOkH,aAAe,MAEjFuC,GAAiBzJ,EAAOkH,aACxB,MAAMyC,EAAUF,EAAgB3D,EAChCW,EAAWA,EAASzR,KAAK4U,GACnBA,EAAO,GAAWhD,EAClBgD,EAAOD,EAAgBA,EAAU7C,EAC9B8C,IAIX,GAAI5J,EAAO6J,yBAA0B,CACnC,IAAIJ,EAAgB,EAKpB,GAJA9C,EAAgBnY,SAASkb,IACvBD,GAAiBC,GAAkB1J,EAAOkH,aAAelH,EAAOkH,aAAe,MAEjFuC,GAAiBzJ,EAAOkH,aACpBuC,EAAgB3D,EAAY,CAC9B,MAAMgE,GAAmBhE,EAAa2D,GAAiB,EACvDhD,EAASjY,SAAQ,CAACob,EAAMG,KACtBtD,EAASsD,GAAaH,EAAOE,KAE/BpD,EAAWlY,SAAQ,CAACob,EAAMG,KACxBrD,EAAWqD,GAAaH,EAAOE,MAYrC,GAPA3b,OAAOkX,OAAO5F,EAAQ,CACpB6G,SACAG,WACAC,aACAC,oBAGE3G,EAAOyH,gBAAkBzH,EAAO0H,UAAY1H,EAAOwJ,qBAAsB,CAC3ErK,EAAeM,EAAOS,UAAW,mCAAuCuG,EAAS,GAAZ,MACrEtH,EACEM,EAAOS,UACP,iCACGT,EAAO6F,KAAO,EAAIqB,EAAgBA,EAAgBjY,OAAS,GAAK,EAAlE,MAEH,MAAMsb,GAAiBvK,EAAOgH,SAAS,GACjCwD,GAAmBxK,EAAOiH,WAAW,GAC3CjH,EAAOgH,SAAWhH,EAAOgH,SAASzR,KAAKkV,GAAMA,EAAIF,IACjDvK,EAAOiH,WAAajH,EAAOiH,WAAW1R,KAAKkV,GAAMA,EAAID,IAkBvD,GAfIzD,IAAiBH,GACnB5G,EAAOiF,KAAK,sBAEV+B,EAAS/X,SAAWsY,IAClBvH,EAAOO,OAAOmK,eAAe1K,EAAO2K,gBACxC3K,EAAOiF,KAAK,yBAEVgC,EAAWhY,SAAWuY,GACxBxH,EAAOiF,KAAK,0BAGV1E,EAAOqK,qBACT5K,EAAO6K,uBAGJpE,GAAclG,EAAO0H,SAA8B,UAAlB1H,EAAOiJ,QAAwC,SAAlBjJ,EAAOiJ,QAAoB,CAC5F,MAAMsB,EAAuB,GAAEvK,EAAOwK,wCAChCC,EAA6BhL,EAAOoF,IAAIpP,SAAS8U,GACnD/D,GAAgBxG,EAAO0K,wBACpBD,GAA4BhL,EAAOoF,IAAInQ,SAAS6V,GAC5CE,GACThL,EAAOoF,IAAIxP,YAAYkV,KF7R3BI,iBGXa,SAA0B1K,GACvC,MAAMR,EAASrO,KACTwZ,EAAe,GACf1E,EAAYzG,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QAC1D,IACIlS,EADA2W,EAAY,EAEK,iBAAV5K,EACTR,EAAOqL,cAAc7K,IACF,IAAVA,GACTR,EAAOqL,cAAcrL,EAAOO,OAAOC,OAGrC,MAAM8K,EAAmBlQ,GACnBqL,EACKzG,EAAO6G,OAAO/S,QAClBL,GAAOgS,SAAShS,EAAGkD,aAAa,2BAA4B,MAAQyE,IACrE,GAEG4E,EAAO6G,OAAOhL,GAAGT,GAAO,GAGjC,GAAoC,SAAhC4E,EAAOO,OAAOiI,eAA4BxI,EAAOO,OAAOiI,cAAgB,EAC1E,GAAIxI,EAAOO,OAAOyH,gBACfhI,EAAOuL,eAAiBvX,EAAE,KAAKmH,MAAMuN,IACpCyC,EAAaxX,KAAK+U,WAGpB,IAAKjU,EAAI,EAAGA,EAAIyM,KAAKsK,KAAKxL,EAAOO,OAAOiI,eAAgB/T,GAAK,EAAG,CAC9D,MAAM2G,EAAQ4E,EAAOyL,YAAchX,EACnC,GAAI2G,EAAQ4E,EAAO6G,OAAO5X,SAAWwX,EAAW,MAChD0E,EAAaxX,KAAK2X,EAAgBlQ,SAItC+P,EAAaxX,KAAK2X,EAAgBtL,EAAOyL,cAI3C,IAAKhX,EAAI,EAAGA,EAAI0W,EAAalc,OAAQwF,GAAK,EACxC,QAA+B,IAApB0W,EAAa1W,GAAoB,CAC1C,MAAM0O,EAASgI,EAAa1W,GAAG2F,aAC/BgR,EAAYjI,EAASiI,EAAYjI,EAASiI,GAK1CA,GAA2B,IAAdA,IAAiBpL,EAAOoG,WAAWpL,IAAI,SAAW,GAAEoQ,QHlCrEP,mBIda,WACb,MAAM7K,EAASrO,KACTkV,EAAS7G,EAAO6G,OACtB,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EACtCoS,EAAOpS,GAAGiX,kBAAoB1L,EAAOuF,eACjCsB,EAAOpS,GAAGkX,WACV9E,EAAOpS,GAAGmX,WJShBC,qBKba,SAA8BzL,QAA2C,IAA3CA,MAAazO,MAAQA,KAAKyO,WAAc,GACnF,MAAMJ,EAASrO,KACT4O,EAASP,EAAOO,QAEhBsG,OAAEA,EAAQP,aAAcC,EAAxBS,SAA6BA,GAAahH,EAEhD,GAAsB,IAAlB6G,EAAO5X,OAAc,YACkB,IAAhC4X,EAAO,GAAG6E,mBAAmC1L,EAAO6K,qBAE/D,IAAIiB,GAAgB1L,EAChBmG,IAAKuF,EAAe1L,GAGxByG,EAAOjR,YAAY2K,EAAOwL,mBAE1B/L,EAAOgM,qBAAuB,GAC9BhM,EAAOuL,cAAgB,GAEvB,IAAK,IAAI9W,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAMiU,EAAQ7B,EAAOpS,GACrB,IAAIwX,EAAcvD,EAAMgD,kBACpBnL,EAAO0H,SAAW1H,EAAOyH,iBAC3BiE,GAAepF,EAAO,GAAG6E,mBAG3B,MAAMQ,GACHJ,GAAgBvL,EAAOyH,eAAiBhI,EAAOmM,eAAiB,GAAKF,IACrEvD,EAAMU,gBAAkB7I,EAAOkH,cAC5B2E,GACHN,EACC9E,EAAS,IACRzG,EAAOyH,eAAiBhI,EAAOmM,eAAiB,GACjDF,IACDvD,EAAMU,gBAAkB7I,EAAOkH,cAC5B4E,IAAgBP,EAAeG,GAC/BK,EAAaD,EAAcrM,EAAOkH,gBAAgBzS,IAErD4X,GAAe,GAAKA,EAAcrM,EAAO6F,KAAO,GAChDyG,EAAa,GAAKA,GAActM,EAAO6F,MACvCwG,GAAe,GAAKC,GAActM,EAAO6F,QAE1C7F,EAAOuL,cAAc5X,KAAK+U,GAC1B1I,EAAOgM,qBAAqBrY,KAAKc,GACjCoS,EAAOhL,GAAGpH,GAAGQ,SAASsL,EAAOwL,oBAE/BrD,EAAMzH,SAAWsF,GAAO2F,EAAgBA,EACxCxD,EAAM6D,iBAAmBhG,GAAO6F,EAAwBA,EAE1DpM,EAAOuL,cAAgBvX,EAAEgM,EAAOuL,gBLlChCiB,eMhBa,SAAwBpM,GACrC,MAAMJ,EAASrO,KACf,QAAyB,IAAdyO,EAA2B,CACpC,MAAMqM,EAAazM,EAAOsG,cAAgB,EAAI,EAE9ClG,EAAaJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAYqM,GAAe,EAE/E,MAAMlM,EAASP,EAAOO,OAChBmM,EAAiB1M,EAAO2M,eAAiB3M,EAAOmM,eACtD,IAAIlL,SAAEA,EAAF2L,YAAYA,EAAZC,MAAyBA,GAAU7M,EACvC,MAAM8M,EAAeF,EACfG,EAASF,EACQ,IAAnBH,GACFzL,EAAW,EACX2L,GAAc,EACdC,GAAQ,IAER5L,GAAYb,EAAYJ,EAAOmM,gBAAkBO,EACjDE,EAAc3L,GAAY,EAC1B4L,EAAQ5L,GAAY,GAEtBvS,OAAOkX,OAAO5F,EAAQ,CACpBiB,WACA2L,cACAC,WAGEtM,EAAOqK,qBAAwBrK,EAAOyH,gBAAkBzH,EAAOyM,aACjEhN,EAAO6L,qBAAqBzL,GAE1BwM,IAAgBE,GAClB9M,EAAOiF,KAAK,yBAEV4H,IAAUE,GACZ/M,EAAOiF,KAAK,oBAET6H,IAAiBF,GAAiBG,IAAWF,IAChD7M,EAAOiF,KAAK,YAGdjF,EAAOiF,KAAK,WAAYhE,INvBxBgM,oBOjBa,WACb,MAAMjN,EAASrO,MAETkV,OAAEA,EAAFtG,OAAUA,EAAV6F,WAAkBA,EAAlBqF,YAA8BA,EAA9ByB,UAA2CA,GAAclN,EACzDyG,EAAYzG,EAAO0G,SAAWnG,EAAOmG,QAAQC,QAMnD,IAAIwG,EAJJtG,EAAOjR,YACJ,GAAE2K,EAAO6M,oBAAoB7M,EAAO8M,kBAAkB9M,EAAO+M,kBAAkB/M,EAAOgN,6BAA6BhN,EAAOiN,2BAA2BjN,EAAOkN,2BAK7JN,EADE1G,EACYzG,EAAOoG,WAAWnJ,KAC7B,IAAGsD,EAAOuG,uCAAuC2E,OAGtC5E,EAAOhL,GAAG4P,GAI1B0B,EAAYlY,SAASsL,EAAO6M,kBAExB7M,EAAOmN,OAELP,EAAYnX,SAASuK,EAAOoN,qBAC9BvH,EACGrW,SACE,IAAGwQ,EAAOuG,mBAAmBvG,EAAOoN,iDAAiDT,OAEvFjY,SAASsL,EAAOgN,2BAEnBnH,EACGrW,SACE,IAAGwQ,EAAOuG,cAAcvG,EAAOoN,gDAAgDT,OAEjFjY,SAASsL,EAAOgN,4BAIvB,IAAIK,EAAYT,EACb3Q,QAAS,IAAG+D,EAAOuG,cACnBjL,GAAG,GACH5G,SAASsL,EAAO8M,gBACf9M,EAAOmN,MAA6B,IAArBE,EAAU3e,SAC3B2e,EAAY/G,EAAOhL,GAAG,GACtB+R,EAAU3Y,SAASsL,EAAO8M,iBAG5B,IAAIQ,EAAYV,EACbvQ,QAAS,IAAG2D,EAAOuG,cACnBjL,GAAG,GACH5G,SAASsL,EAAO+M,gBACf/M,EAAOmN,MAA6B,IAArBG,EAAU5e,SAC3B4e,EAAYhH,EAAOhL,IAAI,GACvBgS,EAAU5Y,SAASsL,EAAO+M,iBAExB/M,EAAOmN,OAELE,EAAU5X,SAASuK,EAAOoN,qBAC5BvH,EACGrW,SACE,IAAGwQ,EAAOuG,mBACTvG,EAAOoN,iDACqBC,EAAUnX,KAAK,gCAE9CxB,SAASsL,EAAOiN,yBAEnBpH,EACGrW,SACE,IAAGwQ,EAAOuG,cACTvG,EAAOoN,gDACoBC,EAAUnX,KAAK,gCAE7CxB,SAASsL,EAAOiN,yBAEjBK,EAAU7X,SAASuK,EAAOoN,qBAC5BvH,EACGrW,SACE,IAAGwQ,EAAOuG,mBACTvG,EAAOoN,iDACqBE,EAAUpX,KAAK,gCAE9CxB,SAASsL,EAAOkN,yBAEnBrH,EACGrW,SACE,IAAGwQ,EAAOuG,cACTvG,EAAOoN,gDACoBE,EAAUpX,KAAK,gCAE7CxB,SAASsL,EAAOkN,0BAGvBzN,EAAO8N,qBP3EPC,kBQlBa,SAA2BC,GACxC,MAAMhO,EAASrO,KACTyO,EAAYJ,EAAOsG,aAAetG,EAAOI,WAAaJ,EAAOI,WAC7D6G,WACJA,EADID,SAEJA,EAFIzG,OAGJA,EACAkL,YAAawC,EACbf,UAAWgB,EACX5D,UAAW6D,GACTnO,EACJ,IACIsK,EADAmB,EAAcuC,EAElB,QAA2B,IAAhBvC,EAA6B,CACtC,IAAK,IAAIhX,EAAI,EAAGA,EAAIwS,EAAWhY,OAAQwF,GAAK,OACT,IAAtBwS,EAAWxS,EAAI,GAEtB2L,GAAa6G,EAAWxS,IACxB2L,EAAY6G,EAAWxS,EAAI,IAAMwS,EAAWxS,EAAI,GAAKwS,EAAWxS,IAAM,EAEtEgX,EAAchX,EACL2L,GAAa6G,EAAWxS,IAAM2L,EAAY6G,EAAWxS,EAAI,KAClEgX,EAAchX,EAAI,GAEX2L,GAAa6G,EAAWxS,KACjCgX,EAAchX,GAId8L,EAAO6N,sBACL3C,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAG7E,GAAIzE,EAAS3S,QAAQ+L,IAAc,EACjCkK,EAAYtD,EAAS3S,QAAQ+L,OACxB,CACL,MAAMiO,EAAOnN,KAAKE,IAAIb,EAAOgJ,mBAAoBkC,GACjDnB,EAAY+D,EAAOnN,KAAKiI,OAAOsC,EAAc4C,GAAQ9N,EAAO+I,gBAG9D,GADIgB,GAAatD,EAAS/X,SAAQqb,EAAYtD,EAAS/X,OAAS,GAC5Dwc,IAAgBwC,EAKlB,YAJI3D,IAAc6D,IAChBnO,EAAOsK,UAAYA,EACnBtK,EAAOiF,KAAK,qBAMhB,MAAMiI,EAAYzH,SAChBzF,EAAO6G,OAAOhL,GAAG4P,GAAahV,KAAK,4BAA8BgV,EACjE,IAGF/c,OAAOkX,OAAO5F,EAAQ,CACpBsK,YACA4C,YACAe,gBACAxC,gBAEFzL,EAAOiF,KAAK,qBACZjF,EAAOiF,KAAK,mBACRiJ,IAAsBhB,GACxBlN,EAAOiF,KAAK,oBAEVjF,EAAOsO,aAAetO,EAAOO,OAAOgO,qBACtCvO,EAAOiF,KAAK,gBR/CduJ,mBSjBa,SAA4B7W,GACzC,MAAMqI,EAASrO,KACT4O,EAASP,EAAOO,OAChBmI,EAAQ1U,EAAE2D,GAAGqF,QAAS,IAAGuD,EAAOuG,cAAc,GACpD,IACIgD,EADA2E,GAAa,EAGjB,GAAI/F,EACF,IAAK,IAAIjU,EAAI,EAAGA,EAAIuL,EAAO6G,OAAO5X,OAAQwF,GAAK,EAC7C,GAAIuL,EAAO6G,OAAOpS,KAAOiU,EAAO,CAC9B+F,GAAa,EACb3E,EAAarV,EACb,MAKN,IAAIiU,IAAS+F,EAUX,OAFAzO,EAAO0O,kBAAetW,OACtB4H,EAAO2O,kBAAevW,GARtB4H,EAAO0O,aAAehG,EAClB1I,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QAC1C3G,EAAO2O,aAAelJ,SAASzR,EAAE0U,GAAOjS,KAAK,2BAA4B,IAEzEuJ,EAAO2O,aAAe7E,EAQxBvJ,EAAOqO,0BACiBxW,IAAxB4H,EAAO2O,cACP3O,EAAO2O,eAAiB3O,EAAOyL,aAE/BzL,EAAO4O,wBC9BX,IAAAxO,EAAe,C,aCJA,SAA4B3C,QAAwC,IAAxCA,MAAO9L,KAAK4T,eAAiB,IAAM,KAC5E,MAEMhF,OAAEA,EAAQ+F,aAAcC,EAAxBnG,UAA6BA,EAA7BgG,WAAwCA,GAF/BzU,KAIf,GAAI4O,EAAOsO,iBACT,OAAOtI,GAAOnG,EAAYA,EAE5B,GAAIG,EAAO0H,QACT,OAAO7H,EAGT,IAAI0O,EAAmBtR,EAAa4I,EAAW,GAAI3I,GAGnD,OAFI8I,IAAKuI,GAAoBA,GAEtBA,GAAoB,GDT3BC,aERa,SAAsB3O,EAAW4O,GAC9C,MAAMhP,EAASrO,MACP2U,aAAcC,EAAhBhG,OAAqBA,EAArB6F,WAA6BA,EAA7B3F,UAAyCA,EAAzCQ,SAAoDA,GAAajB,EACvE,IAwBIiP,EAxBAC,EAAI,EACJC,EAAI,EAGJnP,EAAOuF,eACT2J,EAAI3I,GAAOnG,EAAYA,EAEvB+O,EAAI/O,EAGFG,EAAOwI,eACTmG,EAAIhO,KAAKiI,MAAM+F,GACfC,EAAIjO,KAAKiI,MAAMgG,IAGb5O,EAAO0H,QACTxH,EAAUT,EAAOuF,eAAiB,aAAe,aAAevF,EAAOuF,gBAAkB2J,GAAKC,EACpF5O,EAAOsO,kBACjBzI,EAAWrP,UAAW,eAAcmY,QAAQC,aAE9CnP,EAAOoP,kBAAoBpP,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAOuF,eAAiB2J,EAAIC,EAI/C,MAAMzC,EAAiB1M,EAAO2M,eAAiB3M,EAAOmM,eAEpD8C,EADqB,IAAnBvC,EACY,GAECtM,EAAYJ,EAAOmM,gBAAkBO,EAElDuC,IAAgBhO,GAClBjB,EAAOwM,eAAepM,GAGxBJ,EAAOiF,KAAK,eAAgBjF,EAAOI,UAAW4O,IF7B9C7C,aGTa,WACb,OAAQxa,KAAKqV,SAAS,IHStB2F,aIVa,WACb,OAAQhb,KAAKqV,SAASrV,KAAKqV,SAAS/X,OAAS,IJU7CogB,YKTa,SACbjP,EACAI,EACA8O,EACAC,EACAC,QACA,IALApP,MAAY,QAKZ,IAJAI,MAAQ7O,KAAK4O,OAAOC,YAIpB,IAHA8O,OAAe,QAGf,IAFAC,OAAkB,GAGlB,MAAMvP,EAASrO,MAET4O,OAAEA,EAAFE,UAAUA,GAAcT,EAE9B,GAAIA,EAAOyP,WAAalP,EAAOmP,+BAC7B,OAAO,EAGT,MAAMvD,EAAenM,EAAOmM,eACtBQ,EAAe3M,EAAO2M,eAC5B,IAAIgD,EAQJ,GAPiDA,EAA7CJ,GAAmBnP,EAAY+L,EAA6BA,EACvDoD,GAAmBnP,EAAYuM,EAA6BA,EACjDvM,EAGpBJ,EAAOwM,eAAemD,GAElBpP,EAAO0H,QAAS,CAClB,MAAM2H,EAAM5P,EAAOuF,eACnB,GAAc,IAAV/E,EACFC,EAAUmP,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAK3P,EAAO2B,QAAQI,aAElB,OADAjC,EAAqB,CAAEE,SAAQC,gBAAiB0P,EAAczP,KAAM0P,EAAM,OAAS,SAC5E,EAETnP,EAAUgB,SAAS,CACjB,CAACmO,EAAM,OAAS,QAASD,EACzBE,SAAU,WAGd,OAAO,EAiDT,OA9Cc,IAAVrP,GACFR,EAAOqL,cAAc,GACrBrL,EAAO+O,aAAaY,GAChBL,IACFtP,EAAOiF,KAAK,wBAAyBzE,EAAOgP,GAC5CxP,EAAOiF,KAAK,oBAGdjF,EAAOqL,cAAc7K,GACrBR,EAAO+O,aAAaY,GAChBL,IACFtP,EAAOiF,KAAK,wBAAyBzE,EAAOgP,GAC5CxP,EAAOiF,KAAK,oBAETjF,EAAOyP,YACVzP,EAAOyP,WAAY,EACdzP,EAAO8P,oCACV9P,EAAO8P,kCAAoC,SAAuBnY,GAC3DqI,IAAUA,EAAOwE,WAClB7M,EAAE/I,SAAW+C,OACjBqO,EAAOoG,WAAW,GAAG/W,oBACnB,gBACA2Q,EAAO8P,mCAET9P,EAAOoG,WAAW,GAAG/W,oBACnB,sBACA2Q,EAAO8P,mCAET9P,EAAO8P,kCAAoC,YACpC9P,EAAO8P,kCACVR,GACFtP,EAAOiF,KAAK,oBAIlBjF,EAAOoG,WAAW,GAAGhX,iBACnB,gBACA4Q,EAAO8P,mCAET9P,EAAOoG,WAAW,GAAGhX,iBACnB,sBACA4Q,EAAO8P,sCAKN,IC1FM,SAASC,EAA0DhQ,GAAA,IAA3CC,OAAEA,EAAFsP,aAAUA,EAAVU,UAAwBA,EAAxBC,KAAmCA,GAAQlQ,EAChF,MAAM0L,YAAEA,EAAFwC,cAAeA,GAAkBjO,EACvC,IAAIY,EAAMoP,EASV,GARKpP,IAC8BA,EAA7B6K,EAAcwC,EAAqB,OAC9BxC,EAAcwC,EAAqB,OACjC,SAGbjO,EAAOiF,KAAM,aAAYgL,KAErBX,GAAgB7D,IAAgBwC,EAAe,CACjD,GAAY,UAARrN,EAEF,YADAZ,EAAOiF,KAAM,uBAAsBgL,KAGrCjQ,EAAOiF,KAAM,wBAAuBgL,KACxB,SAARrP,EACFZ,EAAOiF,KAAM,sBAAqBgL,KAElCjQ,EAAOiF,KAAM,sBAAqBgL,MCZxC,IAAAvH,EAAe,CACbwH,QCPa,SACb9U,EACAoF,EACA8O,EACAE,EACAW,GAEA,QADA,IALA/U,MAAQ,QAKR,IAJAoF,MAAQ7O,KAAK4O,OAAOC,YAIpB,IAHA8O,OAAe,GAIM,iBAAVlU,GAAuC,iBAAVA,EACtC,MAAM,IAAIgV,MACP,kFAAiFhV,aAItF,GAAqB,iBAAVA,EAAoB,CAK7B,MAAMiV,EAAgB5K,SAASrK,EAAO,IAStC,IAFsBkV,SAASD,GAG7B,MAAM,IAAID,MACP,sEAAqEhV,aAM1EA,EAAQiV,EAGV,MAAMrQ,EAASrO,KACf,IAAImY,EAAa1O,EACb0O,EAAa,IAAGA,EAAa,GAEjC,MAAMvJ,OACJA,EADIyG,SAEJA,EAFIC,WAGJA,EAHIgH,cAIJA,EAJIxC,YAKJA,EACAnF,aAAcC,EANV9F,UAOJA,EAPIkG,QAQJA,GACE3G,EAEJ,GACGA,EAAOyP,WAAalP,EAAOmP,iCAC1B/I,IAAY6I,IAAaW,EAE3B,OAAO,EAGT,MAAM9B,EAAOnN,KAAKE,IAAIpB,EAAOO,OAAOgJ,mBAAoBO,GACxD,IAAIQ,EAAY+D,EAAOnN,KAAKiI,OAAOW,EAAauE,GAAQrO,EAAOO,OAAO+I,gBAClEgB,GAAatD,EAAS/X,SAAQqb,EAAYtD,EAAS/X,OAAS,IAE3Dwc,GAAelL,EAAOgQ,cAAgB,MAAQtC,GAAiB,IAAMqB,GACxEtP,EAAOiF,KAAK,0BAGd,MAAM7E,GAAa4G,EAASsD,GAM5B,GAHAtK,EAAOwM,eAAepM,GAGlBG,EAAO6N,oBACT,IAAK,IAAI3Z,EAAI,EAAGA,EAAIwS,EAAWhY,OAAQwF,GAAK,EAAG,CAC7C,MAAM+b,GAAuBtP,KAAKiI,MAAkB,IAAZ/I,GAClCqQ,EAAiBvP,KAAKiI,MAAsB,IAAhBlC,EAAWxS,IACvCic,EAAqBxP,KAAKiI,MAA0B,IAApBlC,EAAWxS,EAAI,SACpB,IAAtBwS,EAAWxS,EAAI,GAEtB+b,GAAuBC,GACvBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAEnF3G,EAAarV,EAEb+b,GAAuBC,GACvBD,EAAsBE,IAEtB5G,EAAarV,EAAI,GAEV+b,GAAuBC,IAChC3G,EAAarV,GAKnB,GAAIuL,EAAOsO,aAAexE,IAAe2B,EAAa,CACpD,IACGzL,EAAO2Q,gBACRvQ,EAAYJ,EAAOI,WACnBA,EAAYJ,EAAOmM,eAEnB,OAAO,EAET,IACGnM,EAAO4Q,gBACRxQ,EAAYJ,EAAOI,WACnBA,EAAYJ,EAAO2M,iBAEdlB,GAAe,KAAO3B,EAAY,OAAO,EAIlD,IAAIkG,EAMJ,GAL8BA,EAA1BlG,EAAa2B,EAAyB,OACjC3B,EAAa2B,EAAyB,OAC9B,QAGZlF,IAAQnG,IAAcJ,EAAOI,YAAgBmG,GAAOnG,IAAcJ,EAAOI,UAc5E,OAbAJ,EAAO+N,kBAAkBjE,GAErBvJ,EAAOyM,YACThN,EAAOkL,mBAETlL,EAAOiN,sBACe,UAAlB1M,EAAOiJ,QACTxJ,EAAO+O,aAAa3O,GAEJ,UAAd4P,IACFhQ,EAAO6Q,gBAAgBvB,EAAcU,GACrChQ,EAAO8Q,cAAcxB,EAAcU,KAE9B,EAET,GAAIzP,EAAO0H,QAAS,CAClB,MAAM2H,EAAM5P,EAAOuF,eACbwL,EAAIxK,EAAMnG,GAAaA,EAC7B,GAAc,IAAVI,EAAa,CACf,MAAMiG,EAAYzG,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QACtDF,IACFzG,EAAOS,UAAUxQ,MAAMyQ,eAAiB,OACxCV,EAAOgR,mBAAoB,GAE7BvQ,EAAUmP,EAAM,aAAe,aAAemB,EAC1CtK,GACFrU,uBAAsB,KACpB4N,EAAOS,UAAUxQ,MAAMyQ,eAAiB,GACxCV,EAAOiR,yBAA0B,SAGhC,CACL,IAAKjR,EAAO2B,QAAQI,aAElB,OADAjC,EAAqB,CAAEE,SAAQC,eAAgB8Q,EAAG7Q,KAAM0P,EAAM,OAAS,SAChE,EAETnP,EAAUgB,SAAS,CACjB,CAACmO,EAAM,OAAS,OAAQmB,EACxBlB,SAAU,WAGd,OAAO,EAsCT,OAnCA7P,EAAOqL,cAAc7K,GACrBR,EAAO+O,aAAa3O,GACpBJ,EAAO+N,kBAAkBjE,GACzB9J,EAAOiN,sBACPjN,EAAOiF,KAAK,wBAAyBzE,EAAOgP,GAC5CxP,EAAO6Q,gBAAgBvB,EAAcU,GAEvB,IAAVxP,EACFR,EAAO8Q,cAAcxB,EAAcU,GACzBhQ,EAAOyP,YACjBzP,EAAOyP,WAAY,EACdzP,EAAOkR,gCACVlR,EAAOkR,8BAAgC,SAAuBvZ,GACvDqI,IAAUA,EAAOwE,WAClB7M,EAAE/I,SAAW+C,OACjBqO,EAAOoG,WAAW,GAAG/W,oBACnB,gBACA2Q,EAAOkR,+BAETlR,EAAOoG,WAAW,GAAG/W,oBACnB,sBACA2Q,EAAOkR,+BAETlR,EAAOkR,8BAAgC,YAChClR,EAAOkR,8BACdlR,EAAO8Q,cAAcxB,EAAcU,MAGvChQ,EAAOoG,WAAW,GAAGhX,iBAAiB,gBAAiB4Q,EAAOkR,+BAC9DlR,EAAOoG,WAAW,GAAGhX,iBACnB,sBACA4Q,EAAOkR,iCAIJ,GDhMPC,YEVa,SACb/V,EACAoF,EACA8O,EACAE,GAEA,QADA,IAJApU,MAAQ,QAIR,IAHAoF,MAAQ7O,KAAK4O,OAAOC,YAGpB,IAFA8O,OAAe,GAGM,iBAAVlU,EAAoB,CAK7B,MAAMiV,EAAgB5K,SAASrK,EAAO,IAStC,IAFsBkV,SAASD,GAG7B,MAAM,IAAID,MACP,sEAAqEhV,aAM1EA,EAAQiV,EAGV,MAAMrQ,EAASrO,KACf,IAAIyf,EAAWhW,EAKf,OAJI4E,EAAOO,OAAOmN,OAChB0D,GAAYpR,EAAOqR,cAGdrR,EAAOkQ,QAAQkB,EAAU5Q,EAAO8O,EAAcE,IF1BrD8B,UGVa,SAAmB9Q,EAA2B8O,EAAqBE,QAAU,IAA1DhP,MAAQ7O,KAAK4O,OAAOC,YAAsC,IAA/B8O,OAAe,GAC1E,MAAMtP,EAASrO,MACT8d,UAAEA,EAAF9I,QAAaA,EAAbpG,OAAsBA,GAAWP,EACvC,IAAK2G,EAAS,OAAO3G,EACrB,IAAIuR,EAAWhR,EAAO+I,eACO,SAAzB/I,EAAOiI,eAAsD,IAA1BjI,EAAO+I,gBAAwB/I,EAAOiR,qBAC3ED,EAAWrQ,KAAKC,IAAInB,EAAOyR,qBAAqB,WAAW,GAAO,IAEpE,MAAMC,EAAY1R,EAAOyL,YAAclL,EAAOgJ,mBAAqB,EAAIgI,EACvE,GAAIhR,EAAOmN,KAAM,CACf,GAAI+B,GAAalP,EAAOoR,kBAAmB,OAAO,EAClD3R,EAAO4R,UAEP5R,EAAO6R,YAAc7R,EAAOoG,WAAW,GAAG3L,WAE5C,OAAI8F,EAAOuR,QAAU9R,EAAO6M,MACnB7M,EAAOkQ,QAAQ,EAAG1P,EAAO8O,EAAcE,GAEzCxP,EAAOkQ,QAAQlQ,EAAOyL,YAAciG,EAAWlR,EAAO8O,EAAcE,IHP3EuC,UIXa,SAAmBvR,EAA2B8O,EAAqBE,QAAU,IAA1DhP,MAAQ7O,KAAK4O,OAAOC,YAAsC,IAA/B8O,OAAe,GAC1E,MAAMtP,EAASrO,MACT4O,OAAEA,EAAFkP,UAAUA,EAAVzI,SAAqBA,EAArBC,WAA+BA,EAA/BX,aAA2CA,EAA3CK,QAAyDA,GAAY3G,EAC3E,IAAK2G,EAAS,OAAO3G,EAErB,GAAIO,EAAOmN,KAAM,CACf,GAAI+B,GAAalP,EAAOoR,kBAAmB,OAAO,EAClD3R,EAAO4R,UAEP5R,EAAO6R,YAAc7R,EAAOoG,WAAW,GAAG3L,WAI5C,SAASuX,EAAUC,GACjB,OAAIA,EAAM,GAAW/Q,KAAKiI,MAAMjI,KAAKmI,IAAI4I,IAClC/Q,KAAKiI,MAAM8I,GAEpB,MAAMzB,EAAsBwB,EANV1L,EAAetG,EAAOI,WAAaJ,EAAOI,WAOtD8R,EAAqBlL,EAASzR,KAAK0c,GAAQD,EAAUC,KAE3D,IAAIE,EAAWnL,EAASkL,EAAmB7d,QAAQmc,GAAuB,GAC1E,QAAwB,IAAb2B,GAA4B5R,EAAO0H,QAAS,CACrD,IAAImK,EACJpL,EAASjY,SAAQ,CAACob,EAAMG,KAClBkG,GAAuBrG,IAEzBiI,EAAgB9H,WAGS,IAAlB8H,IACTD,EAAWnL,EAASoL,EAAgB,EAAIA,EAAgB,EAAIA,IAGhE,IAAIC,EAAY,EAahB,QAZwB,IAAbF,IACTE,EAAYpL,EAAW5S,QAAQ8d,GAC3BE,EAAY,IAAGA,EAAYrS,EAAOyL,YAAc,GAEzB,SAAzBlL,EAAOiI,eACmB,IAA1BjI,EAAO+I,gBACP/I,EAAOiR,qBAEPa,EAAYA,EAAYrS,EAAOyR,qBAAqB,YAAY,GAAQ,EACxEY,EAAYnR,KAAKC,IAAIkR,EAAW,KAGhC9R,EAAOuR,QAAU9R,EAAO4M,YAAa,CACvC,MAAM0F,EACJtS,EAAOO,OAAOmG,SAAW1G,EAAOO,OAAOmG,QAAQC,SAAW3G,EAAO0G,QAC7D1G,EAAO0G,QAAQG,OAAO5X,OAAS,EAC/B+Q,EAAO6G,OAAO5X,OAAS,EAC7B,OAAO+Q,EAAOkQ,QAAQoC,EAAW9R,EAAO8O,EAAcE,GAExD,OAAOxP,EAAOkQ,QAAQmC,EAAW7R,EAAO8O,EAAcE,IJzCtD+C,WKZa,SAAoB/R,EAA2B8O,EAAqBE,GAEjF,YAF2F,IAA1DhP,MAAQ7O,KAAK4O,OAAOC,YAAsC,IAA/B8O,OAAe,GAC5D3d,KACDue,QADCve,KACc8Z,YAAajL,EAAO8O,EAAcE,ILW/DgD,eMba,SACbhS,EACA8O,EACAE,EACAiD,QACA,IAJAjS,MAAQ7O,KAAK4O,OAAOC,YAIpB,IAHA8O,OAAe,QAGf,IADAmD,MAAY,IAEZ,MAAMzS,EAASrO,KACf,IAAIyJ,EAAQ4E,EAAOyL,YACnB,MAAM4C,EAAOnN,KAAKE,IAAIpB,EAAOO,OAAOgJ,mBAAoBnO,GAClDkP,EAAY+D,EAAOnN,KAAKiI,OAAO/N,EAAQiT,GAAQrO,EAAOO,OAAO+I,gBAE7DlJ,EAAYJ,EAAOsG,aAAetG,EAAOI,WAAaJ,EAAOI,UAEnE,GAAIA,GAAaJ,EAAOgH,SAASsD,GAAY,CAG3C,MAAMoI,EAAc1S,EAAOgH,SAASsD,GAEhClK,EAAYsS,GADC1S,EAAOgH,SAASsD,EAAY,GACHoI,GAAeD,IACvDrX,GAAS4E,EAAOO,OAAO+I,oBAEpB,CAGL,MAAM6I,EAAWnS,EAAOgH,SAASsD,EAAY,GAEzClK,EAAY+R,IADInS,EAAOgH,SAASsD,GACO6H,GAAYM,IACrDrX,GAAS4E,EAAOO,OAAO+I,gBAM3B,OAHAlO,EAAQ8F,KAAKC,IAAI/F,EAAO,GACxBA,EAAQ8F,KAAKE,IAAIhG,EAAO4E,EAAOiH,WAAWhY,OAAS,GAE5C+Q,EAAOkQ,QAAQ9U,EAAOoF,EAAO8O,EAAcE,INnBlDZ,oBOZa,WACb,MAAM5O,EAASrO,MACT4O,OAAEA,EAAF6F,WAAUA,GAAepG,EAEzBwI,EACqB,SAAzBjI,EAAOiI,cAA2BxI,EAAOyR,uBAAyBlR,EAAOiI,cAC3E,IACI0E,EADAyF,EAAe3S,EAAO2O,aAE1B,GAAIpO,EAAOmN,KAAM,CACf,GAAI1N,EAAOyP,UAAW,OACtBvC,EAAYzH,SAASzR,EAAEgM,EAAO0O,cAAcjY,KAAK,2BAA4B,IACzE8J,EAAOyH,eAEP2K,EAAe3S,EAAOqR,aAAe7I,EAAgB,GACrDmK,EAAe3S,EAAO6G,OAAO5X,OAAS+Q,EAAOqR,aAAe7I,EAAgB,GAE5ExI,EAAO4R,UACPe,EAAevM,EACZrW,SACE,IAAGwQ,EAAOuG,uCAAuCoG,YAAoB3M,EAAOoN,wBAE9E9R,GAAG,GACHT,QAEHiC,GAAS,KACP2C,EAAOkQ,QAAQyC,OAGjB3S,EAAOkQ,QAAQyC,GAERA,EAAe3S,EAAO6G,OAAO5X,OAASuZ,GAC/CxI,EAAO4R,UACPe,EAAevM,EACZrW,SACE,IAAGwQ,EAAOuG,uCAAuCoG,YAAoB3M,EAAOoN,wBAE9E9R,GAAG,GACHT,QAEHiC,GAAS,KACP2C,EAAOkQ,QAAQyC,OAGjB3S,EAAOkQ,QAAQyC,QAGjB3S,EAAOkQ,QAAQyC,KC7CnB,IAAAjF,EAAe,CACbkF,WCFa,WACb,MAAM5S,EAASrO,KACTV,EAAWF,KACXwP,OAAEA,EAAF6F,WAAUA,GAAepG,EAEzB6S,EACJzM,EAAWrW,WAAWd,OAAS,EAAI+E,EAAEoS,EAAWrW,WAAW,GAAGgN,YAAcqJ,EAC9EyM,EAAU9iB,SAAU,IAAGwQ,EAAOuG,cAAcvG,EAAOoN,uBAAuB5X,SAE1E,IAAI8Q,EAASgM,EAAU9iB,SAAU,IAAGwQ,EAAOuG,cAE3C,GAAIvG,EAAOuS,uBAAwB,CACjC,MAAMC,EAAiBxS,EAAO+I,eAAkBzC,EAAO5X,OAASsR,EAAO+I,eACvE,GAAIyJ,IAAmBxS,EAAO+I,eAAgB,CAC5C,IAAK,IAAI7U,EAAI,EAAGA,EAAIse,EAAgBte,GAAK,EAAG,CAC1C,MAAMue,EAAYhf,EAAE/C,EAASnB,cAAc,QAAQmF,SAChD,GAAEsL,EAAOuG,cAAcvG,EAAO0S,mBAEjCJ,EAAU9W,OAAOiX,GAEnBnM,EAASgM,EAAU9iB,SAAU,IAAGwQ,EAAOuG,eAId,SAAzBvG,EAAOiI,eAA6BjI,EAAO8Q,eAAc9Q,EAAO8Q,aAAexK,EAAO5X,QAE1F+Q,EAAOqR,aAAenQ,KAAKsK,KAAKtR,WAAWqG,EAAO8Q,cAAgB9Q,EAAOiI,cAAe,KACxFxI,EAAOqR,cAAgB9Q,EAAO2S,qBAC1BlT,EAAOqR,aAAexK,EAAO5X,SAC/B+Q,EAAOqR,aAAexK,EAAO5X,QAG/B,MAAMkkB,EAAgB,GAChBC,EAAe,GACrBvM,EAAO1L,MAAK,CAAC1H,EAAI2H,KACf,MAAMsN,EAAQ1U,EAAEP,GACZ2H,EAAQ4E,EAAOqR,cACjB+B,EAAazf,KAAKF,GAEhB2H,EAAQyL,EAAO5X,QAAUmM,GAASyL,EAAO5X,OAAS+Q,EAAOqR,cAC3D8B,EAAcxf,KAAKF,GAErBiV,EAAMjS,KAAK,0BAA2B2E,MAExC,IAAK,IAAI3G,EAAI,EAAGA,EAAI2e,EAAankB,OAAQwF,GAAK,EAC5Coe,EAAU9W,OAAO/H,EAAEof,EAAa3e,GAAG4e,WAAU,IAAOpe,SAASsL,EAAOoN,sBAEtE,IAAK,IAAIlZ,EAAI0e,EAAclkB,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EAClDoe,EAAUzW,QAAQpI,EAAEmf,EAAc1e,GAAG4e,WAAU,IAAOpe,SAASsL,EAAOoN,uBD7CxEiE,QENa,WACb,MAAM5R,EAASrO,KAEfqO,EAAOiF,KAAK,iBAEZ,MAAMwG,YACJA,EADI5E,OAEJA,EAFIwK,aAGJA,EAHIT,eAIJA,EAJID,eAKJA,EALI3J,SAMJA,EACAV,aAAcC,GACZvG,EACJ,IAAIoR,EACJpR,EAAO4Q,gBAAiB,EACxB5Q,EAAO2Q,gBAAiB,EAExB,MACM2C,GADiBtM,EAASyE,GACHzL,EAAOxC,eAGpC,GAAIiO,EAAc4F,EAAc,CAC9BD,EAAWvK,EAAO5X,OAAwB,EAAfoiB,EAAmB5F,EAC9C2F,GAAYC,EACSrR,EAAOkQ,QAAQkB,EAAU,GAAG,GAAO,IAC3B,IAATkC,GAClBtT,EAAO+O,cAAcxI,GAAOvG,EAAOI,UAAYJ,EAAOI,WAAakT,QAEhE,GAAI7H,GAAe5E,EAAO5X,OAASoiB,EAAc,CAEtDD,GAAYvK,EAAO5X,OAASwc,EAAc4F,EAC1CD,GAAYC,EACSrR,EAAOkQ,QAAQkB,EAAU,GAAG,GAAO,IAC3B,IAATkC,GAClBtT,EAAO+O,cAAcxI,GAAOvG,EAAOI,UAAYJ,EAAOI,WAAakT,GAGvEtT,EAAO4Q,eAAiBA,EACxB5Q,EAAO2Q,eAAiBA,EAExB3Q,EAAOiF,KAAK,YFlCZsO,YGPa,WACb,MACMnN,WAAEA,EAAF7F,OAAcA,EAAdsG,OAAsBA,GADblV,KAEfyU,EACGrW,SACE,IAAGwQ,EAAOuG,cAAcvG,EAAOoN,wBAAwBpN,EAAOuG,cAAcvG,EAAO0S,mBAErFld,SACH8Q,EAAOhQ,WAAW,6BCUL,SAAS2c,EAAajb,GACnC,MAAMyH,EAASrO,KACTV,EAAWF,IACX2B,EAASF,IAETiH,EAAOuG,EAAOyT,iBACdlT,OAAEA,EAAFmT,QAAUA,EAAV/M,QAAmBA,GAAY3G,EACrC,IAAK2G,EAAS,OAEd,GAAI3G,EAAOyP,WAAalP,EAAOmP,+BAC7B,QAEG1P,EAAOyP,WAAalP,EAAO0H,SAAW1H,EAAOmN,MAChD1N,EAAO4R,UAET,IAAIja,EAAIY,EACJZ,EAAEgc,gBAAehc,EAAIA,EAAEgc,eAC3B,IAAIC,EAAY5f,EAAE2D,EAAE/I,QAEpB,GAAiC,YAA7B2R,EAAOsT,oBACJD,EAAU5W,QAAQgD,EAAOS,WAAWxR,OAAQ,OAGnD,GADAwK,EAAKqa,aAA0B,eAAXnc,EAAEoc,MACjBta,EAAKqa,cAAgB,UAAWnc,GAAiB,IAAZA,EAAEqc,MAAa,OACzD,IAAKva,EAAKqa,cAAgB,WAAYnc,GAAKA,EAAEsc,OAAS,EAAG,OACzD,GAAIxa,EAAKya,WAAaza,EAAK0a,QAAS,SAGL5T,EAAO6T,gBAA4C,KAA1B7T,EAAO6T,gBACnCzc,EAAE/I,QAAU+I,EAAE/I,OAAOylB,YAAc9b,EAAM+b,MAAQ/b,EAAM+b,KAAK,KACtFV,EAAY5f,EAAEuE,EAAM+b,KAAK,KAG3B,MAAMC,EAAoBhU,EAAOgU,kBAC7BhU,EAAOgU,kBACN,IAAGhU,EAAO6T,iBACTI,KAAoB7c,EAAE/I,SAAU+I,EAAE/I,OAAOylB,YAG/C,GACE9T,EAAOkU,YACND,EAtDL,SAAwBvgB,EAAUygB,GAUhC,YAV6C,IAAbA,MAAO/iB,MACvC,SAASgjB,EAAclhB,GACrB,IAAKA,GAAMA,IAAO1C,KAAiB0C,IAAOjB,IAAa,OAAO,KAC1DiB,EAAGmhB,eAAcnhB,EAAKA,EAAGmhB,cAC7B,MAAMzX,EAAQ1J,EAAGuJ,QAAQ/I,GACzB,OAAKkJ,GAAU1J,EAAGohB,YAGX1X,GAASwX,EAAclhB,EAAGohB,cAAcrkB,MAFtC,KAIJmkB,CAAcD,GA6CfI,CAAeP,EAAmBX,EAAU,IAC5CA,EAAU5W,QAAQuX,GAAmB,IAGzC,YADAvU,EAAO+U,YAAa,GAItB,GAAIxU,EAAOyU,eACJpB,EAAU5W,QAAQuD,EAAOyU,cAAc,GAAI,OAGlDtB,EAAQuB,SAAsB,eAAXtd,EAAEoc,KAAwBpc,EAAEud,cAAc,GAAGC,MAAQxd,EAAEwd,MAC1EzB,EAAQ0B,SAAsB,eAAXzd,EAAEoc,KAAwBpc,EAAEud,cAAc,GAAGG,MAAQ1d,EAAE0d,MAC1E,MAAMC,EAAS5B,EAAQuB,SACjBM,EAAS7B,EAAQ0B,SAIjBI,EAAqBjV,EAAOiV,oBAAsBjV,EAAOkV,sBACzDC,EAAqBnV,EAAOmV,oBAAsBnV,EAAOoV,sBAC/D,GACEH,IACCF,GAAUI,GAAsBJ,GAAU5iB,EAAOkjB,WAAaF,GAC/D,CACA,GAA2B,YAAvBF,EAGF,OAFAjd,EAAMsd,iBAqBV,GAfAnnB,OAAOkX,OAAOnM,EAAM,CAClBya,WAAW,EACXC,SAAS,EACT2B,qBAAqB,EACrBC,iBAAa3d,EACb4d,iBAAa5d,IAGfsb,EAAQ4B,OAASA,EACjB5B,EAAQ6B,OAASA,EACjB9b,EAAKwc,eAAiB1Y,IACtByC,EAAO+U,YAAa,EACpB/U,EAAOmF,aACPnF,EAAOkW,oBAAiB9d,EACpBmI,EAAOkS,UAAY,IAAGhZ,EAAK0c,oBAAqB,GACrC,eAAXxe,EAAEoc,KAAuB,CAC3B,IAAI8B,GAAiB,EACjBjC,EAAU7b,GAAG0B,EAAK2c,qBACpBP,GAAiB,EACa,WAA1BjC,EAAU,GAAGpkB,WACfiK,EAAKya,WAAY,IAInBjjB,EAAS3B,eACT0E,EAAE/C,EAAS3B,eAAeyI,GAAG0B,EAAK2c,oBAClCnlB,EAAS3B,gBAAkBskB,EAAU,IAErC3iB,EAAS3B,cAAcC,OAGzB,MAAM8mB,EACJR,GAAkB7V,EAAOsW,gBAAkB/V,EAAOgW,0BAEjDhW,EAAOiW,gCAAiCH,GACxCzC,EAAU,GAAG6C,mBAEd9e,EAAEke,iBAIJ7V,EAAOO,OAAOmW,UACd1W,EAAOO,OAAOmW,SAAS/P,SACvB3G,EAAO0W,UACP1W,EAAOyP,YACNlP,EAAO0H,SAERjI,EAAO0W,SAASlD,eAElBxT,EAAOiF,KAAK,aAActN,GCxIb,SAASgf,EAAYpe,GAClC,MAAMtH,EAAWF,IACXiP,EAASrO,KACT8H,EAAOuG,EAAOyT,iBACdlT,OAAEA,EAAFmT,QAAUA,EAASpN,aAAcC,EAAjCI,QAAsCA,GAAY3G,EACxD,IAAK2G,EAAS,OACd,IAAIhP,EAAIY,EAER,GADIZ,EAAEgc,gBAAehc,EAAIA,EAAEgc,gBACtBla,EAAKya,UAIR,YAHIza,EAAKuc,aAAevc,EAAKsc,aAC3B/V,EAAOiF,KAAK,oBAAqBtN,IAIrC,GAAI8B,EAAKqa,cAA2B,cAAXnc,EAAEoc,KAAsB,OACjD,MAAM6C,EACO,cAAXjf,EAAEoc,MAAwBpc,EAAEud,gBAAkBvd,EAAEud,cAAc,IAAMvd,EAAEkf,eAAe,IACjF1B,EAAmB,cAAXxd,EAAEoc,KAAuB6C,EAAYzB,MAAQxd,EAAEwd,MACvDE,EAAmB,cAAX1d,EAAEoc,KAAuB6C,EAAYvB,MAAQ1d,EAAE0d,MAC7D,GAAI1d,EAAEmf,wBAGJ,OAFApD,EAAQ4B,OAASH,OACjBzB,EAAQ6B,OAASF,GAGnB,IAAKrV,EAAOsW,eAaV,OAZKtiB,EAAE2D,EAAE/I,QAAQmJ,GAAG0B,EAAK2c,qBACvBpW,EAAO+U,YAAa,QAElBtb,EAAKya,YACPxlB,OAAOkX,OAAO8N,EAAS,CACrB4B,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZ5b,EAAKwc,eAAiB1Y,MAI1B,GAAI9D,EAAKqa,cAAgBvT,EAAOwW,sBAAwBxW,EAAOmN,KAC7D,GAAI1N,EAAOwF,cAET,GACG6P,EAAQ3B,EAAQ6B,QAAUvV,EAAOI,WAAaJ,EAAO2M,gBACrD0I,EAAQ3B,EAAQ6B,QAAUvV,EAAOI,WAAaJ,EAAOmM,eAItD,OAFA1S,EAAKya,WAAY,OACjBza,EAAK0a,SAAU,QAGZ,GACJgB,EAAQzB,EAAQ4B,QAAUtV,EAAOI,WAAaJ,EAAO2M,gBACrDwI,EAAQzB,EAAQ4B,QAAUtV,EAAOI,WAAaJ,EAAOmM,eAEtD,OAGJ,GAAI1S,EAAKqa,cAAgB7iB,EAAS3B,eAC5BqI,EAAE/I,SAAWqC,EAAS3B,eAAiB0E,EAAE2D,EAAE/I,QAAQmJ,GAAG0B,EAAK2c,mBAG7D,OAFA3c,EAAK0a,SAAU,OACfnU,EAAO+U,YAAa,GAOxB,GAHItb,EAAKqc,qBACP9V,EAAOiF,KAAK,YAAatN,GAEvBA,EAAEud,eAAiBvd,EAAEud,cAAcjmB,OAAS,EAAG,OAEnDykB,EAAQuB,SAAWE,EACnBzB,EAAQ0B,SAAWC,EAEnB,MAAM2B,EAAQtD,EAAQuB,SAAWvB,EAAQ4B,OACnC2B,EAAQvD,EAAQ0B,SAAW1B,EAAQ6B,OACzC,GAAIvV,EAAOO,OAAOkS,WAAavR,KAAKgW,KAAKF,GAAS,EAAIC,GAAS,GAAKjX,EAAOO,OAAOkS,UAChF,OAEF,QAAgC,IAArBhZ,EAAKsc,YAA6B,CAC3C,IAAIoB,EAEDnX,EAAOuF,gBAAkBmO,EAAQ0B,WAAa1B,EAAQ6B,QACtDvV,EAAOwF,cAAgBkO,EAAQuB,WAAavB,EAAQ4B,OAErD7b,EAAKsc,aAAc,EAGfiB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA6D,IAA/CjW,KAAKkW,MAAMlW,KAAKmI,IAAI4N,GAAQ/V,KAAKmI,IAAI2N,IAAiB9V,KAAKK,GACzE9H,EAAKsc,YAAc/V,EAAOuF,eACtB4R,EAAa5W,EAAO4W,WACpB,GAAKA,EAAa5W,EAAO4W,YAYnC,GARI1d,EAAKsc,aACP/V,EAAOiF,KAAK,oBAAqBtN,QAEH,IAArB8B,EAAKuc,cACVtC,EAAQuB,WAAavB,EAAQ4B,QAAU5B,EAAQ0B,WAAa1B,EAAQ6B,SACtE9b,EAAKuc,aAAc,IAGnBvc,EAAKsc,YAEP,YADAtc,EAAKya,WAAY,GAGnB,IAAKza,EAAKuc,YACR,OAEFhW,EAAO+U,YAAa,GACfxU,EAAO0H,SAAWtQ,EAAE6B,YACvB7B,EAAEke,iBAEAtV,EAAO8W,2BAA6B9W,EAAO+W,QAC7C3f,EAAE4f,kBAGC9d,EAAK0a,UACJ5T,EAAOmN,OAASnN,EAAO0H,SACzBjI,EAAO4R,UAETnY,EAAK+d,eAAiBxX,EAAOxC,eAC7BwC,EAAOqL,cAAc,GACjBrL,EAAOyP,WACTzP,EAAOoG,WAAWlN,QAAQ,qCAE5BO,EAAKge,qBAAsB,GAEvBlX,EAAOmX,aAAyC,IAA1B1X,EAAO2Q,iBAAqD,IAA1B3Q,EAAO4Q,gBACjE5Q,EAAO2X,eAAc,GAEvB3X,EAAOiF,KAAK,kBAAmBtN,IAEjCqI,EAAOiF,KAAK,aAActN,GAC1B8B,EAAK0a,SAAU,EAEf,IAAIb,EAAOtT,EAAOuF,eAAiByR,EAAQC,EAC3CvD,EAAQJ,KAAOA,EAEfA,GAAQ/S,EAAOqX,WACXrR,IAAK+M,GAAQA,GAEjBtT,EAAOkW,eAAiB5C,EAAO,EAAI,OAAS,OAC5C7Z,EAAKqV,iBAAmBwE,EAAO7Z,EAAK+d,eAEpC,IAAIK,GAAsB,EACtBC,EAAkBvX,EAAOuX,gBA4C7B,GA3CIvX,EAAOwW,sBACTe,EAAkB,GAEhBxE,EAAO,GAAK7Z,EAAKqV,iBAAmB9O,EAAOmM,gBAC7C0L,GAAsB,EAClBtX,EAAOwX,aACTte,EAAKqV,iBACH9O,EAAOmM,eACP,IACEnM,EAAOmM,eAAiB1S,EAAK+d,eAAiBlE,IAASwE,IACpDxE,EAAO,GAAK7Z,EAAKqV,iBAAmB9O,EAAO2M,iBACpDkL,GAAsB,EAClBtX,EAAOwX,aACTte,EAAKqV,iBACH9O,EAAO2M,eACP,GACC3M,EAAO2M,eAAiBlT,EAAK+d,eAAiBlE,IAASwE,IAG1DD,IACFlgB,EAAEmf,yBAA0B,IAK3B9W,EAAO2Q,gBACkB,SAA1B3Q,EAAOkW,gBACPzc,EAAKqV,iBAAmBrV,EAAK+d,iBAE7B/d,EAAKqV,iBAAmBrV,EAAK+d,iBAG5BxX,EAAO4Q,gBACkB,SAA1B5Q,EAAOkW,gBACPzc,EAAKqV,iBAAmBrV,EAAK+d,iBAE7B/d,EAAKqV,iBAAmBrV,EAAK+d,gBAE1BxX,EAAO4Q,gBAAmB5Q,EAAO2Q,iBACpClX,EAAKqV,iBAAmBrV,EAAK+d,gBAI3BjX,EAAOkS,UAAY,EAAG,CACxB,KAAIvR,KAAKmI,IAAIiK,GAAQ/S,EAAOkS,WAAahZ,EAAK0c,oBAa5C,YADA1c,EAAKqV,iBAAmBrV,EAAK+d,gBAX7B,IAAK/d,EAAK0c,mBAQR,OAPA1c,EAAK0c,oBAAqB,EAC1BzC,EAAQ4B,OAAS5B,EAAQuB,SACzBvB,EAAQ6B,OAAS7B,EAAQ0B,SACzB3b,EAAKqV,iBAAmBrV,EAAK+d,oBAC7B9D,EAAQJ,KAAOtT,EAAOuF,eAClBmO,EAAQuB,SAAWvB,EAAQ4B,OAC3B5B,EAAQ0B,SAAW1B,EAAQ6B,QAShChV,EAAOyX,eAAgBzX,EAAO0H,WAIhC1H,EAAOmW,UAAYnW,EAAOmW,SAAS/P,SAAW3G,EAAO0W,UACtDnW,EAAOqK,uBAEP5K,EAAO+N,oBACP/N,EAAOiN,uBAELjN,EAAOO,OAAOmW,UAAYnW,EAAOmW,SAAS/P,SAAW3G,EAAO0W,UAC9D1W,EAAO0W,SAASC,cAGlB3W,EAAOwM,eAAe/S,EAAKqV,kBAE3B9O,EAAO+O,aAAatV,EAAKqV,mBClOZ,SAASmJ,EAAW1f,GACjC,MAAMyH,EAASrO,KACT8H,EAAOuG,EAAOyT,iBAEdlT,OAAEA,EAAFmT,QAAUA,EAASpN,aAAcC,EAAjCU,WAAsCA,EAAtCN,QAAkDA,GAAY3G,EACpE,IAAK2G,EAAS,OACd,IAAIhP,EAAIY,EAMR,GALIZ,EAAEgc,gBAAehc,EAAIA,EAAEgc,eACvBla,EAAKqc,qBACP9V,EAAOiF,KAAK,WAAYtN,GAE1B8B,EAAKqc,qBAAsB,GACtBrc,EAAKya,UAMR,OALIza,EAAK0a,SAAW5T,EAAOmX,YACzB1X,EAAO2X,eAAc,GAEvBle,EAAK0a,SAAU,OACf1a,EAAKuc,aAAc,GAKnBzV,EAAOmX,YACPje,EAAK0a,SACL1a,EAAKya,aACsB,IAA1BlU,EAAO2Q,iBAAqD,IAA1B3Q,EAAO4Q,iBAE1C5Q,EAAO2X,eAAc,GAIvB,MAAMO,EAAe3a,IACf4a,EAAWD,EAAeze,EAAKwc,eAGrC,GAAIjW,EAAO+U,WAAY,CACrB,MAAMqD,EAAWzgB,EAAE2c,MAAS3c,EAAE0gB,cAAgB1gB,EAAE0gB,eAChDrY,EAAOwO,mBAAoB4J,GAAYA,EAAS,IAAOzgB,EAAE/I,QACzDoR,EAAOiF,KAAK,YAAatN,GACrBwgB,EAAW,KAAOD,EAAeze,EAAK6e,cAAgB,KACxDtY,EAAOiF,KAAK,wBAAyBtN,GASzC,GALA8B,EAAK6e,cAAgB/a,IACrBF,GAAS,KACF2C,EAAOwE,YAAWxE,EAAO+U,YAAa,OAI1Ctb,EAAKya,YACLza,EAAK0a,UACLnU,EAAOkW,gBACS,IAAjBxC,EAAQJ,MACR7Z,EAAKqV,mBAAqBrV,EAAK+d,eAK/B,OAHA/d,EAAKya,WAAY,EACjBza,EAAK0a,SAAU,OACf1a,EAAKuc,aAAc,GAOrB,IAAIuC,EAOJ,GAXA9e,EAAKya,WAAY,EACjBza,EAAK0a,SAAU,EACf1a,EAAKuc,aAAc,EAIjBuC,EADEhY,EAAOyX,aACIzR,EAAMvG,EAAOI,WAAaJ,EAAOI,WAEhC3G,EAAKqV,iBAGjBvO,EAAO0H,QACT,OAGF,GAAIjI,EAAOO,OAAOmW,UAAYnW,EAAOmW,SAAS/P,QAE5C,YADA3G,EAAO0W,SAASuB,WAAW,CAAEM,eAK/B,IAAIC,EAAY,EACZC,EAAYzY,EAAOkH,gBAAgB,GACvC,IACE,IAAIzS,EAAI,EACRA,EAAIwS,EAAWhY,OACfwF,GAAKA,EAAI8L,EAAOgJ,mBAAqB,EAAIhJ,EAAO+I,eAChD,CACA,MAAMoI,EAAYjd,EAAI8L,EAAOgJ,mBAAqB,EAAI,EAAIhJ,EAAO+I,oBACxB,IAA9BrC,EAAWxS,EAAIid,GACpB6G,GAActR,EAAWxS,IAAM8jB,EAAatR,EAAWxS,EAAIid,KAC7D8G,EAAY/jB,EACZgkB,EAAYxR,EAAWxS,EAAIid,GAAazK,EAAWxS,IAE5C8jB,GAActR,EAAWxS,KAClC+jB,EAAY/jB,EACZgkB,EAAYxR,EAAWA,EAAWhY,OAAS,GAAKgY,EAAWA,EAAWhY,OAAS,IAInF,IAAIypB,EAAmB,KACnBC,EAAkB,KAClBpY,EAAOuR,SACL9R,EAAO4M,YACT+L,EACE3Y,EAAOO,OAAOmG,SAAW1G,EAAOO,OAAOmG,QAAQC,SAAW3G,EAAO0G,QAC7D1G,EAAO0G,QAAQG,OAAO5X,OAAS,EAC/B+Q,EAAO6G,OAAO5X,OAAS,EACpB+Q,EAAO6M,QAChB6L,EAAmB,IAIvB,MAAME,GAASL,EAAatR,EAAWuR,IAAcC,EAC/C/G,EAAY8G,EAAYjY,EAAOgJ,mBAAqB,EAAI,EAAIhJ,EAAO+I,eACzE,GAAI6O,EAAW5X,EAAOsY,aAAc,CAElC,IAAKtY,EAAOuY,WAEV,YADA9Y,EAAOkQ,QAAQlQ,EAAOyL,aAGM,SAA1BzL,EAAOkW,iBACL0C,GAASrY,EAAOwY,gBAClB/Y,EAAOkQ,QAAQ3P,EAAOuR,QAAU9R,EAAO6M,MAAQ6L,EAAmBF,EAAY9G,GAC3E1R,EAAOkQ,QAAQsI,IAEQ,SAA1BxY,EAAOkW,iBACL0C,EAAQ,EAAIrY,EAAOwY,gBACrB/Y,EAAOkQ,QAAQsI,EAAY9G,GAEP,OAApBiH,GACAC,EAAQ,GACR1X,KAAKmI,IAAIuP,GAASrY,EAAOwY,gBAEzB/Y,EAAOkQ,QAAQyI,GAEf3Y,EAAOkQ,QAAQsI,QAGd,CAEL,IAAKjY,EAAOyY,YAEV,YADAhZ,EAAOkQ,QAAQlQ,EAAOyL,aAItBzL,EAAOiZ,aACNthB,EAAE/I,SAAWoR,EAAOiZ,WAAWC,QAAUvhB,EAAE/I,SAAWoR,EAAOiZ,WAAWE,QAQhExhB,EAAE/I,SAAWoR,EAAOiZ,WAAWC,OACxClZ,EAAOkQ,QAAQsI,EAAY9G,GAE3B1R,EAAOkQ,QAAQsI,IATe,SAA1BxY,EAAOkW,gBACTlW,EAAOkQ,QAA6B,OAArBwI,EAA4BA,EAAmBF,EAAY9G,GAE9C,SAA1B1R,EAAOkW,gBACTlW,EAAOkQ,QAA4B,OAApByI,EAA2BA,EAAkBH,KC5JrD,SAASY,IACtB,MAAMpZ,EAASrO,MAET4O,OAAEA,EAAF9M,GAAUA,GAAOuM,EAEvB,GAAIvM,GAAyB,IAAnBA,EAAGwG,YAAmB,OAG5BsG,EAAOkI,aACTzI,EAAOqZ,gBAIT,MAAM1I,eAAEA,EAAFC,eAAkBA,EAAlB5J,SAAkCA,GAAahH,EAGrDA,EAAO2Q,gBAAiB,EACxB3Q,EAAO4Q,gBAAiB,EAExB5Q,EAAOmF,aACPnF,EAAO8F,eAEP9F,EAAOiN,uBAEqB,SAAzB1M,EAAOiI,eAA4BjI,EAAOiI,cAAgB,IAC3DxI,EAAO6M,QACN7M,EAAO4M,cACP5M,EAAOO,OAAOyH,eAEfhI,EAAOkQ,QAAQlQ,EAAO6G,OAAO5X,OAAS,EAAG,GAAG,GAAO,GAEnD+Q,EAAOkQ,QAAQlQ,EAAOyL,YAAa,GAAG,GAAO,GAG3CzL,EAAOsZ,UAAYtZ,EAAOsZ,SAASC,SAAWvZ,EAAOsZ,SAASE,QAChExZ,EAAOsZ,SAASG,MAGlBzZ,EAAO4Q,eAAiBA,EACxB5Q,EAAO2Q,eAAiBA,EAEpB3Q,EAAOO,OAAOmK,eAAiB1D,IAAahH,EAAOgH,UACrDhH,EAAO2K,gBC1CI,SAAS+O,EAAQ/hB,GAC9B,MAAMqI,EAASrO,KACVqO,EAAO2G,UACP3G,EAAO+U,aACN/U,EAAOO,OAAOoZ,eAAehiB,EAAEke,iBAC/B7V,EAAOO,OAAOqZ,0BAA4B5Z,EAAOyP,YACnD9X,EAAE4f,kBACF5f,EAAEkiB,8BCPO,SAASC,IACtB,MAAM9Z,EAASrO,MACT8O,UAAEA,EAAF6F,aAAaA,EAAbK,QAA2BA,GAAY3G,EAC7C,IAAK2G,EAAS,OAad,IAAIsI,EAZJjP,EAAOoP,kBAAoBpP,EAAOI,UAC9BJ,EAAOuF,eACTvF,EAAOI,WAAaK,EAAU7F,WAE9BoF,EAAOI,WAAaK,EAAU/F,UAGP,IAArBsF,EAAOI,YAAiBJ,EAAOI,UAAY,GAE/CJ,EAAO+N,oBACP/N,EAAOiN,sBAGP,MAAMP,EAAiB1M,EAAO2M,eAAiB3M,EAAOmM,eAEpD8C,EADqB,IAAnBvC,EACY,GAEC1M,EAAOI,UAAYJ,EAAOmM,gBAAkBO,EAEzDuC,IAAgBjP,EAAOiB,UACzBjB,EAAOwM,eAAelG,GAAgBtG,EAAOI,UAAYJ,EAAOI,WAGlEJ,EAAOiF,KAAK,eAAgBjF,EAAOI,WAAW,GClBhD,IAAI2Z,GAAqB,EACzB,SAASC,KAET,MAAM3hB,EAAS,CAAC2H,EAAQyE,KACtB,MAAMxT,EAAWF,KACXwP,OAAEA,EAAF0Z,YAAUA,EAAVxmB,GAAuBA,EAAvBgN,UAA2BA,EAA3BoC,OAAsCA,EAAtClB,QAA8CA,GAAY3B,EAC1DvI,IAAY8I,EAAO+W,OACnB4C,EAAuB,OAAXzV,EAAkB,mBAAqB,sBACnD0V,EAAe1V,EAGrB,GAAK9C,EAAQM,MAIN,CACL,MAAME,IACkB,eAAtB8X,EAAYG,QAA0BzY,EAAQQ,kBAAmB5B,EAAO8Z,mBACpE,CAAEC,SAAS,EAAM7iB,SAAS,GAEhChE,EAAGymB,GAAWD,EAAYG,MAAOpa,EAAOwT,aAAcrR,GACtD1O,EAAGymB,GACDD,EAAYM,KACZva,EAAO2W,YACPhV,EAAQQ,gBAAkB,CAAEmY,SAAS,EAAO7iB,WAAYA,GAE1DhE,EAAGymB,GAAWD,EAAYO,IAAKxa,EAAOiY,WAAY9V,GAC9C8X,EAAYQ,QACdhnB,EAAGymB,GAAWD,EAAYQ,OAAQza,EAAOiY,WAAY9V,QAhBvD1O,EAAGymB,GAAWD,EAAYG,MAAOpa,EAAOwT,cAAc,GACtDviB,EAASipB,GAAWD,EAAYM,KAAMva,EAAO2W,YAAalf,GAC1DxG,EAASipB,GAAWD,EAAYO,IAAKxa,EAAOiY,YAAY,IAkBtD1X,EAAOoZ,eAAiBpZ,EAAOqZ,2BACjCnmB,EAAGymB,GAAW,QAASla,EAAO0Z,SAAS,GAErCnZ,EAAO0H,SACTxH,EAAUyZ,GAAW,SAAUla,EAAO8Z,UAIpCvZ,EAAOma,qBACT1a,EAAOma,GACLtX,EAAOC,KAAOD,EAAOE,QACjB,0CACA,wBACJqW,GACA,GAGFpZ,EAAOma,GAAc,iBAAkBf,GAAU,IAgCrD,IAAAuB,EAAe,CACbC,aA7BF,WACE,MAAM5a,EAASrO,KACTV,EAAWF,KACXwP,OAAEA,EAAFoB,QAAUA,GAAY3B,EAE5BA,EAAOwT,aAAeA,EAAaqH,KAAK7a,GACxCA,EAAO2W,YAAcA,EAAYkE,KAAK7a,GACtCA,EAAOiY,WAAaA,EAAW4C,KAAK7a,GAEhCO,EAAO0H,UACTjI,EAAO8Z,SAAWA,EAASe,KAAK7a,IAGlCA,EAAO0Z,QAAUA,EAAQmB,KAAK7a,GAE1B2B,EAAQM,QAAU8X,IACpB9oB,EAAS7B,iBAAiB,aAAc4qB,GACxCD,GAAqB,GAGvB1hB,EAAO2H,EAAQ,OAUf8a,aAPF,WAEEziB,EADe1G,KACA,SCrFjB,MAAMopB,EAAgB,CAAC/a,EAAQO,IACtBP,EAAOmI,MAAQ5H,EAAO4H,MAAQ5H,EAAO4H,KAAKC,KAAO,ECA1D,IAAAhT,EAAe,CAAE4lB,WCaF,WACb,MAAMhb,EAASrO,MACT2D,WAAEA,EAAFiL,OAAcA,EAAdgG,IAAsBA,EAAtBnB,IAA2BA,EAA3BvC,OAAgCA,EAAhClB,QAAwCA,GAAY3B,EAEpDib,EApBR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQnsB,SAASssB,IACK,iBAATA,EACT3sB,OAAOI,KAAKusB,GAAMtsB,SAASuG,IACrB+lB,EAAK/lB,IACP8lB,EAAcznB,KAAKwnB,EAAS7lB,MAGP,iBAAT+lB,GAChBD,EAAcznB,KAAKwnB,EAASE,MAGzBD,EAOUE,CAAe,CAC9B,cACA/a,EAAOyP,UACP,CAAE,kBAAmBrO,EAAQM,OAC7B,CAAE,YAAajC,EAAOO,OAAOmW,UAAYnW,EAAOmW,SAAS/P,SACzD,CAAE4U,WAAchb,EAAOyM,YACvB,CAAEzG,IAAOA,GACT,CAAE4B,KAAQ5H,EAAO4H,MAAQ5H,EAAO4H,KAAKC,KAAO,GAC5C,CAAE,cAAe7H,EAAO4H,MAAQ5H,EAAO4H,KAAKC,KAAO,GAA0B,WAArB7H,EAAO4H,KAAKqT,MACpE,CAAEzY,QAAWF,EAAOE,SACpB,CAAED,IAAOD,EAAOC,KAChB,CAAE,WAAYvC,EAAO0H,SACrB,CAAEwT,SAAYlb,EAAO0H,SAAW1H,EAAOyH,gBACvC,CAAE,iBAAkBzH,EAAOqK,sBAC1BrK,EAAOwK,wBACVzV,EAAW3B,QAAQsnB,GACnB7V,EAAInQ,SAAS,IAAIK,GAAY4I,KAAK,MAClC8B,EAAO0b,wBDlCoBC,cEHd,WACb,MACMvW,IAAEA,EAAF9P,WAAOA,GADE3D,KAGfyT,EAAIxP,YAAYN,EAAW4I,KAAK,MAHjBvM,KAIR+pB,yBCyBT,IC9BAE,EAAe,CACbC,MAAM,EACN7L,UAAW,aACX6D,kBAAmB,UACnBtD,aAAc,EACd/P,MAAO,IACPyH,SAAS,EACTyS,sBAAsB,EACtBoB,gBAAgB,EAChBxE,QAAQ,EACRyE,gBAAgB,EAChBpV,SAAS,EACTyP,kBAAmB,wDAGnBnT,MAAO,KACPE,OAAQ,KAGRuM,gCAAgC,EAGhCte,UAAW,KACX4qB,IAAK,KAGLxG,oBAAoB,EACpBE,mBAAoB,GAGpB1I,YAAY,EAGZvD,gBAAgB,EAGhBoF,kBAAkB,EAGlBrF,OAAQ,QAGRf,iBAAarQ,EACb6jB,gBAAiB,SAGjBxU,aAAc,EACde,cAAe,EACfc,eAAgB,EAChBC,mBAAoB,EACpBiI,oBAAoB,EACpBxJ,gBAAgB,EAChB+B,sBAAsB,EACtB3C,mBAAoB,EACpBE,kBAAmB,EACnB8G,qBAAqB,EACrBhE,0BAA0B,EAG1BM,eAAe,EAGf3B,cAAc,EAGd6O,WAAY,EACZT,WAAY,GACZ+E,eAAe,EACflD,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdb,cAAc,EACd1B,gBAAgB,EAChB7D,UAAW,EACX4E,0BAA0B,EAC1Bd,0BAA0B,EAC1BC,+BAA+B,EAC/BO,qBAAqB,EAGrBoF,mBAAmB,EAGnBpE,YAAY,EACZD,gBAAiB,IAGjBlN,qBAAqB,EAGrB8M,YAAY,EAGZiC,eAAe,EACfC,0BAA0B,EAC1BhL,qBAAqB,EAGrBwN,eAAe,EACfC,qBAAqB,EAGrB3O,MAAM,EACNwF,qBAAsB,EACtB7B,aAAc,KACdyB,wBAAwB,EACxBnB,mBAAmB,EAGnBG,QAAQ,EAGRlB,gBAAgB,EAChBD,gBAAgB,EAChBqE,aAAc,KACdP,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAGnB8F,kBAAkB,EAElBpP,wBAAyB,GAGzBF,uBAAwB,UACxBjE,WAAY,eACZmM,gBAAiB,+BACjB7F,iBAAkB,sBAClBG,0BAA2B,gCAC3BxB,kBAAmB,uBACnB4B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB6O,aAAc,iBAGd/N,oBAAoB,EAGpBgO,cAAc,GC7ID,SAASC,EAAmBjc,EAAQkc,GACjD,OAAO,SAAsBjuB,QAAU,IAAVA,MAAM,IACjC,MAAMkuB,EAAkBhuB,OAAOI,KAAKN,GAAK,GACnCmuB,EAAenuB,EAAIkuB,GACG,iBAAjBC,GAA8C,OAAjBA,GAKtC,CAAC,aAAc,aAAc,aAAatoB,QAAQqoB,IAAoB,IAC1C,IAA5Bnc,EAAOmc,KAEPnc,EAAOmc,GAAmB,CAAEE,MAAM,IAE9BF,KAAmBnc,GAAU,YAAaoc,IAIhB,IAA5Bpc,EAAOmc,KACTnc,EAAOmc,GAAmB,CAAE/V,SAAS,IAEA,iBAA5BpG,EAAOmc,IAAmC,YAAanc,EAAOmc,KACvEnc,EAAOmc,GAAiB/V,SAAU,GAE/BpG,EAAOmc,KAAkBnc,EAAOmc,GAAmB,CAAE/V,SAAS,IACnEhY,EAAO8tB,EAAkBjuB,IAVvBG,EAAO8tB,EAAkBjuB,IAVzBG,EAAO8tB,EAAkBjuB,ICqB/B,MAAMquB,EAAa,CACjBzY,gBACAc,SACA9E,YACA0c,WC5Ba,CACbzR,cCLa,SAAuBrU,EAAUgY,GAC9C,MAAMhP,EAASrO,KAEVqO,EAAOO,OAAO0H,SACjBjI,EAAOoG,WAAW0W,WAAW9lB,GAG/BgJ,EAAOiF,KAAK,gBAAiBjO,EAAUgY,IDDvC6B,gBEJa,SAAyBvB,EAAqBU,QAAW,IAAhCV,OAAe,GACrD,MAAMtP,EAASrO,MACT4O,OAAEA,GAAWP,EACfO,EAAO0H,UACP1H,EAAOyM,YACThN,EAAOkL,mBAGT6E,EAAe,CAAE/P,SAAQsP,eAAcU,YAAWC,KAAM,YFHxDa,cGLa,SAAuBxB,EAAqBU,QAAW,IAAhCV,OAAe,GACnD,MAAMtP,EAASrO,MACT4O,OAAEA,GAAWP,EACnBA,EAAOyP,WAAY,EACflP,EAAO0H,UACXjI,EAAOqL,cAAc,GAErB0E,EAAe,CAAE/P,SAAQsP,eAAcU,YAAWC,KAAM,WJwBxDvH,QACAgF,OACAgK,WKhCa,CACbC,cCJa,SAAuBoF,GACpC,MAAM/c,EAASrO,KACf,GACEqO,EAAO2B,QAAQM,QACdjC,EAAOO,OAAO2b,eACdlc,EAAOO,OAAOmK,eAAiB1K,EAAOgd,UACvChd,EAAOO,OAAO0H,QAEd,OACF,MAAMxU,EAAyC,cAApCuM,EAAOO,OAAOsT,kBAAoC7T,EAAOvM,GAAKuM,EAAOS,UAChFhN,EAAGxD,MAAMgtB,OAAS,OAClBxpB,EAAGxD,MAAMgtB,OAASF,EAAS,WAAa,QDNxCG,gBELa,WACb,MAAMld,EAASrO,KAEbqO,EAAO2B,QAAQM,OACdjC,EAAOO,OAAOmK,eAAiB1K,EAAOgd,UACvChd,EAAOO,OAAO0H,UAIhBjI,EAA2C,cAApCA,EAAOO,OAAOsT,kBAAoC,KAAO,aAAa5jB,MAAMgtB,OAAS,M,OP2B5F5kB,EACAoQ,YQlCa,CAAE4Q,cfGF,WACb,MAAMrZ,EAASrO,MACT8Z,YAAEA,EAAF6C,YAAeA,EAAf+C,aAA4BA,EAAe,EAA3C9Q,OAA8CA,EAA9C6E,IAAsDA,GAAQpF,EAC9DyI,EAAclI,EAAOkI,YAC3B,IAAKA,GAAgBA,GAAmD,IAApC/Z,OAAOI,KAAK2Z,GAAaxZ,OAAe,OAG5E,MAAMkuB,EAAand,EAAOod,cAAc3U,EAAazI,EAAOO,OAAO0b,gBAAiBjc,EAAOvM,IAE3F,IAAK0pB,GAAcnd,EAAOqd,oBAAsBF,EAAY,OAE5D,MACMG,GADuBH,KAAc1U,EAAcA,EAAY0U,QAAc/kB,IAClC4H,EAAOud,eAClDC,EAAczC,EAAc/a,EAAQO,GACpCkd,EAAa1C,EAAc/a,EAAQsd,GAEnCI,EAAand,EAAOoG,QAEtB6W,IAAgBC,GAClBrY,EAAIxP,YACD,GAAE2K,EAAOwK,8BAA8BxK,EAAOwK,qCAEjD/K,EAAO0b,yBACG8B,GAAeC,IACzBrY,EAAInQ,SAAU,GAAEsL,EAAOwK,+BAEpBuS,EAAiBnV,KAAKqT,MAAuC,WAA/B8B,EAAiBnV,KAAKqT,OACnD8B,EAAiBnV,KAAKqT,MAA6B,WAArBjb,EAAO4H,KAAKqT,OAE5CpW,EAAInQ,SAAU,GAAEsL,EAAOwK,qCAEzB/K,EAAO0b,wBAIT,CAAC,aAAc,aAAc,aAAa3sB,SAASmM,IACjD,MAAMyiB,EAAmBpd,EAAOrF,IAASqF,EAAOrF,GAAMyL,QAChDiX,EAAkBN,EAAiBpiB,IAASoiB,EAAiBpiB,GAAMyL,QACrEgX,IAAqBC,GACvB5d,EAAO9E,GAAM2iB,WAEVF,GAAoBC,GACvB5d,EAAO9E,GAAM4iB,YAIjB,MAAMC,EACJT,EAAiBtN,WAAasN,EAAiBtN,YAAczP,EAAOyP,UAChEgO,EACJzd,EAAOmN,OAAS4P,EAAiB9U,gBAAkBjI,EAAOiI,eAAiBuV,GAEzEA,GAAoBzP,GACtBtO,EAAOie,kBAETtvB,EAAOqR,EAAOO,OAAQ+c,GAEtB,MAAMY,EAAYle,EAAOO,OAAOoG,QAEhCjY,OAAOkX,OAAO5F,EAAQ,CACpBsW,eAAgBtW,EAAOO,OAAO+V,eAC9B3F,eAAgB3Q,EAAOO,OAAOoQ,eAC9BC,eAAgB5Q,EAAOO,OAAOqQ,iBAG5B8M,IAAeQ,EACjBle,EAAO6d,WACGH,GAAcQ,GACxBle,EAAO8d,SAGT9d,EAAOqd,kBAAoBF,EAE3Bnd,EAAOiF,KAAK,oBAAqBqY,GAE7BU,GAAe1P,IACjBtO,EAAOuT,cACPvT,EAAO4S,aACP5S,EAAO8F,eACP9F,EAAOkQ,QAAQzE,EAAc4F,EAAerR,EAAOqR,aAAc,GAAG,IAGtErR,EAAOiF,KAAK,aAAcqY,IepFIF,cCDjB,SAAuB3U,EAAaiM,EAAiByJ,GAClE,QAD+E,IAA9BzJ,MAAO,WACnDjM,GAAyB,cAATiM,IAAyByJ,EAAc,OAC5D,IAAIhB,GAAa,EAEjB,MAAMzqB,EAASF,IACT4rB,EAAyB,WAAT1J,EAAoBhiB,EAAO2rB,YAAcF,EAAY7Y,aAErEgZ,EAAS5vB,OAAOI,KAAK2Z,GAAalT,KAAKgpB,IAC3C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMlqB,QAAQ,KAAY,CACzD,MAAMmqB,EAAWtkB,WAAWqkB,EAAME,OAAO,IAEzC,MAAO,CAAErrB,MADKgrB,EAAgBI,EACdD,SAElB,MAAO,CAAEnrB,MAAOmrB,EAAOA,YAGzBD,EAAOI,MAAK,CAAChqB,EAAGiqB,IAAMlZ,SAAS/Q,EAAEtB,MAAO,IAAMqS,SAASkZ,EAAEvrB,MAAO,MAChE,IAAK,IAAIqB,EAAI,EAAGA,EAAI6pB,EAAOrvB,OAAQwF,GAAK,EAAG,CACzC,MAAM8pB,MAAEA,EAAFnrB,MAASA,GAAUkrB,EAAO7pB,GACnB,WAATigB,EACEhiB,EAAOP,WAAY,eAAciB,QAAYoI,UAC/C2hB,EAAaoB,GAENnrB,GAAS+qB,EAAY9Y,cAC9B8X,EAAaoB,GAGjB,OAAOpB,GAAc,Q,cZCR,CAAExS,cA9BjB,WACE,MAAM3K,EAASrO,MACPqrB,SAAU4B,EAAZre,OAAuBA,GAAWP,GAClCoH,mBAAEA,GAAuB7G,EAE/B,GAAI6G,EAAoB,CACtB,MAAMyX,EAAiB7e,EAAO6G,OAAO5X,OAAS,EACxC6vB,EACJ9e,EAAOiH,WAAW4X,GAClB7e,EAAOkH,gBAAgB2X,GACF,EAArBzX,EACFpH,EAAOgd,SAAWhd,EAAO6F,KAAOiZ,OAEhC9e,EAAOgd,SAAsC,IAA3Bhd,EAAOgH,SAAS/X,QAEN,IAA1BsR,EAAOoQ,iBACT3Q,EAAO2Q,gBAAkB3Q,EAAOgd,WAEJ,IAA1Bzc,EAAOqQ,iBACT5Q,EAAO4Q,gBAAkB5Q,EAAOgd,UAG9B4B,GAAaA,IAAc5e,EAAOgd,WACpChd,EAAO6M,OAAQ,GAEb+R,IAAc5e,EAAOgd,UACvBhd,EAAOiF,KAAKjF,EAAOgd,SAAW,OAAS,YGazC5nB,UACA2pB,OUrCa,CACbC,UCDa,SAAmBC,EAASpwB,EAAKqwB,EAAQC,EAAOC,EAAkB/sB,GAC/E,MAAMK,EAASF,IACf,IAAI6sB,EACJ,SAASC,IACHjtB,GAAUA,IAEE2B,EAAEirB,GAASniB,OAAO,WAAW,IAE3BmiB,EAAQM,UAAaH,EAmBvCE,IAlBIzwB,GACFwwB,EAAQ,IAAI3sB,EAAOZ,MACnButB,EAAMG,OAASF,EACfD,EAAMI,QAAUH,EACZH,IACFE,EAAMF,MAAQA,GAEZD,IACFG,EAAMH,OAASA,GAEbrwB,IACFwwB,EAAMxwB,IAAMA,IAGdywB,KDrBJlD,cELa,WACb,MAAMpc,EAASrO,KAEf,SAAS2tB,IACH,MAAOtf,GAA8CA,IAAUA,EAAOwE,iBAC9CpM,IAAxB4H,EAAO0f,eAA4B1f,EAAO0f,cAAgB,GAC1D1f,EAAO0f,eAAiB1f,EAAO2f,aAAa1wB,SAC1C+Q,EAAOO,OAAO8b,qBAAqBrc,EAAOkF,SAC9ClF,EAAOiF,KAAK,iBANhBjF,EAAO2f,aAAe3f,EAAOoF,IAAInI,KAAK,OAStC,IAAK,IAAIxI,EAAI,EAAGA,EAAIuL,EAAO2f,aAAa1wB,OAAQwF,GAAK,EAAG,CACtD,MAAMwqB,EAAUjf,EAAO2f,aAAalrB,GACpCuL,EAAOgf,UACLC,EACAA,EAAQW,YAAcX,EAAQtoB,aAAa,OAC3CsoB,EAAQC,QAAUD,EAAQtoB,aAAa,UACvCsoB,EAAQE,OAASF,EAAQtoB,aAAa,UACtC,EACA2oB,OZwBAO,EAAmB,GAEzB,MAAMC,EACJrxB,cACE,IAAIgF,EACA8M,EAFe,QAAArL,EAAAC,UAAAlG,OAANmI,EAAM,IAAAxE,MAAAsC,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAN+B,EAAM/B,GAAAF,UAAAE,GAiBnB,GAbkB,IAAhB+B,EAAKnI,QACLmI,EAAK,GAAG3I,aACiD,WAAzDC,OAAOmF,UAAU0K,SAASxK,KAAKqD,EAAK,IAAIuH,MAAM,GAAI,GAElD4B,EAASnJ,EAAK,IAEb3D,EAAI8M,GAAUnJ,EAEZmJ,IAAQA,EAAS,IAEtBA,EAAS5R,EAAO,GAAI4R,GAChB9M,IAAO8M,EAAO9M,KAAI8M,EAAO9M,GAAKA,GAE9B8M,EAAO9M,IAAMO,EAAEuM,EAAO9M,IAAIxE,OAAS,EAAG,CACxC,MAAM8wB,EAAU,GAKhB,OAJA/rB,EAAEuM,EAAO9M,IAAI0H,MAAMgjB,IACjB,MAAM6B,EAAYrxB,EAAO,GAAI4R,EAAQ,CAAE9M,GAAI0qB,IAC3C4B,EAAQpsB,KAAK,IAAImsB,EAAOE,OAEnBD,EAIT,MAAM/f,EAASrO,KACfqO,EAAOP,YAAa,EACpBO,EAAO2B,QAAUG,IACjB9B,EAAO6C,OAASL,EAAU,CAAEpR,UAAWmP,EAAOnP,YAC9C4O,EAAO6B,QAAU+B,IAEjB5D,EAAOuE,gBAAkB,GACzBvE,EAAO8E,mBAAqB,GAC5B9E,EAAOigB,QAAU,IAAIjgB,EAAOkgB,aACxB3f,EAAO0f,SAAWrtB,MAAMc,QAAQ6M,EAAO0f,UACzCjgB,EAAOigB,QAAQtsB,QAAQ4M,EAAO0f,SAGhC,MAAMxD,EAAmB,GAEzBzc,EAAOigB,QAAQlxB,SAASoxB,IACtBA,EAAI,CACFngB,SACAogB,aAAc5D,EAAmBjc,EAAQkc,GACzCvlB,GAAI8I,EAAO9I,GAAG2jB,KAAK7a,GACnB0E,KAAM1E,EAAO0E,KAAKmW,KAAK7a,GACvBrH,IAAKqH,EAAOrH,IAAIkiB,KAAK7a,GACrBiF,KAAMjF,EAAOiF,KAAK4V,KAAK7a,QAK3B,MAAMqgB,EAAe1xB,EAAO,GAAIitB,EAAUa,GAiI1C,OA9HAzc,EAAOO,OAAS5R,EAAO,GAAI0xB,EAAcR,EAAkBtf,GAC3DP,EAAOud,eAAiB5uB,EAAO,GAAIqR,EAAOO,QAC1CP,EAAOsgB,aAAe3xB,EAAO,GAAI4R,GAG7BP,EAAOO,QAAUP,EAAOO,OAAOrJ,IACjCxI,OAAOI,KAAKkR,EAAOO,OAAOrJ,IAAInI,SAASwxB,IACrCvgB,EAAO9I,GAAGqpB,EAAWvgB,EAAOO,OAAOrJ,GAAGqpB,OAGtCvgB,EAAOO,QAAUP,EAAOO,OAAOsE,OACjC7E,EAAO6E,MAAM7E,EAAOO,OAAOsE,OAI7B7E,EAAOhM,EAAIA,EAGXtF,OAAOkX,OAAO5F,EAAQ,CACpB2G,QAAS3G,EAAOO,OAAOoG,QACvBlT,KAGA6B,WAAY,GAGZuR,OAAQ7S,IACRiT,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjB3B,aAAY,IACyB,eAA5BvF,EAAOO,OAAOyP,UAEvBxK,WAAU,IAC2B,aAA5BxF,EAAOO,OAAOyP,UAIvBvE,YAAa,EACbyB,UAAW,EAGXN,aAAa,EACbC,OAAO,EAGPzM,UAAW,EACXgP,kBAAmB,EACnBnO,SAAU,EACVuf,SAAU,EACV/Q,WAAW,EAGXkB,eAAgB3Q,EAAOO,OAAOoQ,eAC9BC,eAAgB5Q,EAAOO,OAAOqQ,eAG9BqJ,YAAc,WACZ,MAAMhY,EAAQ,CAAC,aAAc,YAAa,WAAY,eAChDwe,EAAU,CAAC,cAAe,cAAe,aAa/C,OAXAzgB,EAAO0gB,iBAAmB,CACxBtG,MAAOnY,EAAM,GACbsY,KAAMtY,EAAM,GACZuY,IAAKvY,EAAM,GACXwY,OAAQxY,EAAM,IAEhBjC,EAAO2gB,mBAAqB,CAC1BvG,MAAOqG,EAAQ,GACflG,KAAMkG,EAAQ,GACdjG,IAAKiG,EAAQ,IAERzgB,EAAO2B,QAAQM,QAAUjC,EAAOO,OAAO2b,cAC1Clc,EAAO0gB,iBACP1gB,EAAO2gB,mBAjBC,GAmBdlN,gBAAiB,CACfS,eAAW9b,EACX+b,aAAS/b,EACT0d,yBAAqB1d,EACrB6d,oBAAgB7d,EAChB2d,iBAAa3d,EACb0W,sBAAkB1W,EAClBof,oBAAgBpf,EAChB+d,wBAAoB/d,EAEpBge,kBAAmBpW,EAAOO,OAAO6V,kBAEjCkC,cAAe/a,IACfqjB,kBAAcxoB,EAEdyoB,WAAY,GACZpJ,yBAAqBrf,EACrB0b,kBAAc1b,EACd4d,iBAAa5d,GAIf2c,YAAY,EAGZuB,eAAgBtW,EAAOO,OAAO+V,eAE9B5C,QAAS,CACP4B,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACV9B,KAAM,GAIRqM,aAAc,GACdD,aAAc,IAGhB1f,EAAOiF,KAAK,WAGRjF,EAAOO,OAAOsb,MAChB7b,EAAO6b,OAIF7b,EAGT8d,SACE,MAAM9d,EAASrO,KACXqO,EAAO2G,UACX3G,EAAO2G,SAAU,EACb3G,EAAOO,OAAOmX,YAChB1X,EAAO2X,gBAET3X,EAAOiF,KAAK,WAGd4Y,UACE,MAAM7d,EAASrO,KACVqO,EAAO2G,UACZ3G,EAAO2G,SAAU,EACb3G,EAAOO,OAAOmX,YAChB1X,EAAOkd,kBAETld,EAAOiF,KAAK,YAGd6b,YAAY7f,EAAUT,GACpB,MAAMR,EAASrO,KACfsP,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMpB,EAAOmM,eAEbrL,GADMd,EAAO2M,eACIvL,GAAOH,EAAWG,EACzCpB,EAAOqP,YAAYvO,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DR,EAAO+N,oBACP/N,EAAOiN,sBAGTyO,uBACE,MAAM1b,EAASrO,KACf,IAAKqO,EAAOO,OAAOgc,eAAiBvc,EAAOvM,GAAI,OAC/C,MAAMstB,EAAM/gB,EAAOvM,GAAG0C,UAAUV,MAAM,KAAK3B,QAAQqC,GAEf,IAAhCA,EAAU9B,QAAQ,WAC0C,IAA5D8B,EAAU9B,QAAQ2L,EAAOO,OAAOwK,0BAGpC/K,EAAOiF,KAAK,oBAAqB8b,EAAI7iB,KAAK,MAG5C8iB,gBAAgBC,GACd,MAAMjhB,EAASrO,KACf,OAAIqO,EAAOwE,UAAkB,GAEtByc,EAAQ9qB,UACZV,MAAM,KACN3B,QAAQqC,GAEiC,IAAtCA,EAAU9B,QAAQ,iBAC8B,IAAhD8B,EAAU9B,QAAQ2L,EAAOO,OAAOuG,cAGnC5I,KAAK,KAGV4P,oBACE,MAAM9N,EAASrO,KACf,IAAKqO,EAAOO,OAAOgc,eAAiBvc,EAAOvM,GAAI,OAC/C,MAAMytB,EAAU,GAChBlhB,EAAO6G,OAAO1L,MAAM8lB,IAClB,MAAM3rB,EAAa0K,EAAOghB,gBAAgBC,GAC1CC,EAAQvtB,KAAK,CAAEstB,UAAS3rB,eACxB0K,EAAOiF,KAAK,cAAegc,EAAS3rB,MAEtC0K,EAAOiF,KAAK,gBAAiBic,GAG/BzP,qBAAqB0P,EAAkBC,QAAe,IAAjCD,MAAO,gBAA0B,IAAfC,OAAQ,GAC7C,MACM7gB,OAAEA,EAAFsG,OAAUA,EAAVI,WAAkBA,EAAlBC,gBAA8BA,EAAiBrB,KAAMQ,EAArDoF,YAAiEA,GADxD9Z,KAEf,IAAI0vB,EAAM,EACV,GAAI9gB,EAAOyH,eAAgB,CACzB,IACIsZ,EADAjZ,EAAYxB,EAAO4E,GAAarC,gBAEpC,IAAK,IAAI3U,EAAIgX,EAAc,EAAGhX,EAAIoS,EAAO5X,OAAQwF,GAAK,EAChDoS,EAAOpS,KAAO6sB,IAChBjZ,GAAaxB,EAAOpS,GAAG2U,gBACvBiY,GAAO,EACHhZ,EAAYhC,IAAYib,GAAY,IAG5C,IAAK,IAAI7sB,EAAIgX,EAAc,EAAGhX,GAAK,EAAGA,GAAK,EACrCoS,EAAOpS,KAAO6sB,IAChBjZ,GAAaxB,EAAOpS,GAAG2U,gBACvBiY,GAAO,EACHhZ,EAAYhC,IAAYib,GAAY,SAK5C,GAAa,YAATH,EACF,IAAK,IAAI1sB,EAAIgX,EAAc,EAAGhX,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,EACnC2sB,EAChBna,EAAWxS,GAAKyS,EAAgBzS,GAAKwS,EAAWwE,GAAepF,EAC/DY,EAAWxS,GAAKwS,EAAWwE,GAAepF,KAE5Cgb,GAAO,QAKX,IAAK,IAAI5sB,EAAIgX,EAAc,EAAGhX,GAAK,EAAGA,GAAK,EAAG,CACxBwS,EAAWwE,GAAexE,EAAWxS,GAAK4R,IAE5Dgb,GAAO,GAKf,OAAOA,EAGTnc,SACE,MAAMlF,EAASrO,KACf,IAAKqO,GAAUA,EAAOwE,UAAW,OACjC,MAAMwC,SAAEA,EAAFzG,OAAYA,GAAWP,EAU7B,SAAS+O,IACP,MAAMwS,EAAiBvhB,EAAOsG,cAAmC,EAApBtG,EAAOI,UAAiBJ,EAAOI,UACtEuP,EAAezO,KAAKE,IACxBF,KAAKC,IAAIogB,EAAgBvhB,EAAO2M,gBAChC3M,EAAOmM,gBAETnM,EAAO+O,aAAaY,GACpB3P,EAAO+N,oBACP/N,EAAOiN,sBAET,IAAIuU,EAlBAjhB,EAAOkI,aACTzI,EAAOqZ,gBAETrZ,EAAOmF,aACPnF,EAAO8F,eACP9F,EAAOwM,iBACPxM,EAAOiN,sBAaHjN,EAAOO,OAAOmW,UAAY1W,EAAOO,OAAOmW,SAAS/P,SACnDoI,IACI/O,EAAOO,OAAOyM,YAChBhN,EAAOkL,qBAQPsW,GAJiC,SAAhCxhB,EAAOO,OAAOiI,eAA4BxI,EAAOO,OAAOiI,cAAgB,IACzExI,EAAO6M,QACN7M,EAAOO,OAAOyH,eAEFhI,EAAOkQ,QAAQlQ,EAAO6G,OAAO5X,OAAS,EAAG,GAAG,GAAO,GAEnD+Q,EAAOkQ,QAAQlQ,EAAOyL,YAAa,GAAG,GAAO,GAEvD+V,GACHzS,KAGAxO,EAAOmK,eAAiB1D,IAAahH,EAAOgH,UAC9ChH,EAAO2K,gBAET3K,EAAOiF,KAAK,UAGdgZ,gBAAgBwD,EAAcC,QAAmB,IAAnBA,OAAa,GACzC,MAAM1hB,EAASrO,KACTgwB,EAAmB3hB,EAAOO,OAAOyP,UAKvC,OAJKyR,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAGhEF,IAAiBE,GACC,eAAjBF,GAAkD,aAAjBA,IAKpCzhB,EAAOoF,IACJxP,YAAa,GAAEoK,EAAOO,OAAOwK,yBAAyB4W,KACtD1sB,SAAU,GAAE+K,EAAOO,OAAOwK,yBAAyB0W,KACtDzhB,EAAO0b,uBAEP1b,EAAOO,OAAOyP,UAAYyR,EAE1BzhB,EAAO6G,OAAO1L,MAAM8lB,IACG,aAAjBQ,EACFR,EAAQhxB,MAAMgT,MAAQ,GAEtBge,EAAQhxB,MAAMkT,OAAS,MAI3BnD,EAAOiF,KAAK,mBACRyc,GAAY1hB,EAAOkF,UAnBdlF,EAwBX4hB,wBAAwB5R,GACtB,MAAMhQ,EAASrO,KACVqO,EAAOuG,KAAqB,QAAdyJ,IAA0BhQ,EAAOuG,KAAqB,QAAdyJ,IAC3DhQ,EAAOuG,IAAoB,QAAdyJ,EACbhQ,EAAOsG,aAA2C,eAA5BtG,EAAOO,OAAOyP,WAA8BhQ,EAAOuG,IACrEvG,EAAOuG,KACTvG,EAAOoF,IAAInQ,SAAU,GAAE+K,EAAOO,OAAOwK,6BACrC/K,EAAOvM,GAAGmN,IAAM,QAEhBZ,EAAOoF,IAAIxP,YAAa,GAAEoK,EAAOO,OAAOwK,6BACxC/K,EAAOvM,GAAGmN,IAAM,OAElBZ,EAAOkF,UAGT2c,MAAMpuB,GACJ,MAAMuM,EAASrO,KACf,GAAIqO,EAAO8hB,QAAS,OAAO,EAG3B,MAAM1c,EAAMpR,EAAEP,GAAMuM,EAAOO,OAAO9M,IAGlC,KAFAA,EAAK2R,EAAI,IAGP,OAAO,EAGT3R,EAAGuM,OAASA,EAEZ,MAAM+hB,EAAqB,IACjB,KAAI/hB,EAAOO,OAAO+b,cAAgB,IAAIloB,OAAOqB,MAAM,KAAKyI,KAAK,OAgBvE,IAAIkI,EAbe,MACjB,GAAI3S,GAAMA,EAAG4gB,YAAc5gB,EAAG4gB,WAAW5kB,cAAe,CACtD,MAAM+D,EAAMQ,EAAEP,EAAG4gB,WAAW5kB,cAAcsyB,MAG1C,OADAvuB,EAAIzD,SAAYiyB,GAAY5c,EAAIrV,SAASiyB,GAClCxuB,EAET,OAAK4R,EAAIrV,SAGFqV,EAAIrV,SAASgyB,KAFX/tB,EAAEoR,GAAKrV,SAASgyB,MAKVE,GACjB,GAA0B,IAAtB7b,EAAWnX,QAAgB+Q,EAAOO,OAAOwb,eAAgB,CAC3D,MACMmG,EADWnxB,IACQjB,cAAc,OACvCsW,EAAapS,EAAEkuB,GACfA,EAAQ/rB,UAAY6J,EAAOO,OAAO+b,aAClClX,EAAIrJ,OAAOmmB,GACX9c,EAAIrV,SAAU,IAAGiQ,EAAOO,OAAOuG,cAAc3L,MAAM8lB,IACjD7a,EAAWrK,OAAOklB,MAmBtB,OAfAvyB,OAAOkX,OAAO5F,EAAQ,CACpBoF,MACA3R,KACA2S,aACA3F,UAAW2F,EAAW,GACtB0b,SAAS,EAGTvb,IAA8B,QAAzB9S,EAAGmN,IAAIkD,eAAoD,QAAzBsB,EAAIpK,IAAI,aAC/CsL,aAC8B,eAA5BtG,EAAOO,OAAOyP,YACY,QAAzBvc,EAAGmN,IAAIkD,eAAoD,QAAzBsB,EAAIpK,IAAI,cAC7CwL,SAAwC,gBAA9BJ,EAAWpL,IAAI,cAGpB,EAGT6gB,KAAKpoB,GACH,MAAMuM,EAASrO,KACf,GAAIqO,EAAOsO,YAAa,OAAOtO,EAG/B,OAAgB,IADAA,EAAO6hB,MAAMpuB,KAG7BuM,EAAOiF,KAAK,cAGRjF,EAAOO,OAAOkI,aAChBzI,EAAOqZ,gBAITrZ,EAAOgb,aAGHhb,EAAOO,OAAOmN,MAChB1N,EAAO4S,aAIT5S,EAAOmF,aAGPnF,EAAO8F,eAEH9F,EAAOO,OAAOmK,eAChB1K,EAAO2K,gBAIL3K,EAAOO,OAAOmX,YAAc1X,EAAO2G,SACrC3G,EAAO2X,gBAGL3X,EAAOO,OAAO6b,eAChBpc,EAAOoc,gBAILpc,EAAOO,OAAOmN,KAChB1N,EAAOkQ,QACLlQ,EAAOO,OAAOgQ,aAAevQ,EAAOqR,aACpC,EACArR,EAAOO,OAAOgO,oBACd,GACA,GAGFvO,EAAOkQ,QAAQlQ,EAAOO,OAAOgQ,aAAc,EAAGvQ,EAAOO,OAAOgO,oBAAoB,GAAO,GAIzFvO,EAAO4a,eAGP5a,EAAOsO,aAAc,EAGrBtO,EAAOiF,KAAK,QACZjF,EAAOiF,KAAK,cAzDkBjF,EA8DhCmiB,QAAQC,EAAuBC,QAAoB,IAA3CD,OAAiB,QAA0B,IAApBC,OAAc,GAC3C,MAAMriB,EAASrO,MACT4O,OAAEA,EAAF6E,IAAUA,EAAVgB,WAAeA,EAAfS,OAA2BA,GAAW7G,EAE5C,YAA6B,IAAlBA,EAAOO,QAA0BP,EAAOwE,YAInDxE,EAAOiF,KAAK,iBAGZjF,EAAOsO,aAAc,EAGrBtO,EAAO8a,eAGHva,EAAOmN,MACT1N,EAAOuT,cAIL8O,IACFriB,EAAO2b,gBACPvW,EAAIvO,WAAW,SACfuP,EAAWvP,WAAW,SAClBgQ,GAAUA,EAAO5X,QACnB4X,EACGjR,YACC,CACE2K,EAAOwL,kBACPxL,EAAO6M,iBACP7M,EAAO8M,eACP9M,EAAO+M,gBACPpP,KAAK,MAERrH,WAAW,SACXA,WAAW,4BAIlBmJ,EAAOiF,KAAK,WAGZvW,OAAOI,KAAKkR,EAAOuE,iBAAiBxV,SAASwxB,IAC3CvgB,EAAOrH,IAAI4nB,OAGU,IAAnB6B,IACFpiB,EAAOoF,IAAI,GAAGpF,OAAS,KhD7mB7B,SAAqBxR,GACnB,MAAM8zB,EAAS9zB,EACfE,OAAOI,KAAKwzB,GAAQvzB,SAASC,IAC3B,IACEszB,EAAOtzB,GAAO,KACd,MAAO2I,IAGT,WACS2qB,EAAOtzB,GACd,MAAO2I,QgDomBP4qB,CAAYviB,IAEdA,EAAOwE,WAAY,GA/CV,KAoDUge,sBAACC,GACpB9zB,EAAOkxB,EAAkB4C,GAGhB5C,8BACT,OAAOA,EAGEjE,sBACT,OAAOA,EAGW4G,qBAACrC,GACdL,EAAOjsB,UAAUqsB,cAAaJ,EAAOjsB,UAAUqsB,YAAc,IAClE,MAAMD,EAAUH,EAAOjsB,UAAUqsB,YAEd,mBAARC,GAAsBF,EAAQ5rB,QAAQ8rB,GAAO,GACtDF,EAAQtsB,KAAKwsB,GAIPqC,WAACE,GACT,OAAI9vB,MAAMc,QAAQgvB,IAChBA,EAAO3zB,SAAS4zB,GAAM7C,EAAO8C,cAAcD,KACpC7C,IAETA,EAAO8C,cAAcF,GACd5C,IahpBI,SAAS+C,EAA0B7iB,EAAQud,EAAgBhd,EAAQuiB,GAChF,MAAM7xB,EAAWF,IAejB,OAdIiP,EAAOO,OAAOwb,gBAChBrtB,OAAOI,KAAKg0B,GAAY/zB,SAASC,IAC/B,IAAKuR,EAAOvR,KAAwB,IAAhBuR,EAAOqc,KAAe,CACxC,IAAImG,EAAU/iB,EAAOoF,IAAIrV,SAAU,IAAG+yB,EAAW9zB,MAAQ,GACpD+zB,IACHA,EAAU9xB,EAASnB,cAAc,OACjCizB,EAAQ5sB,UAAY2sB,EAAW9zB,GAC/BgR,EAAOoF,IAAIrJ,OAAOgnB,IAEpBxiB,EAAOvR,GAAO+zB,EACdxF,EAAevuB,GAAO+zB,MAIrBxiB,EClBM,SAASyiB,EAAkB5tB,GACxC,YADsD,IAAdA,MAAU,IAC1C,IAAGA,EACRhB,OACA6J,QAAQ,cAAe,QACvBA,QAAQ,KAAM,OCJJ,SAASglB,EAAYpc,GAClC,MAAM7G,EAASrO,MACTyU,WAAEA,EAAF7F,OAAcA,GAAWP,EAI/B,GAHIO,EAAOmN,MACT1N,EAAOuT,cAEa,iBAAX1M,GAAuB,WAAYA,EAC5C,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCoS,EAAOpS,IAAI2R,EAAWrK,OAAO8K,EAAOpS,SAG1C2R,EAAWrK,OAAO8K,GAEhBtG,EAAOmN,MACT1N,EAAO4S,aAEJrS,EAAO2iB,UACVljB,EAAOkF,SCjBI,SAASie,EAAatc,GACnC,MAAM7G,EAASrO,MACT4O,OAAEA,EAAF6F,WAAUA,EAAVqF,YAAsBA,GAAgBzL,EAExCO,EAAOmN,MACT1N,EAAOuT,cAET,IAAIvF,EAAiBvC,EAAc,EACnC,GAAsB,iBAAX5E,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCoS,EAAOpS,IAAI2R,EAAWhK,QAAQyK,EAAOpS,IAE3CuZ,EAAiBvC,EAAc5E,EAAO5X,YAEtCmX,EAAWhK,QAAQyK,GAEjBtG,EAAOmN,MACT1N,EAAO4S,aAEJrS,EAAO2iB,UACVljB,EAAOkF,SAETlF,EAAOkQ,QAAQlC,EAAgB,GAAG,GCtBrB,SAASoV,EAAShoB,EAAOyL,GACtC,MAAM7G,EAASrO,MACTyU,WAAEA,EAAF7F,OAAcA,EAAdkL,YAAsBA,GAAgBzL,EAC5C,IAAIqjB,EAAoB5X,EACpBlL,EAAOmN,OACT2V,GAAqBrjB,EAAOqR,aAC5BrR,EAAOuT,cACPvT,EAAO6G,OAAST,EAAWrW,SAAU,IAAGwQ,EAAOuG,eAEjD,MAAMwc,EAAatjB,EAAO6G,OAAO5X,OACjC,GAAImM,GAAS,EAEX,YADA4E,EAAOmjB,aAAatc,GAGtB,GAAIzL,GAASkoB,EAEX,YADAtjB,EAAOijB,YAAYpc,GAGrB,IAAImH,EAAiBqV,EAAoBjoB,EAAQioB,EAAoB,EAAIA,EAEzE,MAAME,EAAe,GACrB,IAAK,IAAI9uB,EAAI6uB,EAAa,EAAG7uB,GAAK2G,EAAO3G,GAAK,EAAG,CAC/C,MAAM+uB,EAAexjB,EAAO6G,OAAOhL,GAAGpH,GACtC+uB,EAAaztB,SACbwtB,EAAazrB,QAAQ0rB,GAGvB,GAAsB,iBAAX3c,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCoS,EAAOpS,IAAI2R,EAAWrK,OAAO8K,EAAOpS,IAE1CuZ,EACEqV,EAAoBjoB,EAAQioB,EAAoBxc,EAAO5X,OAASo0B,OAElEjd,EAAWrK,OAAO8K,GAGpB,IAAK,IAAIpS,EAAI,EAAGA,EAAI8uB,EAAat0B,OAAQwF,GAAK,EAC5C2R,EAAWrK,OAAOwnB,EAAa9uB,IAG7B8L,EAAOmN,MACT1N,EAAO4S,aAEJrS,EAAO2iB,UACVljB,EAAOkF,SAEL3E,EAAOmN,KACT1N,EAAOkQ,QAAQlC,EAAiBhO,EAAOqR,aAAc,GAAG,GAExDrR,EAAOkQ,QAAQlC,EAAgB,GAAG,GClDvB,SAASyV,EAAYC,GAClC,MAAM1jB,EAASrO,MACT4O,OAAEA,EAAF6F,WAAUA,EAAVqF,YAAsBA,GAAgBzL,EAE5C,IAAIqjB,EAAoB5X,EACpBlL,EAAOmN,OACT2V,GAAqBrjB,EAAOqR,aAC5BrR,EAAOuT,cACPvT,EAAO6G,OAAST,EAAWrW,SAAU,IAAGwQ,EAAOuG,eAEjD,IACI6c,EADA3V,EAAiBqV,EAGrB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAIjvB,EAAI,EAAGA,EAAIivB,EAAcz0B,OAAQwF,GAAK,EAC7CkvB,EAAgBD,EAAcjvB,GAC1BuL,EAAO6G,OAAO8c,IAAgB3jB,EAAO6G,OAAOhL,GAAG8nB,GAAe5tB,SAC9D4tB,EAAgB3V,IAAgBA,GAAkB,GAExDA,EAAiB9M,KAAKC,IAAI6M,EAAgB,QAE1C2V,EAAgBD,EACZ1jB,EAAO6G,OAAO8c,IAAgB3jB,EAAO6G,OAAOhL,GAAG8nB,GAAe5tB,SAC9D4tB,EAAgB3V,IAAgBA,GAAkB,GACtDA,EAAiB9M,KAAKC,IAAI6M,EAAgB,GAGxCzN,EAAOmN,MACT1N,EAAO4S,aAGJrS,EAAO2iB,UACVljB,EAAOkF,SAEL3E,EAAOmN,KACT1N,EAAOkQ,QAAQlC,EAAiBhO,EAAOqR,aAAc,GAAG,GAExDrR,EAAOkQ,QAAQlC,EAAgB,GAAG,GCrCvB,SAAS4V,KACtB,MAAM5jB,EAASrO,KAET+xB,EAAgB,GACtB,IAAK,IAAIjvB,EAAI,EAAGA,EAAIuL,EAAO6G,OAAO5X,OAAQwF,GAAK,EAC7CivB,EAAc/vB,KAAKc,GAErBuL,EAAOyjB,YAAYC,GCPN,SAASG,GAAWtjB,GACjC,MAAMiJ,OACJA,EADIxJ,OAEJA,EAFI9I,GAGJA,EAHI6X,aAIJA,EAJI1D,cAKJA,EALIyY,gBAMJA,EANIC,YAOJA,EAPIC,gBAQJA,EARIC,gBASJA,GACE1jB,EAyCJ,IAAI2jB,EAvCJhtB,EAAG,cAAc,KACf,GAAI8I,EAAOO,OAAOiJ,SAAWA,EAAQ,OACrCxJ,EAAO1K,WAAW3B,KAAM,GAAEqM,EAAOO,OAAOwK,yBAAyBvB,KAC7Dua,GAAeA,KACjB/jB,EAAO1K,WAAW3B,KAAM,GAAEqM,EAAOO,OAAOwK,4BAG1C,MAAMoZ,EAAwBL,EAAkBA,IAAoB,GAEpEp1B,OAAOkX,OAAO5F,EAAOO,OAAQ4jB,GAC7Bz1B,OAAOkX,OAAO5F,EAAOud,eAAgB4G,MAEvCjtB,EAAG,gBAAgB,KACb8I,EAAOO,OAAOiJ,SAAWA,GAC7BuF,OAEF7X,EAAG,iBAAiB,CAACktB,EAAIptB,KACnBgJ,EAAOO,OAAOiJ,SAAWA,GAC7B6B,EAAcrU,MAGhBE,EAAG,iBAAiB,KAClB,GAAI8I,EAAOO,OAAOiJ,SAAWA,GACzBwa,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzDrkB,EAAO6G,OAAO1L,MAAM8lB,IACDjhB,EAAOhM,EAAEitB,GAEvBhkB,KACC,gHAEDlH,YAGLiuB,QAKJ9sB,EAAG,iBAAiB,KACd8I,EAAOO,OAAOiJ,SAAWA,IACxBxJ,EAAO6G,OAAO5X,SACjBi1B,GAAyB,GAE3B9xB,uBAAsB,KAChB8xB,GAA0BlkB,EAAO6G,QAAU7G,EAAO6G,OAAO5X,SAC3D8f,IACAmV,GAAyB,UC7DlB,SAASI,GAAaC,EAAcC,GACjD,OAAID,EAAaE,YACRD,EAASvnB,KAAKsnB,EAAaE,aAAazpB,IAAI,CACjD,sBAAuB,SACvB,8BAA+B,WAG5BwpB,ECPM,SAASE,GAAyE3kB,GAAA,IAA9CC,OAAEA,EAAFhJ,SAAUA,EAAVytB,YAAoBA,EAApBE,UAAiCA,GAAa5kB,EAC/F,MAAM8G,OAAEA,EAAF4E,YAAUA,EAAVrF,WAAuBA,GAAepG,EAC5C,GAAIA,EAAOO,OAAOsO,kBAAiC,IAAb7X,EAAgB,CACpD,IACI4tB,EADAC,GAAiB,EAGnBD,EADED,EACqBF,EAAc5d,EAAO5J,KAAKwnB,GAAe5d,EAEzC4d,EACnB5d,EAAOhL,GAAG4P,GAAaxO,KAAKwnB,GAC5B5d,EAAOhL,GAAG4P,GAEhBmZ,EAAqB9T,eAAc,KACjC,GAAI+T,EAAgB,OACpB,IAAK7kB,GAAUA,EAAOwE,UAAW,OACjCqgB,GAAiB,EACjB7kB,EAAOyP,WAAY,EACnB,MAAMqV,EAAgB,CAAC,sBAAuB,iBAC9C,IAAK,IAAIrwB,EAAI,EAAGA,EAAIqwB,EAAc71B,OAAQwF,GAAK,EAC7C2R,EAAWlN,QAAQ4rB,EAAcrwB,QCjB1B,SAASswB,GAAaxkB,EAAQikB,EAAUtkB,GACrD,MAAM8kB,EAAe,uBAAqB9kB,EAAQ,IAAGA,IAAS,IACxD+kB,EAAmB1kB,EAAOkkB,YAAcD,EAASvnB,KAAKsD,EAAOkkB,aAAeD,EAClF,IAAIU,EAAYD,EAAiBl1B,SAAU,IAAGi1B,KAM9C,OAJKE,EAAUj2B,SACbi2B,EAAYlxB,EAAG,kCAAiCkM,EAAQ,IAAGA,IAAS,cACpE+kB,EAAiBlpB,OAAOmpB,IAEnBA,EvB2oBTx2B,OAAOI,KAAK+tB,GAAY9tB,SAASo2B,IAC/Bz2B,OAAOI,KAAK+tB,EAAWsI,IAAiBp2B,SAASq2B,IAC/CtF,EAAOjsB,UAAUuxB,GAAevI,EAAWsI,GAAgBC,SAI/DtF,EAAOuF,IAAI,CwB1pBI,SAAsCtlB,GAAA,IAAtBC,OAAEA,EAAF9I,GAAUA,EAAV+N,KAAcA,GAAQlF,EACnD,MAAMrN,EAASF,IACf,IAAI0wB,EAAW,KACXoC,EAAiB,KAErB,MAAMC,EAAgB,KACfvlB,IAAUA,EAAOwE,WAAcxE,EAAOsO,cAC3CrJ,EAAK,gBACLA,EAAK,YAqCDugB,EAA2B,KAC1BxlB,IAAUA,EAAOwE,WAAcxE,EAAOsO,aAC3CrJ,EAAK,sBAGP/N,EAAG,QAAQ,KACL8I,EAAOO,OAAOub,qBAAmD,IAA1BppB,EAAO+yB,eAvC7CzlB,IAAUA,EAAOwE,WAAcxE,EAAOsO,cAC3C4U,EAAW,IAAIuC,gBAAgBvK,IAC7BoK,EAAiB5yB,EAAON,uBAAsB,KAC5C,MAAM6Q,MAAEA,EAAFE,OAASA,GAAWnD,EAC1B,IAAI0lB,EAAWziB,EACXmI,EAAYjI,EAChB+X,EAAQnsB,SAAQ42B,IAA6C,IAA5CC,eAAEA,EAAFC,YAAkBA,EAAlBj3B,OAA+BA,GAAa+2B,EACvD/2B,GAAUA,IAAWoR,EAAOvM,KAChCiyB,EAAWG,EACPA,EAAY5iB,OACX2iB,EAAe,IAAMA,GAAgBE,WAC1C1a,EAAYya,EACRA,EAAY1iB,QACXyiB,EAAe,IAAMA,GAAgBG,cAExCL,IAAaziB,GAASmI,IAAcjI,GACtCoiB,UAINrC,EAAS8C,QAAQhmB,EAAOvM,MAuBxBf,EAAOtD,iBAAiB,SAAUm2B,GAClC7yB,EAAOtD,iBAAiB,oBAAqBo2B,OAG/CtuB,EAAG,WAAW,KAvBRouB,GACF5yB,EAAOJ,qBAAqBgzB,GAE1BpC,GAAYA,EAAS+C,WAAajmB,EAAOvM,KAC3CyvB,EAAS+C,UAAUjmB,EAAOvM,IAC1ByvB,EAAW,MAoBbxwB,EAAOrD,oBAAoB,SAAUk2B,GACrC7yB,EAAOrD,oBAAoB,oBAAqBm2B,OC9DrC,SAAsDzlB,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EACnE,MAAMmmB,EAAY,GACZxzB,EAASF,IACT2zB,EAAS,SAACv3B,EAAQozB,QAAiB,IAAjBA,MAAU,IAChC,MACMkB,EAAW,IADIxwB,EAAO0zB,kBAAoB1zB,EAAO2zB,yBACpBC,IAIjC,GAAyB,IAArBA,EAAUr3B,OAEZ,YADAgW,EAAK,iBAAkBqhB,EAAU,IAGnC,MAAMC,EAAiB,WACrBthB,EAAK,iBAAkBqhB,EAAU,KAG/B5zB,EAAON,sBACTM,EAAON,sBAAsBm0B,GAE7B7zB,EAAOT,WAAWs0B,EAAgB,MAItCrD,EAAS8C,QAAQp3B,EAAQ,CACvB43B,gBAA0C,IAAvBxE,EAAQwE,YAAoCxE,EAAQwE,WACvEC,eAAwC,IAAtBzE,EAAQyE,WAAmCzE,EAAQyE,UACrEC,mBAAgD,IAA1B1E,EAAQ0E,eAAuC1E,EAAQ0E,gBAG/ER,EAAUvyB,KAAKuvB,IAyBjB9C,EAAa,CACX8C,UAAU,EACVyD,gBAAgB,EAChBC,sBAAsB,IAExB1vB,EAAG,QA5BU,KACX,GAAK8I,EAAOO,OAAO2iB,SAAnB,CACA,GAAIljB,EAAOO,OAAOomB,eAAgB,CAChC,MAAME,EAAmB7mB,EAAOoF,IAAInN,UACpC,IAAK,IAAIxD,EAAI,EAAGA,EAAIoyB,EAAiB53B,OAAQwF,GAAK,EAChD0xB,EAAOU,EAAiBpyB,IAI5B0xB,EAAOnmB,EAAOoF,IAAI,GAAI,CACpBqhB,UAAWzmB,EAAOO,OAAOqmB,uBAI3BT,EAAOnmB,EAAOoG,WAAW,GAAI,CAAEogB,YAAY,QAe7CtvB,EAAG,WAba,KACdgvB,EAAUn3B,SAASm0B,IACjBA,EAAS4D,gBAEXZ,EAAUjtB,OAAO,EAAGitB,EAAUj3B,cCjDlC,MAAMgxB,GAAU,CCFD,SAAqDlgB,GAAA,IAc9DgnB,GAd0B/mB,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EAyBlE,SAASinB,EAAYte,EAAOtN,GAC1B,MAAMmF,EAASP,EAAOO,OAAOmG,QAC7B,GAAInG,EAAO0mB,OAASjnB,EAAO0G,QAAQugB,MAAM7rB,GACvC,OAAO4E,EAAO0G,QAAQugB,MAAM7rB,GAE9B,MAAMopB,EAAWjkB,EAAOymB,YACpBhzB,EAAEuM,EAAOymB,YAAYjzB,KAAKiM,EAAQ0I,EAAOtN,IACzCpH,EACG,eAAcgM,EAAOO,OAAOuG,wCAAwC1L,MAAUsN,WAIrF,OAFK8b,EAAS/tB,KAAK,4BAA4B+tB,EAAS/tB,KAAK,0BAA2B2E,GACpFmF,EAAO0mB,QAAOjnB,EAAO0G,QAAQugB,MAAM7rB,GAASopB,GACzCA,EAGT,SAAStf,EAAOgiB,GACd,MAAM1e,cAAEA,EAAFc,eAAiBA,EAAjBtB,eAAiCA,GAAmBhI,EAAOO,QAC3D4mB,gBAAEA,EAAFC,eAAmBA,GAAmBpnB,EAAOO,OAAOmG,SAExD2gB,KAAMC,EACNvoB,GAAIwoB,EAFA1gB,OAGJA,EACAI,WAAYugB,EACZntB,OAAQotB,GACNznB,EAAO0G,QACN1G,EAAOO,OAAO0H,SACjBjI,EAAO+N,oBAGT,MAAMtC,EAAczL,EAAOyL,aAAe,EAE1C,IAAIic,EAIAC,EACAC,EAJqBF,EAArB1nB,EAAOsG,aAA2B,QACpBtG,EAAOuF,eAAiB,OAAS,MAI/CyC,GACF2f,EAAczmB,KAAKiI,MAAMX,EAAgB,GAAKc,EAAiB8d,EAC/DQ,EAAe1mB,KAAKiI,MAAMX,EAAgB,GAAKc,EAAiB6d,IAEhEQ,EAAcnf,GAAiBc,EAAiB,GAAK8d,EACrDQ,EAAete,EAAiB6d,GAElC,MAAME,EAAOnmB,KAAKC,KAAKsK,GAAe,GAAKmc,EAAc,GACnD7oB,EAAKmC,KAAKE,KAAKqK,GAAe,GAAKkc,EAAa9gB,EAAO5X,OAAS,GAChEoL,GAAU2F,EAAOiH,WAAWogB,IAAS,IAAMrnB,EAAOiH,WAAW,IAAM,GASzE,SAAS4gB,IACP7nB,EAAO8F,eACP9F,EAAOwM,iBACPxM,EAAOiN,sBACHjN,EAAO8nB,MAAQ9nB,EAAOO,OAAOunB,KAAKnhB,SACpC3G,EAAO8nB,KAAKC,OAEd9iB,EAAK,iBAGP,GAjBAvW,OAAOkX,OAAO5F,EAAO0G,QAAS,CAC5B2gB,OACAtoB,KACA1E,SACA4M,WAAYjH,EAAOiH,aAajBqgB,IAAiBD,GAAQE,IAAexoB,IAAOmoB,EAMjD,OALIlnB,EAAOiH,aAAeugB,GAAsBntB,IAAWotB,GACzDznB,EAAO6G,OAAO7L,IAAI0sB,EAAa,GAAErtB,OAEnC2F,EAAOwM,sBACPvH,EAAK,iBAGP,GAAIjF,EAAOO,OAAOmG,QAAQshB,eAkBxB,OAjBAhoB,EAAOO,OAAOmG,QAAQshB,eAAej0B,KAAKiM,EAAQ,CAChD3F,SACAgtB,OACAtoB,KACA8H,OAAS,WACP,MAAMohB,EAAiB,GACvB,IAAK,IAAIxzB,EAAI4yB,EAAM5yB,GAAKsK,EAAItK,GAAK,EAC/BwzB,EAAet0B,KAAKkT,EAAOpS,IAE7B,OAAOwzB,EALA,UAQPjoB,EAAOO,OAAOmG,QAAQwhB,qBACxBL,IAEA5iB,EAAK,kBAIT,MAAMkjB,EAAiB,GACjBC,EAAgB,GACtB,GAAIlB,EACFlnB,EAAOoG,WAAWnJ,KAAM,IAAG+C,EAAOO,OAAOuG,cAAc/Q,cAEvD,IAAK,IAAItB,EAAI6yB,EAAc7yB,GAAK8yB,EAAY9yB,GAAK,GAC3CA,EAAI4yB,GAAQ5yB,EAAIsK,IAClBiB,EAAOoG,WACJnJ,KAAM,IAAG+C,EAAOO,OAAOuG,uCAAuCrS,OAC9DsB,SAIT,IAAK,IAAItB,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCA,GAAK4yB,GAAQ5yB,GAAKsK,SACM,IAAfwoB,GAA8BL,EACvCkB,EAAcz0B,KAAKc,IAEfA,EAAI8yB,GAAYa,EAAcz0B,KAAKc,GACnCA,EAAI6yB,GAAca,EAAex0B,KAAKc,KAIhD2zB,EAAcr5B,SAASqM,IACrB4E,EAAOoG,WAAWrK,OAAOirB,EAAYngB,EAAOzL,GAAQA,OAEtD+sB,EACGzJ,MAAK,CAAChqB,EAAGiqB,IAAMA,EAAIjqB,IACnB3F,SAASqM,IACR4E,EAAOoG,WAAWhK,QAAQ4qB,EAAYngB,EAAOzL,GAAQA,OAEzD4E,EAAOoG,WAAWrW,SAAS,iBAAiBiL,IAAI0sB,EAAa,GAAErtB,OAC/DwtB,IArJFzH,EAAa,CACX1Z,QAAS,CACPC,SAAS,EACTE,OAAQ,GACRogB,OAAO,EACPD,YAAa,KACbgB,eAAgB,KAChBE,sBAAsB,EACtBf,gBAAiB,EACjBC,eAAgB,KAMpBpnB,EAAO0G,QAAU,CACfugB,MAAO,GACPI,UAAMjvB,EACN2G,QAAI3G,EACJyO,OAAQ,GACRxM,OAAQ,EACR4M,WAAY,IA8Md/P,EAAG,cAAc,KACV8I,EAAOO,OAAOmG,QAAQC,UAC3B3G,EAAO0G,QAAQG,OAAS7G,EAAOO,OAAOmG,QAAQG,OAC9C7G,EAAO1K,WAAW3B,KAAM,GAAEqM,EAAOO,OAAOwK,iCAExC/K,EAAOO,OAAOqK,qBAAsB,EACpC5K,EAAOud,eAAe3S,qBAAsB,EAEvC5K,EAAOO,OAAOgQ,cACjBrL,QAGJhO,EAAG,gBAAgB,KACZ8I,EAAOO,OAAOmG,QAAQC,UACvB3G,EAAOO,OAAO0H,UAAYjI,EAAOgR,mBACnC9e,aAAa60B,GACbA,EAAiB90B,YAAW,KAC1BiT,MACC,MAEHA,QAGJhO,EAAG,sBAAsB,KAClB8I,EAAOO,OAAOmG,QAAQC,SACvB3G,EAAOO,OAAO0H,SAChBvI,EAAeM,EAAOS,UAAW,wBAA0B,GAAET,EAAO4H,oBAIxElZ,OAAOkX,OAAO5F,EAAO0G,QAAS,CAC5Buc,YA1GF,SAAqBpc,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCoS,EAAOpS,IAAIuL,EAAO0G,QAAQG,OAAOlT,KAAKkT,EAAOpS,SAGnDuL,EAAO0G,QAAQG,OAAOlT,KAAKkT,GAE7B3B,GAAO,IAmGPie,aAjGF,SAAsBtc,GACpB,MAAM4E,EAAczL,EAAOyL,YAC3B,IAAIuC,EAAiBvC,EAAc,EAC/B4c,EAAoB,EAExB,GAAIz1B,MAAMc,QAAQmT,GAAS,CACzB,IAAK,IAAIpS,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAClCoS,EAAOpS,IAAIuL,EAAO0G,QAAQG,OAAO/O,QAAQ+O,EAAOpS,IAEtDuZ,EAAiBvC,EAAc5E,EAAO5X,OACtCo5B,EAAoBxhB,EAAO5X,YAE3B+Q,EAAO0G,QAAQG,OAAO/O,QAAQ+O,GAEhC,GAAI7G,EAAOO,OAAOmG,QAAQugB,MAAO,CAC/B,MAAMA,EAAQjnB,EAAO0G,QAAQugB,MACvBqB,EAAW,GACjB55B,OAAOI,KAAKm4B,GAAOl4B,SAASw5B,IAC1B,MAAMC,EAAYvB,EAAMsB,GAClBE,EAAgBD,EAAU/xB,KAAK,2BACjCgyB,GACFD,EAAU/xB,KACR,0BACAgP,SAASgjB,EAAe,IAAMJ,GAGlCC,EAAS7iB,SAAS8iB,EAAa,IAAMF,GAAqBG,KAE5DxoB,EAAO0G,QAAQugB,MAAQqB,EAEzBpjB,GAAO,GACPlF,EAAOkQ,QAAQlC,EAAgB,IAmE/ByV,YAjEF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAIjY,EAAczL,EAAOyL,YACzB,GAAI7Y,MAAMc,QAAQgwB,GAChB,IAAK,IAAIjvB,EAAIivB,EAAcz0B,OAAS,EAAGwF,GAAK,EAAGA,GAAK,EAClDuL,EAAO0G,QAAQG,OAAO5N,OAAOyqB,EAAcjvB,GAAI,GAC3CuL,EAAOO,OAAOmG,QAAQugB,cACjBjnB,EAAO0G,QAAQugB,MAAMvD,EAAcjvB,IAExCivB,EAAcjvB,GAAKgX,IAAaA,GAAe,GACnDA,EAAcvK,KAAKC,IAAIsK,EAAa,QAGtCzL,EAAO0G,QAAQG,OAAO5N,OAAOyqB,EAAe,GACxC1jB,EAAOO,OAAOmG,QAAQugB,cACjBjnB,EAAO0G,QAAQugB,MAAMvD,GAE1BA,EAAgBjY,IAAaA,GAAe,GAChDA,EAAcvK,KAAKC,IAAIsK,EAAa,GAEtCvG,GAAO,GACPlF,EAAOkQ,QAAQzE,EAAa,IA6C5BmY,gBA3CF,WACE5jB,EAAO0G,QAAQG,OAAS,GACpB7G,EAAOO,OAAOmG,QAAQugB,QACxBjnB,EAAO0G,QAAQugB,MAAQ,IAEzB/hB,GAAO,GACPlF,EAAOkQ,QAAQ,EAAG,IAsClBhL,YCtQW,SAAsDnF,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EACnE,MAAM9O,EAAWF,IACX2B,EAASF,IAYf,SAASk2B,EAAOnwB,GACd,IAAKyH,EAAO2G,QAAS,OAErB,MAAQL,aAAcC,GAAQvG,EAC9B,IAAIrI,EAAIY,EACJZ,EAAEgc,gBAAehc,EAAIA,EAAEgc,eAC3B,MAAMgV,EAAKhxB,EAAEixB,SAAWjxB,EAAEkxB,SACpBC,EAAa9oB,EAAOO,OAAOwoB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IACG3oB,EAAO2Q,iBACN3Q,EAAOuF,gBAAkB4jB,GACxBnpB,EAAOwF,cAAgB6jB,GACxBJ,GAEF,OAAO,EAET,IACGjpB,EAAO4Q,iBACN5Q,EAAOuF,gBAAkB2jB,GAAiBlpB,EAAOwF,cAAgB4jB,GAAcJ,GAEjF,OAAO,EAET,KAAIrxB,EAAE2xB,UAAY3xB,EAAE4xB,QAAU5xB,EAAE6xB,SAAW7xB,EAAE8xB,SAI3Cx4B,EAAS3B,eACT2B,EAAS3B,cAAcE,WAC4B,UAAlDyB,EAAS3B,cAAcE,SAASsU,eACmB,aAAlD7S,EAAS3B,cAAcE,SAASsU,gBAJpC,CAQA,GACE9D,EAAOO,OAAOwoB,SAASW,iBACtBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GACvE,CACA,IAAIM,GAAS,EAEb,GACE3pB,EAAOoF,IAAInN,QAAS,IAAG+H,EAAOO,OAAOuG,cAAc7X,OAAS,GACQ,IAApE+Q,EAAOoF,IAAInN,QAAS,IAAG+H,EAAOO,OAAO6M,oBAAoBne,OAEzD,OAGF,MAAMmW,EAAMpF,EAAOoF,IACbwkB,EAAcxkB,EAAI,GAAGC,YACrBwkB,EAAezkB,EAAI,GAAGE,aACtBwkB,EAAcp3B,EAAOkjB,WACrBmU,EAAer3B,EAAO2rB,YACtB2L,EAAehqB,EAAOoF,IAAI/K,SAC5BkM,IAAKyjB,EAAajvB,MAAQiF,EAAOoF,IAAI,GAAGxK,YAC5C,MAAMqvB,EAAc,CAClB,CAACD,EAAajvB,KAAMivB,EAAalvB,KACjC,CAACkvB,EAAajvB,KAAO6uB,EAAaI,EAAalvB,KAC/C,CAACkvB,EAAajvB,KAAMivB,EAAalvB,IAAM+uB,GACvC,CAACG,EAAajvB,KAAO6uB,EAAaI,EAAalvB,IAAM+uB,IAEvD,IAAK,IAAIp1B,EAAI,EAAGA,EAAIw1B,EAAYh7B,OAAQwF,GAAK,EAAG,CAC9C,MAAM8pB,EAAQ0L,EAAYx1B,GAC1B,GAAI8pB,EAAM,IAAM,GAAKA,EAAM,IAAMuL,GAAevL,EAAM,IAAM,GAAKA,EAAM,IAAMwL,EAAc,CACzF,GAAiB,IAAbxL,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCoL,GAAS,GAGb,IAAKA,EAAQ,OAEX3pB,EAAOuF,iBACLyjB,GAAYC,GAAcC,GAAeC,KACvCxxB,EAAEke,eAAgBle,EAAEke,iBACnBle,EAAEuyB,aAAc,KAEjBjB,GAAcE,KAAkB5iB,IAAUyiB,GAAYE,IAAgB3iB,IAC1EvG,EAAOsR,cACH0X,GAAYE,KAAiB3iB,IAAU0iB,GAAcE,IAAiB5iB,IAC1EvG,EAAO+R,eAELiX,GAAYC,GAAcG,GAAaC,KACrC1xB,EAAEke,eAAgBle,EAAEke,iBACnBle,EAAEuyB,aAAc,IAEnBjB,GAAcI,IAAarpB,EAAOsR,aAClC0X,GAAYI,IAAWppB,EAAO+R,aAEpC9M,EAAK,WAAY0jB,IAGnB,SAAS7K,IACH9d,EAAO+oB,SAASpiB,UACpB3S,EAAE/C,GAAUiG,GAAG,UAAWwxB,GAC1B1oB,EAAO+oB,SAASpiB,SAAU,GAE5B,SAASkX,IACF7d,EAAO+oB,SAASpiB,UACrB3S,EAAE/C,GAAU0H,IAAI,UAAW+vB,GAC3B1oB,EAAO+oB,SAASpiB,SAAU,GAlH5B3G,EAAO+oB,SAAW,CAChBpiB,SAAS,GAEXyZ,EAAa,CACX2I,SAAU,CACRpiB,SAAS,EACT+iB,gBAAgB,EAChBZ,YAAY,KA8GhB5xB,EAAG,QAAQ,KACL8I,EAAOO,OAAOwoB,SAASpiB,SACzBmX,OAGJ5mB,EAAG,WAAW,KACR8I,EAAO+oB,SAASpiB,SAClBkX,OAIJnvB,OAAOkX,OAAO5F,EAAO+oB,SAAU,CAC7BjL,SACAD,aCpIW,SAAwD9d,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EACrE,MAAMrN,EAASF,IAmBf,IAAI23B,EAjBJ/J,EAAa,CACXgK,WAAY,CACVzjB,SAAS,EACT0jB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,QAInB3qB,EAAOoqB,WAAa,CAClBzjB,SAAS,GAIX,IACIikB,EADAC,EAAiBttB,IAErB,MAAMutB,EAAoB,GA4E1B,SAASC,IACF/qB,EAAO2G,UACZ3G,EAAOgrB,cAAe,GAExB,SAASC,IACFjrB,EAAO2G,UACZ3G,EAAOgrB,cAAe,GAExB,SAASE,EAAcC,GACrB,QACEnrB,EAAOO,OAAO6pB,WAAWM,gBACzBS,EAASC,MAAQprB,EAAOO,OAAO6pB,WAAWM,oBAO1C1qB,EAAOO,OAAO6pB,WAAWO,eACzBptB,IAAQstB,EAAiB7qB,EAAOO,OAAO6pB,WAAWO,iBAShDQ,EAASC,OAAS,GAAK7tB,IAAQstB,EAAiB,KAgBhDM,EAASnb,UAAY,EACjBhQ,EAAO6M,QAAS7M,EAAOO,OAAOmN,MAAU1N,EAAOyP,YACnDzP,EAAOsR,YACPrM,EAAK,SAAUkmB,EAASE,MAEfrrB,EAAO4M,cAAe5M,EAAOO,OAAOmN,MAAU1N,EAAOyP,YAChEzP,EAAO+R,YACP9M,EAAK,SAAUkmB,EAASE,MAG1BR,GAAiB,IAAIn4B,EAAOX,MAAOiP,WAE5B,KAeT,SAAS0nB,EAAOnwB,GACd,IAAIZ,EAAIY,EACJsf,GAAsB,EAC1B,IAAK7X,EAAO2G,QAAS,OACrB,MAAMpG,EAASP,EAAOO,OAAO6pB,WAEzBpqB,EAAOO,OAAO0H,SAChBtQ,EAAEke,iBAGJ,IAAIjnB,EAASoR,EAAOoF,IAIpB,GAH8C,cAA1CpF,EAAOO,OAAO6pB,WAAWK,eAC3B77B,EAASoF,EAAEgM,EAAOO,OAAO6pB,WAAWK,gBAEjCzqB,EAAOgrB,eAAiBp8B,EAAO,GAAGwH,SAASuB,EAAE/I,UAAY2R,EAAO8pB,eACnE,OAAO,EAEL1yB,EAAEgc,gBAAehc,EAAIA,EAAEgc,eAC3B,IAAIyX,EAAQ,EACZ,MAAME,EAAYtrB,EAAOsG,cAAgB,EAAI,EAEvC7M,EAtKR,SAAmB9B,GAMjB,IAAI4zB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EA0DT,MAvDI,WAAY/zB,IACd6zB,EAAK7zB,EAAE2B,QAEL,eAAgB3B,IAClB6zB,GAAM7zB,EAAEg0B,WAAa,KAEnB,gBAAiBh0B,IACnB6zB,GAAM7zB,EAAEi0B,YAAc,KAEpB,gBAAiBj0B,IACnB4zB,GAAM5zB,EAAEk0B,YAAc,KAIpB,SAAUl0B,GAAKA,EAAE8F,OAAS9F,EAAEm0B,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EA7BmB,GA6BdF,EACLG,EA9BmB,GA8BdF,EAED,WAAY7zB,IACd+zB,EAAK/zB,EAAEo0B,QAEL,WAAYp0B,IACd8zB,EAAK9zB,EAAEq0B,QAGLr0B,EAAE2xB,WAAamC,IAEjBA,EAAKC,EACLA,EAAK,IAGFD,GAAMC,IAAO/zB,EAAEs0B,YACE,IAAhBt0B,EAAEs0B,WAEJR,GA/CgB,GAgDhBC,GAhDgB,KAmDhBD,GAlDgB,IAmDhBC,GAnDgB,MAwDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAGd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,GA+FG1Z,CAAUra,GAEvB,GAAI4I,EAAOgqB,YACT,GAAIvqB,EAAOuF,eAAgB,CACzB,KAAIrE,KAAKmI,IAAI5P,EAAK2yB,QAAUlrB,KAAKmI,IAAI5P,EAAK4yB,SACrC,OAAO,EADuCjB,GAAS3xB,EAAK2yB,OAASd,MAErE,MAAIpqB,KAAKmI,IAAI5P,EAAK4yB,QAAUnrB,KAAKmI,IAAI5P,EAAK2yB,SAC5C,OAAO,EAD8ChB,GAAS3xB,EAAK4yB,YAGxEjB,EACElqB,KAAKmI,IAAI5P,EAAK2yB,QAAUlrB,KAAKmI,IAAI5P,EAAK4yB,SAAW5yB,EAAK2yB,OAASd,GAAa7xB,EAAK4yB,OAGrF,GAAc,IAAVjB,EAAa,OAAO,EAEpB7qB,EAAO+pB,SAAQc,GAASA,GAG5B,IAAIkB,EAAYtsB,EAAOxC,eAAiB4tB,EAAQ7qB,EAAOiqB,YAkBvD,GAhBI8B,GAAatsB,EAAOmM,iBAAgBmgB,EAAYtsB,EAAOmM,gBACvDmgB,GAAatsB,EAAO2M,iBAAgB2f,EAAYtsB,EAAO2M,gBAS3DkL,IAAsB7X,EAAOO,OAAOmN,QAE9B4e,IAActsB,EAAOmM,gBAAkBmgB,IAActsB,EAAO2M,gBAE9DkL,GAAuB7X,EAAOO,OAAO+W,QAAQ3f,EAAE4f,kBAE9CvX,EAAOO,OAAOmW,UAAa1W,EAAOO,OAAOmW,SAAS/P,QAyChD,CAOL,MAAMwkB,EAAW,CACf9qB,KAAM9C,IACN6tB,MAAOlqB,KAAKmI,IAAI+hB,GAChBpb,UAAW9O,KAAKqrB,KAAKnB,IAEjBoB,EACJ5B,GACAO,EAAS9qB,KAAOuqB,EAAoBvqB,KAAO,KAC3C8qB,EAASC,OAASR,EAAoBQ,OACtCD,EAASnb,YAAc4a,EAAoB5a,UAC7C,IAAKwc,EAAmB,CACtB5B,OAAsBxyB,EAElB4H,EAAOO,OAAOmN,MAChB1N,EAAO4R,UAET,IAAI6a,EAAWzsB,EAAOxC,eAAiB4tB,EAAQ7qB,EAAOiqB,YACtD,MAAM1d,EAAe9M,EAAO4M,YACtBG,EAAS/M,EAAO6M,MAetB,GAbI4f,GAAYzsB,EAAOmM,iBAAgBsgB,EAAWzsB,EAAOmM,gBACrDsgB,GAAYzsB,EAAO2M,iBAAgB8f,EAAWzsB,EAAO2M,gBAEzD3M,EAAOqL,cAAc,GACrBrL,EAAO+O,aAAa0d,GACpBzsB,EAAOwM,iBACPxM,EAAO+N,oBACP/N,EAAOiN,wBAEDH,GAAgB9M,EAAO4M,cAAkBG,GAAU/M,EAAO6M,QAC9D7M,EAAOiN,sBAGLjN,EAAOO,OAAOmW,SAASgW,OAAQ,CAYjCx6B,aAAai4B,GACbA,OAAU/xB,EACN0yB,EAAkB77B,QAAU,IAC9B67B,EAAkB6B,QAEpB,MAAMC,EAAY9B,EAAkB77B,OAChC67B,EAAkBA,EAAkB77B,OAAS,QAC7CmJ,EACEy0B,EAAa/B,EAAkB,GAErC,GADAA,EAAkBn3B,KAAKw3B,GAErByB,IACCzB,EAASC,MAAQwB,EAAUxB,OAASD,EAASnb,YAAc4c,EAAU5c,WAGtE8a,EAAkB7xB,OAAO,QACpB,GACL6xB,EAAkB77B,QAAU,IAC5Bk8B,EAAS9qB,KAAOwsB,EAAWxsB,KAAO,KAClCwsB,EAAWzB,MAAQD,EAASC,OAAS,GACrCD,EAASC,OAAS,EAClB,CAOA,MAAM0B,EAAkB1B,EAAQ,EAAI,GAAM,GAC1CR,EAAsBO,EACtBL,EAAkB7xB,OAAO,GACzBkxB,EAAU9sB,GAAS,KACjB2C,EAAOwS,eAAexS,EAAOO,OAAOC,OAAO,OAAMpI,EAAW00B,KAC3D,GAEA3C,IAIHA,EAAU9sB,GAAS,KAEjButB,EAAsBO,EACtBL,EAAkB7xB,OAAO,GACzB+G,EAAOwS,eAAexS,EAAOO,OAAOC,OAAO,OAAMpI,EAHzB,MAIvB,MAWP,GANKo0B,GAAmBvnB,EAAK,SAAUtN,GAGnCqI,EAAOO,OAAO+Y,UAAYtZ,EAAOO,OAAOwsB,8BAC1C/sB,EAAOsZ,SAAS0T,OAEdP,IAAazsB,EAAOmM,gBAAkBsgB,IAAazsB,EAAO2M,eAAgB,OAAO,OApJzB,CAE9D,MAAMwe,EAAW,CACf9qB,KAAM9C,IACN6tB,MAAOlqB,KAAKmI,IAAI+hB,GAChBpb,UAAW9O,KAAKqrB,KAAKnB,GACrBC,IAAK9yB,GAIHuyB,EAAkB77B,QAAU,GAC9B67B,EAAkB6B,QAEpB,MAAMC,EAAY9B,EAAkB77B,OAChC67B,EAAkBA,EAAkB77B,OAAS,QAC7CmJ,EAuBJ,GAtBA0yB,EAAkBn3B,KAAKw3B,GAQnByB,GAEAzB,EAASnb,YAAc4c,EAAU5c,WACjCmb,EAASC,MAAQwB,EAAUxB,OAC3BD,EAAS9qB,KAAOusB,EAAUvsB,KAAO,MAEjC6qB,EAAcC,GAGhBD,EAAcC,GAvGpB,SAAuBA,GACrB,MAAM5qB,EAASP,EAAOO,OAAO6pB,WAC7B,GAAIe,EAASnb,UAAY,GACvB,GAAIhQ,EAAO6M,QAAU7M,EAAOO,OAAOmN,MAAQnN,EAAO8pB,eAEhD,OAAO,OAEJ,GAAIrqB,EAAO4M,cAAgB5M,EAAOO,OAAOmN,MAAQnN,EAAO8pB,eAE7D,OAAO,EAET,OAAO,EAiGD4C,CAAc9B,GAChB,OAAO,EAmHX,OAFIxzB,EAAEke,eAAgBle,EAAEke,iBACnBle,EAAEuyB,aAAc,GACd,EAGT,SAAS7xB,EAAOoM,GACd,IAAI7V,EAASoR,EAAOoF,IAC0B,cAA1CpF,EAAOO,OAAO6pB,WAAWK,eAC3B77B,EAASoF,EAAEgM,EAAOO,OAAO6pB,WAAWK,eAEtC77B,EAAO6V,GAAQ,aAAcsmB,GAC7Bn8B,EAAO6V,GAAQ,aAAcwmB,GAC7Br8B,EAAO6V,GAAQ,QAASikB,GAG1B,SAAS5K,IACP,OAAI9d,EAAOO,OAAO0H,SAChBjI,EAAOS,UAAUpR,oBAAoB,QAASq5B,IACvC,IAEL1oB,EAAOoqB,WAAWzjB,UACtBtO,EAAO,MACP2H,EAAOoqB,WAAWzjB,SAAU,GACrB,GAET,SAASkX,IACP,OAAI7d,EAAOO,OAAO0H,SAChBjI,EAAOS,UAAUrR,iBAAiBmJ,MAAOmwB,IAClC,KAEJ1oB,EAAOoqB,WAAWzjB,UACvBtO,EAAO,OACP2H,EAAOoqB,WAAWzjB,SAAU,GACrB,GAGTzP,EAAG,QAAQ,MACJ8I,EAAOO,OAAO6pB,WAAWzjB,SAAW3G,EAAOO,OAAO0H,SACrD4V,IAEE7d,EAAOO,OAAO6pB,WAAWzjB,SAASmX,OAExC5mB,EAAG,WAAW,KACR8I,EAAOO,OAAO0H,SAChB6V,IAEE9d,EAAOoqB,WAAWzjB,SAASkX,OAGjCnvB,OAAOkX,OAAO5F,EAAOoqB,WAAY,CAC/BtM,SACAD,aChbW,SAAwD9d,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EAqBrE,SAASmtB,EAAMz5B,GACb,IAAI2R,EAYJ,OAXI3R,IACF2R,EAAMpR,EAAEP,GAENuM,EAAOO,OAAO4b,mBACA,iBAAP1oB,GACP2R,EAAInW,OAAS,GACkB,IAA/B+Q,EAAOoF,IAAInI,KAAKxJ,GAAIxE,SAEpBmW,EAAMpF,EAAOoF,IAAInI,KAAKxJ,KAGnB2R,EAGT,SAAS+nB,EAAS/nB,EAAKgoB,GACrB,MAAM7sB,EAASP,EAAOO,OAAO0Y,WACzB7T,GAAOA,EAAInW,OAAS,IACtBmW,EAAIgoB,EAAW,WAAa,eAAe7sB,EAAO8sB,eAC9CjoB,EAAI,IAAyB,WAAnBA,EAAI,GAAGkoB,UAAsBloB,EAAI,GAAGgoB,SAAWA,GACzDptB,EAAOO,OAAOmK,eAAiB1K,EAAO2G,SACxCvB,EAAIpF,EAAOgd,SAAW,WAAa,eAAezc,EAAOgtB,YAI/D,SAASroB,IAEP,GAAIlF,EAAOO,OAAOmN,KAAM,OACxB,MAAM8f,QAAEA,EAAFC,QAAWA,GAAYztB,EAAOiZ,WAEpCkU,EAASM,EAASztB,EAAO4M,cAAgB5M,EAAOO,OAAOuR,QACvDqb,EAASK,EAASxtB,EAAO6M,QAAU7M,EAAOO,OAAOuR,QAEnD,SAAS4b,EAAY/1B,GACnBA,EAAEke,mBACE7V,EAAO4M,aAAgB5M,EAAOO,OAAOmN,MAAS1N,EAAOO,OAAOuR,UAChE9R,EAAO+R,YACP9M,EAAK,mBAEP,SAAS0oB,EAAYh2B,GACnBA,EAAEke,mBACE7V,EAAO6M,OAAU7M,EAAOO,OAAOmN,MAAS1N,EAAOO,OAAOuR,UAC1D9R,EAAOsR,YACPrM,EAAK,mBAEP,SAAS4W,IACP,MAAMtb,EAASP,EAAOO,OAAO0Y,WAW7B,GATAjZ,EAAOO,OAAO0Y,WAAa4J,EACzB7iB,EACAA,EAAOud,eAAetE,WACtBjZ,EAAOO,OAAO0Y,WACd,CACEC,OAAQ,qBACRC,OAAQ,wBAGN5Y,EAAO2Y,SAAU3Y,EAAO4Y,OAAS,OAEvC,MAAMqU,EAAUN,EAAM3sB,EAAO2Y,QACvBuU,EAAUP,EAAM3sB,EAAO4Y,QAEzBqU,GAAWA,EAAQv+B,OAAS,GAC9Bu+B,EAAQt2B,GAAG,QAASy2B,GAElBF,GAAWA,EAAQx+B,OAAS,GAC9Bw+B,EAAQv2B,GAAG,QAASw2B,GAGtBh/B,OAAOkX,OAAO5F,EAAOiZ,WAAY,CAC/BuU,UACAtU,OAAQsU,GAAWA,EAAQ,GAC3BC,UACAtU,OAAQsU,GAAWA,EAAQ,KAGxBztB,EAAO2G,UACN6mB,GAASA,EAAQv4B,SAASsL,EAAOgtB,WACjCE,GAASA,EAAQx4B,SAASsL,EAAOgtB,YAGzC,SAASpL,IACP,MAAMqL,QAAEA,EAAFC,QAAWA,GAAYztB,EAAOiZ,WAChCuU,GAAWA,EAAQv+B,SACrBu+B,EAAQ70B,IAAI,QAASg1B,GACrBH,EAAQ53B,YAAYoK,EAAOO,OAAO0Y,WAAWoU,gBAE3CI,GAAWA,EAAQx+B,SACrBw+B,EAAQ90B,IAAI,QAAS+0B,GACrBD,EAAQ73B,YAAYoK,EAAOO,OAAO0Y,WAAWoU,gBA9GjDjN,EAAa,CACXnH,WAAY,CACVC,OAAQ,KACRC,OAAQ,KAERyU,aAAa,EACbP,cAAe,yBACfQ,YAAa,uBACbN,UAAW,qBACXO,wBAAyB,gCAI7B9tB,EAAOiZ,WAAa,CAClBC,OAAQ,KACRsU,QAAS,KACTrU,OAAQ,KACRsU,QAAS,MAiGXv2B,EAAG,QAAQ,MACgC,IAArC8I,EAAOO,OAAO0Y,WAAWtS,QAE3BkX,KAEAhC,IACA3W,QAGJhO,EAAG,+BAA+B,KAChCgO,OAEFhO,EAAG,WAAW,KACZirB,OAEFjrB,EAAG,kBAAkB,KACnB,MAAMs2B,QAAEA,EAAFC,QAAWA,GAAYztB,EAAOiZ,WAChCuU,GACFA,EAAQxtB,EAAO2G,QAAU,cAAgB,YAAY3G,EAAOO,OAAO0Y,WAAWsU,WAE5EE,GACFA,EAAQztB,EAAO2G,QAAU,cAAgB,YAAY3G,EAAOO,OAAO0Y,WAAWsU,cAGlFr2B,EAAG,SAAS,CAACktB,EAAIzsB,KACf,MAAM61B,QAAEA,EAAFC,QAAWA,GAAYztB,EAAOiZ,WAC9B8U,EAAWp2B,EAAE/I,OACnB,GACEoR,EAAOO,OAAO0Y,WAAW2U,cACxB55B,EAAE+5B,GAAUh2B,GAAG01B,KACfz5B,EAAE+5B,GAAUh2B,GAAGy1B,GAChB,CACA,GACExtB,EAAOguB,YACPhuB,EAAOO,OAAOytB,YACdhuB,EAAOO,OAAOytB,WAAWC,YACxBjuB,EAAOguB,WAAWv6B,KAAOs6B,GAAY/tB,EAAOguB,WAAWv6B,GAAG2C,SAAS23B,IAEpE,OACF,IAAIG,EACAV,EACFU,EAAWV,EAAQx3B,SAASgK,EAAOO,OAAO0Y,WAAW4U,aAC5CJ,IACTS,EAAWT,EAAQz3B,SAASgK,EAAOO,OAAO0Y,WAAW4U,cAGrD5oB,GADe,IAAbipB,EACG,iBAEA,kBAEHV,GACFA,EAAQn3B,YAAY2J,EAAOO,OAAO0Y,WAAW4U,aAE3CJ,GACFA,EAAQp3B,YAAY2J,EAAOO,OAAO0Y,WAAW4U,iBAKnD,MAMMhQ,EAAU,KACd7d,EAAOoF,IAAInQ,SAAS+K,EAAOO,OAAO0Y,WAAW6U,yBAC7C3L,KAGFzzB,OAAOkX,OAAO5F,EAAOiZ,WAAY,CAC/B6E,OAZa,KACb9d,EAAOoF,IAAIxP,YAAYoK,EAAOO,OAAO0Y,WAAW6U,yBAChDjS,IACA3W,KAUA2Y,UACA3Y,SACA2W,OACAsG,aC7LW,SAAwDpiB,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EACrE,MAAMouB,EAAM,oBAuCZ,IAAIC,EAtCJhO,EAAa,CACX4N,WAAY,CACVv6B,GAAI,KACJ46B,cAAe,OACfJ,WAAW,EACXL,aAAa,EACbU,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrB3a,KAAM,UACN4a,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAwBC,GAAWA,EACnCC,oBAAsBD,GAAWA,EACjCE,YAAc,GAAEb,WAChBc,kBAAoB,GAAEd,kBACtBe,cAAgB,GAAEf,KAClBgB,aAAe,GAAEhB,YACjBiB,WAAa,GAAEjB,UACfN,YAAc,GAAEM,WAChBkB,qBAAuB,GAAElB,qBACzBmB,yBAA2B,GAAEnB,yBAC7BoB,eAAiB,GAAEpB,cACnBZ,UAAY,GAAEY,SACdqB,gBAAkB,GAAErB,eACpBsB,cAAgB,GAAEtB,aAClBuB,wBAA0B,GAAEvB,gBAIhCnuB,EAAOguB,WAAa,CAClBv6B,GAAI,KACJ2R,IAAK,KACLuqB,QAAS,IAIX,IAAIC,EAAqB,EAEzB,SAASC,IACP,OACG7vB,EAAOO,OAAOytB,WAAWv6B,KACzBuM,EAAOguB,WAAWv6B,KAClBuM,EAAOguB,WAAW5oB,KACc,IAAjCpF,EAAOguB,WAAW5oB,IAAInW,OAI1B,SAAS6gC,EAAeC,EAAWtD,GACjC,MAAMwC,kBAAEA,GAAsBjvB,EAAOO,OAAOytB,WAC5C+B,EAAUtD,KACPx3B,SAAU,GAAEg6B,KAAqBxC,KACjCA,KACAx3B,SAAU,GAAEg6B,KAAqBxC,KAAYA,KAGlD,SAASvnB,IAEP,MAAMqB,EAAMvG,EAAOuG,IACbhG,EAASP,EAAOO,OAAOytB,WAC7B,GAAI6B,IAAwB,OAC5B,MAAM9oB,EACJ/G,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QACpC3G,EAAO0G,QAAQG,OAAO5X,OACtB+Q,EAAO6G,OAAO5X,OACdmW,EAAMpF,EAAOguB,WAAW5oB,IAE9B,IAAItE,EACJ,MAAMkvB,EAAQhwB,EAAOO,OAAOmN,KACxBxM,KAAKsK,MAAMzE,EAAqC,EAAtB/G,EAAOqR,cAAoBrR,EAAOO,OAAO+I,gBACnEtJ,EAAOgH,SAAS/X,OAgBpB,GAfI+Q,EAAOO,OAAOmN,MAChB5M,EAAUI,KAAKsK,MACZxL,EAAOyL,YAAczL,EAAOqR,cAAgBrR,EAAOO,OAAO+I,gBAEzDxI,EAAUiG,EAAe,EAA0B,EAAtB/G,EAAOqR,eACtCvQ,GAAWiG,EAAqC,EAAtB/G,EAAOqR,cAE/BvQ,EAAUkvB,EAAQ,IAAGlvB,GAAWkvB,GAChClvB,EAAU,GAAsC,YAAjCd,EAAOO,OAAO0vB,iBAA8BnvB,EAAUkvB,EAAQlvB,IAEjFA,OADqC,IAArBd,EAAOsK,UACbtK,EAAOsK,UAEPtK,EAAOyL,aAAe,EAIhB,YAAhBlL,EAAOwT,MACP/T,EAAOguB,WAAW2B,SAClB3vB,EAAOguB,WAAW2B,QAAQ1gC,OAAS,EACnC,CACA,MAAM0gC,EAAU3vB,EAAOguB,WAAW2B,QAClC,IAAIO,EACA5d,EACA6d,EAwBJ,GAvBI5vB,EAAOouB,iBACTP,EAAauB,EAAQ9zB,GAAG,GAAGmE,EAAOuF,eAAiB,aAAe,gBAAe,GACjFH,EAAIpK,IACFgF,EAAOuF,eAAiB,QAAU,SAC/B6oB,GAAc7tB,EAAOquB,mBAAqB,GAA5C,MAECruB,EAAOquB,mBAAqB,QAA8Bx2B,IAAzB4H,EAAOiO,gBAC1C2hB,GAAsB9uB,GAAWd,EAAOiO,cAAgBjO,EAAOqR,cAAgB,GAC3Eue,EAAqBrvB,EAAOquB,mBAAqB,EACnDgB,EAAqBrvB,EAAOquB,mBAAqB,EACxCgB,EAAqB,IAC9BA,EAAqB,IAGzBM,EAAahvB,KAAKC,IAAIL,EAAU8uB,EAAoB,GACpDtd,EAAY4d,GAAchvB,KAAKE,IAAIuuB,EAAQ1gC,OAAQsR,EAAOquB,oBAAsB,GAChFuB,GAAY7d,EAAY4d,GAAc,GAExCP,EAAQ/5B,YACN,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAChDL,KAAK66B,GAAY,GAAE7vB,EAAO0uB,oBAAoBmB,MAC9ClyB,KAAK,MAENkH,EAAInW,OAAS,EACf0gC,EAAQx0B,MAAMk1B,IACZ,MAAMC,EAAUt8B,EAAEq8B,GACZE,EAAcD,EAAQl1B,QACxBm1B,IAAgBzvB,GAClBwvB,EAAQr7B,SAASsL,EAAO0uB,mBAEtB1uB,EAAOouB,iBACL4B,GAAeL,GAAcK,GAAeje,GAC9Cge,EAAQr7B,SAAU,GAAEsL,EAAO0uB,0BAEzBsB,IAAgBL,GAClBJ,EAAeQ,EAAS,QAEtBC,IAAgBje,GAClBwd,EAAeQ,EAAS,gBAIzB,CACL,MAAMA,EAAUX,EAAQ9zB,GAAGiF,GACrByvB,EAAcD,EAAQl1B,QAE5B,GADAk1B,EAAQr7B,SAASsL,EAAO0uB,mBACpB1uB,EAAOouB,eAAgB,CACzB,MAAM6B,EAAwBb,EAAQ9zB,GAAGq0B,GACnCO,EAAuBd,EAAQ9zB,GAAGyW,GACxC,IAAK,IAAI7d,EAAIy7B,EAAYz7B,GAAK6d,EAAW7d,GAAK,EAC5Ck7B,EAAQ9zB,GAAGpH,GAAGQ,SAAU,GAAEsL,EAAO0uB,0BAEnC,GAAIjvB,EAAOO,OAAOmN,KAChB,GAAI6iB,GAAeZ,EAAQ1gC,OAAQ,CACjC,IAAK,IAAIwF,EAAI8L,EAAOquB,mBAAoBn6B,GAAK,EAAGA,GAAK,EACnDk7B,EAAQ9zB,GAAG8zB,EAAQ1gC,OAASwF,GAAGQ,SAAU,GAAEsL,EAAO0uB,0BAEpDU,EACG9zB,GAAG8zB,EAAQ1gC,OAASsR,EAAOquB,mBAAqB,GAChD35B,SAAU,GAAEsL,EAAO0uB,+BAEtBa,EAAeU,EAAuB,QACtCV,EAAeW,EAAsB,aAGvCX,EAAeU,EAAuB,QACtCV,EAAeW,EAAsB,SAI3C,GAAIlwB,EAAOouB,eAAgB,CACzB,MAAM+B,EAAuBxvB,KAAKE,IAAIuuB,EAAQ1gC,OAAQsR,EAAOquB,mBAAqB,GAC5E+B,GACHvC,EAAasC,EAAuBtC,GAAc,EAAI+B,EAAW/B,EAC9D1G,EAAanhB,EAAM,QAAU,OACnCopB,EAAQ30B,IAAIgF,EAAOuF,eAAiBmiB,EAAa,MAAQ,GAAEiJ,QAS/D,GANoB,aAAhBpwB,EAAOwT,OACT3O,EACGnI,KAAK+lB,EAAkBziB,EAAO4uB,eAC9B9zB,KAAKkF,EAAOsuB,sBAAsB/tB,EAAU,IAC/CsE,EAAInI,KAAK+lB,EAAkBziB,EAAO6uB,aAAa/zB,KAAKkF,EAAOwuB,oBAAoBiB,KAE7D,gBAAhBzvB,EAAOwT,KAAwB,CACjC,IAAI6c,EAEFA,EADErwB,EAAOmuB,oBACc1uB,EAAOuF,eAAiB,WAAa,aAErCvF,EAAOuF,eAAiB,aAAe,WAEhE,MAAMsrB,GAAS/vB,EAAU,GAAKkvB,EAC9B,IAAIc,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXzrB,EACGnI,KAAK+lB,EAAkBziB,EAAO8uB,uBAC9Bt4B,UAAW,6BAA4B+5B,aAAkBC,MACzDjU,WAAW9c,EAAOO,OAAOC,OAEV,WAAhBD,EAAOwT,MAAqBxT,EAAOkuB,cACrCrpB,EAAIjR,KAAKoM,EAAOkuB,aAAazuB,EAAQc,EAAU,EAAGkvB,IAClD/qB,EAAK,mBAAoBG,EAAI,KAE7BH,EAAK,mBAAoBG,EAAI,IAE3BpF,EAAOO,OAAOmK,eAAiB1K,EAAO2G,SACxCvB,EAAIpF,EAAOgd,SAAW,WAAa,eAAezc,EAAOgtB,WAG7D,SAASyD,IAEP,MAAMzwB,EAASP,EAAOO,OAAOytB,WAC7B,GAAI6B,IAAwB,OAC5B,MAAM9oB,EACJ/G,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QACpC3G,EAAO0G,QAAQG,OAAO5X,OACtB+Q,EAAO6G,OAAO5X,OAEdmW,EAAMpF,EAAOguB,WAAW5oB,IAC9B,IAAI6rB,EAAiB,GACrB,GAAoB,YAAhB1wB,EAAOwT,KAAoB,CAC7B,IAAImd,EAAkBlxB,EAAOO,OAAOmN,KAChCxM,KAAKsK,MAAMzE,EAAqC,EAAtB/G,EAAOqR,cAAoBrR,EAAOO,OAAO+I,gBACnEtJ,EAAOgH,SAAS/X,OAElB+Q,EAAOO,OAAOmW,UACd1W,EAAOO,OAAOmW,SAAS/P,UACtB3G,EAAOO,OAAOmN,MACfwjB,EAAkBnqB,IAElBmqB,EAAkBnqB,GAEpB,IAAK,IAAItS,EAAI,EAAGA,EAAIy8B,EAAiBz8B,GAAK,EACpC8L,EAAO+tB,aACT2C,GAAkB1wB,EAAO+tB,aAAav6B,KAAKiM,EAAQvL,EAAG8L,EAAOyuB,aAE7DiC,GAAmB,IAAG1wB,EAAO8tB,wBAAwB9tB,EAAOyuB,kBAAkBzuB,EAAO8tB,iBAGzFjpB,EAAIjR,KAAK88B,GAETjxB,EAAOguB,WAAW2B,QAAUvqB,EAAInI,KAAK+lB,EAAkBziB,EAAOyuB,cAE5C,aAAhBzuB,EAAOwT,OAEPkd,EADE1wB,EAAOiuB,eACQjuB,EAAOiuB,eAAez6B,KAAKiM,EAAQO,EAAO4uB,aAAc5uB,EAAO6uB,YAG7E,gBAAe7uB,EAAO4uB,wCAEP5uB,EAAO6uB,sBAE3BhqB,EAAIjR,KAAK88B,IAES,gBAAhB1wB,EAAOwT,OAEPkd,EADE1wB,EAAOguB,kBACQhuB,EAAOguB,kBAAkBx6B,KAAKiM,EAAQO,EAAO8uB,sBAE5C,gBAAe9uB,EAAO8uB,gCAE1CjqB,EAAIjR,KAAK88B,IAES,WAAhB1wB,EAAOwT,MACT9O,EAAK,mBAAoBjF,EAAOguB,WAAW5oB,IAAI,IAGnD,SAASyW,IACP7b,EAAOO,OAAOytB,WAAanL,EACzB7iB,EACAA,EAAOud,eAAeyQ,WACtBhuB,EAAOO,OAAOytB,WACd,CAAEv6B,GAAI,sBAER,MAAM8M,EAASP,EAAOO,OAAOytB,WAC7B,IAAKztB,EAAO9M,GAAI,OAEhB,IAAI2R,EAAMpR,EAAEuM,EAAO9M,IACA,IAAf2R,EAAInW,SAEJ+Q,EAAOO,OAAO4b,mBAA0C,iBAAd5b,EAAO9M,IAAmB2R,EAAInW,OAAS,IACnFmW,EAAMpF,EAAOoF,IAAInI,KAAKsD,EAAO9M,IAEzB2R,EAAInW,OAAS,IACfmW,EAAMA,EAAItR,QAAQL,GACZO,EAAEP,GAAIwE,QAAQ,WAAW,KAAO+H,EAAOvM,OAM7B,YAAhB8M,EAAOwT,MAAsBxT,EAAO0tB,WACtC7oB,EAAInQ,SAASsL,EAAOgvB,gBAGtBnqB,EAAInQ,SAASsL,EAAO2uB,cAAgB3uB,EAAOwT,MAC3C3O,EAAInQ,SAAS+K,EAAOuF,eAAiBhF,EAAOivB,gBAAkBjvB,EAAOkvB,eAEjD,YAAhBlvB,EAAOwT,MAAsBxT,EAAOouB,iBACtCvpB,EAAInQ,SAAU,GAAEsL,EAAO2uB,gBAAgB3uB,EAAOwT,gBAC9C6b,EAAqB,EACjBrvB,EAAOquB,mBAAqB,IAC9BruB,EAAOquB,mBAAqB,IAGZ,gBAAhBruB,EAAOwT,MAA0BxT,EAAOmuB,qBAC1CtpB,EAAInQ,SAASsL,EAAO+uB,0BAGlB/uB,EAAO0tB,WACT7oB,EAAIlO,GAAG,QAAS8rB,EAAkBziB,EAAOyuB,cAAc,SAAiBr3B,GACtEA,EAAEke,iBACF,IAAIza,EAAQpH,EAAErC,MAAMyJ,QAAU4E,EAAOO,OAAO+I,eACxCtJ,EAAOO,OAAOmN,OAAMtS,GAAS4E,EAAOqR,cACxCrR,EAAOkQ,QAAQ9U,MAInB1M,OAAOkX,OAAO5F,EAAOguB,WAAY,CAC/B5oB,MACA3R,GAAI2R,EAAI,KAGLpF,EAAO2G,SACVvB,EAAInQ,SAASsL,EAAOgtB,YAGxB,SAASpL,IACP,MAAM5hB,EAASP,EAAOO,OAAOytB,WAC7B,GAAI6B,IAAwB,OAC5B,MAAMzqB,EAAMpF,EAAOguB,WAAW5oB,IAE9BA,EAAIxP,YAAY2K,EAAOstB,aACvBzoB,EAAIxP,YAAY2K,EAAO2uB,cAAgB3uB,EAAOwT,MAC9C3O,EAAIxP,YAAYoK,EAAOuF,eAAiBhF,EAAOivB,gBAAkBjvB,EAAOkvB,eACpEzvB,EAAOguB,WAAW2B,SAAW3vB,EAAOguB,WAAW2B,QAAQ/5B,aACzDoK,EAAOguB,WAAW2B,QAAQ/5B,YAAY2K,EAAO0uB,mBAC3C1uB,EAAO0tB,WACT7oB,EAAIzM,IAAI,QAASqqB,EAAkBziB,EAAOyuB,cAI9C93B,EAAG,QAAQ,MACgC,IAArC8I,EAAOO,OAAOytB,WAAWrnB,QAE3BkX,KAEAhC,IACAmV,IACA9rB,QAGJhO,EAAG,qBAAqB,MAClB8I,EAAOO,OAAOmN,WAEqB,IAArB1N,EAAOsK,YADvBpF,OAKJhO,EAAG,mBAAmB,KACf8I,EAAOO,OAAOmN,MACjBxI,OAGJhO,EAAG,sBAAsB,KACnB8I,EAAOO,OAAOmN,OAChBsjB,IACA9rB,QAGJhO,EAAG,wBAAwB,KACpB8I,EAAOO,OAAOmN,OACjBsjB,IACA9rB,QAGJhO,EAAG,WAAW,KACZirB,OAEFjrB,EAAG,kBAAkB,KACnB,MAAMkO,IAAEA,GAAQpF,EAAOguB,WACnB5oB,GACFA,EAAIpF,EAAO2G,QAAU,cAAgB,YAAY3G,EAAOO,OAAOytB,WAAWT,cAG9Er2B,EAAG,eAAe,KAChBgO,OAEFhO,EAAG,SAAS,CAACktB,EAAIzsB,KACf,MAAMo2B,EAAWp2B,EAAE/I,QACbwW,IAAEA,GAAQpF,EAAOguB,WACvB,GACEhuB,EAAOO,OAAOytB,WAAWv6B,IACzBuM,EAAOO,OAAOytB,WAAWJ,aACzBxoB,GACAA,EAAInW,OAAS,IACZ+E,EAAE+5B,GAAU/3B,SAASgK,EAAOO,OAAOytB,WAAWgB,aAC/C,CACA,GACEhvB,EAAOiZ,aACLjZ,EAAOiZ,WAAWC,QAAU6U,IAAa/tB,EAAOiZ,WAAWC,QAC1DlZ,EAAOiZ,WAAWE,QAAU4U,IAAa/tB,EAAOiZ,WAAWE,QAE9D,OACF,MAAM+U,EAAW9oB,EAAIpP,SAASgK,EAAOO,OAAOytB,WAAWH,aAErD5oB,GADe,IAAbipB,EACG,iBAEA,kBAEP9oB,EAAI/O,YAAY2J,EAAOO,OAAOytB,WAAWH,iBAI7C,MAUMhQ,EAAU,KACd7d,EAAOoF,IAAInQ,SAAS+K,EAAOO,OAAOytB,WAAW0B,yBACzC1vB,EAAOguB,WAAW5oB,KACpBpF,EAAOguB,WAAW5oB,IAAInQ,SAAS+K,EAAOO,OAAOytB,WAAW0B,yBAE1DvN,KAGFzzB,OAAOkX,OAAO5F,EAAOguB,WAAY,CAC/BlQ,OAnBa,KACb9d,EAAOoF,IAAIxP,YAAYoK,EAAOO,OAAOytB,WAAW0B,yBAC5C1vB,EAAOguB,WAAW5oB,KACpBpF,EAAOguB,WAAW5oB,IAAIxP,YAAYoK,EAAOO,OAAOytB,WAAW0B,yBAE7D7T,IACAmV,IACA9rB,KAaA2Y,UACAmT,SACA9rB,SACA2W,OACAsG,aCxbW,SAAuDpiB,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EACpE,MAAM9O,EAAWF,IAEjB,IAGIogC,EACAC,EACAC,EACAC,EANApd,GAAY,EACZiW,EAAU,KACVoH,EAAc,KA4BlB,SAASxiB,IACP,IAAK/O,EAAOO,OAAOixB,UAAU/9B,KAAOuM,EAAOwxB,UAAU/9B,GAAI,OACzD,MAAM+9B,UAAEA,EAAWlrB,aAAcC,EAA3BtF,SAAgCA,GAAajB,GAC7CyxB,QAAEA,EAAFrsB,IAAWA,GAAQosB,EACnBjxB,EAASP,EAAOO,OAAOixB,UAE7B,IAAIE,EAAUN,EACVO,GAAUN,EAAYD,GAAYnwB,EAClCsF,GACForB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpB3xB,EAAOuF,gBACTksB,EAAQ16B,UAAW,eAAc46B,cACjCF,EAAQ,GAAGxhC,MAAMgT,MAAS,GAAEyuB,QAE5BD,EAAQ16B,UAAW,oBAAmB46B,WACtCF,EAAQ,GAAGxhC,MAAMkT,OAAU,GAAEuuB,OAE3BnxB,EAAOqxB,OACT1/B,aAAai4B,GACb/kB,EAAI,GAAGnV,MAAM4hC,QAAU,EACvB1H,EAAUl4B,YAAW,KACnBmT,EAAI,GAAGnV,MAAM4hC,QAAU,EACvBzsB,EAAI0X,WAAW,OACd,MAOP,SAAS3X,IACP,IAAKnF,EAAOO,OAAOixB,UAAU/9B,KAAOuM,EAAOwxB,UAAU/9B,GAAI,OAEzD,MAAM+9B,UAAEA,GAAcxxB,GAChByxB,QAAEA,EAAFrsB,IAAWA,GAAQosB,EAEzBC,EAAQ,GAAGxhC,MAAMgT,MAAQ,GACzBwuB,EAAQ,GAAGxhC,MAAMkT,OAAS,GAC1BkuB,EAAYrxB,EAAOuF,eAAiBH,EAAI,GAAGnL,YAAcmL,EAAI,GAAGhL,aAEhEk3B,EACEtxB,EAAO6F,MACN7F,EAAO4H,YACN5H,EAAOO,OAAO6G,oBACbpH,EAAOO,OAAOyH,eAAiBhI,EAAOgH,SAAS,GAAK,IAEvDoqB,EADuC,SAArCpxB,EAAOO,OAAOixB,UAAUJ,SACfC,EAAYC,EAEZ7rB,SAASzF,EAAOO,OAAOixB,UAAUJ,SAAU,IAGpDpxB,EAAOuF,eACTksB,EAAQ,GAAGxhC,MAAMgT,MAAS,GAAEmuB,MAE5BK,EAAQ,GAAGxhC,MAAMkT,OAAU,GAAEiuB,MAI7BhsB,EAAI,GAAGnV,MAAM6hC,QADXR,GAAW,EACU,OAEA,GAErBtxB,EAAOO,OAAOixB,UAAUI,OAC1BxsB,EAAI,GAAGnV,MAAM4hC,QAAU,GAGrB7xB,EAAOO,OAAOmK,eAAiB1K,EAAO2G,SACxC6qB,EAAUpsB,IAAIpF,EAAOgd,SAAW,WAAa,eAC3Chd,EAAOO,OAAOixB,UAAUjE,WAI9B,SAASwE,EAAmBp6B,GAC1B,OAAIqI,EAAOuF,eACS,eAAX5N,EAAEoc,MAAoC,cAAXpc,EAAEoc,KAChCpc,EAAEud,cAAc,GAAG8c,QACnBr6B,EAAEq6B,QAEU,eAAXr6B,EAAEoc,MAAoC,cAAXpc,EAAEoc,KAChCpc,EAAEud,cAAc,GAAG+c,QACnBt6B,EAAEs6B,QAER,SAASC,EAAgBv6B,GACvB,MAAM65B,UAAEA,EAAWlrB,aAAcC,GAAQvG,GACnCoF,IAAEA,GAAQosB,EAEhB,IAAIW,EACJA,GACGJ,EAAmBp6B,GAClByN,EAAI/K,SAAS2F,EAAOuF,eAAiB,OAAS,QAC5B,OAAjB4rB,EAAwBA,EAAeC,EAAW,KACpDC,EAAYD,GACfe,EAAgBjxB,KAAKC,IAAID,KAAKE,IAAI+wB,EAAe,GAAI,GACjD5rB,IACF4rB,EAAgB,EAAIA,GAGtB,MAAM1F,EACJzsB,EAAOmM,gBAAkBnM,EAAO2M,eAAiB3M,EAAOmM,gBAAkBgmB,EAE5EnyB,EAAOwM,eAAeigB,GACtBzsB,EAAO+O,aAAa0d,GACpBzsB,EAAO+N,oBACP/N,EAAOiN,sBAET,SAASmlB,EAAYz6B,GACnB,MAAM4I,EAASP,EAAOO,OAAOixB,WACvBA,UAAEA,EAAFprB,WAAaA,GAAepG,GAC5BoF,IAAEA,EAAFqsB,QAAOA,GAAYD,EACzBtd,GAAY,EACZid,EACEx5B,EAAE/I,SAAW6iC,EAAQ,IAAM95B,EAAE/I,SAAW6iC,EACpCM,EAAmBp6B,GACnBA,EAAE/I,OAAO2L,wBAAwByF,EAAOuF,eAAiB,OAAS,OAClE,KACN5N,EAAEke,iBACFle,EAAE4f,kBAEFnR,EAAW0W,WAAW,KACtB2U,EAAQ3U,WAAW,KACnBoV,EAAgBv6B,GAEhBzF,aAAaq/B,GAEbnsB,EAAI0X,WAAW,GACXvc,EAAOqxB,MACTxsB,EAAIpK,IAAI,UAAW,GAEjBgF,EAAOO,OAAO0H,SAChBjI,EAAOoG,WAAWpL,IAAI,mBAAoB,QAE5CiK,EAAK,qBAAsBtN,GAE7B,SAAS06B,EAAW16B,GAClB,MAAM65B,UAAEA,EAAFprB,WAAaA,GAAepG,GAC5BoF,IAAEA,EAAFqsB,QAAOA,GAAYD,EAEpBtd,IACDvc,EAAEke,eAAgBle,EAAEke,iBACnBle,EAAEuyB,aAAc,EACrBgI,EAAgBv6B,GAChByO,EAAW0W,WAAW,GACtB1X,EAAI0X,WAAW,GACf2U,EAAQ3U,WAAW,GACnB7X,EAAK,oBAAqBtN,IAE5B,SAAS26B,EAAU36B,GACjB,MAAM4I,EAASP,EAAOO,OAAOixB,WACvBA,UAAEA,EAAFprB,WAAaA,GAAepG,GAC5BoF,IAAEA,GAAQosB,EAEXtd,IACLA,GAAY,EACRlU,EAAOO,OAAO0H,UAChBjI,EAAOoG,WAAWpL,IAAI,mBAAoB,IAC1CoL,EAAW0W,WAAW,KAEpBvc,EAAOqxB,OACT1/B,aAAaq/B,GACbA,EAAcl0B,GAAS,KACrB+H,EAAIpK,IAAI,UAAW,GACnBoK,EAAI0X,WAAW,OACd,MAEL7X,EAAK,mBAAoBtN,GACrB4I,EAAOgyB,eACTvyB,EAAOwS,kBAIX,SAASna,EAAOoM,GACd,MAAM+sB,UAAEA,EAAF9Q,iBAAaA,EAAbC,mBAA+BA,EAA/BpgB,OAAmDA,EAAnDoB,QAA2DA,GAAY3B,EACvEoF,EAAMosB,EAAUpsB,IACtB,IAAKA,EAAK,OACV,MAAMxW,EAASwW,EAAI,GACbotB,KACJ7wB,EAAQQ,kBAAmB5B,EAAO8Z,mBAC9B,CAAEC,SAAS,EAAO7iB,SAAS,GAE3B0K,KACJR,EAAQQ,kBAAmB5B,EAAO8Z,mBAC9B,CAAEC,SAAS,EAAM7iB,SAAS,GAEhC,IAAK7I,EAAQ,OACb,MAAM6jC,EAAyB,OAAXhuB,EAAkB,mBAAqB,sBACtD9C,EAAQM,OAKXrT,EAAO6jC,GAAa/R,EAAiBtG,MAAOgY,EAAaI,GACzD5jC,EAAO6jC,GAAa/R,EAAiBnG,KAAM8X,EAAYG,GACvD5jC,EAAO6jC,GAAa/R,EAAiBlG,IAAK8X,EAAWnwB,KANrDvT,EAAO6jC,GAAa9R,EAAmBvG,MAAOgY,EAAaI,GAC3DvhC,EAASwhC,GAAa9R,EAAmBpG,KAAM8X,EAAYG,GAC3DvhC,EAASwhC,GAAa9R,EAAmBnG,IAAK8X,EAAWnwB,IAgB7D,SAAS0Z,IACP,MAAM2V,UAAEA,EAAWpsB,IAAKstB,GAAc1yB,EACtCA,EAAOO,OAAOixB,UAAY3O,EACxB7iB,EACAA,EAAOud,eAAeiU,UACtBxxB,EAAOO,OAAOixB,UACd,CAAE/9B,GAAI,qBAER,MAAM8M,EAASP,EAAOO,OAAOixB,UAC7B,IAAKjxB,EAAO9M,GAAI,OAEhB,IAAI2R,EAAMpR,EAAEuM,EAAO9M,IAEjBuM,EAAOO,OAAO4b,mBACO,iBAAd5b,EAAO9M,IACd2R,EAAInW,OAAS,GACwB,IAArCyjC,EAAUz1B,KAAKsD,EAAO9M,IAAIxE,SAE1BmW,EAAMstB,EAAUz1B,KAAKsD,EAAO9M,KAG9B2R,EAAInQ,SAAS+K,EAAOuF,eAAiBhF,EAAOivB,gBAAkBjvB,EAAOkvB,eAErE,IAAIgC,EAAUrsB,EAAInI,KAAM,IAAG+C,EAAOO,OAAOixB,UAAUmB,aAC5B,IAAnBlB,EAAQxiC,SACVwiC,EAAUz9B,EAAG,eAAcgM,EAAOO,OAAOixB,UAAUmB,qBACnDvtB,EAAIrJ,OAAO01B,IAGb/iC,OAAOkX,OAAO4rB,EAAW,CACvBpsB,MACA3R,GAAI2R,EAAI,GACRqsB,UACAmB,OAAQnB,EAAQ,KAGdlxB,EAAOsyB,WA3CN7yB,EAAOO,OAAOixB,UAAU/9B,IAAOuM,EAAOwxB,UAAU/9B,IACrD4E,EAAO,MA8CH+M,GACFA,EAAIpF,EAAO2G,QAAU,cAAgB,YAAY3G,EAAOO,OAAOixB,UAAUjE,WAG7E,SAASpL,IACP,MAAM5hB,EAASP,EAAOO,OAAOixB,UACvBpsB,EAAMpF,EAAOwxB,UAAUpsB,IACzBA,GACFA,EAAIxP,YAAYoK,EAAOuF,eAAiBhF,EAAOivB,gBAAkBjvB,EAAOkvB,eAnDrEzvB,EAAOO,OAAOixB,UAAU/9B,IAAOuM,EAAOwxB,UAAU/9B,IACrD4E,EAAO,OA5OT+nB,EAAa,CACXoR,UAAW,CACT/9B,GAAI,KACJ29B,SAAU,OACVQ,MAAM,EACNiB,WAAW,EACXN,eAAe,EACfhF,UAAW,wBACXoF,UAAW,wBACXG,uBAAwB,4BACxBtD,gBAAkB,8BAClBC,cAAgB,+BAIpBzvB,EAAOwxB,UAAY,CACjB/9B,GAAI,KACJm/B,OAAQ,KACRxtB,IAAK,KACLqsB,QAAS,MAiRXv6B,EAAG,QAAQ,MAC+B,IAApC8I,EAAOO,OAAOixB,UAAU7qB,QAE1BkX,KAEAhC,IACA1W,IACA4J,QAGJ7X,EAAG,4CAA4C,KAC7CiO,OAEFjO,EAAG,gBAAgB,KACjB6X,OAEF7X,EAAG,iBAAiB,CAACktB,EAAIptB,MAxPzB,SAAuBA,GAChBgJ,EAAOO,OAAOixB,UAAU/9B,IAAOuM,EAAOwxB,UAAU/9B,IACrDuM,EAAOwxB,UAAUC,QAAQ3U,WAAW9lB,GAuPpCqU,CAAcrU,MAEhBE,EAAG,kBAAkB,KACnB,MAAMkO,IAAEA,GAAQpF,EAAOwxB,UACnBpsB,GACFA,EAAIpF,EAAO2G,QAAU,cAAgB,YAAY3G,EAAOO,OAAOixB,UAAUjE,cAG7Er2B,EAAG,WAAW,KACZirB,OAGF,MAUMtE,EAAU,KACd7d,EAAOoF,IAAInQ,SAAS+K,EAAOO,OAAOixB,UAAUsB,wBACxC9yB,EAAOwxB,UAAUpsB,KACnBpF,EAAOwxB,UAAUpsB,IAAInQ,SAAS+K,EAAOO,OAAOixB,UAAUsB,wBAExD3Q,KAGFzzB,OAAOkX,OAAO5F,EAAOwxB,UAAW,CAC9B1T,OAnBa,KACb9d,EAAOoF,IAAIxP,YAAYoK,EAAOO,OAAOixB,UAAUsB,wBAC3C9yB,EAAOwxB,UAAUpsB,KACnBpF,EAAOwxB,UAAUpsB,IAAIxP,YAAYoK,EAAOO,OAAOixB,UAAUsB,wBAE3DjX,IACA1W,IACA4J,KAaA8O,UACA1Y,aACA4J,eACA8M,OACAsG,aCvWW,SAAgDpiB,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC7DqgB,EAAa,CACX2S,SAAU,CACRpsB,SAAS,KAIb,MAAMqsB,EAAe,CAACv/B,EAAIwN,KACxB,MAAMsF,IAAEA,GAAQvG,EAEVoF,EAAMpR,EAAEP,GACR63B,EAAY/kB,GAAO,EAAI,EAEvB0sB,EAAI7tB,EAAI3O,KAAK,yBAA2B,IAC9C,IAAIyY,EAAI9J,EAAI3O,KAAK,0BACb0Y,EAAI/J,EAAI3O,KAAK,0BACjB,MAAMo6B,EAAQzrB,EAAI3O,KAAK,8BACjBo7B,EAAUzsB,EAAI3O,KAAK,gCAwBzB,GAtBIyY,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAnP,EAAOuF,gBAChB2J,EAAI+jB,EACJ9jB,EAAI,MAEJA,EAAI8jB,EACJ/jB,EAAI,KAIJA,EADEA,EAAE7a,QAAQ,MAAQ,EACboR,SAASyJ,EAAG,IAAMjO,EAAWqqB,EAA/B,IAEEpc,EAAIjO,EAAWqqB,EAAjB,KAGLnc,EADEA,EAAE9a,QAAQ,MAAQ,EACboR,SAAS0J,EAAG,IAAMlO,EAApB,IAEEkO,EAAIlO,EAAN,KAGH,MAAO4wB,EAA6C,CACtD,MAAMqB,EAAiBrB,GAAWA,EAAU,IAAM,EAAI3wB,KAAKmI,IAAIpI,IAC/DmE,EAAI,GAAGnV,MAAM4hC,QAAUqB,EAEzB,GAAI,MAAOrC,EACTzrB,EAAIrO,UAAW,eAAcmY,MAAMC,eAC9B,CACL,MAAMgkB,EAAetC,GAASA,EAAQ,IAAM,EAAI3vB,KAAKmI,IAAIpI,IACzDmE,EAAIrO,UAAW,eAAcmY,MAAMC,iBAAiBgkB,QAIlDpkB,EAAe,KACnB,MAAM3J,IAAEA,EAAFyB,OAAOA,EAAP5F,SAAeA,EAAf+F,SAAyBA,GAAahH,EAC5CoF,EACGrV,SACC,4IAEDoL,MAAM1H,IACLu/B,EAAav/B,EAAIwN,MAErB4F,EAAO1L,MAAK,CAAC8lB,EAASnX,KACpB,IAAIoC,EAAgB+U,EAAQhgB,SACxBjB,EAAOO,OAAO+I,eAAiB,GAAqC,SAAhCtJ,EAAOO,OAAOiI,gBACpD0D,GAAiBhL,KAAKsK,KAAK1B,EAAa,GAAK7I,GAAY+F,EAAS/X,OAAS,IAE7Eid,EAAgBhL,KAAKE,IAAIF,KAAKC,IAAI+K,GAAgB,GAAI,GACtDlY,EAAEitB,GACChkB,KACC,4IAED9B,MAAM1H,IACLu/B,EAAav/B,EAAIyY,UAoBzBhV,EAAG,cAAc,KACV8I,EAAOO,OAAOwyB,SAASpsB,UAC5B3G,EAAOO,OAAOqK,qBAAsB,EACpC5K,EAAOud,eAAe3S,qBAAsB,MAE9C1T,EAAG,QAAQ,KACJ8I,EAAOO,OAAOwyB,SAASpsB,SAC5BoI,OAEF7X,EAAG,gBAAgB,KACZ8I,EAAOO,OAAOwyB,SAASpsB,SAC5BoI,OAEF7X,EAAG,iBAAiB,CAACk8B,EAASp8B,KACvBgJ,EAAOO,OAAOwyB,SAASpsB,SA7BR,SAAC3P,QAAmC,IAAnCA,MAAWgJ,EAAOO,OAAOC,OAC9C,MAAM4E,IAAEA,GAAQpF,EAChBoF,EACGnI,KACC,4IAED9B,MAAMk4B,IACL,MAAMC,EAAct/B,EAAEq/B,GACtB,IAAIE,EACF9tB,SAAS6tB,EAAY78B,KAAK,iCAAkC,KAAOO,EACpD,IAAbA,IAAgBu8B,EAAmB,GACvCD,EAAYxW,WAAWyW,MAmB3BloB,CAAcrU,OC1GH,SAAkD+I,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EAC/D,MAAMrN,EAASF,IACf4tB,EAAa,CACXoT,KAAM,CACJ7sB,SAAS,EACT8sB,SAAU,EACVjV,SAAU,EACVhoB,QAAQ,EACRk9B,eAAgB,wBAChBC,iBAAkB,yBAItB3zB,EAAOwzB,KAAO,CACZ7sB,SAAS,GAGX,IAEIitB,EACAC,EACAC,EAJAX,EAAe,EACfY,GAAY,EAIhB,MAAMC,EAAU,CACdxP,cAAUpsB,EACV67B,gBAAY77B,EACZ87B,iBAAa97B,EACb+7B,cAAU/7B,EACVg8B,kBAAch8B,EACdq7B,SAAU,GAENpU,EAAQ,CACZnL,eAAW9b,EACX+b,aAAS/b,EACT6c,cAAU7c,EACVgd,cAAUhd,EACVi8B,UAAMj8B,EACNk8B,UAAMl8B,EACNm8B,UAAMn8B,EACNo8B,UAAMp8B,EACN6K,WAAO7K,EACP+K,YAAQ/K,EACRkd,YAAQld,EACRmd,YAAQnd,EACRq8B,aAAc,GACdC,eAAgB,IAEZlU,EAAW,CACftR,OAAG9W,EACH+W,OAAG/W,EACHu8B,mBAAev8B,EACfw8B,mBAAex8B,EACfy8B,cAAUz8B,GAGZ,IAAIy4B,EAAQ,EAeZ,SAASiE,EAA0Bn9B,GACjC,GAAIA,EAAEud,cAAcjmB,OAAS,EAAG,OAAO,EACvC,MAAM8lC,EAAKp9B,EAAEud,cAAc,GAAGC,MACxB6f,EAAKr9B,EAAEud,cAAc,GAAGG,MACxB4f,EAAKt9B,EAAEud,cAAc,GAAGC,MACxB+f,EAAKv9B,EAAEud,cAAc,GAAGG,MAE9B,OADiBnU,KAAKgW,MAAM+d,EAAKF,IAAO,GAAKG,EAAKF,IAAO,GAK3D,SAASG,EAAex9B,GACtB,MAAMgK,EAAU3B,EAAO2B,QACjBpB,EAASP,EAAOO,OAAOizB,KAG7B,GAFAK,GAAqB,EACrBC,GAAmB,GACdnyB,EAAQW,SAAU,CACrB,GAAe,eAAX3K,EAAEoc,MAAqC,eAAXpc,EAAEoc,MAAyBpc,EAAEud,cAAcjmB,OAAS,EAClF,OAEF4kC,GAAqB,EACrBG,EAAQoB,WAAaN,EAA0Bn9B,GAE5Cq8B,EAAQxP,UAAawP,EAAQxP,SAASv1B,SACzC+kC,EAAQxP,SAAWxwB,EAAE2D,EAAE/I,QAAQoO,QAAS,IAAGgD,EAAOO,OAAOuG,cACzB,IAA5BktB,EAAQxP,SAASv1B,SAAc+kC,EAAQxP,SAAWxkB,EAAO6G,OAAOhL,GAAGmE,EAAOyL,cAC9EuoB,EAAQG,SAAWH,EAAQxP,SACxBvnB,KAAM,IAAGsD,EAAOmzB,kBAChB73B,GAAG,GACHoB,KAAK,kDACLpB,GAAG,GACNm4B,EAAQI,aAAeJ,EAAQG,SAASr3B,OAAQ,IAAGyD,EAAOmzB,kBAC1DM,EAAQP,SAAWO,EAAQI,aAAa39B,KAAK,qBAAuB8J,EAAOkzB,SACvC,IAAhCO,EAAQI,aAAanlC,SAKvB+kC,EAAQG,UACVH,EAAQG,SAASrX,WAAW,GAE9BiX,GAAY,GAPRC,EAAQG,cAAW/7B,EASzB,SAASi9B,EAAgB19B,GACvB,MAAMgK,EAAU3B,EAAO2B,QACjBpB,EAASP,EAAOO,OAAOizB,KACvBA,EAAOxzB,EAAOwzB,KACpB,IAAK7xB,EAAQW,SAAU,CACrB,GAAe,cAAX3K,EAAEoc,MAAoC,cAAXpc,EAAEoc,MAAwBpc,EAAEud,cAAcjmB,OAAS,EAChF,OAEF6kC,GAAmB,EACnBE,EAAQsB,UAAYR,EAA0Bn9B,GAG3Cq8B,EAAQG,UAAwC,IAA5BH,EAAQG,SAASllC,QAItC0S,EAAQW,SACVkxB,EAAK3C,MAAQl5B,EAAEk5B,MAAQsC,EAEvBK,EAAK3C,MAASmD,EAAQsB,UAAYtB,EAAQoB,WAAcjC,EAEtDK,EAAK3C,MAAQmD,EAAQP,WACvBD,EAAK3C,MAAQmD,EAAQP,SAAW,GAAKD,EAAK3C,MAAQmD,EAAQP,SAAW,IAAM,IAEzED,EAAK3C,MAAQtwB,EAAOie,WACtBgV,EAAK3C,MAAQtwB,EAAOie,SAAW,GAAKje,EAAOie,SAAWgV,EAAK3C,MAAQ,IAAM,IAE3EmD,EAAQG,SAASp9B,UAAW,4BAA2By8B,EAAK3C,WAd3C,kBAAXl5B,EAAEoc,MAA0BohB,EAAex9B,GAgBnD,SAAS49B,EAAa59B,GACpB,MAAMkL,EAAS7C,EAAO6C,OAChBlB,EAAU3B,EAAO2B,QACjBpB,EAASP,EAAOO,OAAOizB,KACvBA,EAAOxzB,EAAOwzB,KACpB,IAAK7xB,EAAQW,SAAU,CACrB,IAAKuxB,IAAuBC,EAC1B,OAEF,GACa,aAAXn8B,EAAEoc,MACU,aAAXpc,EAAEoc,MAAuBpc,EAAEkf,eAAe5nB,OAAS,IAAM4T,EAAOE,QAEjE,OAEF8wB,GAAqB,EACrBC,GAAmB,EAEhBE,EAAQG,UAAwC,IAA5BH,EAAQG,SAASllC,SAC1CukC,EAAK3C,MAAQ3vB,KAAKC,IAAID,KAAKE,IAAIoyB,EAAK3C,MAAOmD,EAAQP,UAAWlzB,EAAOie,UACrEwV,EAAQG,SACLrX,WAAW9c,EAAOO,OAAOC,OACzBzJ,UAAW,4BAA2By8B,EAAK3C,UAC9CsC,EAAeK,EAAK3C,MACpBkD,GAAY,EACO,IAAfP,EAAK3C,QAAamD,EAAQxP,cAAWpsB,IAW3C,SAASue,EAAYhf,GACnB,MAAM67B,EAAOxzB,EAAOwzB,KACpB,IAAKQ,EAAQG,UAAwC,IAA5BH,EAAQG,SAASllC,OAAc,OAExD,GADA+Q,EAAO+U,YAAa,GACfsK,EAAMnL,YAAc8f,EAAQxP,SAAU,OAEtCnF,EAAMlL,UACTkL,EAAMpc,MAAQ+wB,EAAQG,SAAS,GAAGl6B,YAClColB,EAAMlc,OAAS6wB,EAAQG,SAAS,GAAG/5B,aACnCilB,EAAM/J,OAAS9X,EAAaw2B,EAAQI,aAAa,GAAI,MAAQ,EAC7D/U,EAAM9J,OAAS/X,EAAaw2B,EAAQI,aAAa,GAAI,MAAQ,EAC7DJ,EAAQC,WAAaD,EAAQxP,SAAS,GAAGvqB,YACzC+5B,EAAQE,YAAcF,EAAQxP,SAAS,GAAGpqB,aAC1C45B,EAAQI,aAAatX,WAAW,IAGlC,MAAM0Y,EAAcnW,EAAMpc,MAAQuwB,EAAK3C,MACjC4E,EAAepW,EAAMlc,OAASqwB,EAAK3C,MAEzC,KAAI2E,EAAcxB,EAAQC,YAAcwB,EAAezB,EAAQE,aAA/D,CAUA,GARA7U,EAAMgV,KAAOnzB,KAAKE,IAAI4yB,EAAQC,WAAa,EAAIuB,EAAc,EAAG,GAChEnW,EAAMkV,MAAQlV,EAAMgV,KACpBhV,EAAMiV,KAAOpzB,KAAKE,IAAI4yB,EAAQE,YAAc,EAAIuB,EAAe,EAAG,GAClEpW,EAAMmV,MAAQnV,EAAMiV,KAEpBjV,EAAMqV,eAAexlB,EAAe,cAAXvX,EAAEoc,KAAuBpc,EAAEud,cAAc,GAAGC,MAAQxd,EAAEwd,MAC/EkK,EAAMqV,eAAevlB,EAAe,cAAXxX,EAAEoc,KAAuBpc,EAAEud,cAAc,GAAGG,MAAQ1d,EAAE0d,OAE1EgK,EAAMlL,UAAY4f,EAAW,CAChC,GACE/zB,EAAOuF,iBACLrE,KAAKiI,MAAMkW,EAAMgV,QAAUnzB,KAAKiI,MAAMkW,EAAM/J,SAC5C+J,EAAMqV,eAAexlB,EAAImQ,EAAMoV,aAAavlB,GAC3ChO,KAAKiI,MAAMkW,EAAMkV,QAAUrzB,KAAKiI,MAAMkW,EAAM/J,SAC3C+J,EAAMqV,eAAexlB,EAAImQ,EAAMoV,aAAavlB,GAGhD,YADAmQ,EAAMnL,WAAY,GAGpB,IACGlU,EAAOuF,iBACNrE,KAAKiI,MAAMkW,EAAMiV,QAAUpzB,KAAKiI,MAAMkW,EAAM9J,SAC5C8J,EAAMqV,eAAevlB,EAAIkQ,EAAMoV,aAAatlB,GAC3CjO,KAAKiI,MAAMkW,EAAMmV,QAAUtzB,KAAKiI,MAAMkW,EAAM9J,SAC3C8J,EAAMqV,eAAevlB,EAAIkQ,EAAMoV,aAAatlB,GAGhD,YADAkQ,EAAMnL,WAAY,GAIlBvc,EAAE6B,YACJ7B,EAAEke,iBAEJle,EAAE4f,kBAEF8H,EAAMlL,SAAU,EAChBkL,EAAMpK,SAAWoK,EAAMqV,eAAexlB,EAAImQ,EAAMoV,aAAavlB,EAAImQ,EAAM/J,OACvE+J,EAAMjK,SAAWiK,EAAMqV,eAAevlB,EAAIkQ,EAAMoV,aAAatlB,EAAIkQ,EAAM9J,OAEnE8J,EAAMpK,SAAWoK,EAAMgV,OACzBhV,EAAMpK,SAAWoK,EAAMgV,KAAO,GAAKhV,EAAMgV,KAAOhV,EAAMpK,SAAW,IAAM,IAErEoK,EAAMpK,SAAWoK,EAAMkV,OACzBlV,EAAMpK,SAAWoK,EAAMkV,KAAO,GAAKlV,EAAMpK,SAAWoK,EAAMkV,KAAO,IAAM,IAGrElV,EAAMjK,SAAWiK,EAAMiV,OACzBjV,EAAMjK,SAAWiK,EAAMiV,KAAO,GAAKjV,EAAMiV,KAAOjV,EAAMjK,SAAW,IAAM,IAErEiK,EAAMjK,SAAWiK,EAAMmV,OACzBnV,EAAMjK,SAAWiK,EAAMmV,KAAO,GAAKnV,EAAMjK,SAAWiK,EAAMmV,KAAO,IAAM,IAIpEhU,EAASmU,gBAAenU,EAASmU,cAAgBtV,EAAMqV,eAAexlB,GACtEsR,EAASoU,gBAAepU,EAASoU,cAAgBvV,EAAMqV,eAAevlB,GACtEqR,EAASqU,WAAUrU,EAASqU,SAAW9iC,KAAKwL,OACjDijB,EAAStR,GACNmQ,EAAMqV,eAAexlB,EAAIsR,EAASmU,gBAAkB5iC,KAAKwL,MAAQijB,EAASqU,UAAY,EACzFrU,EAASrR,GACNkQ,EAAMqV,eAAevlB,EAAIqR,EAASoU,gBAAkB7iC,KAAKwL,MAAQijB,EAASqU,UAAY,EACrF3zB,KAAKmI,IAAIgW,EAAMqV,eAAexlB,EAAIsR,EAASmU,eAAiB,IAAGnU,EAAStR,EAAI,GAC5EhO,KAAKmI,IAAIgW,EAAMqV,eAAevlB,EAAIqR,EAASoU,eAAiB,IAAGpU,EAASrR,EAAI,GAChFqR,EAASmU,cAAgBtV,EAAMqV,eAAexlB,EAC9CsR,EAASoU,cAAgBvV,EAAMqV,eAAevlB,EAC9CqR,EAASqU,SAAW9iC,KAAKwL,MAEzBy2B,EAAQI,aAAar9B,UAAW,eAAcsoB,EAAMpK,eAAeoK,EAAMjK,kBA2C3E,SAASsgB,IACP,MAAMlC,EAAOxzB,EAAOwzB,KAChBQ,EAAQxP,UAAYxkB,EAAOiO,gBAAkBjO,EAAOyL,cAClDuoB,EAAQG,UACVH,EAAQG,SAASp9B,UAAU,+BAEzBi9B,EAAQI,cACVJ,EAAQI,aAAar9B,UAAU,sBAGjCy8B,EAAK3C,MAAQ,EACbsC,EAAe,EAEfa,EAAQxP,cAAWpsB,EACnB47B,EAAQG,cAAW/7B,EACnB47B,EAAQI,kBAAeh8B,GAI3B,SAASu9B,EAAOh+B,GACd,MAAM67B,EAAOxzB,EAAOwzB,KACdjzB,EAASP,EAAOO,OAAOizB,KAqB7B,GAnBKQ,EAAQxP,WACP7sB,GAAKA,EAAE/I,SACTolC,EAAQxP,SAAWxwB,EAAE2D,EAAE/I,QAAQoO,QAAS,IAAGgD,EAAOO,OAAOuG,eAEtDktB,EAAQxP,WACPxkB,EAAOO,OAAOmG,SAAW1G,EAAOO,OAAOmG,QAAQC,SAAW3G,EAAO0G,QACnEstB,EAAQxP,SAAWxkB,EAAOoG,WAAWrW,SAAU,IAAGiQ,EAAOO,OAAO6M,oBAEhE4mB,EAAQxP,SAAWxkB,EAAO6G,OAAOhL,GAAGmE,EAAOyL,cAI/CuoB,EAAQG,SAAWH,EAAQxP,SACxBvnB,KAAM,IAAGsD,EAAOmzB,kBAChB73B,GAAG,GACHoB,KAAK,kDACLpB,GAAG,GACNm4B,EAAQI,aAAeJ,EAAQG,SAASr3B,OAAQ,IAAGyD,EAAOmzB,oBAGzDM,EAAQG,UACmB,IAA5BH,EAAQG,SAASllC,SAChB+kC,EAAQI,cACuB,IAAhCJ,EAAQI,aAAanlC,OAErB,OAQF,IAAI2mC,EACAC,EACAC,EACAC,EACA/e,EACAC,EACA+e,EACAC,EACAC,EACAC,EACAX,EACAC,EACAW,EACAC,EACAC,EACAC,EACAtC,EACAC,EAxBAl0B,EAAOO,OAAO0H,UAChBjI,EAAOS,UAAUxQ,MAAMyR,SAAW,SAClC1B,EAAOS,UAAUxQ,MAAMumC,YAAc,QAGvCxC,EAAQxP,SAASvvB,SAAU,GAAEsL,EAAOozB,yBAqBA,IAAzBtU,EAAMoV,aAAavlB,GAAqBvX,GACjDi+B,EAAoB,aAAXj+B,EAAEoc,KAAsBpc,EAAEkf,eAAe,GAAG1B,MAAQxd,EAAEwd,MAC/D0gB,EAAoB,aAAXl+B,EAAEoc,KAAsBpc,EAAEkf,eAAe,GAAGxB,MAAQ1d,EAAE0d,QAE/DugB,EAASvW,EAAMoV,aAAavlB,EAC5B2mB,EAASxW,EAAMoV,aAAatlB,GAG9BqkB,EAAK3C,MAAQmD,EAAQI,aAAa39B,KAAK,qBAAuB8J,EAAOkzB,SACrEN,EAAea,EAAQI,aAAa39B,KAAK,qBAAuB8J,EAAOkzB,SACnE97B,GACFs8B,EAAaD,EAAQxP,SAAS,GAAGvqB,YACjCi6B,EAAcF,EAAQxP,SAAS,GAAGpqB,aAClC07B,EAAU9B,EAAQxP,SAASnqB,SAASU,KAAOrI,EAAOmI,QAClDk7B,EAAU/B,EAAQxP,SAASnqB,SAASS,IAAMpI,EAAOiI,QACjDqc,EAAQ8e,EAAU7B,EAAa,EAAI2B,EACnC3e,EAAQ8e,EAAU7B,EAAc,EAAI2B,EAEpCK,EAAalC,EAAQG,SAAS,GAAGl6B,YACjCk8B,EAAcnC,EAAQG,SAAS,GAAG/5B,aAClCo7B,EAAcU,EAAa1C,EAAK3C,MAChC4E,EAAeU,EAAc3C,EAAK3C,MAElCuF,EAAgBl1B,KAAKE,IAAI6yB,EAAa,EAAIuB,EAAc,EAAG,GAC3Da,EAAgBn1B,KAAKE,IAAI8yB,EAAc,EAAIuB,EAAe,EAAG,GAC7Da,GAAiBF,EACjBG,GAAiBF,EAEjBL,EAAahf,EAAQwc,EAAK3C,MAC1BoF,EAAahf,EAAQuc,EAAK3C,MAEtBmF,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAGXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAEfjC,EAAQI,aACLtX,WAAW,KACX/lB,UAAW,eAAci/B,QAAiBC,UAC7CjC,EAAQG,SAASrX,WAAW,KAAK/lB,UAAW,4BAA2By8B,EAAK3C,UAE9E,SAAS4F,IACP,MAAMjD,EAAOxzB,EAAOwzB,KACdjzB,EAASP,EAAOO,OAAOizB,KAExBQ,EAAQxP,WACPxkB,EAAOO,OAAOmG,SAAW1G,EAAOO,OAAOmG,QAAQC,SAAW3G,EAAO0G,QACnEstB,EAAQxP,SAAWxkB,EAAOoG,WAAWrW,SAAU,IAAGiQ,EAAOO,OAAO6M,oBAEhE4mB,EAAQxP,SAAWxkB,EAAO6G,OAAOhL,GAAGmE,EAAOyL,aAE7CuoB,EAAQG,SAAWH,EAAQxP,SACxBvnB,KAAM,IAAGsD,EAAOmzB,kBAChB73B,GAAG,GACHoB,KAAK,kDACLpB,GAAG,GACNm4B,EAAQI,aAAeJ,EAAQG,SAASr3B,OAAQ,IAAGyD,EAAOmzB,mBAGzDM,EAAQG,UACmB,IAA5BH,EAAQG,SAASllC,QAChB+kC,EAAQI,cACuB,IAAhCJ,EAAQI,aAAanlC,SAGnB+Q,EAAOO,OAAO0H,UAChBjI,EAAOS,UAAUxQ,MAAMyR,SAAW,GAClC1B,EAAOS,UAAUxQ,MAAMumC,YAAc,IAEvChD,EAAK3C,MAAQ,EACbsC,EAAe,EACfa,EAAQI,aAAatX,WAAW,KAAK/lB,UAAU,sBAC/Ci9B,EAAQG,SAASrX,WAAW,KAAK/lB,UAAU,+BAC3Ci9B,EAAQxP,SAAS5uB,YAAa,GAAE2K,EAAOozB,oBACvCK,EAAQxP,cAAWpsB,GAIrB,SAASs+B,EAAW/+B,GAClB,MAAM67B,EAAOxzB,EAAOwzB,KAEhBA,EAAK3C,OAAwB,IAAf2C,EAAK3C,MAErB4F,IAGAd,EAAOh+B,GAIX,SAASg/B,IACP,MAAMh1B,EAAU3B,EAAO2B,QAUvB,MAAO,CAAEQ,kBARsB,eAA7BnC,EAAOia,YAAYG,QACnBzY,EAAQQ,kBACRnC,EAAOO,OAAO8Z,mBACV,CAAEC,SAAS,EAAM7iB,SAAS,GAKNm/B,2BAHQj1B,EAAQQ,iBACtC,CAAEmY,SAAS,EAAO7iB,SAAS,IAKjC,SAASo/B,IACP,MAAQ,IAAG72B,EAAOO,OAAOuG,aAG3B,SAASgwB,EAAeryB,GACtB,MAAMtC,gBAAEA,GAAoBw0B,IACtBI,EAAgBF,IACtB72B,EAAOoG,WAAW3B,GAAQ,eAAgBsyB,EAAe5B,EAAgBhzB,GACzEnC,EAAOoG,WAAW3B,GAAQ,gBAAiBsyB,EAAe1B,EAAiBlzB,GAC3EnC,EAAOoG,WAAW3B,GAAQ,aAAcsyB,EAAexB,EAAcpzB,GAEvE,SAAS60B,IACHpD,IACJA,GAAkB,EAClBkD,EAAe,OAEjB,SAASG,IACFrD,IACLA,GAAkB,EAClBkD,EAAe,QAIjB,SAAShZ,IACP,MAAM0V,EAAOxzB,EAAOwzB,KACpB,GAAIA,EAAK7sB,QAAS,OAClB6sB,EAAK7sB,SAAU,EACf,MAAMhF,EAAU3B,EAAO2B,SACjBQ,gBAAEA,EAAFy0B,0BAAmBA,GAA8BD,IACjDI,EAAgBF,IAGlBl1B,EAAQW,UACVtC,EAAOoG,WAAWlP,GAAG8I,EAAOia,YAAYG,MAAO4c,EAAgB70B,GAC/DnC,EAAOoG,WAAWlP,GAAG8I,EAAOia,YAAYO,IAAKyc,EAAiB90B,IACxB,eAA7BnC,EAAOia,YAAYG,QAC5Bpa,EAAOoG,WAAWlP,GAChB8I,EAAOia,YAAYG,MACnB2c,EACA5B,EACAhzB,GAEFnC,EAAOoG,WAAWlP,GAChB8I,EAAOia,YAAYM,KACnBwc,EACA1B,EACAuB,GAEF52B,EAAOoG,WAAWlP,GAAG8I,EAAOia,YAAYO,IAAKuc,EAAexB,EAAcpzB,GACtEnC,EAAOia,YAAYQ,QACrBza,EAAOoG,WAAWlP,GAChB8I,EAAOia,YAAYQ,OACnBsc,EACAxB,EACApzB,IAMNnC,EAAOoG,WAAWlP,GAChB8I,EAAOia,YAAYM,KAClB,IAAGva,EAAOO,OAAOizB,KAAKE,iBACvB/c,EACAigB,GAGJ,SAAS/Y,IACP,MAAM2V,EAAOxzB,EAAOwzB,KACpB,IAAKA,EAAK7sB,QAAS,OACnB,MAAMhF,EAAU3B,EAAO2B,QACvB6xB,EAAK7sB,SAAU,EAEf,MAAMxE,gBAAEA,EAAFy0B,0BAAmBA,GAA8BD,IACjDI,EAAgBF,IAGlBl1B,EAAQW,UACVtC,EAAOoG,WAAWzN,IAAIqH,EAAOia,YAAYG,MAAO4c,EAAgB70B,GAChEnC,EAAOoG,WAAWzN,IAAIqH,EAAOia,YAAYO,IAAKyc,EAAiB90B,IACzB,eAA7BnC,EAAOia,YAAYG,QAC5Bpa,EAAOoG,WAAWzN,IAChBqH,EAAOia,YAAYG,MACnB2c,EACA5B,EACAhzB,GAEFnC,EAAOoG,WAAWzN,IAChBqH,EAAOia,YAAYM,KACnBwc,EACA1B,EACAuB,GAEF52B,EAAOoG,WAAWzN,IAAIqH,EAAOia,YAAYO,IAAKuc,EAAexB,EAAcpzB,GACvEnC,EAAOia,YAAYQ,QACrBza,EAAOoG,WAAWzN,IAChBqH,EAAOia,YAAYQ,OACnBsc,EACAxB,EACApzB,IAMNnC,EAAOoG,WAAWzN,IAChBqH,EAAOia,YAAYM,KAClB,IAAGva,EAAOO,OAAOizB,KAAKE,iBACvB/c,EACAigB,GAziBJloC,OAAOuE,eAAe+M,EAAOwzB,KAAM,QAAS,CAC1CtgC,IAAG,IACM29B,EAET19B,IAAIC,GACF,GAAIy9B,IAAUz9B,EAAO,CACnB,MAAM6rB,EAAU+U,EAAQG,SAAWH,EAAQG,SAAS,QAAK/7B,EACnD6oB,EAAU+S,EAAQxP,SAAWwP,EAAQxP,SAAS,QAAKpsB,EACzD6M,EAAK,aAAc7R,EAAO6rB,EAASgC,GAErC4P,EAAQz9B,KAmiBZ8D,EAAG,QAAQ,KACL8I,EAAOO,OAAOizB,KAAK7sB,SACrBmX,OAGJ5mB,EAAG,WAAW,KACZ2mB,OAEF3mB,EAAG,cAAc,CAACktB,EAAIzsB,KACfqI,EAAOwzB,KAAK7sB,SArcnB,SAAsBhP,GACpB,MAAMkL,EAAS7C,EAAO6C,OACjBmxB,EAAQG,UAAwC,IAA5BH,EAAQG,SAASllC,SACtCowB,EAAMnL,YACNrR,EAAOE,SAAWpL,EAAE6B,YAAY7B,EAAEke,iBACtCwJ,EAAMnL,WAAY,EAClBmL,EAAMoV,aAAavlB,EAAe,eAAXvX,EAAEoc,KAAwBpc,EAAEud,cAAc,GAAGC,MAAQxd,EAAEwd,MAC9EkK,EAAMoV,aAAatlB,EAAe,eAAXxX,EAAEoc,KAAwBpc,EAAEud,cAAc,GAAGG,MAAQ1d,EAAE0d,QA+b9E7B,CAAa7b,MAEfT,EAAG,YAAY,CAACktB,EAAIzsB,KACbqI,EAAOwzB,KAAK7sB,SAtWnB,WACE,MAAM6sB,EAAOxzB,EAAOwzB,KACpB,IAAKQ,EAAQG,UAAwC,IAA5BH,EAAQG,SAASllC,OAAc,OACxD,IAAKowB,EAAMnL,YAAcmL,EAAMlL,QAG7B,OAFAkL,EAAMnL,WAAY,OAClBmL,EAAMlL,SAAU,GAGlBkL,EAAMnL,WAAY,EAClBmL,EAAMlL,SAAU,EAChB,IAAI+iB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoB5W,EAAStR,EAAIgoB,EACjCG,EAAehY,EAAMpK,SAAWmiB,EAChCE,EAAoB9W,EAASrR,EAAIgoB,EACjCI,EAAelY,EAAMjK,SAAWkiB,EAGnB,IAAf9W,EAAStR,IACXgoB,EAAoBh2B,KAAKmI,KAAKguB,EAAehY,EAAMpK,UAAYuL,EAAStR,IACvD,IAAfsR,EAASrR,IACXgoB,EAAoBj2B,KAAKmI,KAAKkuB,EAAelY,EAAMjK,UAAYoL,EAASrR,IAC1E,MAAMqoB,EAAmBt2B,KAAKC,IAAI+1B,EAAmBC,GAErD9X,EAAMpK,SAAWoiB,EACjBhY,EAAMjK,SAAWmiB,EAGjB,MAAM/B,EAAcnW,EAAMpc,MAAQuwB,EAAK3C,MACjC4E,EAAepW,EAAMlc,OAASqwB,EAAK3C,MACzCxR,EAAMgV,KAAOnzB,KAAKE,IAAI4yB,EAAQC,WAAa,EAAIuB,EAAc,EAAG,GAChEnW,EAAMkV,MAAQlV,EAAMgV,KACpBhV,EAAMiV,KAAOpzB,KAAKE,IAAI4yB,EAAQE,YAAc,EAAIuB,EAAe,EAAG,GAClEpW,EAAMmV,MAAQnV,EAAMiV,KACpBjV,EAAMpK,SAAW/T,KAAKC,IAAID,KAAKE,IAAIie,EAAMpK,SAAUoK,EAAMkV,MAAOlV,EAAMgV,MACtEhV,EAAMjK,SAAWlU,KAAKC,IAAID,KAAKE,IAAIie,EAAMjK,SAAUiK,EAAMmV,MAAOnV,EAAMiV,MAEtEN,EAAQI,aACLtX,WAAW0a,GACXzgC,UAAW,eAAcsoB,EAAMpK,eAAeoK,EAAMjK,iBAgUvD6C,MAEF/gB,EAAG,aAAa,CAACktB,EAAIzsB,MAEhBqI,EAAOyP,WACRzP,EAAOO,OAAOizB,KAAK7sB,SACnB3G,EAAOwzB,KAAK7sB,SACZ3G,EAAOO,OAAOizB,KAAKh9B,QAEnBkgC,EAAW/+B,MAGfT,EAAG,iBAAiB,KACd8I,EAAOwzB,KAAK7sB,SAAW3G,EAAOO,OAAOizB,KAAK7sB,SAC5C+uB,OAGJx+B,EAAG,eAAe,KACZ8I,EAAOwzB,KAAK7sB,SAAW3G,EAAOO,OAAOizB,KAAK7sB,SAAW3G,EAAOO,OAAO0H,SACrEytB,OAIJhnC,OAAOkX,OAAO5F,EAAOwzB,KAAM,CACzB1V,SACAD,UACA4Z,GAAI9B,EACJ+B,IAAKjB,EACLjgC,OAAQkgC,KC/oBG,SAAkD32B,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EAC/DqgB,EAAa,CACX0H,KAAM,CACJ6P,aAAa,EACbhxB,SAAS,EACTixB,cAAc,EACdC,mBAAoB,EACpBC,uBAAuB,EACvBC,iBAAkB,GAElBC,aAAc,cACdC,aAAc,sBACdC,YAAa,qBACbC,eAAgB,2BAIpBn4B,EAAO8nB,KAAO,GAEd,IAAIsQ,GAAwB,EACxBC,GAAqB,EAEzB,SAASC,EAAYl9B,EAAOm9B,QAAwB,IAAxBA,OAAkB,GAC5C,MAAMh4B,EAASP,EAAOO,OAAOunB,KAC7B,QAAqB,IAAV1sB,EAAuB,OAClC,GAA6B,IAAzB4E,EAAO6G,OAAO5X,OAAc,OAChC,MAEMu1B,EAFYxkB,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QAGtD3G,EAAOoG,WAAWrW,SACf,IAAGiQ,EAAOO,OAAOuG,uCAAuC1L,OAE3D4E,EAAO6G,OAAOhL,GAAGT,GAEfo9B,EAAUhU,EAASvnB,KACtB,IAAGsD,EAAOy3B,qBAAqBz3B,EAAO23B,qBAAqB33B,EAAO03B,kBAGnEzT,EAASxuB,SAASuK,EAAOy3B,eACxBxT,EAASxuB,SAASuK,EAAO23B,cACzB1T,EAASxuB,SAASuK,EAAO03B,eAE1BO,EAAQ7kC,KAAK6wB,EAAS,IAED,IAAnBgU,EAAQvpC,QAEZupC,EAAQr9B,MAAM8jB,IACZ,MAAMkV,EAAWngC,EAAEirB,GACnBkV,EAASl/B,SAASsL,EAAO03B,cAEzB,MAAMQ,EAAatE,EAAS19B,KAAK,mBAC3B5H,EAAMslC,EAAS19B,KAAK,YACpByoB,EAASiV,EAAS19B,KAAK,eACvB0oB,EAAQgV,EAAS19B,KAAK,cACtBiiC,EAAavE,EAASr3B,OAAO,WAEnCkD,EAAOgf,UAAUmV,EAAS,GAAItlC,GAAO4pC,EAAYvZ,EAAQC,GAAO,GAAO,KACrE,GACE,MAAOnf,GAENA,KACAA,GAAWA,EAAOO,UACnBP,EAAOwE,UALT,CAsCA,GA9BIi0B,GACFtE,EAASn5B,IAAI,mBAAqB,QAAOy9B,OACzCtE,EAASt9B,WAAW,qBAEhBqoB,IACFiV,EAAS19B,KAAK,SAAUyoB,GACxBiV,EAASt9B,WAAW,gBAElBsoB,IACFgV,EAAS19B,KAAK,QAAS0oB,GACvBgV,EAASt9B,WAAW,eAElB6hC,EAAWzpC,QACbypC,EAAW3oC,SAAS,UAAUoL,MAAMw9B,IAClC,MAAMC,EAAU5kC,EAAE2kC,GAEdC,EAAQniC,KAAK,iBACfmiC,EAAQniC,KAAK,SAAUmiC,EAAQniC,KAAK,gBACpCmiC,EAAQ/hC,WAAW,mBAIrBhI,IACFslC,EAAS19B,KAAK,MAAO5H,GACrBslC,EAASt9B,WAAW,cAIxBs9B,EAASl/B,SAASsL,EAAO23B,aAAatiC,YAAY2K,EAAO03B,cACzDzT,EAASvnB,KAAM,IAAGsD,EAAO43B,kBAAkBpiC,SACvCiK,EAAOO,OAAOmN,MAAQ6qB,EAAiB,CACzC,MAAMM,EAAqBrU,EAAS/tB,KAAK,2BACzC,GAAI+tB,EAASxuB,SAASgK,EAAOO,OAAOoN,qBAAsB,CAIxD2qB,EAHsBt4B,EAAOoG,WAAWrW,SACrC,6BAA4B8oC,YAA6B74B,EAAOO,OAAOoN,wBAEhDvS,SAAS,OAC9B,CAILk9B,EAHwBt4B,EAAOoG,WAAWrW,SACvC,IAAGiQ,EAAOO,OAAOoN,gDAAgDkrB,OAExCz9B,SAAS,IAGzC6J,EAAK,iBAAkBuf,EAAS,GAAI2P,EAAS,IACzCn0B,EAAOO,OAAOyM,YAChBhN,EAAOkL,uBAIXjG,EAAK,gBAAiBuf,EAAS,GAAI2P,EAAS,OAIhD,SAASpM,IACP,MAAM3hB,WAAEA,EAAY7F,OAAQ8f,EAAtBxZ,OAAoCA,EAApC4E,YAA4CA,GAAgBzL,EAC5DyG,EAAYzG,EAAO0G,SAAW2Z,EAAa3Z,QAAQC,QACnDpG,EAAS8f,EAAayH,KAE5B,IAAItf,EAAgB6X,EAAa7X,cAKjC,SAASswB,EAAW19B,GAClB,GAAIqL,GACF,GACEL,EAAWrW,SAAU,IAAGswB,EAAavZ,uCAAuC1L,OACzEnM,OAEH,OAAO,OAEJ,GAAI4X,EAAOzL,GAAQ,OAAO,EACjC,OAAO,EAGT,SAAS0O,EAAWmX,GAClB,OAAIxa,EACKzS,EAAEitB,GAASxqB,KAAK,2BAElBzC,EAAEitB,GAAS7lB,QAIpB,GAxBsB,SAAlBoN,IACFA,EAAgB,GAsBb6vB,IAAoBA,GAAqB,GAC1Cr4B,EAAOO,OAAOqK,oBAChBxE,EAAWrW,SAAU,IAAGswB,EAAatU,qBAAqB5Q,MAAM8lB,IAE9DqX,EADc7xB,EAAYzS,EAAEitB,GAASxqB,KAAK,2BAA6BzC,EAAEitB,GAAS7lB,iBAG/E,GAAIoN,EAAgB,EACzB,IAAK,IAAI/T,EAAIgX,EAAahX,EAAIgX,EAAcjD,EAAe/T,GAAK,EAC1DqkC,EAAWrkC,IAAI6jC,EAAY7jC,QAGjC6jC,EAAY7sB,GAEd,GAAIlL,EAAOq3B,aACT,GAAIpvB,EAAgB,GAAMjI,EAAOs3B,oBAAsBt3B,EAAOs3B,mBAAqB,EAAI,CACrF,MAAMkB,EAASx4B,EAAOs3B,mBAChBxW,EAAMngB,KAAKsK,KAAKhD,GAChBwwB,EAAW93B,KAAKE,IAAIqK,EAAc4V,EAAMngB,KAAKC,IAAI43B,EAAQ1X,GAAMxa,EAAO5X,QACtEgqC,EAAW/3B,KAAKC,IAAIsK,EAAcvK,KAAKC,IAAIkgB,EAAK0X,GAAS,GAE/D,IAAK,IAAItkC,EAAIgX,EAAc4V,EAAK5sB,EAAIukC,EAAUvkC,GAAK,EAC7CqkC,EAAWrkC,IAAI6jC,EAAY7jC,GAGjC,IAAK,IAAIA,EAAIwkC,EAAUxkC,EAAIgX,EAAahX,GAAK,EACvCqkC,EAAWrkC,IAAI6jC,EAAY7jC,OAE5B,CACL,MAAMmZ,EAAYxH,EAAWrW,SAAU,IAAGswB,EAAahT,kBACnDO,EAAU3e,OAAS,GAAGqpC,EAAYxuB,EAAW8D,IAEjD,MAAMC,EAAYzH,EAAWrW,SAAU,IAAGswB,EAAa/S,kBACnDO,EAAU5e,OAAS,GAAGqpC,EAAYxuB,EAAW+D,KAIvD,SAASqrB,IACP,MAAMxmC,EAASF,IACf,IAAKwN,GAAUA,EAAOwE,UAAW,OACjC,MAAM20B,EAAiBn5B,EAAOO,OAAOunB,KAAKiQ,iBACtC/jC,EAAEgM,EAAOO,OAAOunB,KAAKiQ,kBACrB/jC,EAAEtB,GACA0mC,EAAWD,EAAe,KAAOzmC,EACjC2mC,EAAqBD,EAAW1mC,EAAOkjB,WAAaujB,EAAe,GAAGl/B,YACtEq/B,EAAsBF,EAAW1mC,EAAO2rB,YAAc8a,EAAe,GAAG/+B,aACxE4vB,EAAehqB,EAAOoF,IAAI/K,UACxBiM,aAAcC,GAAQvG,EAE9B,IAAI2pB,GAAS,EAETpjB,IAAKyjB,EAAajvB,MAAQiF,EAAOoF,IAAI,GAAGxK,YAC5C,MAAMqvB,EAAc,CAClB,CAACD,EAAajvB,KAAMivB,EAAalvB,KACjC,CAACkvB,EAAajvB,KAAOiF,EAAOiD,MAAO+mB,EAAalvB,KAChD,CAACkvB,EAAajvB,KAAMivB,EAAalvB,IAAMkF,EAAOmD,QAC9C,CAAC6mB,EAAajvB,KAAOiF,EAAOiD,MAAO+mB,EAAalvB,IAAMkF,EAAOmD,SAE/D,IAAK,IAAI1O,EAAI,EAAGA,EAAIw1B,EAAYh7B,OAAQwF,GAAK,EAAG,CAC9C,MAAM8pB,EAAQ0L,EAAYx1B,GAC1B,GACE8pB,EAAM,IAAM,GACZA,EAAM,IAAM8a,GACZ9a,EAAM,IAAM,GACZA,EAAM,IAAM+a,EACZ,CACA,GAAiB,IAAb/a,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCoL,GAAS,GAIb,MAAMxnB,IACyB,eAA7BnC,EAAOia,YAAYG,QACnBpa,EAAO2B,QAAQQ,kBACfnC,EAAOO,OAAO8Z,mBACV,CAAEC,SAAS,EAAM7iB,SAAS,GAG5BkyB,GACF5B,IACAoR,EAAexgC,IAAI,SAAUugC,EAAmB/2B,IACtCi2B,IACVA,GAAwB,EACxBe,EAAejiC,GAAG,SAAUgiC,EAAmB/2B,IAInDjL,EAAG,cAAc,KACX8I,EAAOO,OAAOunB,KAAKnhB,SAAW3G,EAAOO,OAAO6b,gBAC9Cpc,EAAOO,OAAO6b,eAAgB,MAGlCllB,EAAG,QAAQ,KACL8I,EAAOO,OAAOunB,KAAKnhB,UACjB3G,EAAOO,OAAOunB,KAAK6P,YACrBuB,IAEAnR,QAIN7wB,EAAG,UAAU,KAET8I,EAAOO,OAAOmW,UACd1W,EAAOO,OAAOmW,SAAS/P,UACtB3G,EAAOO,OAAOmW,SAASgW,QAExB3E,OAGJ7wB,EAAG,uDAAuD,KACpD8I,EAAOO,OAAOunB,KAAKnhB,UACjB3G,EAAOO,OAAOunB,KAAK6P,YACrBuB,IAEAnR,QAIN7wB,EAAG,mBAAmB,KAChB8I,EAAOO,OAAOunB,KAAKnhB,UAEnB3G,EAAOO,OAAOunB,KAAKgQ,wBACjB93B,EAAOO,OAAOunB,KAAKgQ,wBAA0BO,KAE3Cr4B,EAAOO,OAAOunB,KAAK6P,YACrBuB,IAEAnR,QAKR7wB,EAAG,iBAAiB,KACd8I,EAAOO,OAAOunB,KAAKnhB,UAAY3G,EAAOO,OAAOunB,KAAKgQ,wBAChD93B,EAAOO,OAAOunB,KAAK6P,YACrBuB,IAEAnR,QAIN7wB,EAAG,eAAe,KAChB,MAAM4wB,KAAEA,EAAF7f,QAAQA,EAAR2C,oBAAiBA,EAAjBmM,oBAAsCA,EAAtCe,gBAA2DA,GAC/D9X,EAAOO,OAEPunB,EAAKnhB,UACJsB,GAAY2C,IAAwBmM,GAA2C,IAApBe,KAE5DiQ,OAIJ7wB,EAAG,WAAW,KACP8I,EAAOoF,KACZpF,EAAOoF,IACJnI,KAAM,IAAG+C,EAAOO,OAAOunB,KAAKmQ,gBAC5BriC,YAAYoK,EAAOO,OAAOunB,KAAKmQ,iBAGpCvpC,OAAOkX,OAAO5F,EAAO8nB,KAAM,CACzBC,OACAuQ,iBCrTW,SAAkDv4B,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAa/D,SAASw5B,EAAarqB,EAAGC,GACvB,MAAMqqB,EAAgB,WACpB,IAAIR,EACAC,EACAQ,EACJ,MAAO,CAACC,EAAOznB,KAGb,IAFAgnB,GAAY,EACZD,EAAWU,EAAMzqC,OACV+pC,EAAWC,EAAW,GAC3BQ,EAAST,EAAWC,GAAa,EAC7BS,EAAMD,IAAUxnB,EAClBgnB,EAAWQ,EAEXT,EAAWS,EAGf,OAAOT,GAfW,GAwBtB,IAAIW,EACAC,EAeJ,OAtBAjoC,KAAKud,EAAIA,EACTvd,KAAKwd,EAAIA,EACTxd,KAAK2gB,UAAYpD,EAAEjgB,OAAS,EAO5B0C,KAAKkoC,YAAc,SAAqB5E,GACtC,OAAKA,GAGL2E,EAAKJ,EAAa7nC,KAAKud,EAAG+lB,GAC1B0E,EAAKC,EAAK,GAKN3E,EAAKtjC,KAAKud,EAAEyqB,KAAQhoC,KAAKwd,EAAEyqB,GAAMjoC,KAAKwd,EAAEwqB,KAAShoC,KAAKud,EAAE0qB,GAAMjoC,KAAKud,EAAEyqB,IAAOhoC,KAAKwd,EAAEwqB,IATvE,GAYXhoC,KAqFT,SAASmoC,IACF95B,EAAO+5B,WAAWC,SACnBh6B,EAAO+5B,WAAWE,SACpBj6B,EAAO+5B,WAAWE,YAAS7hC,SACpB4H,EAAO+5B,WAAWE,QA9I7B7Z,EAAa,CACX2Z,WAAY,CACVC,aAAS5hC,EACT8hC,SAAS,EACTC,GAAI,WAIRn6B,EAAO+5B,WAAa,CAClBC,aAAS5hC,GAwIXlB,EAAG,cAAc,KACf8I,EAAO+5B,WAAWC,QAAUh6B,EAAOO,OAAOw5B,WAAWC,WAEvD9iC,EAAG,UAAU,KACX4iC,OAEF5iC,EAAG,UAAU,KACX4iC,OAEF5iC,EAAG,kBAAkB,KACnB4iC,OAEF5iC,EAAG,gBAAgB,CAACktB,EAAIhkB,EAAW4O,KAC5BhP,EAAO+5B,WAAWC,SACvBh6B,EAAO+5B,WAAWhrB,aAAa3O,EAAW4O,MAE5C9X,EAAG,iBAAiB,CAACktB,EAAIptB,EAAUgY,KAC5BhP,EAAO+5B,WAAWC,SACvBh6B,EAAO+5B,WAAW1uB,cAAcrU,EAAUgY,MAG5CtgB,OAAOkX,OAAO5F,EAAO+5B,WAAY,CAC/BhrB,aAxGF,SAAsBqrB,EAAIprB,GACxB,MAAMqrB,EAAar6B,EAAO+5B,WAAWC,QACrC,IAAIvtB,EACA6tB,EACJ,MAAMxa,EAAS9f,EAAOvR,YACtB,SAAS8rC,EAAuB/kC,GAK9B,MAAM4K,EAAYJ,EAAOsG,cAAgBtG,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOO,OAAOw5B,WAAWI,MAlBjC,SAAgC3kC,GACzBwK,EAAO+5B,WAAWE,SACrBj6B,EAAO+5B,WAAWE,OAASj6B,EAAOO,OAAOmN,KACrC,IAAI6rB,EAAav5B,EAAOiH,WAAYzR,EAAEyR,YACtC,IAAIsyB,EAAav5B,EAAOgH,SAAUxR,EAAEwR,WAetCwzB,CAAuBhlC,GAGvB8kC,GAAuBt6B,EAAO+5B,WAAWE,OAAOJ,aAAaz5B,IAG1Dk6B,GAAuD,cAAhCt6B,EAAOO,OAAOw5B,WAAWI,KACnD1tB,GACGjX,EAAEmX,eAAiBnX,EAAE2W,iBAAmBnM,EAAO2M,eAAiB3M,EAAOmM,gBAC1EmuB,GAAuBl6B,EAAYJ,EAAOmM,gBAAkBM,EAAajX,EAAE2W,gBAGzEnM,EAAOO,OAAOw5B,WAAWG,UAC3BI,EAAsB9kC,EAAEmX,eAAiB2tB,GAE3C9kC,EAAEgX,eAAe8tB,GACjB9kC,EAAEuZ,aAAaurB,EAAqBt6B,GACpCxK,EAAEuY,oBACFvY,EAAEyX,sBAEJ,GAAIra,MAAMc,QAAQ2mC,GAChB,IAAK,IAAI5lC,EAAI,EAAGA,EAAI4lC,EAAWprC,OAAQwF,GAAK,EACtC4lC,EAAW5lC,KAAOua,GAAgBqrB,EAAW5lC,aAAcqrB,GAC7Dya,EAAuBF,EAAW5lC,SAG7B4lC,aAAsBva,GAAU9Q,IAAiBqrB,GAC1DE,EAAuBF,IAkEzBhvB,cA/DF,SAAuBrU,EAAUgY,GAC/B,MAAM8Q,EAAS9f,EAAOvR,YAChB4rC,EAAar6B,EAAO+5B,WAAWC,QACrC,IAAIvlC,EACJ,SAASgmC,EAAwBjlC,GAC/BA,EAAE6V,cAAcrU,EAAUgJ,GACT,IAAbhJ,IACFxB,EAAEqb,kBACErb,EAAE+K,OAAOyM,YACX3P,GAAS,KACP7H,EAAE0V,sBAGN1V,EAAE4Q,WAAW0K,eAAc,KACpBupB,IACD7kC,EAAE+K,OAAOmN,MAAwC,UAAhC1N,EAAOO,OAAOw5B,WAAWI,IAC5C3kC,EAAEoc,UAEJpc,EAAEsb,qBAIR,GAAIle,MAAMc,QAAQ2mC,GAChB,IAAK5lC,EAAI,EAAGA,EAAI4lC,EAAWprC,OAAQwF,GAAK,EAClC4lC,EAAW5lC,KAAOua,GAAgBqrB,EAAW5lC,aAAcqrB,GAC7D2a,EAAwBJ,EAAW5lC,SAG9B4lC,aAAsBva,GAAU9Q,IAAiBqrB,GAC1DI,EAAwBJ,OCvIf,SAA4Ct6B,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EACzDqgB,EAAa,CACXsa,KAAM,CACJ/zB,SAAS,EACTg0B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,2BAA4B,KAC5BC,UAAW,QACX9oC,GAAI,QAIR,IAAI+oC,EAAa,KAEjB,SAASC,EAAOC,GACd,MAAMC,EAAeH,EACO,IAAxBG,EAAaxsC,SACjBwsC,EAAatnC,KAAK,IAClBsnC,EAAatnC,KAAKqnC,IAOpB,SAASE,EAAgBt2B,GACvBA,EAAI3O,KAAK,WAAY,KAEvB,SAASklC,EAAmBv2B,GAC1BA,EAAI3O,KAAK,WAAY,MAEvB,SAASmlC,EAAUx2B,EAAKy2B,GACtBz2B,EAAI3O,KAAK,OAAQolC,GAEnB,SAASC,EAAqB12B,EAAK22B,GACjC32B,EAAI3O,KAAK,uBAAwBslC,GAKnC,SAASC,EAAW52B,EAAKe,GACvBf,EAAI3O,KAAK,aAAc0P,GAQzB,SAAS81B,EAAU72B,GACjBA,EAAI3O,KAAK,iBAAiB,GAE5B,SAASylC,EAAS92B,GAChBA,EAAI3O,KAAK,iBAAiB,GAG5B,SAAS0lC,EAAkBxkC,GACzB,GAAkB,KAAdA,EAAEixB,SAAgC,KAAdjxB,EAAEixB,QAAgB,OAC1C,MAAMroB,EAASP,EAAOO,OAAOm6B,KACvB9mB,EAAY5f,EAAE2D,EAAE/I,QAClBoR,EAAOiZ,YAAcjZ,EAAOiZ,WAAWuU,SAAW5Z,EAAU7b,GAAGiI,EAAOiZ,WAAWuU,WAC7ExtB,EAAO6M,QAAU7M,EAAOO,OAAOmN,MACnC1N,EAAOsR,YAELtR,EAAO6M,MACT0uB,EAAOh7B,EAAOw6B,kBAEdQ,EAAOh7B,EAAOs6B,mBAGd76B,EAAOiZ,YAAcjZ,EAAOiZ,WAAWwU,SAAW7Z,EAAU7b,GAAGiI,EAAOiZ,WAAWwU,WAC7EztB,EAAO4M,cAAgB5M,EAAOO,OAAOmN,MACzC1N,EAAO+R,YAEL/R,EAAO4M,YACT2uB,EAAOh7B,EAAOu6B,mBAEdS,EAAOh7B,EAAOq6B,mBAKhB56B,EAAOguB,YACPpa,EAAU7b,GAAGirB,EAAkBhjB,EAAOO,OAAOytB,WAAWgB,eAExDpb,EAAU,GAAGwoB,QA4BjB,SAASC,IACP,OAAOr8B,EAAOguB,YAAchuB,EAAOguB,WAAW2B,SAAW3vB,EAAOguB,WAAW2B,QAAQ1gC,OAGrF,SAASqtC,IACP,OAAOD,KAAmBr8B,EAAOO,OAAOytB,WAAWC,UA0BrD,MAAMsO,EAAY,CAACn3B,EAAKo3B,EAAWhB,KACjCE,EAAgBt2B,GACO,WAAnBA,EAAI,GAAGkoB,UACTsO,EAAUx2B,EAAK,UACfA,EAAIlO,GAAG,UAAWilC,IAEpBH,EAAW52B,EAAKo2B,GAjHlB,SAAuBp2B,EAAKq3B,GAC1Br3B,EAAI3O,KAAK,gBAAiBgmC,GAiH1BC,CAAct3B,EAAKo3B,IAGfG,EAAehlC,IACnB,MAAMspB,EAAUtpB,EAAE/I,OAAOoO,QAAS,IAAGgD,EAAOO,OAAOuG,cACnD,IAAKma,IAAYjhB,EAAO6G,OAAO+1B,SAAS3b,GAAU,OAClD,MAAM4b,EAAW78B,EAAO6G,OAAOxS,QAAQ4sB,KAAajhB,EAAOyL,YACrDqxB,EACJ98B,EAAOO,OAAOqK,qBACd5K,EAAOuL,eACPvL,EAAOuL,cAAcqxB,SAAS3b,GAC5B4b,GAAYC,GAChB98B,EAAOkQ,QAAQlQ,EAAO6G,OAAOxS,QAAQ4sB,GAAU,IAG3C3Y,EAAa,KACjB,MAAM/H,EAASP,EAAOO,OAAOm6B,KACzBn6B,EAAO66B,4BACTU,EAAqB9nC,EAAEgM,EAAO6G,QAAStG,EAAO66B,4BAE5C76B,EAAO86B,WACTO,EAAU5nC,EAAEgM,EAAO6G,QAAStG,EAAO86B,WAGrC,MAAMt0B,EAAe/G,EAAOO,OAAOmN,KAC/B1N,EAAO6G,OAAO/S,QAAQL,IAAQA,EAAGiC,UAAUU,SAAS4J,EAAOO,OAAOoN,uBAC/D1e,OACH+Q,EAAO6G,OAAO5X,OACdsR,EAAO06B,mBACTj7B,EAAO6G,OAAO1L,MAAK,CAAC8lB,EAAS7lB,KAC3B,MAAMopB,EAAWxwB,EAAEitB,GACbnX,EAAa9J,EAAOO,OAAOmN,KAC7BjI,SAAS+e,EAAS/tB,KAAK,2BAA4B,IACnD2E,EAIJ4gC,EAAWxX,EAHcjkB,EAAO06B,kBAC7Bh9B,QAAQ,gBAAiB6L,EAAa,GACtC7L,QAAQ,uBAAwB8I,QAMnC8U,EAAO,KACX,MAAMtb,EAASP,EAAOO,OAAOm6B,KAE7B16B,EAAOoF,IAAIrJ,OAAOu/B,GAGlB,MAAMyB,EAAe/8B,EAAOoF,IACxB7E,EAAO46B,iCACTW,EAAqBiB,EAAcx8B,EAAO46B,iCAExC56B,EAAO26B,kBACTc,EAAWe,EAAcx8B,EAAO26B,kBAIlC,MAAM90B,EAAapG,EAAOoG,WACpBo2B,EAAYj8B,EAAOhO,IAAM6T,EAAW3P,KAAK,OAAU,kBA5LlCoP,EA4LmE,QA5LxD,IAAXA,MAAO,IAEvB,IAAIm3B,OAAOn3B,GAAM5H,QAAQ,MADb,IAAMiD,KAAK+7B,MAAM,GAAK/7B,KAAKg8B,UAAU3+B,SAAS,QADnE,IAAyBsH,EA6LvB,MAAMs3B,EAAOn9B,EAAOO,OAAO+Y,UAAYtZ,EAAOO,OAAO+Y,SAAS3S,QAAU,MAAQ,SAvKlF,IAAsBpU,EA+KpB,IAAIi7B,EACAC,EAhLgBl7B,EAwKAiqC,EAAZp2B,EAvKJ3P,KAAK,KAAMlE,GAEjB,SAAmB6S,EAAK+3B,GACtB/3B,EAAI3O,KAAK,YAAa0mC,GAqKtBC,CAAUh3B,EAAY+2B,GAGtB70B,IAKItI,EAAOiZ,YAAcjZ,EAAOiZ,WAAWuU,UACzCA,EAAUxtB,EAAOiZ,WAAWuU,SAE1BxtB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWwU,UACzCA,EAAUztB,EAAOiZ,WAAWwU,SAG1BD,GAAWA,EAAQv+B,QACrBstC,EAAU/O,EAASgP,EAAWj8B,EAAOs6B,kBAEnCpN,GAAWA,EAAQx+B,QACrBstC,EAAU9O,EAAS+O,EAAWj8B,EAAOq6B,kBAInC0B,KACFt8B,EAAOguB,WAAW5oB,IAAIlO,GACpB,UACA8rB,EAAkBhjB,EAAOO,OAAOytB,WAAWgB,aAC3CmN,GAKJn8B,EAAOoF,IAAIlO,GAAG,QAASylC,GAAa,IAiCtCzlC,EAAG,cAAc,KACfokC,EAAatnC,EACV,gBAAegM,EAAOO,OAAOm6B,KAAKC,0EAIvCzjC,EAAG,aAAa,KACT8I,EAAOO,OAAOm6B,KAAK/zB,SACxBkV,OAEF3kB,EAAG,kEAAkE,KAC9D8I,EAAOO,OAAOm6B,KAAK/zB,SACxB2B,OAEFpR,EAAG,yCAAyC,KACrC8I,EAAOO,OAAOm6B,KAAK/zB,SA3M1B,WACE,GAAI3G,EAAOO,OAAOmN,MAAQ1N,EAAOO,OAAOuR,SAAW9R,EAAOiZ,WAAY,OACtE,MAAMuU,QAAEA,EAAFC,QAAWA,GAAYztB,EAAOiZ,WAEhCwU,GAAWA,EAAQx+B,OAAS,IAC1B+Q,EAAO4M,aACTqvB,EAAUxO,GACVkO,EAAmBlO,KAEnByO,EAASzO,GACTiO,EAAgBjO,KAGhBD,GAAWA,EAAQv+B,OAAS,IAC1B+Q,EAAO6M,OACTovB,EAAUzO,GACVmO,EAAmBnO,KAEnB0O,EAAS1O,GACTkO,EAAgBlO,KAyLpB6P,MAEFnmC,EAAG,oBAAoB,KAChB8I,EAAOO,OAAOm6B,KAAK/zB,SA/K1B,WACE,MAAMpG,EAASP,EAAOO,OAAOm6B,KACxB2B,KACLr8B,EAAOguB,WAAW2B,QAAQx0B,MAAMmiC,IAC9B,MAAMvN,EAAY/7B,EAAEspC,GAChBt9B,EAAOO,OAAOytB,WAAWC,YAC3ByN,EAAgB3L,GACX/vB,EAAOO,OAAOytB,WAAWM,eAC5BsN,EAAU7L,EAAW,UACrBiM,EACEjM,EACAxvB,EAAOy6B,wBAAwB/8B,QAAQ,gBAAiB8xB,EAAU30B,QAAU,MAI9E20B,EAAUh4B,GAAI,IAAGiI,EAAOO,OAAOytB,WAAWiB,qBAC5Cc,EAAUt5B,KAAK,eAAgB,QAE/Bs5B,EAAUl5B,WAAW,mBA8JzB0mC,MAEFrmC,EAAG,WAAW,KACP8I,EAAOO,OAAOm6B,KAAK/zB,SAtD1B,WAGE,IAAI6mB,EACAC,EAHA6N,GAAcA,EAAWrsC,OAAS,GAAGqsC,EAAWvlC,SAIhDiK,EAAOiZ,YAAcjZ,EAAOiZ,WAAWuU,UACzCA,EAAUxtB,EAAOiZ,WAAWuU,SAE1BxtB,EAAOiZ,YAAcjZ,EAAOiZ,WAAWwU,UACzCA,EAAUztB,EAAOiZ,WAAWwU,SAE1BD,GACFA,EAAQ70B,IAAI,UAAWwjC,GAErB1O,GACFA,EAAQ90B,IAAI,UAAWwjC,GAIrBG,KACFt8B,EAAOguB,WAAW5oB,IAAIzM,IACpB,UACAqqB,EAAkBhjB,EAAOO,OAAOytB,WAAWgB,aAC3CmN,GAKJn8B,EAAOoF,IAAIzM,IAAI,QAASgkC,GAAa,GA2BrCxa,OCrTW,SAA+CpiB,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC5DqgB,EAAa,CACX/uB,QAAS,CACPsV,SAAS,EACT62B,KAAM,GACNlsC,cAAc,EACdtC,IAAK,SACLyuC,WAAW,KAIf,IAAInvB,GAAc,EACdovB,EAAQ,GAEZ,MAAMC,EAAWtiC,GACRA,EACJkD,WACAN,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,IACpBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,IAGd2/B,EAAiBC,IACrB,MAAMnrC,EAASF,IACf,IAAIlC,EAEFA,EADEutC,EACS,IAAIC,IAAID,GAERnrC,EAAOpC,SAEpB,MAAMytC,EAAYztC,EAASM,SACxB+N,MAAM,GACNlJ,MAAM,KACN3B,QAAQkqC,GAAkB,KAATA,IACdhO,EAAQ+N,EAAU9uC,OAGxB,MAAO,CAAED,IAFG+uC,EAAU/N,EAAQ,GAEhB58B,MADA2qC,EAAU/N,EAAQ,KAG5BiO,EAAa,CAACjvC,EAAKoM,KACvB,MAAM1I,EAASF,IACf,IAAK8b,IAAgBtO,EAAOO,OAAOlP,QAAQsV,QAAS,OACpD,IAAIrW,EAEFA,EADE0P,EAAOO,OAAOyb,IACL,IAAI8hB,IAAI99B,EAAOO,OAAOyb,KAEtBtpB,EAAOpC,SAEpB,MAAMoY,EAAQ1I,EAAO6G,OAAOhL,GAAGT,GAC/B,IAAIhI,EAAQuqC,EAAQj1B,EAAMjS,KAAK,iBAC/B,GAAIuJ,EAAOO,OAAOlP,QAAQmsC,KAAKvuC,OAAS,EAAG,CACzC,IAAIuuC,EAAOx9B,EAAOO,OAAOlP,QAAQmsC,KACH,MAA1BA,EAAKA,EAAKvuC,OAAS,KAAYuuC,EAAOA,EAAK7+B,MAAM,EAAG6+B,EAAKvuC,OAAS,IACtEmE,EAAS,GAAEoqC,KAAQxuC,KAAOoE,SAChB9C,EAASM,SAASgsC,SAAS5tC,KACrCoE,EAAS,GAAEpE,KAAOoE,KAEhB4M,EAAOO,OAAOlP,QAAQosC,YACxBrqC,GAAS9C,EAASQ,QAEpB,MAAMotC,EAAexrC,EAAOrB,QAAQ8sC,MAChCD,GAAgBA,EAAa9qC,QAAUA,IAGvC4M,EAAOO,OAAOlP,QAAQC,aACxBoB,EAAOrB,QAAQC,aAAa,CAAE8B,SAAS,KAAMA,GAE7CV,EAAOrB,QAAQE,UAAU,CAAE6B,SAAS,KAAMA,KAIxCgrC,EAAgB,CAAC59B,EAAOpN,EAAOkc,KACnC,GAAIlc,EACF,IAAK,IAAIqB,EAAI,EAAGxF,EAAS+Q,EAAO6G,OAAO5X,OAAQwF,EAAIxF,EAAQwF,GAAK,EAAG,CACjE,MAAMiU,EAAQ1I,EAAO6G,OAAOhL,GAAGpH,GAE/B,GADqBkpC,EAAQj1B,EAAMjS,KAAK,mBACnBrD,IAAUsV,EAAM1S,SAASgK,EAAOO,OAAOoN,qBAAsB,CAChF,MAAMvS,EAAQsN,EAAMtN,QACpB4E,EAAOkQ,QAAQ9U,EAAOoF,EAAO8O,SAIjCtP,EAAOkQ,QAAQ,EAAG1P,EAAO8O,IAIvB+uB,EAAqB,KACzBX,EAAQE,EAAc59B,EAAOO,OAAOyb,KACpCoiB,EAAcp+B,EAAOO,OAAOC,MAAOk9B,EAAMtqC,OAAO,IA0BlD8D,EAAG,QAAQ,KACL8I,EAAOO,OAAOlP,QAAQsV,SAxBf,MACX,MAAMjU,EAASF,IACf,GAAKwN,EAAOO,OAAOlP,QAAnB,CACA,IAAKqB,EAAOrB,UAAYqB,EAAOrB,QAAQE,UAGrC,OAFAyO,EAAOO,OAAOlP,QAAQsV,SAAU,OAChC3G,EAAOO,OAAO+9B,eAAe33B,SAAU,GAGzC2H,GAAc,EACdovB,EAAQE,EAAc59B,EAAOO,OAAOyb,MAC/B0hB,EAAM1uC,KAAQ0uC,EAAMtqC,SACzBgrC,EAAc,EAAGV,EAAMtqC,MAAO4M,EAAOO,OAAOgO,oBACvCvO,EAAOO,OAAOlP,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAYivC,MAYpCxiB,MAGJ3kB,EAAG,WAAW,KACR8I,EAAOO,OAAOlP,QAAQsV,SAbZ,MACd,MAAMjU,EAASF,IACVwN,EAAOO,OAAOlP,QAAQC,cACzBoB,EAAOrD,oBAAoB,WAAYgvC,IAWvClc,MAGJjrB,EAAG,4CAA4C,KACzCoX,GACF2vB,EAAWj+B,EAAOO,OAAOlP,QAAQrC,IAAKgR,EAAOyL,gBAGjDvU,EAAG,eAAe,KACZoX,GAAetO,EAAOO,OAAO0H,SAC/Bg2B,EAAWj+B,EAAOO,OAAOlP,QAAQrC,IAAKgR,EAAOyL,iBCpIpC,SAA4D1L,GAAA,IAApCC,OAAEA,EAAFogB,aAAUA,EAAVnb,KAAwBA,EAAxB/N,GAA8BA,GAAM6I,EACrEuO,GAAc,EAClB,MAAMrd,EAAWF,IACX2B,EAASF,IACf4tB,EAAa,CACXke,eAAgB,CACd33B,SAAS,EACTrV,cAAc,EACditC,YAAY,KAGhB,MAAMC,EAAe,KACnBv5B,EAAK,cACL,MAAMw5B,EAAUxtC,EAASX,SAASC,KAAK0N,QAAQ,IAAK,IAEpD,GAAIwgC,IADoBz+B,EAAO6G,OAAOhL,GAAGmE,EAAOyL,aAAahV,KAAK,aACjC,CAC/B,MAAM2a,EAAWpR,EAAOoG,WACrBrW,SAAU,IAAGiQ,EAAOO,OAAOuG,yBAAyB23B,OACpDrjC,QACH,QAAwB,IAAbgW,EAA0B,OACrCpR,EAAOkQ,QAAQkB,KAGbstB,EAAU,KACd,GAAKpwB,GAAgBtO,EAAOO,OAAO+9B,eAAe33B,QAClD,GACE3G,EAAOO,OAAO+9B,eAAehtC,cAC7BoB,EAAOrB,SACPqB,EAAOrB,QAAQC,aAEfoB,EAAOrB,QAAQC,aACb,KACA,KACC,IAAG0O,EAAO6G,OAAOhL,GAAGmE,EAAOyL,aAAahV,KAAK,gBAAkB,IAElEwO,EAAK,eACA,CACL,MAAMyD,EAAQ1I,EAAO6G,OAAOhL,GAAGmE,EAAOyL,aAChClb,EAAOmY,EAAMjS,KAAK,cAAgBiS,EAAMjS,KAAK,gBACnDxF,EAASX,SAASC,KAAOA,GAAQ,GACjC0U,EAAK,aAgCT/N,EAAG,QAAQ,KACL8I,EAAOO,OAAO+9B,eAAe33B,SA9BtB,MACX,IACG3G,EAAOO,OAAO+9B,eAAe33B,SAC7B3G,EAAOO,OAAOlP,SAAW2O,EAAOO,OAAOlP,QAAQsV,QAEhD,OACF2H,GAAc,EACd,MAAM/d,EAAOU,EAASX,SAASC,KAAK0N,QAAQ,IAAK,IACjD,GAAI1N,EAAM,CACR,MAAMiQ,EAAQ,EACd,IAAK,IAAI/L,EAAI,EAAGxF,EAAS+Q,EAAO6G,OAAO5X,OAAQwF,EAAIxF,EAAQwF,GAAK,EAAG,CACjE,MAAMiU,EAAQ1I,EAAO6G,OAAOhL,GAAGpH,GAE/B,IADkBiU,EAAMjS,KAAK,cAAgBiS,EAAMjS,KAAK,mBACtClG,IAASmY,EAAM1S,SAASgK,EAAOO,OAAOoN,qBAAsB,CAC5E,MAAMvS,EAAQsN,EAAMtN,QACpB4E,EAAOkQ,QAAQ9U,EAAOoF,EAAOR,EAAOO,OAAOgO,oBAAoB,KAIjEvO,EAAOO,OAAO+9B,eAAeC,YAC/BvqC,EAAEtB,GAAQwE,GAAG,aAAcsnC,IAW3B3iB,MAGJ3kB,EAAG,WAAW,KACR8I,EAAOO,OAAO+9B,eAAe33B,SAX7B3G,EAAOO,OAAO+9B,eAAeC,YAC/BvqC,EAAEtB,GAAQiG,IAAI,aAAc6lC,MAchCtnC,EAAG,4CAA4C,KACzCoX,GACFowB,OAGJxnC,EAAG,eAAe,KACZoX,GAAetO,EAAOO,OAAO0H,SAC/By2B,QCvFS,SAAsD3+B,GAAA,IAC/DoqB,GAD2BnqB,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,EAAxB+N,KAA4BA,GAAQlF,EAoBnE,SAAS0Z,IACP,MAAMklB,EAAiB3+B,EAAO6G,OAAOhL,GAAGmE,EAAOyL,aAC/C,IAAInO,EAAQ0C,EAAOO,OAAO+Y,SAAShc,MAC/BqhC,EAAeloC,KAAK,0BACtB6G,EAAQqhC,EAAeloC,KAAK,yBAA2BuJ,EAAOO,OAAO+Y,SAAShc,OAEhFpL,aAAai4B,GACbA,EAAU9sB,GAAS,KACjB,IAAIuhC,EACA5+B,EAAOO,OAAO+Y,SAASulB,iBACrB7+B,EAAOO,OAAOmN,MAChB1N,EAAO4R,UACPgtB,EAAiB5+B,EAAO+R,UAAU/R,EAAOO,OAAOC,OAAO,GAAM,GAC7DyE,EAAK,aACKjF,EAAO4M,YAGP5M,EAAOO,OAAO+Y,SAASwlB,gBASjC9R,KARA4R,EAAiB5+B,EAAOkQ,QACtBlQ,EAAO6G,OAAO5X,OAAS,EACvB+Q,EAAOO,OAAOC,OACd,GACA,GAEFyE,EAAK,cATL25B,EAAiB5+B,EAAO+R,UAAU/R,EAAOO,OAAOC,OAAO,GAAM,GAC7DyE,EAAK,aAYEjF,EAAOO,OAAOmN,MACvB1N,EAAO4R,UACPgtB,EAAiB5+B,EAAOsR,UAAUtR,EAAOO,OAAOC,OAAO,GAAM,GAC7DyE,EAAK,aACKjF,EAAO6M,MAGP7M,EAAOO,OAAO+Y,SAASwlB,gBAIjC9R,KAHA4R,EAAiB5+B,EAAOkQ,QAAQ,EAAGlQ,EAAOO,OAAOC,OAAO,GAAM,GAC9DyE,EAAK,cAJL25B,EAAiB5+B,EAAOsR,UAAUtR,EAAOO,OAAOC,OAAO,GAAM,GAC7DyE,EAAK,cAOHjF,EAAOO,OAAO0H,SAAWjI,EAAOsZ,SAASC,UACjB,IAAnBqlB,IAD6CnlB,MAIrDnc,GAEL,SAAS8c,IACP,YAAuB,IAAZ+P,KACPnqB,EAAOsZ,SAASC,UACpBvZ,EAAOsZ,SAASC,SAAU,EAC1BtU,EAAK,iBACLwU,KACO,IAET,SAASuT,IACP,QAAKhtB,EAAOsZ,SAASC,eACE,IAAZ4Q,IAEPA,IACFj4B,aAAai4B,GACbA,OAAU/xB,GAEZ4H,EAAOsZ,SAASC,SAAU,EAC1BtU,EAAK,iBACE,IAET,SAAS85B,EAAMv+B,GACRR,EAAOsZ,SAASC,UACjBvZ,EAAOsZ,SAASE,SAChB2Q,GAASj4B,aAAai4B,GAC1BnqB,EAAOsZ,SAASE,QAAS,EACX,IAAVhZ,GAAgBR,EAAOO,OAAO+Y,SAAS0lB,kBAIzC,CAAC,gBAAiB,uBAAuBjwC,SAASwJ,IAChDyH,EAAOoG,WAAW,GAAGhX,iBAAiBmJ,EAAOm9B,OAJ/C11B,EAAOsZ,SAASE,QAAS,EACzBC,OAOJ,SAASwlB,IACP,MAAMhuC,EAAWF,IACgB,WAA7BE,EAASiuC,iBAAgCl/B,EAAOsZ,SAASC,SAC3DwlB,IAE+B,YAA7B9tC,EAASiuC,iBAAiCl/B,EAAOsZ,SAASE,SAC5DC,IACAzZ,EAAOsZ,SAASE,QAAS,GAG7B,SAASkc,EAAgB/9B,GAClBqI,IAAUA,EAAOwE,WAAcxE,EAAOoG,YACvCzO,EAAE/I,SAAWoR,EAAOoG,WAAW,KACnC,CAAC,gBAAiB,uBAAuBrX,SAASwJ,IAChDyH,EAAOoG,WAAW,GAAG/W,oBAAoBkJ,EAAOm9B,MAElD11B,EAAOsZ,SAASE,QAAS,EACpBxZ,EAAOsZ,SAASC,QAGnBE,IAFAuT,KAKJ,SAASmS,IACHn/B,EAAOO,OAAO+Y,SAAS8lB,qBACzBpS,KAEA/nB,EAAK,iBACL85B,KAGF,CAAC,gBAAiB,uBAAuBhwC,SAASwJ,IAChDyH,EAAOoG,WAAW,GAAG/W,oBAAoBkJ,EAAOm9B,MAGpD,SAAS2J,IACHr/B,EAAOO,OAAO+Y,SAAS8lB,uBAG3Bp/B,EAAOsZ,SAASE,QAAS,EACzBvU,EAAK,kBACLwU,KA3IFzZ,EAAOsZ,SAAW,CAChBC,SAAS,EACTC,QAAQ,GAGV4G,EAAa,CACX9G,SAAU,CACR3S,SAAS,EACTrJ,MAAO,IACP0hC,mBAAmB,EACnBI,sBAAsB,EACtBN,iBAAiB,EACjBD,kBAAkB,EAClBS,mBAAmB,KA2IvBpoC,EAAG,QAAQ,KACT,GAAI8I,EAAOO,OAAO+Y,SAAS3S,QAAS,CAClCyT,IACiBrpB,IACR3B,iBAAiB,mBAAoB6vC,GAd5Cj/B,EAAOO,OAAO+Y,SAASgmB,oBACzBt/B,EAAOoF,IAAIlO,GAAG,aAAcioC,GAC5Bn/B,EAAOoF,IAAIlO,GAAG,aAAcmoC,QAgBhCnoC,EAAG,yBAAyB,CAACktB,EAAI5jB,EAAOgP,KAClCxP,EAAOsZ,SAASC,UACd/J,IAAaxP,EAAOO,OAAO+Y,SAAS8lB,qBACtCp/B,EAAOsZ,SAASylB,MAAMv+B,GAEtBwsB,QAIN91B,EAAG,mBAAmB,KAChB8I,EAAOsZ,SAASC,UACdvZ,EAAOO,OAAO+Y,SAAS8lB,qBACzBpS,IAEA+R,QAIN7nC,EAAG,YAAY,KAEX8I,EAAOO,OAAO0H,SACdjI,EAAOsZ,SAASE,SACfxZ,EAAOO,OAAO+Y,SAAS8lB,sBAExB3lB,OAGJviB,EAAG,WAAW,KAvCZ8I,EAAOoF,IAAIzM,IAAI,aAAcwmC,GAC7Bn/B,EAAOoF,IAAIzM,IAAI,aAAc0mC,GAwCzBr/B,EAAOsZ,SAASC,SAClByT,IAEej8B,IACR1B,oBAAoB,mBAAoB4vC,MAGnDvwC,OAAOkX,OAAO5F,EAAOsZ,SAAU,CAC7BylB,QACAtlB,MACAW,QACA4S,UC7MW,SAA6CjtB,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC1DqgB,EAAa,CACXmf,OAAQ,CACNv/B,OAAQ,KACRw/B,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAI1B,IAAIrxB,GAAc,EACdsxB,GAAgB,EAMpB,SAASC,IACP,MAAMC,EAAe9/B,EAAOu/B,OAAOv/B,OACnC,IAAK8/B,GAAgBA,EAAat7B,UAAW,OAE7C,MAAMmK,EAAemxB,EAAanxB,aAC5BD,EAAeoxB,EAAapxB,aAClC,GAAIA,GAAgB1a,EAAE0a,GAAc1Y,SAASgK,EAAOO,OAAOg/B,OAAOG,uBAChE,OACF,GAAI,MAAO/wB,EAAuD,OAClE,IAAIgE,EAMJ,GAJEA,EADEmtB,EAAav/B,OAAOmN,KACPjI,SAASzR,EAAE8rC,EAAapxB,cAAcjY,KAAK,2BAA4B,IAEvEkY,EAEb3O,EAAOO,OAAOmN,KAAM,CACtB,IAAIqyB,EAAe//B,EAAOyL,YACtBzL,EAAO6G,OAAOhL,GAAGkkC,GAAc/pC,SAASgK,EAAOO,OAAOoN,uBACxD3N,EAAO4R,UAEP5R,EAAO6R,YAAc7R,EAAOoG,WAAW,GAAG3L,WAC1CslC,EAAe//B,EAAOyL,aAExB,MAAM4G,EAAYrS,EAAO6G,OACtBhL,GAAGkkC,GACHnjC,QAAS,6BAA4B+V,OACrC9W,GAAG,GACHT,QACG+D,EAAYa,EAAO6G,OACtBhL,GAAGkkC,GACHvjC,QAAS,6BAA4BmW,OACrC9W,GAAG,GACHT,QACmCuX,OAAb,IAAdN,EAA0ClT,OACvB,IAAdA,EAA0CkT,EACjDlT,EAAY4gC,EAAeA,EAAe1tB,EAA0BlT,EACzDkT,EAEtBrS,EAAOkQ,QAAQyC,GAGjB,SAASkJ,IACP,MAAQ0jB,OAAQS,GAAiBhgC,EAAOO,OACxC,GAAI+N,EAAa,OAAO,EACxBA,GAAc,EACd,MAAM2xB,EAAcjgC,EAAOvR,YAC3B,GAAIuxC,EAAahgC,kBAAkBigC,EACjCjgC,EAAOu/B,OAAOv/B,OAASggC,EAAahgC,OACpCtR,OAAOkX,OAAO5F,EAAOu/B,OAAOv/B,OAAOud,eAAgB,CACjD3S,qBAAqB,EACrBgE,qBAAqB,IAEvBlgB,OAAOkX,OAAO5F,EAAOu/B,OAAOv/B,OAAOO,OAAQ,CACzCqK,qBAAqB,EACrBgE,qBAAqB,SAElB,GAAIrgB,EAASyxC,EAAahgC,QAAS,CACxC,MAAMkgC,EAAqBxxC,OAAOkX,OAAO,GAAIo6B,EAAahgC,QAC1DtR,OAAOkX,OAAOs6B,EAAoB,CAChCt1B,qBAAqB,EACrBgE,qBAAqB,IAEvB5O,EAAOu/B,OAAOv/B,OAAS,IAAIigC,EAAYC,GACvCN,GAAgB,EAIlB,OAFA5/B,EAAOu/B,OAAOv/B,OAAOoF,IAAInQ,SAAS+K,EAAOO,OAAOg/B,OAAOI,sBACvD3/B,EAAOu/B,OAAOv/B,OAAO9I,GAAG,MAAO2oC,IACxB,EAGT,SAAS36B,EAAOiL,GACd,MAAM2vB,EAAe9/B,EAAOu/B,OAAOv/B,OACnC,IAAK8/B,GAAgBA,EAAat7B,UAAW,OAE7C,MAAMgE,EACkC,SAAtCs3B,EAAav/B,OAAOiI,cAChBs3B,EAAaruB,uBACbquB,EAAav/B,OAAOiI,cAG1B,IAAI23B,EAAmB,EACvB,MAAMC,EAAmBpgC,EAAOO,OAAOg/B,OAAOG,sBAa9C,GAXI1/B,EAAOO,OAAOiI,cAAgB,IAAMxI,EAAOO,OAAOyH,iBACpDm4B,EAAmBngC,EAAOO,OAAOiI,eAG9BxI,EAAOO,OAAOg/B,OAAOC,uBACxBW,EAAmB,GAGrBA,EAAmBj/B,KAAKiI,MAAMg3B,GAE9BL,EAAaj5B,OAAOjR,YAAYwqC,GAE9BN,EAAav/B,OAAOmN,MACnBoyB,EAAav/B,OAAOmG,SAAWo5B,EAAav/B,OAAOmG,QAAQC,QAE5D,IAAK,IAAIlS,EAAI,EAAGA,EAAI0rC,EAAkB1rC,GAAK,EACzCqrC,EAAa15B,WACVrW,SAAU,6BAA4BiQ,EAAOkN,UAAYzY,OACzDQ,SAASmrC,QAGd,IAAK,IAAI3rC,EAAI,EAAGA,EAAI0rC,EAAkB1rC,GAAK,EACzCqrC,EAAaj5B,OAAOhL,GAAGmE,EAAOkN,UAAYzY,GAAGQ,SAASmrC,GAI1D,MAAMX,EAAmBz/B,EAAOO,OAAOg/B,OAAOE,iBACxCY,EAAYZ,IAAqBK,EAAav/B,OAAOmN,KAC3D,GAAI1N,EAAOkN,YAAc4yB,EAAa5yB,WAAamzB,EAAW,CAC5D,IACIC,EACAtwB,EAFAuwB,EAAqBT,EAAar0B,YAGtC,GAAIq0B,EAAav/B,OAAOmN,KAAM,CAE1BoyB,EAAaj5B,OACVhL,GAAG0kC,GACHvqC,SAAS8pC,EAAav/B,OAAOoN,uBAEhCmyB,EAAaluB,UAEbkuB,EAAajuB,YAAciuB,EAAa15B,WAAW,GAAG3L,WACtD8lC,EAAqBT,EAAar0B,aAGpC,MAAM+0B,EAAkBV,EAAaj5B,OAClChL,GAAG0kC,GACH3jC,QAAS,6BAA4BoD,EAAOkN,eAC5CrR,GAAG,GACHT,QACGqlC,EAAkBX,EAAaj5B,OAClChL,GAAG0kC,GACH/jC,QAAS,6BAA4BwD,EAAOkN,eAC5CrR,GAAG,GACHT,QAEDklC,OAD6B,IAApBE,EACQC,OACmB,IAApBA,EACCD,EACRC,EAAkBF,GAAuBA,EAAqBC,EAErEV,EAAav/B,OAAO+I,eAAiB,EAAIm3B,EAAkBF,EACpDE,EAAkBF,EAAqBA,EAAqBC,EACpDC,EAEAD,EAEnBxwB,EAAYhQ,EAAOyL,YAAczL,EAAOiO,cAAgB,OAAS,YAEjEqyB,EAAiBtgC,EAAOkN,UACxB8C,EAAYswB,EAAiBtgC,EAAOiO,cAAgB,OAAS,OAE3DoyB,IACFC,GAAgC,SAAdtwB,EAAuByvB,GAAoB,EAAIA,GAIjEK,EAAa9zB,sBACb8zB,EAAa9zB,qBAAqB3X,QAAQisC,GAAkB,IAExDR,EAAav/B,OAAOyH,eAEpBs4B,EADEA,EAAiBC,EACFD,EAAiBp/B,KAAKiI,MAAMX,EAAgB,GAAK,EAEjD83B,EAAiBp/B,KAAKiI,MAAMX,EAAgB,GAAK,EAGpE83B,EAAiBC,GACjBT,EAAav/B,OAAO+I,eAItBw2B,EAAa5vB,QAAQowB,EAAgBnwB,EAAU,OAAI/X,KAlLzD4H,EAAOu/B,OAAS,CACdv/B,OAAQ,MAsLV9I,EAAG,cAAc,KACf,MAAMqoC,OAAEA,GAAWv/B,EAAOO,OACrBg/B,GAAWA,EAAOv/B,SACvB6b,IACA3W,GAAO,OAEThO,EAAG,4CAA4C,KAC7CgO,OAEFhO,EAAG,iBAAiB,CAACktB,EAAIptB,KACvB,MAAM8oC,EAAe9/B,EAAOu/B,OAAOv/B,OAC9B8/B,IAAgBA,EAAat7B,WAClCs7B,EAAaz0B,cAAcrU,MAE7BE,EAAG,iBAAiB,KAClB,MAAM4oC,EAAe9/B,EAAOu/B,OAAOv/B,OAC9B8/B,IAAgBA,EAAat7B,WAC9Bo7B,GACFE,EAAa3d,aAIjBzzB,OAAOkX,OAAO5F,EAAOu/B,OAAQ,CAC3B1jB,OACA3W,YC9NW,SAAwDnF,GAAA,IAAtCC,OAAEA,EAAFogB,aAAUA,EAAVnb,KAAwBA,EAAxBP,KAA8BA,GAAQ3E,EACrEqgB,EAAa,CACX1J,SAAU,CACR/P,SAAS,EACT+5B,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvBpU,QAAQ,EACRqU,gBAAiB,OAiNrBryC,OAAOkX,OAAO5F,EAAQ,CACpB0W,SAAU,CACRlD,aA/MJ,WACE,MAAMpT,EAAYJ,EAAOxC,eACzBwC,EAAO+O,aAAa3O,GACpBJ,EAAOqL,cAAc,GACrBrL,EAAOyT,gBAAgBoN,WAAW5xB,OAAS,EAC3C+Q,EAAO0W,SAASuB,WAAW,CAAEM,WAAYvY,EAAOuG,IAAMvG,EAAOI,WAAaJ,EAAOI,aA2M/EuW,YAxMJ,WACE,MAAQlD,gBAAiBha,EAAnBia,QAAyBA,GAAY1T,EAEZ,IAA3BvG,EAAKonB,WAAW5xB,QAClBwK,EAAKonB,WAAWltB,KAAK,CACnB84B,SAAU/Y,EAAQ1T,EAAOuF,eAAiB,SAAW,UACrDlF,KAAM5G,EAAKwc,iBAGfxc,EAAKonB,WAAWltB,KAAK,CACnB84B,SAAU/Y,EAAQ1T,EAAOuF,eAAiB,WAAa,YACvDlF,KAAM9C,OA8LN0a,WA1LJ,SAAoC0N,GAAA,IAAhBpN,WAAEA,GAAcoN,EAClC,MAAMplB,OAAEA,EAAF6F,WAAUA,EAAYE,aAAcC,EAApCS,SAAyCA,EAAUyM,gBAAiBha,GAASuG,EAG7EmY,EADe5a,IACW9D,EAAKwc,eAErC,GAAIsC,GAAcvY,EAAOmM,eACvBnM,EAAOkQ,QAAQlQ,EAAOyL,kBAGxB,GAAI8M,GAAcvY,EAAO2M,eACnB3M,EAAO6G,OAAO5X,OAAS+X,EAAS/X,OAClC+Q,EAAOkQ,QAAQlJ,EAAS/X,OAAS,GAEjC+Q,EAAOkQ,QAAQlQ,EAAO6G,OAAO5X,OAAS,OAJ1C,CASA,GAAIsR,EAAOmW,SAASgqB,SAAU,CAC5B,GAAIjnC,EAAKonB,WAAW5xB,OAAS,EAAG,CAC9B,MAAM+xC,EAAgBvnC,EAAKonB,WAAWogB,MAChCC,EAAgBznC,EAAKonB,WAAWogB,MAEhCE,EAAWH,EAAcvU,SAAWyU,EAAczU,SAClDpsB,EAAO2gC,EAAc3gC,KAAO6gC,EAAc7gC,KAChDL,EAAOwgB,SAAW2gB,EAAW9gC,EAC7BL,EAAOwgB,UAAY,EACftf,KAAKmI,IAAIrJ,EAAOwgB,UAAYjgB,EAAOmW,SAASqqB,kBAC9C/gC,EAAOwgB,SAAW,IAIhBngB,EAAO,KAAO9C,IAAQyjC,EAAc3gC,KAAO,OAC7CL,EAAOwgB,SAAW,QAGpBxgB,EAAOwgB,SAAW,EAEpBxgB,EAAOwgB,UAAYjgB,EAAOmW,SAASoqB,sBAEnCrnC,EAAKonB,WAAW5xB,OAAS,EACzB,IAAIuoC,EAAmB,IAAOj3B,EAAOmW,SAASiqB,cAC9C,MAAMS,EAAmBphC,EAAOwgB,SAAWgX,EAE3C,IAAI6J,EAAcrhC,EAAOI,UAAYghC,EACjC76B,IAAK86B,GAAeA,GAExB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5BtgC,KAAKmI,IAAIrJ,EAAOwgB,UAAiBjgB,EAAOmW,SAASmqB,oBACtE,IAAIY,EACJ,GAAIJ,EAAcrhC,EAAO2M,eACnBpM,EAAOmW,SAASkqB,gBACdS,EAAcrhC,EAAO2M,gBAAkB60B,IACzCH,EAAcrhC,EAAO2M,eAAiB60B,GAExCF,EAAsBthC,EAAO2M,eAC7B40B,GAAW,EACX9nC,EAAKge,qBAAsB,GAE3B4pB,EAAcrhC,EAAO2M,eAEnBpM,EAAOmN,MAAQnN,EAAOyH,iBAAgBy5B,GAAe,QACpD,GAAIJ,EAAcrhC,EAAOmM,eAC1B5L,EAAOmW,SAASkqB,gBACdS,EAAcrhC,EAAOmM,eAAiBq1B,IACxCH,EAAcrhC,EAAOmM,eAAiBq1B,GAExCF,EAAsBthC,EAAOmM,eAC7Bo1B,GAAW,EACX9nC,EAAKge,qBAAsB,GAE3B4pB,EAAcrhC,EAAOmM,eAEnB5L,EAAOmN,MAAQnN,EAAOyH,iBAAgBy5B,GAAe,QACpD,GAAIlhC,EAAOmW,SAASgW,OAAQ,CACjC,IAAI9e,EACJ,IAAK,IAAItV,EAAI,EAAGA,EAAI0O,EAAS/X,OAAQqJ,GAAK,EACxC,GAAI0O,EAAS1O,IAAM+oC,EAAa,CAC9BzzB,EAAYtV,EACZ,MASF+oC,EAJAngC,KAAKmI,IAAIrC,EAAS4G,GAAayzB,GAC7BngC,KAAKmI,IAAIrC,EAAS4G,EAAY,GAAKyzB,IACX,SAA1BrhC,EAAOkW,eAEOlP,EAAS4G,GAET5G,EAAS4G,EAAY,GAErCyzB,GAAeA,EAQjB,GANII,GACF/8B,EAAK,iBAAiB,KACpB1E,EAAO4R,aAIa,IAApB5R,EAAOwgB,UAMT,GAJEgX,EADEjxB,EACiBrF,KAAKmI,MAAMg4B,EAAcrhC,EAAOI,WAAaJ,EAAOwgB,UAEpDtf,KAAKmI,KAAKg4B,EAAcrhC,EAAOI,WAAaJ,EAAOwgB,UAEpEjgB,EAAOmW,SAASgW,OAAQ,CAQ1B,MAAMgV,EAAexgC,KAAKmI,KAAK9C,GAAO86B,EAAcA,GAAerhC,EAAOI,WACpEuhC,EAAmB3hC,EAAOkH,gBAAgBlH,EAAOyL,aAErD+rB,EADEkK,EAAeC,EACEphC,EAAOC,MACjBkhC,EAAe,EAAIC,EACM,IAAfphC,EAAOC,MAEQ,IAAfD,EAAOC,YAGzB,GAAID,EAAOmW,SAASgW,OAEzB,YADA1sB,EAAOwS,iBAILjS,EAAOmW,SAASkqB,gBAAkBW,GACpCvhC,EAAOwM,eAAe80B,GACtBthC,EAAOqL,cAAcmsB,GACrBx3B,EAAO+O,aAAasyB,GACpBrhC,EAAO6Q,iBAAgB,EAAM7Q,EAAOkW,gBACpClW,EAAOyP,WAAY,EACnBrJ,EAAW0K,eAAc,KAClB9Q,IAAUA,EAAOwE,WAAc/K,EAAKge,sBACzCxS,EAAK,kBACLjF,EAAOqL,cAAc9K,EAAOC,OAC5BvO,YAAW,KACT+N,EAAO+O,aAAauyB,GACpBl7B,EAAW0K,eAAc,KAClB9Q,IAAUA,EAAOwE,WACtBxE,EAAO8Q,qBAER,QAEI9Q,EAAOwgB,UAChBvb,EAAK,8BACLjF,EAAOwM,eAAe60B,GACtBrhC,EAAOqL,cAAcmsB,GACrBx3B,EAAO+O,aAAasyB,GACpBrhC,EAAO6Q,iBAAgB,EAAM7Q,EAAOkW,gBAC/BlW,EAAOyP,YACVzP,EAAOyP,WAAY,EACnBrJ,EAAW0K,eAAc,KAClB9Q,IAAUA,EAAOwE,WACtBxE,EAAO8Q,qBAIX9Q,EAAOwM,eAAe60B,GAGxBrhC,EAAO+N,oBACP/N,EAAOiN,0BACF,IAAI1M,EAAOmW,SAASgW,OAEzB,YADA1sB,EAAOwS,iBAEEjS,EAAOmW,UAChBzR,EAAK,gCAGF1E,EAAOmW,SAASgqB,UAAYvoB,GAAY5X,EAAOsY,gBAClD7Y,EAAOwM,iBACPxM,EAAO+N,oBACP/N,EAAOiN,6BCzNE,SAAwClN,GAAA,IAQjD6hC,EACAC,EACAC,GAVuB9hC,OAAEA,EAAFogB,aAAUA,GAAgBrgB,EACrDqgB,EAAa,CACXjY,KAAM,CACJC,KAAM,EACNoT,KAAM,YAwFVxb,EAAOmI,KAAO,CACZG,WAjFkBvB,IAClB,MAAMyB,cAAEA,GAAkBxI,EAAOO,QAC3B6H,KAAEA,EAAFoT,KAAQA,GAASxb,EAAOO,OAAO4H,KACrC05B,EAAeD,EAAyBx5B,EACxC05B,EAAiB5gC,KAAKiI,MAAMpC,EAAeqB,GAEzCw5B,EADE1gC,KAAKiI,MAAMpC,EAAeqB,KAAUrB,EAAeqB,EAC5BrB,EAEA7F,KAAKsK,KAAKzE,EAAeqB,GAAQA,EAEtC,SAAlBI,GAAqC,QAATgT,IAC9BomB,EAAyB1gC,KAAKC,IAAIygC,EAAwBp5B,EAAgBJ,KAuE5EO,YAnEkB,CAAClU,EAAGiU,EAAO3B,EAAchB,KAC3C,MAAMuD,eAAEA,EAAF7B,aAAkBA,GAAiBzH,EAAOO,QAC1C6H,KAAEA,EAAFoT,KAAQA,GAASxb,EAAOO,OAAO4H,KAErC,IAAI45B,EACAC,EACAC,EACJ,GAAa,QAATzmB,GAAkBlS,EAAiB,EAAG,CACxC,MAAM44B,EAAahhC,KAAKiI,MAAM1U,GAAK6U,EAAiBlB,IAC9C+5B,EAAoB1tC,EAAI2T,EAAOkB,EAAiB44B,EAChDE,EACW,IAAfF,EACI54B,EACApI,KAAKE,IACHF,KAAKsK,MAAMzE,EAAem7B,EAAa95B,EAAOkB,GAAkBlB,GAChEkB,GAER24B,EAAM/gC,KAAKiI,MAAMg5B,EAAoBC,GACrCJ,EAASG,EAAoBF,EAAMG,EAAiBF,EAAa54B,EAEjEy4B,EAAqBC,EAAUC,EAAML,EAA0Bx5B,EAC/DM,EAAM1N,IAAI,CACR,gBAAiB+mC,EACjBM,MAAON,QAES,WAATvmB,GACTwmB,EAAS9gC,KAAKiI,MAAM1U,EAAI2T,GACxB65B,EAAMxtC,EAAIutC,EAAS55B,GACf45B,EAASF,GAAmBE,IAAWF,GAAkBG,IAAQ75B,EAAO,KAC1E65B,GAAO,EACHA,GAAO75B,IACT65B,EAAM,EACND,GAAU,MAIdC,EAAM/gC,KAAKiI,MAAM1U,EAAIotC,GACrBG,EAASvtC,EAAIwtC,EAAMJ,GAErBn5B,EAAM1N,IACJ+K,EAAkB,cACV,IAARk8B,EAAYx6B,GAAiB,GAAEA,MAAmB,KA2BpDiC,kBAvBwB,CAACrB,EAAWrB,EAAUjB,KAC9C,MAAM0B,aAAEA,EAAFO,eAAgBA,EAAhBe,aAAgCA,GAAiB/I,EAAOO,QACxD6H,KAAEA,GAASpI,EAAOO,OAAO4H,KAM/B,GALAnI,EAAO4H,aAAeS,EAAYZ,GAAgBm6B,EAClD5hC,EAAO4H,YAAc1G,KAAKsK,KAAKxL,EAAO4H,YAAcQ,GAAQX,EAC5DzH,EAAOoG,WAAWpL,IAAI,CACpB,CAAC+K,EAAkB,UAAY,GAAE/F,EAAO4H,YAAcH,QAEpDO,EAAgB,CAClBhB,EAAS/N,OAAO,EAAG+N,EAAS/X,QAC5B,MAAM0a,EAAgB,GACtB,IAAK,IAAIlV,EAAI,EAAGA,EAAIuS,EAAS/X,OAAQwF,GAAK,EAAG,CAC3C,IAAImV,EAAiB5C,EAASvS,GAC1BsU,IAAca,EAAiB1I,KAAKiI,MAAMS,IAC1C5C,EAASvS,GAAKuL,EAAO4H,YAAcZ,EAAS,IAAI2C,EAAchW,KAAKiW,GAEzE5C,EAASrT,QAAQgW,OClFR,SAAkC5J,GAAA,IAAZC,OAAEA,GAAUD,EAC/CrR,OAAOkX,OAAO5F,EAAQ,CACpBijB,YAAaA,EAAYpI,KAAK7a,GAC9BmjB,aAAcA,EAAatI,KAAK7a,GAChCojB,SAAUA,EAASvI,KAAK7a,GACxByjB,YAAaA,EAAY5I,KAAK7a,GAC9B4jB,gBAAiBA,GAAgB/I,KAAK7a,MCR3B,SAAkDD,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC/DqgB,EAAa,CACXkiB,WAAY,CACVC,WAAW,EACX9d,YAAa,QAoCjBZ,GAAW,CACTra,OAAQ,OACRxJ,SACA9I,KACA6X,aApCmB,KACnB,MAAMlI,OAAEA,GAAW7G,EACbO,EAASP,EAAOO,OAAO+hC,WAC7B,IAAK,IAAI7tC,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAM+vB,EAAWxkB,EAAO6G,OAAOhL,GAAGpH,GAElC,IAAI+tC,GADWhe,EAAS,GAAG9Y,kBAEtB1L,EAAOO,OAAOsO,mBAAkB2zB,GAAMxiC,EAAOI,WAClD,IAAIqiC,EAAK,EACJziC,EAAOuF,iBACVk9B,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAe1iC,EAAOO,OAAO+hC,WAAWC,UAC1CrhC,KAAKC,IAAI,EAAID,KAAKmI,IAAImb,EAAS,GAAGvjB,UAAW,GAC7C,EAAIC,KAAKE,IAAIF,KAAKC,IAAIqjB,EAAS,GAAGvjB,UAAW,GAAI,GAEnCqjB,GAAa/jB,EAAQikB,GAEpCxpB,IAAI,CACH62B,QAAS6Q,IAEV3rC,UAAW,eAAcyrC,QAASC,eAevCp3B,cAZqBrU,IACrB,MAAMytB,YAAEA,GAAgBzkB,EAAOO,OAAO+hC,YACV7d,EAAczkB,EAAO6G,OAAO5J,KAAKwnB,GAAezkB,EAAO6G,QAC/DiW,WAAW9lB,GAC/B0tB,GAA2B,CAAE1kB,SAAQhJ,WAAUytB,cAAaE,WAAW,KASvEb,gBAAiB,MACftb,cAAe,EACfc,eAAgB,EAChBsB,qBAAqB,EACrBnD,aAAc,EACdoH,kBAAmB7O,EAAOO,OAAO0H,aCpDxB,SAAkDlI,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC/DqgB,EAAa,CACXuiB,WAAY,CACVte,cAAc,EACdue,QAAQ,EACRC,aAAc,GACdC,YAAa,OAIjB,MAAMC,EAAqB,CAACve,EAAUvjB,EAAUsE,KAC9C,IAAIy9B,EAAez9B,EACfif,EAASvnB,KAAK,6BACdunB,EAASvnB,KAAK,4BACdgmC,EAAc19B,EACdif,EAASvnB,KAAK,8BACdunB,EAASvnB,KAAK,+BACU,IAAxB+lC,EAAa/zC,SACf+zC,EAAehvC,EAAG,mCAAkCuR,EAAe,OAAS,iBAC5Eif,EAASzoB,OAAOinC,IAES,IAAvBC,EAAYh0C,SACdg0C,EAAcjvC,EACX,mCAAkCuR,EAAe,QAAU,oBAE9Dif,EAASzoB,OAAOknC,IAEdD,EAAa/zC,SAAQ+zC,EAAa,GAAG/yC,MAAM4hC,QAAU3wB,KAAKC,KAAKF,EAAU,IACzEgiC,EAAYh0C,SAAQg0C,EAAY,GAAGhzC,MAAM4hC,QAAU3wB,KAAKC,IAAIF,EAAU,KA+I5E4iB,GAAW,CACTra,OAAQ,OACRxJ,SACA9I,KACA6X,aAvImB,KACnB,MAAM3J,IACJA,EADIgB,WAEJA,EAFIS,OAGJA,EACA5D,MAAO2mB,EACPzmB,OAAQ0mB,EACRvjB,aAAcC,EACdV,KAAMQ,EAPFxE,QAQJA,GACE7B,EACEO,EAASP,EAAOO,OAAOoiC,WACvBp9B,EAAevF,EAAOuF,eACtBkB,EAAYzG,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QAC1D,IACIu8B,EADAC,EAAgB,EAEhB5iC,EAAOqiC,SACLr9B,GACF29B,EAAgB98B,EAAWnJ,KAAK,uBACH,IAAzBimC,EAAcj0C,SAChBi0C,EAAgBlvC,EAAE,0CAClBoS,EAAWrK,OAAOmnC,IAEpBA,EAAcloC,IAAI,CAAEmI,OAAS,GAAEymB,UAE/BsZ,EAAgB99B,EAAInI,KAAK,uBACI,IAAzBimC,EAAcj0C,SAChBi0C,EAAgBlvC,EAAE,0CAClBoR,EAAIrJ,OAAOmnC,MAIjB,IAAK,IAAIzuC,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAM+vB,EAAW3d,EAAOhL,GAAGpH,GAC3B,IAAIqV,EAAarV,EACbgS,IACFqD,EAAarE,SAAS+e,EAAS/tB,KAAK,2BAA4B,KAElE,IAAI2sC,EAA0B,GAAbt5B,EACbmzB,EAAQ/7B,KAAKiI,MAAMi6B,EAAa,KAChC78B,IACF68B,GAAcA,EACdnG,EAAQ/7B,KAAKiI,OAAOi6B,EAAa,MAEnC,MAAMniC,EAAWC,KAAKC,IAAID,KAAKE,IAAIojB,EAAS,GAAGvjB,SAAU,IAAK,GAC9D,IAAIuhC,EAAK,EACLC,EAAK,EACLY,EAAK,EACLv5B,EAAa,GAAM,GACrB04B,EAAc,GAARvF,EAAY52B,EAClBg9B,EAAK,IACKv5B,EAAa,GAAK,GAAM,GAClC04B,EAAK,EACLa,EAAc,GAARpG,EAAY52B,IACRyD,EAAa,GAAK,GAAM,GAClC04B,EAAKn8B,EAAqB,EAAR42B,EAAY52B,EAC9Bg9B,EAAKh9B,IACKyD,EAAa,GAAK,GAAM,IAClC04B,GAAMn8B,EACNg9B,EAAK,EAAIh9B,EAA0B,EAAbA,EAAiB42B,GAErC12B,IACFi8B,GAAMA,GAGHj9B,IACHk9B,EAAKD,EACLA,EAAK,GAGP,MAAMzrC,EAAa,WAAUwO,EAAe,GAAK69B,iBAC/C79B,EAAe69B,EAAa,qBACVZ,QAASC,QAASY,OAClCpiC,GAAY,GAAKA,GAAY,IAC/BkiC,EAA6B,GAAbr5B,EAA6B,GAAX7I,EAC9BsF,IAAK48B,EAA8B,IAAbr5B,EAA6B,GAAX7I,IAE9CujB,EAASztB,UAAUA,GACfwJ,EAAO8jB,cACT0e,EAAmBve,EAAUvjB,EAAUsE,GAQ3C,GALAa,EAAWpL,IAAI,CACb,2BAA6B,YAAWqL,EAAa,MACrD,mBAAqB,YAAWA,EAAa,QAG3C9F,EAAOqiC,OACT,GAAIr9B,EACF29B,EAAcnsC,UACX,oBAAmB6yB,EAAc,EAAIrpB,EAAOsiC,oBAC1CjZ,EAAc,2CACyBrpB,EAAOuiC,oBAE9C,CACL,MAAMQ,EAAcpiC,KAAKmI,IAAI85B,GAA4D,GAA3CjiC,KAAKiI,MAAMjI,KAAKmI,IAAI85B,GAAiB,IAC7E12B,EACJ,KACCvL,KAAKqiC,IAAmB,EAAdD,EAAkBpiC,KAAKK,GAAM,KAAO,EAC7CL,KAAKI,IAAmB,EAAdgiC,EAAkBpiC,KAAKK,GAAM,KAAO,GAC5CiiC,EAASjjC,EAAOuiC,YAChBW,EAASljC,EAAOuiC,YAAcr2B,EAC9BpS,EAASkG,EAAOsiC,aACtBK,EAAcnsC,UACX,WAAUysC,SAAcC,uBAA4B5Z,EAAe,EAAIxvB,SACrEwvB,EAAe,EAAI4Z,wBAK5B,MAAMC,EAAU7hC,EAAQgC,UAAYhC,EAAQkC,WAAasC,EAAa,EAAI,EAC1ED,EAAWrP,UACR,qBAAoB2sC,gBACnB1jC,EAAOuF,eAAiB,EAAI49B,iBACdnjC,EAAOuF,gBAAkB49B,EAAgB,SAE3D/8B,EAAW,GAAGnW,MAAM4P,YAAY,4BAA8B,GAAE6jC,QAoBhEr4B,cAlBqBrU,IACrB,MAAMoO,IAAEA,EAAFyB,OAAOA,GAAW7G,EACxB6G,EACGiW,WAAW9lB,GACXiG,KACC,gHAED6f,WAAW9lB,GACVgJ,EAAOO,OAAOoiC,WAAWC,SAAW5iC,EAAOuF,gBAC7CH,EAAInI,KAAK,uBAAuB6f,WAAW9lB,IAU7CgtB,gBAlJsB,KAEtB,MAAMze,EAAevF,EAAOuF,eAC5BvF,EAAO6G,OAAO1L,MAAM8lB,IAClB,MAAMhgB,EAAWC,KAAKC,IAAID,KAAKE,IAAI6f,EAAQhgB,SAAU,IAAK,GAC1D8hC,EAAmB/uC,EAAEitB,GAAUhgB,EAAUsE,OA8I3C0e,gBAAiB,IAAMjkB,EAAOO,OAAOoiC,WACrC5e,YAAa,KAAM,EACnBD,gBAAiB,MACftb,cAAe,EACfc,eAAgB,EAChBsB,qBAAqB,EACrBkN,gBAAiB,EACjBrQ,aAAc,EACdO,gBAAgB,EAChB6G,kBAAkB,OCxLT,SAAkD9O,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAC/DqgB,EAAa,CACXujB,WAAY,CACVtf,cAAc,EACduf,eAAe,EACfnf,YAAa,QAIjB,MAAMse,EAAqB,CAACve,EAAUvjB,EAAUV,KAC9C,IAAIyiC,EAAehjC,EAAOuF,eACtBif,EAASvnB,KAAK,6BACdunB,EAASvnB,KAAK,4BACdgmC,EAAcjjC,EAAOuF,eACrBif,EAASvnB,KAAK,8BACdunB,EAASvnB,KAAK,+BACU,IAAxB+lC,EAAa/zC,SACf+zC,EAAeje,GAAaxkB,EAAQikB,EAAUxkB,EAAOuF,eAAiB,OAAS,QAEtD,IAAvB09B,EAAYh0C,SACdg0C,EAAcle,GAAaxkB,EAAQikB,EAAUxkB,EAAOuF,eAAiB,QAAU,WAE7Ey9B,EAAa/zC,SAAQ+zC,EAAa,GAAG/yC,MAAM4hC,QAAU3wB,KAAKC,KAAKF,EAAU,IACzEgiC,EAAYh0C,SAAQg0C,EAAY,GAAGhzC,MAAM4hC,QAAU3wB,KAAKC,IAAIF,EAAU,KA+D5E4iB,GAAW,CACTra,OAAQ,OACRxJ,SACA9I,KACA6X,aAnDmB,KACnB,MAAMlI,OAAEA,EAAQP,aAAcC,GAAQvG,EAChCO,EAASP,EAAOO,OAAOojC,WAC7B,IAAK,IAAIlvC,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAM+vB,EAAW3d,EAAOhL,GAAGpH,GAC3B,IAAIwM,EAAWujB,EAAS,GAAGvjB,SACvBjB,EAAOO,OAAOojC,WAAWC,gBAC3B3iC,EAAWC,KAAKC,IAAID,KAAKE,IAAIojB,EAAS,GAAGvjB,SAAU,IAAK,IAE1D,MAAM5G,EAASmqB,EAAS,GAAG9Y,kBAE3B,IAAIm4B,GADY,IAAM5iC,EAElB6iC,EAAU,EACVtB,EAAKxiC,EAAOO,OAAO0H,SAAW5N,EAAS2F,EAAOI,WAAa/F,EAC3DooC,EAAK,EACJziC,EAAOuF,eAKDgB,IACTs9B,GAAWA,IALXpB,EAAKD,EACLA,EAAK,EACLsB,GAAWD,EACXA,EAAU,GAKZrf,EAAS,GAAGv0B,MAAM8zC,QAAU7iC,KAAKmI,IAAInI,KAAK+7B,MAAMh8B,IAAa4F,EAAO5X,OAEhEsR,EAAO8jB,cACT0e,EAAmBve,EAAUvjB,EAAUV,GAEzC,MAAMxJ,EAAa,eAAcyrC,QAASC,qBAAsBqB,iBAAuBD,QACrEvf,GAAa/jB,EAAQikB,GAC7BztB,UAAUA,KAqBtBsU,cAjBqBrU,IACrB,MAAMytB,YAAEA,GAAgBzkB,EAAOO,OAAOojC,YACVlf,EAAczkB,EAAO6G,OAAO5J,KAAKwnB,GAAezkB,EAAO6G,QAEhFiW,WAAW9lB,GACXiG,KACC,gHAED6f,WAAW9lB,GACd0tB,GAA2B,CAAE1kB,SAAQhJ,WAAUytB,iBAS/CT,gBAlEsB,KAEtB,MAAMzjB,EAASP,EAAOO,OAAOojC,WAC7B3jC,EAAO6G,OAAO1L,MAAM8lB,IAClB,MAAMuD,EAAWxwB,EAAEitB,GACnB,IAAIhgB,EAAWujB,EAAS,GAAGvjB,SACvBjB,EAAOO,OAAOojC,WAAWC,gBAC3B3iC,EAAWC,KAAKC,IAAID,KAAKE,IAAI6f,EAAQhgB,SAAU,IAAK,IAEtD8hC,EAAmBve,EAAUvjB,EAAUV,OA0DzC0jB,gBAAiB,IAAMjkB,EAAOO,OAAOojC,WACrC5f,YAAa,KAAM,EACnBD,gBAAiB,MACftb,cAAe,EACfc,eAAgB,EAChBsB,qBAAqB,EACrBnD,aAAc,EACdoH,kBAAmB7O,EAAOO,OAAO0H,aCtGxB,SAAuDlI,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EACpEqgB,EAAa,CACX4jB,gBAAiB,CACfC,OAAQ,GACRC,QAAS,EACTC,MAAO,IACPtT,MAAO,EACPuT,SAAU,EACV/f,cAAc,EACdI,YAAa,QAoFjBZ,GAAW,CACTra,OAAQ,YACRxJ,SACA9I,KACA6X,aApFmB,KACnB,MAAQ9L,MAAO2mB,EAAazmB,OAAQ0mB,EAA9BhjB,OAA4CA,EAA5CK,gBAAoDA,GAAoBlH,EACxEO,EAASP,EAAOO,OAAOyjC,gBACvBz+B,EAAevF,EAAOuF,eACtBxO,EAAYiJ,EAAOI,UACnBikC,EAAS9+B,EAA4BqkB,EAAc,EAA1B7yB,EAA2C8yB,EAAe,EAA3B9yB,EACxDktC,EAAS1+B,EAAehF,EAAO0jC,QAAU1jC,EAAO0jC,OAChD7jC,EAAYG,EAAO4jC,MAEzB,IAAK,IAAI1vC,EAAI,EAAGxF,EAAS4X,EAAO5X,OAAQwF,EAAIxF,EAAQwF,GAAK,EAAG,CAC1D,MAAM+vB,EAAW3d,EAAOhL,GAAGpH,GACrB4T,EAAYnB,EAAgBzS,GAE5B6vC,GAAgBD,EADF7f,EAAS,GAAG9Y,kBACarD,EAAY,GAAKA,EACxDk8B,EACuB,mBAApBhkC,EAAO6jC,SACV7jC,EAAO6jC,SAASE,GAChBA,EAAe/jC,EAAO6jC,SAE5B,IAAIP,EAAUt+B,EAAe0+B,EAASM,EAAmB,EACrDT,EAAUv+B,EAAe,EAAI0+B,EAASM,EAEtCC,GAAcpkC,EAAYc,KAAKmI,IAAIk7B,GAEnCL,EAAU3jC,EAAO2jC,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQ7vC,QAAQ,OACjD6vC,EAAWhqC,WAAWqG,EAAO2jC,SAAW,IAAO77B,GAEjD,IAAI4tB,EAAa1wB,EAAe,EAAI2+B,EAAUK,EAC1CvO,EAAazwB,EAAe2+B,EAAUK,EAAmB,EAEzD1T,EAAQ,GAAK,EAAItwB,EAAOswB,OAAS3vB,KAAKmI,IAAIk7B,GAG1CrjC,KAAKmI,IAAI2sB,GAAc,OAAOA,EAAa,GAC3C90B,KAAKmI,IAAI4sB,GAAc,OAAOA,EAAa,GAC3C/0B,KAAKmI,IAAIm7B,GAAc,OAAOA,EAAa,GAC3CtjC,KAAKmI,IAAIw6B,GAAW,OAAOA,EAAU,GACrC3iC,KAAKmI,IAAIy6B,GAAW,OAAOA,EAAU,GACrC5iC,KAAKmI,IAAIwnB,GAAS,OAAOA,EAAQ,GAErC,MAAM4T,EAAkB,eAAczO,OAAgBC,OAAgBuO,iBAA0BV,iBAAuBD,eAAqBhT,KAM5I,GALkBvM,GAAa/jB,EAAQikB,GAC7BztB,UAAU0tC,GAEpBjgB,EAAS,GAAGv0B,MAAM8zC,OAAmD,EAAzC7iC,KAAKmI,IAAInI,KAAK+7B,MAAMsH,IAE5ChkC,EAAO8jB,aAAc,CAEvB,IAAIqgB,EAAkBn/B,EAClBif,EAASvnB,KAAK,6BACdunB,EAASvnB,KAAK,4BACd0nC,EAAiBp/B,EACjBif,EAASvnB,KAAK,8BACdunB,EAASvnB,KAAK,+BACa,IAA3BynC,EAAgBz1C,SAClBy1C,EAAkB3f,GAAaxkB,EAAQikB,EAAUjf,EAAe,OAAS,QAE7C,IAA1Bo/B,EAAe11C,SACjB01C,EAAiB5f,GAAaxkB,EAAQikB,EAAUjf,EAAe,QAAU,WAEvEm/B,EAAgBz1C,SAClBy1C,EAAgB,GAAGz0C,MAAM4hC,QAAU0S,EAAmB,EAAIA,EAAmB,GAC3EI,EAAe11C,SACjB01C,EAAe,GAAG10C,MAAM4hC,SAAW0S,EAAmB,GAAKA,EAAmB,MAoBpFl5B,cAhBqBrU,IACrB,MAAMytB,YAAEA,GAAgBzkB,EAAOO,OAAOyjC,iBACVvf,EAAczkB,EAAO6G,OAAO5J,KAAKwnB,GAAezkB,EAAO6G,QAEhFiW,WAAW9lB,GACXiG,KACC,gHAED6f,WAAW9lB,IASd+sB,YAAa,KAAM,EACnBD,gBAAiB,MACflZ,qBAAqB,OCpGZ,SAAsD7K,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EACnEqgB,EAAa,CACXwkB,eAAgB,CACdngB,YAAa,KACbogB,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpBhhB,aAAa,EACbrnB,KAAM,CACJ0D,UAAW,CAAC,EAAG,EAAG,GAClB6jC,OAAQ,CAAC,EAAG,EAAG,GACfpS,QAAS,EACThB,MAAO,GAETv0B,KAAM,CACJ8D,UAAW,CAAC,EAAG,EAAG,GAClB6jC,OAAQ,CAAC,EAAG,EAAG,GACfpS,QAAS,EACThB,MAAO,MAKb,MAAMmU,EAAqB5xC,GACJ,iBAAVA,EAA2BA,EAC9B,GAAEA,MA2GZywB,GAAW,CACTra,OAAQ,WACRxJ,SACA9I,KACA6X,aA5GmB,KACnB,MAAMlI,OAAEA,EAAFT,WAAUA,EAAVc,gBAAsBA,GAAoBlH,EAC1CO,EAASP,EAAOO,OAAOqkC,gBACrBG,mBAAoBt4B,GAAelM,EAErC0kC,EAAmBjlC,EAAOO,OAAOyH,eAEvC,GAAIi9B,EAAkB,CACpB,MAAMC,EAASh+B,EAAgB,GAAK,EAAIlH,EAAOO,OAAO6G,oBAAsB,EAC5EhB,EAAWrP,UAAW,yBAAwBmuC,SAGhD,IAAK,IAAIzwC,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAM+vB,EAAW3d,EAAOhL,GAAGpH,GACrByX,EAAgBsY,EAAS,GAAGvjB,SAC5BA,EAAWC,KAAKE,IACpBF,KAAKC,IAAIqjB,EAAS,GAAGvjB,UAAWV,EAAOskC,eACvCtkC,EAAOskC,eAET,IAAIt4B,EAAmBtL,EAElBgkC,IACH14B,EAAmBrL,KAAKE,IACtBF,KAAKC,IAAIqjB,EAAS,GAAGjY,kBAAmBhM,EAAOskC,eAC/CtkC,EAAOskC,gBAIX,MAAMxqC,EAASmqB,EAAS,GAAG9Y,kBACrBqF,EAAI,CAAC/Q,EAAOO,OAAO0H,SAAW5N,EAAS2F,EAAOI,WAAa/F,EAAQ,EAAG,GACtE8qC,EAAI,CAAC,EAAG,EAAG,GACjB,IAAIC,GAAS,EACRplC,EAAOuF,iBACVwL,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAItX,EAAO,CACT2G,UAAW,CAAC,EAAG,EAAG,GAClB6jC,OAAQ,CAAC,EAAG,EAAG,GACfpT,MAAO,EACPgB,QAAS,GAEP5wB,EAAW,GACbxH,EAAO8G,EAAOjE,KACd8oC,GAAS,GACAnkC,EAAW,IACpBxH,EAAO8G,EAAO7D,KACd0oC,GAAS,GAGXr0B,EAAEhiB,SAAQ,CAACqE,EAAOgI,KAChB2V,EAAE3V,GAAU,QAAOhI,UAAc4xC,EAAkBvrC,EAAK2G,UAAUhF,SAAa8F,KAAKmI,IAClFpI,EAAWwL,UAIf04B,EAAEp2C,SAAQ,CAACqE,EAAOgI,KAChB+pC,EAAE/pC,GAAS3B,EAAKwqC,OAAO7oC,GAAS8F,KAAKmI,IAAIpI,EAAWwL,MAGtD+X,EAAS,GAAGv0B,MAAM8zC,QAAU7iC,KAAKmI,IAAInI,KAAK+7B,MAAM/wB,IAAkBrF,EAAO5X,OAEzE,MAAMo2C,EAAkBt0B,EAAE7S,KAAK,MACzBonC,EAAgB,WAAUH,EAAE,kBAAkBA,EAAE,kBAAkBA,EAAE,SACpEI,EACJh5B,EAAmB,EACd,SAAQ,GAAK,EAAI9S,EAAKo3B,OAAStkB,EAAmBE,KAClD,SAAQ,GAAK,EAAIhT,EAAKo3B,OAAStkB,EAAmBE,KACnD+4B,EACJj5B,EAAmB,EACf,GAAK,EAAI9S,EAAKo4B,SAAWtlB,EAAmBE,EAC5C,GAAK,EAAIhT,EAAKo4B,SAAWtlB,EAAmBE,EAC5C1V,EAAa,eAAcsuC,MAAoBC,KAAgBC,IAGrE,GAAKH,GAAU3rC,EAAKmpC,SAAYwC,EAAQ,CACtC,IAAIlgB,EAAYV,EAASz0B,SAAS,wBAIlC,GAHyB,IAArBm1B,EAAUj2B,QAAgBwK,EAAKmpC,SACjC1d,EAAYH,GAAaxkB,EAAQikB,IAE/BU,EAAUj2B,OAAQ,CACpB,MAAMw2C,EAAgBllC,EAAOukC,kBACzB7jC,GAAY,EAAIV,EAAOskC,eACvB5jC,EACJikB,EAAU,GAAGj1B,MAAM4hC,QAAU3wB,KAAKE,IAAIF,KAAKC,IAAID,KAAKmI,IAAIo8B,GAAgB,GAAI,IAIhF,MAAM7xB,EAAY0Q,GAAa/jB,EAAQikB,GACvC5Q,EAAU7c,UAAUA,GAAWiE,IAAI,CAAE62B,QAAS2T,IAC1C/rC,EAAK9I,QACPijB,EAAU5Y,IAAI,mBAAoBvB,EAAK9I,UAkB3C0a,cAbqBrU,IACrB,MAAMytB,YAAEA,GAAgBzkB,EAAOO,OAAOqkC,gBACVngB,EAAczkB,EAAO6G,OAAO5J,KAAKwnB,GAAezkB,EAAO6G,QAC/DiW,WAAW9lB,GAAUiG,KAAK,wBAAwB6f,WAAW9lB,GAEjF0tB,GAA2B,CAAE1kB,SAAQhJ,WAAUytB,cAAaE,WAAW,KASvEZ,YAAa,IAAM/jB,EAAOO,OAAOqkC,eAAe7gB,YAChDD,gBAAiB,MACflZ,qBAAqB,EACrBiE,kBAAmB7O,EAAOO,OAAO0H,aC7IxB,SAAmDlI,GAAA,IAA9BC,OAAEA,EAAFogB,aAAUA,EAAVlpB,GAAwBA,GAAM6I,EAChEqgB,EAAa,CACXslB,YAAa,CACXrhB,cAAc,EACdI,YAAa,KACbwf,QAAQ,KAoGZpgB,GAAW,CACTra,OAAQ,QACRxJ,SACA9I,KACA6X,aApGmB,KACnB,MAAMlI,OAAEA,EAAF4E,YAAUA,GAAgBzL,EAC1BO,EAASP,EAAOO,OAAOmlC,aACvBluB,eAAEA,EAAFtD,UAAkBA,GAAclU,EAAOyT,gBACvC3E,EAAmB9O,EAAOI,UAChC,IAAK,IAAI3L,EAAI,EAAGA,EAAIoS,EAAO5X,OAAQwF,GAAK,EAAG,CACzC,MAAM+vB,EAAW3d,EAAOhL,GAAGpH,GACrByX,EAAgBsY,EAAS,GAAGvjB,SAC5BA,EAAWC,KAAKE,IAAIF,KAAKC,IAAI+K,GAAgB,GAAI,GACvD,IAAI7R,EAASmqB,EAAS,GAAG9Y,kBACrB1L,EAAOO,OAAOyH,iBAAmBhI,EAAOO,OAAO0H,SACjDjI,EAAOoG,WAAWrP,UAAW,cAAaiJ,EAAOmM,qBAE/CnM,EAAOO,OAAOyH,gBAAkBhI,EAAOO,OAAO0H,UAChD5N,GAAUwM,EAAO,GAAG6E,mBAEtB,IAAIi6B,EAAK3lC,EAAOO,OAAO0H,SAAW5N,EAAS2F,EAAOI,WAAa/F,EAC3DurC,EAAK,EACT,MAAMC,GAAM,IAAM3kC,KAAKmI,IAAIpI,GAC3B,IAAI4vB,EAAQ,EACRoT,GAAU,EAAIhjC,EAEd6kC,EAAQ,EAAyB,IAArB5kC,KAAKmI,IAAIpI,GAEzB,MAAM6I,EACJ9J,EAAO0G,SAAW1G,EAAOO,OAAOmG,QAAQC,QAAU3G,EAAO0G,QAAQ2gB,KAAO5yB,EAAIA,EAExEsxC,GACHj8B,IAAe2B,GAAe3B,IAAe2B,EAAc,IAC5DxK,EAAW,GACXA,EAAW,IACViT,GAAalU,EAAOO,OAAO0H,UAC5B6G,EAAmB0I,EACfwuB,GACHl8B,IAAe2B,GAAe3B,IAAe2B,EAAc,IAC5DxK,EAAW,GACXA,GAAY,IACXiT,GAAalU,EAAOO,OAAO0H,UAC5B6G,EAAmB0I,EAErB,GAAIuuB,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAI/kC,KAAKmI,KAAKnI,KAAKmI,IAAIpI,GAAY,IAAO,MAAS,GACxEgjC,IAAW,GAAKhjC,EAAWglC,EAC3BpV,IAAU,GAAMoV,EAChBH,GAAS,GAAKG,EACdL,GAAS,GAAKK,EAAc/kC,KAAKmI,IAAIpI,GAA/B,IAYR,GAPE0kC,EAFE1kC,EAAW,EAEP,QAAO0kC,UAAWG,EAAQ5kC,KAAKmI,IAAIpI,QAChCA,EAAW,EAEd,QAAO0kC,WAAYG,EAAQ5kC,KAAKmI,IAAIpI,QAEpC,GAAE0kC,OAEL3lC,EAAOuF,eAAgB,CAC1B,MAAM2gC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,EAGP,MAAMX,EACJtkC,EAAW,EAAK,IAAE,GAAK,EAAI4vB,GAAS5vB,GAAc,IAAE,GAAK,EAAI4vB,GAAS5vB,GAElElK,EAAa,yBACH4uC,MAAOC,MAAOC,yBAClBtlC,EAAO0jC,OAASA,EAAS,wBAC3BsB,aAGV,GAAIhlC,EAAO8jB,aAAc,CAEvB,IAAIa,EAAYV,EAASvnB,KAAK,wBACL,IAArBioB,EAAUj2B,SACZi2B,EAAYH,GAAaxkB,EAAQikB,IAE/BU,EAAUj2B,SACZi2B,EAAU,GAAGj1B,MAAM4hC,QAAU3wB,KAAKE,IAAIF,KAAKC,KAAKD,KAAKmI,IAAIpI,GAAY,IAAO,GAAK,GAAI,IAGzFujB,EAAS,GAAGv0B,MAAM8zC,QAAU7iC,KAAKmI,IAAInI,KAAK+7B,MAAM/wB,IAAkBrF,EAAO5X,OACvDq1B,GAAa/jB,EAAQikB,GAC7BztB,UAAUA,KAiBtBsU,cAbqBrU,IACrB,MAAMytB,YAAEA,GAAgBzkB,EAAOO,OAAOmlC,aACVjhB,EAAczkB,EAAO6G,OAAO5J,KAAKwnB,GAAezkB,EAAO6G,QAC/DiW,WAAW9lB,GAAUiG,KAAK,wBAAwB6f,WAAW9lB,GAEjF0tB,GAA2B,CAAE1kB,SAAQhJ,WAAUytB,iBAS/CV,YAAa,KAAM,EACnBD,gBAAiB,MACflZ,qBAAqB,EACrBiE,kBAAmB7O,EAAOO,OAAO0H,c,OxB9GvC6X,EAAOuF,IAAIpF,I"} \ No newline at end of file diff --git a/swiper/swiper-vars.less b/swiper/swiper-vars.less new file mode 100644 index 0000000..a068f6d --- /dev/null +++ b/swiper/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/swiper/swiper-vars.scss b/swiper/swiper-vars.scss new file mode 100644 index 0000000..819dec4 --- /dev/null +++ b/swiper/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/swiper/swiper.d.ts b/swiper/swiper.d.ts new file mode 100644 index 0000000..1dd69a5 --- /dev/null +++ b/swiper/swiper.d.ts @@ -0,0 +1,58 @@ +import Swiper from './types/swiper-class'; +import { SwiperOptions } from './types/swiper-options'; +import { SwiperModule } from './types/shared'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export default Swiper; +export { + Swiper, + SwiperOptions, + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/swiper/swiper.esm.js b/swiper/swiper.esm.js new file mode 100644 index 0000000..301be05 --- /dev/null +++ b/swiper/swiper.esm.js @@ -0,0 +1,37 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +export { default as Swiper, default } from './core/core.js'; +export { default as Virtual } from './modules/virtual/virtual.js'; +export { default as Keyboard } from './modules/keyboard/keyboard.js'; +export { default as Mousewheel } from './modules/mousewheel/mousewheel.js'; +export { default as Navigation } from './modules/navigation/navigation.js'; +export { default as Pagination } from './modules/pagination/pagination.js'; +export { default as Scrollbar } from './modules/scrollbar/scrollbar.js'; +export { default as Parallax } from './modules/parallax/parallax.js'; +export { default as Zoom } from './modules/zoom/zoom.js'; +export { default as Lazy } from './modules/lazy/lazy.js'; +export { default as Controller } from './modules/controller/controller.js'; +export { default as A11y } from './modules/a11y/a11y.js'; +export { default as History } from './modules/history/history.js'; +export { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js'; +export { default as Autoplay } from './modules/autoplay/autoplay.js'; +export { default as Thumbs } from './modules/thumbs/thumbs.js'; +export { default as FreeMode } from './modules/free-mode/free-mode.js'; +export { default as Grid } from './modules/grid/grid.js'; +export { default as Manipulation } from './modules/manipulation/manipulation.js'; +export { default as EffectFade } from './modules/effect-fade/effect-fade.js'; +export { default as EffectCube } from './modules/effect-cube/effect-cube.js'; +export { default as EffectFlip } from './modules/effect-flip/effect-flip.js'; +export { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js'; +export { default as EffectCreative } from './modules/effect-creative/effect-creative.js'; +export { default as EffectCards } from './modules/effect-cards/effect-cards.js'; \ No newline at end of file diff --git a/swiper/swiper.less b/swiper/swiper.less new file mode 100644 index 0000000..f85f83e --- /dev/null +++ b/swiper/swiper.less @@ -0,0 +1,184 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@themeColor: #007aff; + +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} + +:root { + --swiper-theme-color: @themeColor; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} + +.swiper-pointer-events { + touch-action: pan-y; + &.swiper-vertical { + touch-action: pan-x; + } +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d { + &, + &.swiper-css-mode .swiper-wrapper { + perspective: 1200px; + } + .swiper-wrapper, + .swiper-slide, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-horizontal.swiper-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-vertical.swiper-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} +.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + &.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } + + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + } +} + + + diff --git a/swiper/swiper.min.css b/swiper/swiper.min.css new file mode 100644 index 0000000..e2a37ab --- /dev/null +++ b/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center} \ No newline at end of file diff --git a/swiper/swiper.scss b/swiper/swiper.scss new file mode 100644 index 0000000..1eb456d --- /dev/null +++ b/swiper/swiper.scss @@ -0,0 +1,187 @@ +/** + * Swiper 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + } +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-pointer-events { + touch-action: pan-y; + &.swiper-vertical { + touch-action: pan-x; + } +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight { + &, + .swiper-slide { + height: auto; + } + + .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; + } +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d { + &, + &.swiper-css-mode .swiper-wrapper { + perspective: 1200px; + } + .swiper-wrapper, + .swiper-slide, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-cube-shadow { + transform-style: preserve-3d; + } + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } +} +.swiper-horizontal.swiper-css-mode { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } +} +.swiper-vertical.swiper-css-mode { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } +} +.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + &.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + height: var(--swiper-centered-offset-after); + } + } + + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + } +} + + + diff --git a/swiper/types/index.d.ts b/swiper/types/index.d.ts new file mode 100644 index 0000000..ee0ced8 --- /dev/null +++ b/swiper/types/index.d.ts @@ -0,0 +1,5 @@ +export * from './shared'; +export { default as Swiper } from './swiper-class'; +export * from './swiper-events'; +export * from './swiper-options'; +export * from './modules/public-api'; diff --git a/swiper/types/modules/a11y.d.ts b/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000..134f158 --- /dev/null +++ b/swiper/types/modules/a11y.d.ts @@ -0,0 +1,96 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; +} diff --git a/swiper/types/modules/autoplay.d.ts b/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000..40d2503 --- /dev/null +++ b/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,109 @@ +import Swiper from '../swiper-class'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause (on mouse/pointer enter), when `pauseOnMouseEnter` enabled + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume (on mouse/pointer leave), when `pauseOnMouseEnter` enabled + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on mouse enter over Swiper container. If `disableOnInteraction` is also enabled, it will stop autoplay instead of pause + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/swiper/types/modules/controller.d.ts b/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000..74b99c8 --- /dev/null +++ b/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import Swiper from '../swiper-class'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/swiper/types/modules/effect-cards.d.ts b/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..ec96e16 --- /dev/null +++ b/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,26 @@ +import { CSSSelector } from '../shared'; + +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + /** + * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode + * + * @default null + */ + transformEl?: CSSSelector; +} diff --git a/swiper/types/modules/effect-coverflow.d.ts b/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..e95dde7 --- /dev/null +++ b/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,50 @@ +import { CSSSelector } from '../shared'; + +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; + /** + * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode + * + * @default null + */ + transformEl?: CSSSelector; +} diff --git a/swiper/types/modules/effect-creative.d.ts b/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..5ae48ce --- /dev/null +++ b/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,93 @@ +import { CSSSelector } from '../shared'; + +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + /** + * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode + * + * @default null + */ + transformEl?: CSSSelector; + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/swiper/types/modules/effect-cube.d.ts b/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/swiper/types/modules/effect-fade.d.ts b/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..8478d4b --- /dev/null +++ b/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,20 @@ +import { CSSSelector } from '../shared'; + +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; + /** + * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode + * + * @default null + */ + transformEl?: CSSSelector; +} diff --git a/swiper/types/modules/effect-flip.d.ts b/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..f3de1e6 --- /dev/null +++ b/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,26 @@ +import { CSSSelector } from '../shared'; + +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; + /** + * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode + * + * @default null + */ + transformEl?: CSSSelector; +} diff --git a/swiper/types/modules/free-mode.d.ts b/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/swiper/types/modules/grid.d.ts b/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000..a7626c8 --- /dev/null +++ b/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @note `rows` > 1 is currently not compatible with loop mode (`loop: true`) + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/swiper/types/modules/hash-navigation.d.ts b/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..ac490cf --- /dev/null +++ b/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,32 @@ +import Swiper from '../swiper-class'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; +} diff --git a/swiper/types/modules/history.d.ts b/swiper/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/swiper/types/modules/keyboard.d.ts b/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000..1e9a312 --- /dev/null +++ b/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import Swiper from '../swiper-class'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/swiper/types/modules/lazy.d.ts b/swiper/types/modules/lazy.d.ts new file mode 100644 index 0000000..f763686 --- /dev/null +++ b/swiper/types/modules/lazy.d.ts @@ -0,0 +1,88 @@ +import { Dom7Array } from 'dom7'; +import { CSSSelector } from '../shared'; +import Swiper from '../swiper-class'; + +export interface LazyMethods { + /** + * Load/update lazy images based on current slider state (position) + */ + load(): void; + + /** + * Force to load lazy images in slide by specified index + * @param number index number of slide to load lazy images in + */ + loadInSlide(index: number): void; +} + +export interface LazyEvents { + /** + * Event will be fired in the beginning of lazy loading of image + */ + lazyImageLoad: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; + /** + * Event will be fired when lazy loading image will be loaded + */ + lazyImageReady: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; +} + +export interface LazyOptions { + /** + * Whether the lazy loading images is enabled + * + * @default false + */ + enabled?: boolean; + /** + * Enables to check is the Swiper in view before lazy loading images on initial slides + * + * @default false + */ + checkInView?: boolean; + /** + * Element to check scrolling on for `checkInView`. Defaults to `window` + */ + scrollingElement?: CSSSelector | null | Dom7Array | HTMLElement; + /** + * Set to `true` to enable lazy loading for the closest slides images (for previous and next slide images) + * + * @default false + */ + loadPrevNext?: boolean; + /** + * Amount of next/prev slides to preload lazy images in. Can't be less than `slidesPerView` + * + * @default 1 + */ + loadPrevNextAmount?: number; + /** + * By default, Swiper will load lazy images after transition to this slide, so you may enable this parameter if you need it to start loading of new image in the beginning of transition + * + * @default false + */ + loadOnTransitionStart?: boolean; + /** + * CSS class name of lazy element + * + * @default 'swiper-lazy' + */ + elementClass?: string; + /** + * CSS class name of lazy loading element + * + * @default 'swiper-lazy-loading' + */ + loadingClass?: string; + /** + * CSS class name of lazy loaded element + * + * @default 'swiper-lazy-loaded' + */ + loadedClass?: string; + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + preloaderClass?: string; +} diff --git a/swiper/types/modules/manipulation.d.ts b/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/swiper/types/modules/mousewheel.d.ts b/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..43c9809 --- /dev/null +++ b/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,75 @@ +import Swiper from '../swiper-class'; +import { CSSSelector } from '../shared'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; +} diff --git a/swiper/types/modules/navigation.d.ts b/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000..679984a --- /dev/null +++ b/swiper/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import { CSSSelector } from '../shared'; +import Swiper from '../swiper-class'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/swiper/types/modules/pagination.d.ts b/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000..c605673 --- /dev/null +++ b/swiper/types/modules/pagination.d.ts @@ -0,0 +1,296 @@ +import { Dom7Array } from 'dom7'; +import { CSSSelector } from '../shared'; +import Swiper from '../swiper-class'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Dom7 array-like collection of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: Dom7Array; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => void; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => void; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => void; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => void; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/swiper/types/modules/parallax.d.ts b/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/swiper/types/modules/public-api.d.ts b/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000..316772c --- /dev/null +++ b/swiper/types/modules/public-api.d.ts @@ -0,0 +1,24 @@ +export * from './a11y'; +export * from './autoplay'; +export * from './controller'; +export * from './effect-coverflow'; +export * from './effect-cube'; +export * from './effect-fade'; +export * from './effect-flip'; +export * from './effect-creative'; +export * from './effect-cards'; +export * from './hash-navigation'; +export * from './history'; +export * from './keyboard'; +export * from './lazy'; +export * from './mousewheel'; +export * from './navigation'; +export * from './pagination'; +export * from './parallax'; +export * from './scrollbar'; +export * from './thumbs'; +export * from './virtual'; +export * from './zoom'; +export * from './free-mode'; +export * from './grid'; +export * from './manipulation'; diff --git a/swiper/types/modules/scrollbar.d.ts b/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..63a9e3c --- /dev/null +++ b/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import { CSSSelector } from '../shared'; +import Swiper from '../swiper-class'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/swiper/types/modules/thumbs.d.ts b/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000..98fa98b --- /dev/null +++ b/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import Swiper from '../swiper-class'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/swiper/types/modules/virtual.d.ts b/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000..9c8404d --- /dev/null +++ b/swiper/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: any[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React, Svelte, Vue & Angular it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React, Svelte, Vue & Angular it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React, Svelte, Vue & Angular it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React, Svelte, Vue & Angular it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: any[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: any[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outter HTML of the swiper slide. + * + * @default null + */ + renderSlide?: (slide: any, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/swiper/types/modules/zoom.d.ts b/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000..40ebfaa --- /dev/null +++ b/swiper/types/modules/zoom.d.ts @@ -0,0 +1,79 @@ +import Swiper from '../swiper-class'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide + */ + in(): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/swiper/types/shared.d.ts b/swiper/types/shared.d.ts new file mode 100644 index 0000000..4c28f96 --- /dev/null +++ b/swiper/types/shared.d.ts @@ -0,0 +1,5 @@ +export interface CSSSelector extends String {} + +export interface SwiperModule { + name: string; +} diff --git a/swiper/types/swiper-class.d.ts b/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000..df6b6c8 --- /dev/null +++ b/swiper/types/swiper-class.d.ts @@ -0,0 +1,489 @@ +import { Dom7Array } from 'dom7'; +import { SwiperOptions } from './swiper-options'; +import { CSSSelector, SwiperModule } from './shared'; +import { SwiperEvents } from './swiper-events'; + +import { A11yMethods } from './modules/a11y'; +import { AutoplayMethods } from './modules/autoplay'; +import { ControllerMethods } from './modules/controller'; +import { CoverflowEffectMethods } from './modules/effect-coverflow'; +import { CubeEffectMethods } from './modules/effect-cube'; +import { FadeEffectMethods } from './modules/effect-fade'; +import { FlipEffectMethods } from './modules/effect-flip'; +import { CreativeEffectMethods } from './modules/effect-creative'; +import { CardsEffectMethods } from './modules/effect-cards'; +import { HashNavigationMethods } from './modules/hash-navigation'; +import { HistoryMethods } from './modules/history'; +import { KeyboardMethods } from './modules/keyboard'; +import { LazyMethods } from './modules/lazy'; +import { MousewheelMethods } from './modules/mousewheel'; +import { NavigationMethods } from './modules/navigation'; +import { PaginationMethods } from './modules/pagination'; +import { ParallaxMethods } from './modules/parallax'; +import { ScrollbarMethods } from './modules/scrollbar'; +import { ThumbsMethods } from './modules/thumbs'; +import { VirtualMethods } from './modules/virtual'; +import { ZoomMethods } from './modules/zoom'; +import { FreeModeMethods } from './modules/free-mode'; +import { ManipulationMethods } from './modules/manipulation'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Dom7 element with slider container HTML element. To get vanilla HTMLElement use `swiper.el` + */ + $el: Dom7Array; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Dom7 element with slider wrapper HTML element. To get vanilla HTMLElement use `swiper.wrapperEl` + */ + $wrapperEl: Dom7Array; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Dom7 array-like collection of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: Dom7Array; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped/duplicated slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering duplicated slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): void; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + lazy: LazyMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/swiper/types/swiper-events.d.ts b/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000..54bba29 --- /dev/null +++ b/swiper/types/swiper-events.d.ts @@ -0,0 +1,362 @@ +import { SwiperOptions } from './swiper-options'; +import Swiper from './swiper-class'; + +import { A11yEvents } from './modules/a11y'; +import { AutoplayEvents } from './modules/autoplay'; +import { ControllerEvents } from './modules/controller'; +import { CoverflowEffectEvents } from './modules/effect-coverflow'; +import { CubeEffectEvents } from './modules/effect-cube'; +import { FadeEffectEvents } from './modules/effect-fade'; +import { FlipEffectEvents } from './modules/effect-flip'; +import { CreativeEffectEvents } from './modules/effect-creative'; +import { CardsEffectEvents } from './modules/effect-cards'; +import { HashNavigationEvents } from './modules/hash-navigation'; +import { HistoryEvents } from './modules/history'; +import { KeyboardEvents } from './modules/keyboard'; +import { LazyEvents } from './modules/lazy'; +import { MousewheelEvents } from './modules/mousewheel'; +import { NavigationEvents } from './modules/navigation'; +import { PaginationEvents } from './modules/pagination'; +import { ParallaxEvents } from './modules/parallax'; +import { ScrollbarEvents } from './modules/scrollbar'; +import { ThumbsEvents } from './modules/thumbs'; +import { VirtualEvents } from './modules/virtual'; +import { ZoomEvents } from './modules/zoom'; +import { FreeModeEvents } from './modules/free-mode'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled + */ + imagesReady: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends LazyEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/swiper/types/swiper-options.d.ts b/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000..25d8682 --- /dev/null +++ b/swiper/types/swiper-options.d.ts @@ -0,0 +1,1223 @@ +import { A11yOptions } from './modules/a11y'; +import { AutoplayOptions } from './modules/autoplay'; +import { ControllerOptions } from './modules/controller'; +import { CoverflowEffectOptions } from './modules/effect-coverflow'; +import { CubeEffectOptions } from './modules/effect-cube'; +import { FadeEffectOptions } from './modules/effect-fade'; +import { FlipEffectOptions } from './modules/effect-flip'; +import { CreativeEffectOptions } from './modules/effect-creative'; +import { CardsEffectOptions } from './modules/effect-cards'; +import { HashNavigationOptions } from './modules/hash-navigation'; +import { HistoryOptions } from './modules/history'; +import { KeyboardOptions } from './modules/keyboard'; +import { LazyOptions } from './modules/lazy'; +import { MousewheelOptions } from './modules/mousewheel'; +import { NavigationOptions } from './modules/navigation'; +import { PaginationOptions } from './modules/pagination'; +import { ParallaxOptions } from './modules/parallax'; +import { ScrollbarOptions } from './modules/scrollbar'; +import { ThumbsOptions } from './modules/thumbs'; +import { VirtualOptions } from './modules/virtual'; +import { ZoomOptions } from './modules/zoom'; +import { FreeModeOptions } from './modules/free-mode'; +import { GridOptions } from './modules/grid'; + +import { CSSSelector, SwiperModule } from './shared'; +import { SwiperEvents } from './swiper-events'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper, { Navigation, Pagination } from 'swiper'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'` or `'creative'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards'; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube and Cards effects + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * - `freeMode` and all relevant features + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note If you use it with "auto" value and along with `loop: true` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate) + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 0 + */ + threshold?: number; + + /** + * If disabled, `touchstart` (`pointerdown`) event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + // Images + /** + * When enabled Swiper will force to load all images + * + * @default true + */ + preloadImages?: boolean; + + /** + * When enabled Swiper will be reinitialized after all inner images ( tags) are loaded. Required `preloadImages: true` + * + * @default true + */ + updateOnImagesReady?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works, it will add duplicated slides. Such duplicated slides will have additional classes: + * - `swiper-slide-duplicate` - represents duplicated slide + * - `swiper-slide-duplicate-active` - represents slide duplicated to the currently active slide + * - `swiper-slide-duplicate-next` - represents slide duplicated to the slide next to active + * - `swiper-slide-duplicate-prev` - represents slide duplicated to the slide previous to active + * + * @default false + * + * @note If you use it along with `slidesPerView: 'auto'` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate). Should not be used together with `rewind` mode + */ + loop?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Addition number of slides that will be cloned after creating of loop + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If you use `slidesPerView:'auto'` with loop mode you should tell to Swiper how many slides it should loop (duplicate) using this parameter + * + * @default null + */ + loopedSlides?: number | null; + + /** + * Enable and loop mode will fill groups with insufficient number of slides with blank slides. Good to be used with `slidesPerGroup` parameter + * + * @default false + */ + loopFillGroupWithBlank?: boolean; + /** + * When enabled it prevents Swiper slide prev/next transitions when transitions is already in progress (has effect when `loop` enabled) + * + * @default true + */ + loopPreventsSlide?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which are not required different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + * + * @note Currently in beta and not supported by Swiper Angular, React, Svelte and Vue components + */ + breakpointsBase?: string; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of duplicated slide which represents the currently active slide + * + * @default 'swiper-slide-duplicate-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue components + */ + slideDuplicateActiveClass?: string; + + /** + * CSS class name of currently visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of slide duplicated by loop mode + * + * @default 'swiper-slide-duplicate' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideDuplicateClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of duplicated slide which represents the slide next to active slide + * + * @default 'swiper-slide-duplicate-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideDuplicateNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of duplicated slide which represents the slide previous to active slide + * + * @default 'swiper-slide-duplicate-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideDuplicatePrevClass?: string; + + /** + * CSS class name of blank slide append to fill groups in loop mode when `loopFillGroupWithBlank` is also enabled + * + * @default 'swiper-slide-invisible-blank' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper Angular/React/Svelte/Vue + * + */ + wrapperClass?: string; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables images lazy loading. Object with lazy loading parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * lazy: { + * loadPrevNext: true, + * }, + * }); + * ``` + */ + lazy?: LazyOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/swiper/vue/context.js b/swiper/vue/context.js new file mode 100644 index 0000000..a77773d --- /dev/null +++ b/swiper/vue/context.js @@ -0,0 +1,7 @@ +import { inject } from 'vue'; +export const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +export const useSwiper = () => { + return inject('swiper'); +}; \ No newline at end of file diff --git a/swiper/vue/get-children.js b/swiper/vue/get-children.js new file mode 100644 index 0000000..c6217ba --- /dev/null +++ b/swiper/vue/get-children.js @@ -0,0 +1,46 @@ +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, 'default'); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +export { getChildren }; \ No newline at end of file diff --git a/swiper/vue/loop.js b/swiper/vue/loop.js new file mode 100644 index 0000000..591a07a --- /dev/null +++ b/swiper/vue/loop.js @@ -0,0 +1,79 @@ +import { h } from 'vue'; +import Swiper from 'swiper'; + +function calcLoopedSlides(slides, swiperParams) { + let slidesPerViewParams = swiperParams.slidesPerView; + + if (swiperParams.breakpoints) { + const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); + const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; + + if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { + slidesPerViewParams = breakpointOnlyParams.slidesPerView; + } + } + + let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); + loopedSlides += swiperParams.loopAdditionalSlides; + + if (loopedSlides > slides.length) { + loopedSlides = slides.length; + } + + return loopedSlides; +} + +function renderLoop(swiperRef, slides, swiperParams) { + const modifiedSlides = slides.map((child, index) => { + if (!child.props) child.props = {}; + child.props.swiperRef = swiperRef; + child.props['data-swiper-slide-index'] = index; + return child; + }); + + function duplicateSlide(child, index, position) { + if (!child.props) child.props = {}; + return h(child.type, { ...child.props, + key: `${child.key}-duplicate-${index}-${position}`, + class: `${child.props.className || ''} ${swiperParams.slideDuplicateClass} ${child.props.class || ''}` + }, child.children); + } + + if (swiperParams.loopFillGroupWithBlank) { + const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; + + if (blankSlidesNum !== swiperParams.slidesPerGroup) { + for (let i = 0; i < blankSlidesNum; i += 1) { + const blankSlide = h('div', { + class: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` + }); + modifiedSlides.push(blankSlide); + } + } + } + + if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { + swiperParams.loopedSlides = modifiedSlides.length; + } + + const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); + const prependSlides = []; + const appendSlides = []; + modifiedSlides.forEach((child, index) => { + if (index < loopedSlides) { + appendSlides.push(duplicateSlide(child, index, 'prepend')); + } + + if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { + prependSlides.push(duplicateSlide(child, index, 'append')); + } + }); + + if (swiperRef.value) { + swiperRef.value.loopedSlides = loopedSlides; + } + + return [...prependSlides, ...modifiedSlides, ...appendSlides]; +} + +export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/swiper/vue/swiper-slide.js b/swiper/vue/swiper-slide.js new file mode 100644 index 0000000..3868464 --- /dev/null +++ b/swiper/vue/swiper-slide.js @@ -0,0 +1,85 @@ +import { h, ref, onMounted, onUpdated, onBeforeUpdate, computed, onBeforeUnmount, provide } from 'vue'; +import { uniqueClasses } from '../components-shared/utils.js'; +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + zoom: { + type: Boolean, + default: undefined + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + + onMounted(() => { + if (!swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isDuplicate: slideClasses.value.indexOf('swiper-slide-duplicate') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-next') >= 0 + })); + provide('swiperSlide', slideData); + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': props.virtualIndex + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, slots.default && slots.default(slideData.value)) : slots.default && slots.default(slideData.value)); + }; + } + +}; +export { SwiperSlide }; \ No newline at end of file diff --git a/swiper/vue/swiper-vue.d.ts b/swiper/vue/swiper-vue.d.ts new file mode 100644 index 0000000..11ec868 --- /dev/null +++ b/swiper/vue/swiper-vue.d.ts @@ -0,0 +1,889 @@ +import { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + LazyOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from '../types'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import { SwiperOptions, Swiper as SwiperClass } from '../types'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: NumberConstructor; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + preloadImages: { + type: BooleanConstructor; + default: undefined; + }; + updateOnImagesReady: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopedSlides: { + type: NumberConstructor; + default: undefined; + }; + loopFillGroupWithBlank: { + type: BooleanConstructor; + default: undefined; + }; + loopPreventsSlide: { + type: BooleanConstructor; + default: undefined; + }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideDuplicateActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideDuplicateClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slideDuplicateNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + slideDuplicatePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + lazy: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause (on mouse/pointer enter), when `pauseOnMouseEnter` enabled + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume (on mouse/pointer leave), when `pauseOnMouseEnter` enabled + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired in the beginning of lazy loading of image + */ + lazyImageLoad: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; + /** + * Event will be fired when lazy loading image will be loaded + */ + lazyImageReady: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled + */ + imagesReady: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isDuplicate: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/swiper/vue/swiper-vue.js b/swiper/vue/swiper-vue.js new file mode 100644 index 0000000..7f02299 --- /dev/null +++ b/swiper/vue/swiper-vue.js @@ -0,0 +1,16 @@ +/** + * Swiper Vue 8.3.0 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2022 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 6, 2022 + */ + +import { Swiper } from './swiper.js'; +import { SwiperSlide } from './swiper-slide.js'; +export { useSwiperSlide, useSwiper } from './context.js'; +export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/swiper/vue/swiper.js b/swiper/vue/swiper.js new file mode 100644 index 0000000..49aa1d1 --- /dev/null +++ b/swiper/vue/swiper.js @@ -0,0 +1,660 @@ +import { h, ref, onMounted, onUpdated, onBeforeUnmount, watch, nextTick, provide } from 'vue'; +import SwiperCore from 'swiper'; +import { getParams } from '../components-shared/get-params.js'; +import { mountSwiper } from '../components-shared/mount-swiper.js'; +import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js'; +import { renderLoop, calcLoopedSlides } from './loop.js'; +import { getChangedParams } from '../components-shared/get-changed-params.js'; +import { getChildren } from './get-children.js'; +import { updateSwiper } from '../components-shared/update-swiper.js'; +import { renderVirtual } from './virtual.js'; +import { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js'; +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + spaceBetween: { + type: Number, + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + preloadImages: { + type: Boolean, + default: undefined + }, + updateOnImagesReady: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopAdditionalSlides: { + type: Number, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopFillGroupWithBlank: { + type: Boolean, + default: undefined + }, + loopPreventsSlide: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideDuplicateActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideDuplicateClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slideDuplicateNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + slideDuplicatePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + lazy: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + emit(event, ...args); + }; + + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + + }); // init Swiper + + swiperRef.value = new SwiperCore(swiperParams); + + swiperRef.value.loopCreate = () => {}; + + swiperRef.value.loopDestroy = () => {}; + + if (swiperParams.loop) { + swiperRef.value.loopedSlides = calcLoopedSlides(slidesRef.value, swiperParams); + } + + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } // watch for params change + + + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); // update on virtual update + + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); // mount swiper + + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); // bypass swiper instance to slides + + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + + if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) { + slides.forEach(slide => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + }); + return slides; + } + + return renderLoop(swiperRef, slides, swiperParams); + } + + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: 'swiper-wrapper' + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } + +}; +export { Swiper }; \ No newline at end of file diff --git a/swiper/vue/virtual.js b/swiper/vue/virtual.js new file mode 100644 index 0000000..ce5e800 --- /dev/null +++ b/swiper/vue/virtual.js @@ -0,0 +1,20 @@ +import { h } from 'vue'; + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + return slides.filter((slide, index) => index >= virtualData.from && index <= virtualData.to).map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + return h(slide.type, { ...slide.props + }, slide.children); + }); +} + +export { renderVirtual }; \ No newline at end of file