Visual Portfolio, Photo Gallery & Post Grid - Version 2.7.1

Version Description

Download this release

Release Info

Developer nko
Plugin Icon 128x128 Visual Portfolio, Photo Gallery & Post Grid
Version 2.7.1
Comparing to
See all releases

Code changes from version 2.7.0 to 2.7.1

assets/admin/js/elementor.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.7.0
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.7.1
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
assets/admin/js/mce-dropdown.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.7.0
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.7.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
assets/admin/js/script.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.7.0
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.7.1
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
assets/admin/js/vc-frontend.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.7.0
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.7.1
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
assets/js/preview.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.7.0
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.7.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js CHANGED
@@ -1,9 +1,9 @@
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
- * Version : 1.0.4
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
- */!function(o){var n={};function i(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}i.m=o,i.c=n,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(o,n,function(t){return e[t]}.bind(null,n));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,o){t.exports=o(1)},function(t,e,o){"use strict";o.r(e);var n=o(2),i=o.n(n),r=o(3),a=o(5);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s,u,l,f,h=r.window.fjGallery;r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=h,this},void 0!==r.jQuery&&(s=r.window.fjGallery.constructor.prototype.init,r.window.fjGallery.constructor.prototype.init=function(){this.jQcontainer=Object(r.jQuery)(this.$container),this.jQcontainer.data("fjGallery",this),s&&s.call(this)},u=r.window.fjGallery.constructor.prototype.destroy,r.window.fjGallery.constructor.prototype.destroy=function(){this.jQcontainer&&this.jQcontainer.removeData("fjGallery"),u&&u.call(this)},(l=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==c(e)?e:this}).constructor=a.default.constructor,f=r.jQuery.fn.fjGallery,r.jQuery.fn.fjGallery=l,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=f,this}),i()(function(){Object(a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e){t.exports=function(t){"complete"===document.readyState||"interactive"===document.readyState?t.call():document.attachEvent?document.attachEvent("onreadystatechange",function(){"interactive"===document.readyState&&t.call()}):document.addEventListener&&document.addEventListener("DOMContentLoaded",t)}},function(o,t,e){(function(t){var e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};o.exports=e}).call(this,e(4))},function(t,e){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"===("undefined"==typeof window?"undefined":o(window))&&(n=window)}t.exports=n},function(t,e,o){"use strict";o.r(e);var a=o(6),c=o(7),n=o(8),s=o.n(n),i=o(2),r=o.n(i),u=o(10),l=o.n(u),f=o(3);function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}var p=[];function g(){f.window.requestAnimationFrame(function(){p.forEach(function(t){t.resize()})})}f.window.addEventListener("resize",g),f.window.addEventListener("orientationchange",g),f.window.addEventListener("load",g),r()(function(){g()});function y(t,e){("object"===("undefined"==typeof HTMLElement?"undefined":h(HTMLElement))?t instanceof HTMLElement:t&&"object"===h(t)&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var o,n=e,i=Array.prototype.slice.call(arguments,2),r=t.length,a=0;a<r;a++)if("object"===h(n)||void 0===n?t[a].fjGallery||(t[a].fjGallery=new m(t[a],n)):t[a].fjGallery&&(o=t[a].fjGallery[n].apply(t[a].fjGallery,i)),void 0!==o)return o;return t}var w=0,m=function(){function r(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var o=this;o.instanceID=w++,o.$container=t,o.images=[],o.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,resizeThrottle:200,isRtl:"rtl"===o.css(o.$container,"direction"),onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var n=o.$container.dataset||{},i={};Object.keys(n).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==o.defaults[e]&&(i[e]=n[t])}),o.options=s()({},o.defaults,i,e),o.pureOptions=s()({},o.options),o.resize=Object(a.throttle)(o.options.resizeThrottle,o.resize),o.justify=Object(c.default)(o.justify),o.init()}var t,e,o;return t=r,(e=[{key:"css",value:function(e,o){return"string"==typeof o?f.window.getComputedStyle(e).getPropertyValue(o):(o.transform&&(o["-webkit-transform"]=o.transform),Object.keys(o).forEach(function(t){e.style[t]=o[t]}),e)}},{key:"addToFjGalleryList",value:function(){p.push(this),g()}},{key:"removeFromFjGalleryList",value:function(){var o=this;p.forEach(function(t,e){t.instanceID===o.instanceID&&p.splice(e,1)})}},{key:"init",value:function(){var t=this;t.appendImages(t.$container.querySelectorAll(t.options.itemSelector)),t.addToFjGalleryList(),t.options.onInit&&t.options.onInit.call(t)}},{key:"appendImages",value:function(t){var h=this;f.window.jQuery&&t instanceof f.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){var f,e;!t||t.fjGalleryImage||!t.querySelector||(f=t.querySelector(h.options.imageSelector))&&(t.fjGalleryImage=h,(e={$item:t,$image:f,width:parseFloat(f.getAttribute("width"))||!1,height:parseFloat(f.getAttribute("height"))||!1,loadSizes:function(){var t,e,o,n,i,r,a=this;function c(){n?e(n):(n={width:t.naturalWidth,height:t.naturalHeight},e(n),clearInterval(o),i&&r())}function s(){c()}function u(){c()}function l(){0<t.naturalWidth&&c()}t=f,i=n=!(e=function(t){a.width===t.width&&a.height===t.height||(a.width=t.width,a.height=t.height,h.resize())}),r=function(){i=!1,t.removeEventListener("load",s),t.removeEventListener("error",u)},l(),n||(i=!0,t.addEventListener("load",s),t.addEventListener("error",u),o=setInterval(l,100))}}).loadSizes(),h.images.push(e))}),h.options.onAppendImages&&h.options.onAppendImages.call(h,[t]),h.justify())}},{key:"justify",value:function(){var e=this,o=[];e.options.onBeforeJustify&&e.options.onBeforeJustify.call(e),e.images.forEach(function(t){t.width&&t.height&&o.push(t.width/t.height)});var n=l()(o,{containerWidth:e.$container.getBoundingClientRect().width,containerPadding:{top:parseFloat(e.css(e.$container,"padding-top"))||0,right:parseFloat(e.css(e.$container,"padding-right"))||0,bottom:parseFloat(e.css(e.$container,"padding-bottom"))||0,left:parseFloat(e.css(e.$container,"padding-left"))||0},boxSpacing:e.options.gutter,targetRowHeight:e.options.rowHeight,targetRowHeightTolerance:e.options.rowHeightTolerance});e.css(e.$container,{height:"".concat(n.containerHeight,"px")});var i=0;e.images.forEach(function(t){t.width&&t.height&&(e.css(t.$item,{position:"absolute",transform:"translateX(".concat((e.options.isRtl?-1:1)*n.boxes[i].left,"px) translateY(").concat(n.boxes[i].top,"px) translateZ(0)"),width:"".concat(n.boxes[i].width,"px"),height:"".concat(n.boxes[i].height,"px")}),i++)}),e.options.onJustify&&e.options.onJustify.call(e)}},{key:"updateOptions",value:function(t){this.options=s()({},this.options,t),this.justify()}},{key:"destroy",value:function(){var e=this;e.removeFromFjGalleryList(),e.options.onDestroy&&e.options.onDestroy.call(e),e.css(e.$container,{height:""}),e.images.forEach(function(t){e.css(t.$item,{position:"",transform:"",width:"",height:""})}),e.images.forEach(function(t){delete t.$item.fjGalleryImage}),delete e.$container.fjGallery}},{key:"resize",value:function(){this.justify()}}])&&d(t.prototype,e),o&&d(t,o),r}();y.constructor=m,e.default=y},function(t,e,o){var n,i,r,a;function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}a=function(t){"use strict";function n(a,c,s,u){var l,f=!1,h=0;function d(){l&&clearTimeout(l)}function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];var n=this,i=Date.now()-h;function r(){h=Date.now(),s.apply(n,e)}f||(u&&!l&&r(),d(),void 0===u&&a<i?r():!0!==c&&(l=setTimeout(u?function(){l=void 0}:r,void 0===u?a-i:a)))}return"boolean"!=typeof c&&(u=s,s=c,c=void 0),t.cancel=function(){d(),f=!0},t}t.debounce=function(t,e,o){return void 0===o?n(t,e,!1):n(t,o,!1!==e)},t.throttle=n,Object.defineProperty(t,"__esModule",{value:!0})},"object"===c(e)&&void 0!==t?a(e):(i=[e],void 0===(r="function"==typeof(n=a)?n.apply(e,i):n)||(t.exports=r))},function(t,e,o){"use strict";o.r(e);e.default=function(n){function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];i=e,r=r||requestAnimationFrame(function(){r=null,n.apply(void 0,i)})}var i,r=null;return t.cancel=function(){r&&(cancelAnimationFrame(r),r=null)},t}},function(t,e,o){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.1
9
  * @author yeikos
1
  /*!
2
  * Name : Flickr's Justified Gallery [fjGallery]
3
+ * Version : 1.0.5
4
  * Author : nK <https://nkdev.info>
5
  * GitHub : https://github.com/nk-o/flickr-justified-gallery
6
+ */!function(o){var n={};function i(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}i.m=o,i.c=n,i.d=function(t,e,o){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(o,n,function(t){return e[t]}.bind(null,n));return o},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,o){t.exports=o(1)},function(t,e,o){"use strict";o.r(e);var n=o(2),i=o.n(n),r=o(3),a=o(5);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s,u,l,f,h=r.window.fjGallery;r.window.fjGallery=a.default,r.window.fjGallery.noConflict=function(){return r.window.fjGallery=h,this},void 0!==r.jQuery&&(s=r.window.fjGallery.constructor.prototype.init,r.window.fjGallery.constructor.prototype.init=function(){this.jQcontainer=Object(r.jQuery)(this.$container),this.jQcontainer.data("fjGallery",this),s&&s.call(this)},u=r.window.fjGallery.constructor.prototype.destroy,r.window.fjGallery.constructor.prototype.destroy=function(){this.jQcontainer&&this.jQcontainer.removeData("fjGallery"),u&&u.call(this)},(l=function(){var t=arguments||[];Array.prototype.unshift.call(t,this);var e=a.default.apply(r.window,t);return"object"!==c(e)?e:this}).constructor=a.default.constructor,f=r.jQuery.fn.fjGallery,r.jQuery.fn.fjGallery=l,r.jQuery.fn.fjGallery.noConflict=function(){return r.jQuery.fn.fjGallery=f,this}),i()(function(){Object(a.default)(document.querySelectorAll(".fj-gallery"))})},function(t,e){t.exports=function(t){"complete"===document.readyState||"interactive"===document.readyState?t.call():document.attachEvent?document.attachEvent("onreadystatechange",function(){"interactive"===document.readyState&&t.call()}):document.addEventListener&&document.addEventListener("DOMContentLoaded",t)}},function(o,t,e){(function(t){var e="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};o.exports=e}).call(this,e(4))},function(t,e){function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"===("undefined"==typeof window?"undefined":o(window))&&(n=window)}t.exports=n},function(t,e,o){"use strict";o.r(e);var a=o(6),c=o(7),n=o(8),s=o.n(n),i=o(2),r=o.n(i),u=o(10),l=o.n(u),f=o(3);function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var o=0;o<e.length;o++){var n=e[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}var p=[];function g(){f.window.requestAnimationFrame(function(){p.forEach(function(t){t.resize()})})}f.window.addEventListener("resize",g),f.window.addEventListener("orientationchange",g),f.window.addEventListener("load",g),r()(function(){g()});function y(t,e){("object"===("undefined"==typeof HTMLElement?"undefined":h(HTMLElement))?t instanceof HTMLElement:t&&"object"===h(t)&&null!==t&&1===t.nodeType&&"string"==typeof t.nodeName)&&(t=[t]);for(var o,n=e,i=Array.prototype.slice.call(arguments,2),r=t.length,a=0;a<r;a++)if("object"===h(n)||void 0===n?t[a].fjGallery||(t[a].fjGallery=new m(t[a],n)):t[a].fjGallery&&(o=t[a].fjGallery[n].apply(t[a].fjGallery,i)),void 0!==o)return o;return t}var w=0,m=function(){function r(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);var o=this;o.instanceID=w++,o.$container=t,o.images=[],o.defaults={itemSelector:".fj-gallery-item",imageSelector:"img",gutter:10,rowHeight:320,rowHeightTolerance:.25,resizeThrottle:200,isRtl:"rtl"===o.css(o.$container,"direction"),onInit:null,onDestroy:null,onAppendImages:null,onBeforeJustify:null,onJustify:null};var n=o.$container.dataset||{},i={};Object.keys(n).forEach(function(t){var e=t.substr(0,1).toLowerCase()+t.substr(1);e&&void 0!==o.defaults[e]&&(i[e]=n[t])}),o.options=s()({},o.defaults,i,e),o.pureOptions=s()({},o.options),o.resize=Object(a.throttle)(o.options.resizeThrottle,o.resize),o.justify=Object(c.default)(o.justify.bind(o)),o.init()}var t,e,o;return t=r,(e=[{key:"css",value:function(e,o){return"string"==typeof o?f.window.getComputedStyle(e).getPropertyValue(o):(o.transform&&(o["-webkit-transform"]=o.transform),Object.keys(o).forEach(function(t){e.style[t]=o[t]}),e)}},{key:"addToFjGalleryList",value:function(){p.push(this),g()}},{key:"removeFromFjGalleryList",value:function(){var o=this;p.forEach(function(t,e){t.instanceID===o.instanceID&&p.splice(e,1)})}},{key:"init",value:function(){var t=this;t.appendImages(t.$container.querySelectorAll(t.options.itemSelector)),t.addToFjGalleryList(),t.options.onInit&&t.options.onInit.call(t)}},{key:"appendImages",value:function(t){var h=this;f.window.jQuery&&t instanceof f.window.jQuery&&(t=t.get()),t&&t.length&&(t.forEach(function(t){var f,e;!t||t.fjGalleryImage||!t.querySelector||(f=t.querySelector(h.options.imageSelector))&&(t.fjGalleryImage=h,(e={$item:t,$image:f,width:parseFloat(f.getAttribute("width"))||!1,height:parseFloat(f.getAttribute("height"))||!1,loadSizes:function(){var t,e,o,n,i,r,a=this;function c(){n?e(n):(n={width:t.naturalWidth,height:t.naturalHeight},e(n),clearInterval(o),i&&r())}function s(){c()}function u(){c()}function l(){0<t.naturalWidth&&c()}t=f,i=n=!(e=function(t){a.width===t.width&&a.height===t.height||(a.width=t.width,a.height=t.height,h.resize())}),r=function(){i=!1,t.removeEventListener("load",s),t.removeEventListener("error",u)},l(),n||(i=!0,t.addEventListener("load",s),t.addEventListener("error",u),o=setInterval(l,100))}}).loadSizes(),h.images.push(e))}),h.options.onAppendImages&&h.options.onAppendImages.call(h,[t]),h.justify())}},{key:"justify",value:function(){var e=this,o=[];e.options.onBeforeJustify&&e.options.onBeforeJustify.call(e),e.images.forEach(function(t){t.width&&t.height&&o.push(t.width/t.height)});var n=l()(o,{containerWidth:e.$container.getBoundingClientRect().width,containerPadding:{top:parseFloat(e.css(e.$container,"padding-top"))||0,right:parseFloat(e.css(e.$container,"padding-right"))||0,bottom:parseFloat(e.css(e.$container,"padding-bottom"))||0,left:parseFloat(e.css(e.$container,"padding-left"))||0},boxSpacing:e.options.gutter,targetRowHeight:e.options.rowHeight,targetRowHeightTolerance:e.options.rowHeightTolerance});e.css(e.$container,{height:"".concat(n.containerHeight,"px")});var i=0;e.images.forEach(function(t){t.width&&t.height&&(e.css(t.$item,{position:"absolute",transform:"translateX(".concat((e.options.isRtl?-1:1)*n.boxes[i].left,"px) translateY(").concat(n.boxes[i].top,"px) translateZ(0)"),width:"".concat(n.boxes[i].width,"px"),height:"".concat(n.boxes[i].height,"px")}),i++)}),e.options.onJustify&&e.options.onJustify.call(e)}},{key:"updateOptions",value:function(t){this.options=s()({},this.options,t),this.justify()}},{key:"destroy",value:function(){var e=this;e.removeFromFjGalleryList(),e.options.onDestroy&&e.options.onDestroy.call(e),e.css(e.$container,{height:""}),e.images.forEach(function(t){e.css(t.$item,{position:"",transform:"",width:"",height:""})}),e.images.forEach(function(t){delete t.$item.fjGalleryImage}),delete e.$container.fjGallery}},{key:"resize",value:function(){this.justify()}}])&&d(t.prototype,e),o&&d(t,o),r}();y.constructor=m,e.default=y},function(t,e,o){var n,i,r,a;function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}a=function(t){"use strict";function n(a,c,s,u){var l,f=!1,h=0;function d(){l&&clearTimeout(l)}function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];var n=this,i=Date.now()-h;function r(){h=Date.now(),s.apply(n,e)}f||(u&&!l&&r(),d(),void 0===u&&a<i?r():!0!==c&&(l=setTimeout(u?function(){l=void 0}:r,void 0===u?a-i:a)))}return"boolean"!=typeof c&&(u=s,s=c,c=void 0),t.cancel=function(){d(),f=!0},t}t.debounce=function(t,e,o){return void 0===o?n(t,e,!1):n(t,o,!1!==e)},t.throttle=n,Object.defineProperty(t,"__esModule",{value:!0})},"object"===c(e)&&void 0!==t?a(e):(i=[e],void 0===(r="function"==typeof(n=a)?n.apply(e,i):n)||(t.exports=r))},function(t,e,o){"use strict";o.r(e);e.default=function(n){function t(){for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];i=e,r=r||requestAnimationFrame(function(){r=null,n.apply(void 0,i)})}var i,r=null;return t.cancel=function(){r&&(cancelAnimationFrame(r),r=null)},t}},function(t,e,o){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}
7
  /*!
8
  * @name JavaScript/NodeJS Merge v1.2.1
9
  * @author yeikos
assets/vendor/flickr-justified-gallery/dist/fjGallery.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["fjGallery.js"],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","lite_ready__WEBPACK_IMPORTED_MODULE_0__","lite_ready__WEBPACK_IMPORTED_MODULE_0___default","global__WEBPACK_IMPORTED_MODULE_1__","_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__","_typeof","obj","iterator","constructor","oldInit","oldDestroy","jQueryPlugin","oldJqPlugin","oldPlugin","fjGallery","noConflict","this","init","jQcontainer","$container","data","destroy","removeData","args","arguments","Array","unshift","res","apply","fn","document","querySelectorAll","callback","readyState","attachEvent","addEventListener","global","win","window","self","g","Function","e","throttle_debounce__WEBPACK_IMPORTED_MODULE_0__","raf_schd__WEBPACK_IMPORTED_MODULE_1__","merge__WEBPACK_IMPORTED_MODULE_2__","merge__WEBPACK_IMPORTED_MODULE_2___default","lite_ready__WEBPACK_IMPORTED_MODULE_3__","lite_ready__WEBPACK_IMPORTED_MODULE_3___default","justified_layout__WEBPACK_IMPORTED_MODULE_4__","justified_layout__WEBPACK_IMPORTED_MODULE_4___default","global__WEBPACK_IMPORTED_MODULE_5__","_defineProperties","target","props","length","descriptor","configurable","writable","fjGalleryList","updateFjGallery","requestAnimationFrame","forEach","item","resize","plugin","items","HTMLElement","nodeType","nodeName","ret","options","slice","len","k","instanceID","container","userOptions","instance","Constructor","TypeError","_classCallCheck","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","resizeThrottle","isRtl","css","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","toLowerCase","pureOptions","justify","protoProps","staticProps","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","jQuery","$item","$image","fjGalleryImage","querySelector","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","removeListeners","itemData","onHasSize","naturalWidth","naturalHeight","clearInterval","onLoaded","onError","checkSize","dimensions","removeEventListener","setInterval","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","concat","containerHeight","position","boxes","removeFromFjGalleryList","val","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","throttle","delay","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","Date","now","exec","undefined","setTimeout","cancel","debounce","atBegin","wrapperFn","lastArgs","frameId","cancelAnimationFrame","merge","clone","recursive","argv","result","size","typeOf","index","sitem","Public","merge_recursive","base","extend","input","toString","isNode","output","type","webpackPolyfill","deprecate","paths","children","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","Number","POSITIVE_INFINITY","forceAspectRatio","showWidows","isNaN","_awakeItems","_inViewportItems","_leadingOrphans","_trailingOrphans","_orphans","_widowCount","map","aspectRatio","forcedAspectRatio","some","Error","addItem","isLayoutComplete","forceComplete","widowCount","params","minAspectRatio","maxAspectRatio","previousRowWidthWithoutSpacing","previousAspectRatio","previousTargetAspectRatio","newItems","rowWidthWithoutSpacing","newAspectRatio","reduce","sum","targetAspectRatio","completeLayout","Math","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","max","min","round","fitToWidth"],"mappings":"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","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.4\n * Author : nK <https://nkdev.info>\n * GitHub : https://github.com/nk-o/flickr-justified-gallery\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n // no conflict\n\nvar oldPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery;\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = oldPlugin;\n return this;\n}; // jQuery support\n\n\nif (typeof global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"] !== 'undefined') {\n // add data to jQuery .data('fjGallery')\n var oldInit = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init = function () {\n this.jQcontainer = Object(global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"])(this.$container);\n this.jQcontainer.data('fjGallery', this);\n\n if (oldInit) {\n oldInit.call(this);\n }\n }; // remove data from jQuery .data('fjGallery')\n\n\n var oldDestroy = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy = function () {\n if (this.jQcontainer) {\n this.jQcontainer.removeData('fjGallery');\n }\n\n if (oldDestroy) {\n oldDestroy.call(this);\n }\n };\n\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].apply(global__WEBPACK_IMPORTED_MODULE_1__[\"window\"], args);\n return _typeof(res) !== 'object' ? res : this;\n };\n\n jQueryPlugin.constructor = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].constructor; // no conflict\n\n var oldJqPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery;\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = jQueryPlugin;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = oldJqPlugin;\n return this;\n };\n} // .fj-gallery initialization\n\n\nlite_ready__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n Object(_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (callback) {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // Already ready or interactive, execute callback\n callback.call();\n } else if (document.attachEvent) {\n // Old browsers\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'interactive') callback.call();\n });\n } else if (document.addEventListener) {\n // Modern browsers\n document.addEventListener('DOMContentLoaded', callback);\n }\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var raf_schd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(justified_layout__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_5__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n // list with all fjGallery instances\n// need to render all in one scroll/resize event\n\nvar fjGalleryList = [];\n\nfunction updateFjGallery() {\n global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].requestAnimationFrame(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n });\n}\n\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('resize', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('orientationchange', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('load', updateFjGallery);\nlite_ready__WEBPACK_IMPORTED_MODULE_3___default()(function () {\n updateFjGallery();\n}); // get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\n\nfunction getImgDimensions(img, cb) {\n var interval;\n var hasSize = false;\n var addedListeners = false;\n\n var onHasSize = function onHasSize() {\n if (hasSize) {\n cb(hasSize);\n return;\n }\n\n hasSize = {\n width: img.naturalWidth,\n height: img.naturalHeight\n };\n cb(hasSize);\n clearInterval(interval);\n\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n\n var onError = function onError() {\n onHasSize();\n };\n\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\n };\n\n var removeListeners = function removeListeners() {\n addedListeners = false;\n img.removeEventListener('load', onLoaded);\n img.removeEventListener('error', onError);\n };\n\n checkSize();\n\n if (!hasSize) {\n addListeners();\n interval = setInterval(checkSize, 100);\n }\n}\n\nvar instanceID = 0; // fjGallery class\n\nvar fjGallery = /*#__PURE__*/function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n self.instanceID = instanceID++;\n self.$container = container;\n self.images = [];\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10,\n // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25,\n // [0, 1]\n resizeThrottle: 200,\n isRtl: self.css(self.$container, 'direction') === 'rtl',\n // events\n onInit: null,\n // function() {}\n onDestroy: null,\n // function() {}\n onAppendImages: null,\n // function() {}\n onBeforeJustify: null,\n // function() {}\n onJustify: null // function() {}\n\n }; // prepare data-options\n\n var dataOptions = self.$container.dataset || {};\n var pureDataOptions = {};\n Object.keys(dataOptions).forEach(function (key) {\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options); // throttle for resize\n\n self.resize = Object(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__[\"throttle\"])(self.options.resizeThrottle, self.resize);\n self.justify = Object(raf_schd__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(self.justify);\n self.init();\n } // add styles to element\n\n\n _createClass(fjGallery, [{\n key: \"css\",\n value: function css(el, styles) {\n if (typeof styles === 'string') {\n return global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].getComputedStyle(el).getPropertyValue(styles);\n } // add transform property with vendor prefix\n\n\n if (styles.transform) {\n styles['-webkit-transform'] = styles.transform;\n }\n\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n return el;\n } // add to fjGallery instances list\n\n }, {\n key: \"addToFjGalleryList\",\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n } // remove from fjGallery instances list\n\n }, {\n key: \"removeFromFjGalleryList\",\n value: function removeFromFjGalleryList() {\n var self = this;\n fjGalleryList.forEach(function (item, key) {\n if (item.instanceID === self.instanceID) {\n fjGalleryList.splice(key, 1);\n }\n });\n }\n }, {\n key: \"init\",\n value: function init() {\n var self = this;\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n self.addToFjGalleryList(); // call onInit event\n\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n } // append images\n\n }, {\n key: \"appendImages\",\n value: function appendImages($images) {\n var self = this; // check if jQuery\n\n if (global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery && $images instanceof global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery) {\n $images = $images.get();\n }\n\n if (!$images || !$images.length) {\n return;\n }\n\n $images.forEach(function ($item) {\n // if $images is jQuery, for some reason in this array there is undefined item, that not a DOM,\n // so we need to check for $item.querySelector.\n if ($item && !$item.fjGalleryImage && $item.querySelector) {\n var $image = $item.querySelector(self.options.imageSelector);\n\n if ($image) {\n $item.fjGalleryImage = self;\n var data = {\n $item: $item,\n $image: $image,\n width: parseFloat($image.getAttribute('width')) || false,\n height: parseFloat($image.getAttribute('height')) || false,\n loadSizes: function loadSizes() {\n var itemData = this;\n getImgDimensions($image, function (dimensions) {\n if (itemData.width !== dimensions.width || itemData.height !== dimensions.height) {\n itemData.width = dimensions.width;\n itemData.height = dimensions.height;\n self.resize();\n }\n });\n }\n };\n data.loadSizes();\n self.images.push(data);\n }\n }\n }); // call onAppendImages event\n\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n } // justify images\n\n }, {\n key: \"justify\",\n value: function justify() {\n var self = this;\n var justifyArray = []; // call onBeforeJustify event\n\n if (self.options.onBeforeJustify) {\n self.options.onBeforeJustify.call(self);\n }\n\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n justifyArray.push(data.width / data.height);\n }\n });\n var justifiedData = justified_layout__WEBPACK_IMPORTED_MODULE_4___default()(justifyArray, {\n containerWidth: self.$container.getBoundingClientRect().width,\n containerPadding: {\n top: parseFloat(self.css(self.$container, 'padding-top')) || 0,\n right: parseFloat(self.css(self.$container, 'padding-right')) || 0,\n bottom: parseFloat(self.css(self.$container, 'padding-bottom')) || 0,\n left: parseFloat(self.css(self.$container, 'padding-left')) || 0\n },\n boxSpacing: self.options.gutter,\n targetRowHeight: self.options.rowHeight,\n targetRowHeightTolerance: self.options.rowHeightTolerance\n });\n self.css(self.$container, {\n height: \"\".concat(justifiedData.containerHeight, \"px\")\n });\n var i = 0;\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n self.css(data.$item, {\n position: 'absolute',\n transform: \"translateX(\".concat((self.options.isRtl ? -1 : 1) * justifiedData.boxes[i].left, \"px) translateY(\").concat(justifiedData.boxes[i].top, \"px) translateZ(0)\"),\n width: \"\".concat(justifiedData.boxes[i].width, \"px\"),\n height: \"\".concat(justifiedData.boxes[i].height, \"px\")\n });\n i++;\n }\n }); // call onJustify event\n\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n } // update options and resize gallery items\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(options) {\n var self = this;\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options, options);\n self.justify();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var self = this;\n self.removeFromFjGalleryList(); // call onDestroy event\n\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n } // remove styles.\n\n\n self.css(self.$container, {\n height: ''\n });\n self.images.forEach(function (data) {\n self.css(data.$item, {\n position: '',\n transform: '',\n width: '',\n height: ''\n });\n }); // delete fjGalleryImage instance from images\n\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n }); // delete fjGallery instance from container\n\n delete self.$container.fjGallery;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n var self = this;\n self.justify();\n }\n }]);\n\n return fjGallery;\n}(); // global definition\n\n\nvar plugin = function plugin(items) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if ((typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && _typeof(items) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n items = [items];\n }\n\n var options = arguments[1];\n var args = Array.prototype.slice.call(arguments, 2);\n var len = items.length;\n var k = 0;\n var ret;\n\n for (k; k < len; k++) {\n if (_typeof(options) === 'object' || typeof options === 'undefined') {\n if (!items[k].fjGallery) {\n // eslint-disable-next-line new-cap\n items[k].fjGallery = new fjGallery(items[k], options);\n }\n } else if (items[k].fjGallery) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].fjGallery[options].apply(items[k].fjGallery, args);\n }\n\n if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\n\nplugin.constructor = fjGallery;\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);\n})(this, function (exports) {\n 'use strict';\n /* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n /**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\n\n function throttle(delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n }\n /* eslint-disable no-undefined */\n\n /**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\n\n function debounce(delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n }\n\n exports.debounce = debounce;\n exports.throttle = throttle;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (rafSchd);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.1\r\n * @author yeikos\r\n * @repository https://github.com/yeikos/js.merge\r\n\r\n * Copyright 2014 yeikos - MIT license\r\n * https://raw.github.com/yeikos/js.merge/master/LICENSE\r\n */\n;\n\n(function (isNode) {\n /**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n var Public = function Public(clone) {\n return merge(clone === true, false, arguments);\n },\n publicName = 'merge';\n /**\r\n * Merge two or more objects recursively \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\n Public.recursive = function (clone) {\n return merge(clone === true, true, arguments);\n };\n /**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\n Public.clone = function (input) {\n var output = input,\n type = typeOf(input),\n index,\n size;\n\n if (type === 'array') {\n output = [];\n size = input.length;\n\n for (index = 0; index < size; ++index) {\n output[index] = Public.clone(input[index]);\n }\n } else if (type === 'object') {\n output = {};\n\n for (index in input) {\n output[index] = Public.clone(input[index]);\n }\n }\n\n return output;\n };\n /**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\n function merge_recursive(base, extend) {\n if (typeOf(base) !== 'object') return extend;\n\n for (var key in extend) {\n if (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n base[key] = merge_recursive(base[key], extend[key]);\n } else {\n base[key] = extend[key];\n }\n }\n\n return base;\n }\n /**\r\n * Merge two or more objects\r\n * @param bool clone\r\n * @param bool recursive\r\n * @param array argv\r\n * @return object\r\n */\n\n\n function merge(clone, recursive, argv) {\n var result = argv[0],\n size = argv.length;\n if (clone || typeOf(result) !== 'object') result = {};\n\n for (var index = 0; index < size; ++index) {\n var item = argv[index],\n type = typeOf(item);\n if (type !== 'object') continue;\n\n for (var key in item) {\n if (key === '__proto__') continue;\n var sitem = clone ? Public.clone(item[key]) : item[key];\n\n if (recursive) {\n result[key] = merge_recursive(result[key], sitem);\n } else {\n result[key] = sitem;\n }\n }\n }\n\n return result;\n }\n /**\r\n * Get type of variable\r\n * @param mixed input\r\n * @return string\r\n *\r\n * @see http://jsperf.com/typeofvar\r\n */\n\n\n function typeOf(input) {\n return {}.toString.call(input).slice(8, -1).toLowerCase();\n }\n\n if (isNode) {\n module.exports = Public;\n } else {\n window[publicName] = Public;\n }\n})(( false ? undefined : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)(module)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\n\nvar merge = __webpack_require__(8),\n Row = __webpack_require__(11);\n/**\n * Create a new, empty row.\n *\n * @method createNewRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @return A new, empty row of the type specified by this layout.\n */\n\n\nfunction createNewRow(layoutConfig, layoutData) {\n var isBreakoutRow; // Work out if this is a full width breakout row\n\n if (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n if ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n isBreakoutRow = true;\n }\n }\n\n return new Row({\n top: layoutData._containerHeight,\n left: layoutConfig.containerPadding.left,\n width: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n spacing: layoutConfig.boxSpacing.horizontal,\n targetRowHeight: layoutConfig.targetRowHeight,\n targetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n edgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n edgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n rightToLeft: false,\n isBreakoutRow: isBreakoutRow,\n widowLayoutStyle: layoutConfig.widowLayoutStyle\n });\n}\n/**\n * Add a completed row to the layout.\n * Note: the row must have already been completed.\n *\n * @method addRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param row {Row} The row to add.\n * @return {Array} Each item added to the row.\n */\n\n\nfunction addRow(layoutConfig, layoutData, row) {\n layoutData._rows.push(row);\n\n layoutData._layoutItems = layoutData._layoutItems.concat(row.getItems()); // Increment the container height\n\n layoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n return row.items;\n}\n/**\n * Calculate the current layout for all items in the list that require layout.\n * \"Layout\" means geometry: position within container and size\n *\n * @method computeLayout\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param itemLayoutData {Array} Array of items to lay out, with data required to lay out each item\n * @return {Object} The newly-calculated layout, containing the new container height, and lists of layout items\n */\n\n\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n var laidOutItems = [],\n itemAdded,\n currentRow,\n nextToLastRowHeight; // Apply forced aspect ratio if specified, and set a flag.\n\n if (layoutConfig.forceAspectRatio) {\n itemLayoutData.forEach(function (itemData) {\n itemData.forcedAspectRatio = true;\n itemData.aspectRatio = layoutConfig.forceAspectRatio;\n });\n } // Loop through the items\n\n\n itemLayoutData.some(function (itemData, i) {\n if (isNaN(itemData.aspectRatio)) {\n throw new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n } // If not currently building up a row, make a new one.\n\n\n if (!currentRow) {\n currentRow = createNewRow(layoutConfig, layoutData);\n } // Attempt to add item to the current row.\n\n\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // Row is filled; add it and start a new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData); // Item was rejected; add it to its own row\n\n if (!itemAdded) {\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // If the rejected item fills a row on its own, add the row and start another new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData);\n }\n }\n }\n }); // Handle any leftover content (orphans) depending on where they lie\n // in this layout update, and in the total content set.\n\n if (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n // Last page of all content or orphan suppression is suppressed; lay out orphans.\n if (layoutData._rows.length) {\n // Only Match previous row's height if it exists and it isn't a breakout row\n if (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n } else {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n }\n\n currentRow.forceComplete(false, nextToLastRowHeight);\n } else {\n // ...else use target height if there is no other row height to reference.\n currentRow.forceComplete(false);\n }\n\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n layoutConfig._widowCount = currentRow.getItems().length;\n } // We need to clean up the bottom container padding\n // First remove the height added for box spacing\n\n\n layoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical; // Then add our bottom container padding\n\n layoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n return {\n containerHeight: layoutData._containerHeight,\n widowCount: layoutConfig._widowCount,\n boxes: layoutData._layoutItems\n };\n}\n/**\n * Takes in a bunch of box data and config. Returns\n * geometry to lay them out in a justified view.\n *\n * @method covertSizesToAspectRatios\n * @param sizes {Array} Array of objects with widths and heights\n * @return {Array} A list of aspect ratios\n */\n\n\nmodule.exports = function (input, config) {\n var layoutConfig = {};\n var layoutData = {}; // Defaults\n\n var defaults = {\n containerWidth: 1060,\n containerPadding: 10,\n boxSpacing: 10,\n targetRowHeight: 320,\n targetRowHeightTolerance: 0.25,\n maxNumRows: Number.POSITIVE_INFINITY,\n forceAspectRatio: false,\n showWidows: true,\n fullWidthBreakoutRowCadence: false,\n widowLayoutStyle: 'left'\n };\n var containerPadding = {};\n var boxSpacing = {};\n config = config || {}; // Merge defaults and config passed in\n\n layoutConfig = merge(defaults, config); // Sort out padding and spacing values\n\n containerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n containerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n containerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n containerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n boxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n boxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n layoutConfig.containerPadding = containerPadding;\n layoutConfig.boxSpacing = boxSpacing; // Local\n\n layoutData._layoutItems = [];\n layoutData._awakeItems = [];\n layoutData._inViewportItems = [];\n layoutData._leadingOrphans = [];\n layoutData._trailingOrphans = [];\n layoutData._containerHeight = layoutConfig.containerPadding.top;\n layoutData._rows = [];\n layoutData._orphans = [];\n layoutConfig._widowCount = 0; // Convert widths and heights to aspect ratios if we need to\n\n return computeLayout(layoutConfig, layoutData, input.map(function (item) {\n if (item.width && item.height) {\n return {\n aspectRatio: item.width / item.height\n };\n } else {\n return {\n aspectRatio: item\n };\n }\n }));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\nvar merge = __webpack_require__(8);\n/**\n * Row\n * Wrapper for each row in a justified layout.\n * Stores relevant values and provides methods for calculating layout of individual rows.\n *\n * @param {Object} layoutConfig - The same as that passed\n * @param {Object} Initialization parameters. The following are all required:\n * @param params.top {Number} Top of row, relative to container\n * @param params.left {Number} Left side of row relative to container (equal to container left padding)\n * @param params.width {Number} Width of row, not including container padding\n * @param params.spacing {Number} Horizontal spacing between items\n * @param params.targetRowHeight {Number} Layout algorithm will aim for this row height\n * @param params.targetRowHeightTolerance {Number} Row heights may vary +/- (`targetRowHeight` x `targetRowHeightTolerance`)\n * @param params.edgeCaseMinRowHeight {Number} Absolute minimum row height for edge cases that cannot be resolved within tolerance.\n * @param params.edgeCaseMaxRowHeight {Number} Absolute maximum row height for edge cases that cannot be resolved within tolerance.\n * @param params.isBreakoutRow {Boolean} Is this row in particular one of those breakout rows? Always false if it's not that kind of photo list\n * @param params.widowLayoutStyle {String} If widows are visible, how should they be laid out?\n * @constructor\n */\n\n\nvar Row = module.exports = function (params) {\n // Top of row, relative to container\n this.top = params.top; // Left side of row relative to container (equal to container left padding)\n\n this.left = params.left; // Width of row, not including container padding\n\n this.width = params.width; // Horizontal spacing between items\n\n this.spacing = params.spacing; // Row height calculation values\n\n this.targetRowHeight = params.targetRowHeight;\n this.targetRowHeightTolerance = params.targetRowHeightTolerance;\n this.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n this.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance); // Edge case row height minimum/maximum\n\n this.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n this.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight; // Widow layout direction\n\n this.widowLayoutStyle = params.widowLayoutStyle; // Full width breakout rows\n\n this.isBreakoutRow = params.isBreakoutRow; // Store layout data for each item in row\n\n this.items = []; // Height remains at 0 until it's been calculated\n\n this.height = 0;\n};\n\nRow.prototype = {\n /**\n * Attempt to add a single item to the row.\n * This is the heart of the justified algorithm.\n * This method is direction-agnostic; it deals only with sizes, not positions.\n *\n * If the item fits in the row, without pushing row height beyond min/max tolerance,\n * the item is added and the method returns true.\n *\n * If the item leaves row height too high, there may be room to scale it down and add another item.\n * In this case, the item is added and the method returns true, but the row is incomplete.\n *\n * If the item leaves row height too short, there are too many items to fit within tolerance.\n * The method will either accept or reject the new item, favoring the resulting row height closest to within tolerance.\n * If the item is rejected, left/right padding will be required to fit the row height within tolerance;\n * if the item is accepted, top/bottom cropping will be required to fit the row height within tolerance.\n *\n * @method addItem\n * @param itemData {Object} Item layout data, containing item aspect ratio.\n * @return {Boolean} True if successfully added; false if rejected.\n */\n addItem: function addItem(itemData) {\n var newItems = this.items.concat(itemData),\n // Calculate aspect ratios for items only; exclude spacing\n rowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n newAspectRatio = newItems.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0),\n targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n previousRowWidthWithoutSpacing,\n previousAspectRatio,\n previousTargetAspectRatio; // Handle big full-width breakout photos if we're doing them\n\n if (this.isBreakoutRow) {\n // Only do it if there's no other items in this row\n if (this.items.length === 0) {\n // Only go full width if this photo is a square or landscape\n if (itemData.aspectRatio >= 1) {\n // Close out the row with a full width photo\n this.items.push(itemData);\n this.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n return true;\n }\n }\n }\n\n if (newAspectRatio < this.minAspectRatio) {\n // New aspect ratio is too narrow / scaled row height is too tall.\n // Accept this item and leave row open for more items.\n this.items.push(merge(itemData));\n return true;\n } else if (newAspectRatio > this.maxAspectRatio) {\n // New aspect ratio is too wide / scaled row height will be too short.\n // Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n // NOTE: Any row that falls into this block will require cropping/padding on individual items.\n if (this.items.length === 0) {\n // When there are no existing items, force acceptance of the new item and complete the layout.\n // This is the pano special case.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n } // Calculate width/aspect ratio for row before adding new item\n\n\n previousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n previousAspectRatio = this.items.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0);\n previousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n if (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n // Row with new item is us farther away from target than row without; complete layout and reject item.\n this.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n return false;\n } else {\n // Row with new item is us closer to target than row without;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n } else {\n // New aspect ratio / scaled row height is within tolerance;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n },\n\n /**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n isLayoutComplete: function isLayoutComplete() {\n return this.height > 0;\n },\n\n /**\n * Set row height and compute item geometry from that height.\n * Will justify items within the row unless instructed not to.\n *\n * @method completeLayout\n * @param newHeight {Number} Set row height to this value.\n * @param widowLayoutStyle {String} How should widows display? Supported: left | justify | center\n */\n completeLayout: function completeLayout(newHeight, widowLayoutStyle) {\n var itemWidthSum = this.left,\n rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n clampedToNativeRatio,\n clampedHeight,\n errorWidthPerItem,\n roundedCumulativeErrors,\n singleItemGeometry,\n centerOffset; // Justify unless explicitly specified otherwise.\n\n if (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n widowLayoutStyle = 'left';\n } // Clamp row height to edge case minimum/maximum.\n\n\n clampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n if (newHeight !== clampedHeight) {\n // If row height was clamped, the resulting row/item aspect ratio will be off,\n // so force it to fit the width (recalculate aspectRatio to match clamped height).\n // NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n this.height = clampedHeight;\n clampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n } else {\n // If not clamped, leave ratio at 1.0.\n this.height = newHeight;\n clampedToNativeRatio = 1.0;\n } // Compute item geometry based on newHeight.\n\n\n this.items.forEach(function (item) {\n item.top = this.top;\n item.width = item.aspectRatio * this.height * clampedToNativeRatio;\n item.height = this.height; // Left-to-right.\n // TODO right to left\n // item.left = this.width - itemWidthSum - item.width;\n\n item.left = itemWidthSum; // Increment width.\n\n itemWidthSum += item.width + this.spacing;\n }, this); // If specified, ensure items fill row and distribute error\n // caused by rounding width and height across all items.\n\n if (widowLayoutStyle === 'justify') {\n itemWidthSum -= this.spacing + this.left;\n errorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n roundedCumulativeErrors = this.items.map(function (item, i) {\n return Math.round((i + 1) * errorWidthPerItem);\n });\n\n if (this.items.length === 1) {\n // For rows with only one item, adjust item width to fill row.\n singleItemGeometry = this.items[0];\n singleItemGeometry.width -= Math.round(errorWidthPerItem);\n } else {\n // For rows with multiple items, adjust item width and shift items to fill the row,\n // while maintaining equal spacing between items in the row.\n this.items.forEach(function (item, i) {\n if (i > 0) {\n item.left -= roundedCumulativeErrors[i - 1];\n item.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n } else {\n item.width -= roundedCumulativeErrors[i];\n }\n });\n }\n } else if (widowLayoutStyle === 'center') {\n // Center widows\n centerOffset = (this.width - itemWidthSum) / 2;\n this.items.forEach(function (item) {\n item.left += centerOffset + this.spacing;\n }, this);\n }\n },\n\n /**\n * Force completion of row layout with current items.\n *\n * @method forceComplete\n * @param fitToWidth {Boolean} Stretch current items to fill the row width.\n * This will likely result in padding.\n * @param fitToWidth {Number}\n */\n forceComplete: function forceComplete(fitToWidth, rowHeight) {\n // TODO Handle fitting to width\n // var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n // \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n // \t\treturn sum + item.aspectRatio;\n // \t}, 0);\n if (typeof rowHeight === 'number') {\n this.completeLayout(rowHeight, this.widowLayoutStyle);\n } else {\n // Complete using target row height.\n this.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n }\n },\n\n /**\n * Return layout data for items within row.\n * Note: returns actual list, not a copy.\n *\n * @method getItems\n * @return Layout data for items within row.\n */\n getItems: function getItems() {\n return this.items;\n }\n};\n\n/***/ })\n/******/ ]);"]}
1
+ {"version":3,"sources":["fjGallery.js"],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","lite_ready__WEBPACK_IMPORTED_MODULE_0__","lite_ready__WEBPACK_IMPORTED_MODULE_0___default","global__WEBPACK_IMPORTED_MODULE_1__","_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__","_typeof","obj","iterator","constructor","oldInit","oldDestroy","jQueryPlugin","oldJqPlugin","oldPlugin","fjGallery","noConflict","this","init","jQcontainer","$container","data","destroy","removeData","args","arguments","Array","unshift","res","apply","fn","document","querySelectorAll","callback","readyState","attachEvent","addEventListener","global","win","window","self","g","Function","e","throttle_debounce__WEBPACK_IMPORTED_MODULE_0__","raf_schd__WEBPACK_IMPORTED_MODULE_1__","merge__WEBPACK_IMPORTED_MODULE_2__","merge__WEBPACK_IMPORTED_MODULE_2___default","lite_ready__WEBPACK_IMPORTED_MODULE_3__","lite_ready__WEBPACK_IMPORTED_MODULE_3___default","justified_layout__WEBPACK_IMPORTED_MODULE_4__","justified_layout__WEBPACK_IMPORTED_MODULE_4___default","global__WEBPACK_IMPORTED_MODULE_5__","_defineProperties","target","props","length","descriptor","configurable","writable","fjGalleryList","updateFjGallery","requestAnimationFrame","forEach","item","resize","plugin","items","HTMLElement","nodeType","nodeName","ret","options","slice","len","k","instanceID","container","userOptions","instance","Constructor","TypeError","_classCallCheck","images","defaults","itemSelector","imageSelector","gutter","rowHeight","rowHeightTolerance","resizeThrottle","isRtl","css","onInit","onDestroy","onAppendImages","onBeforeJustify","onJustify","dataOptions","dataset","pureDataOptions","keys","loweCaseOption","substr","toLowerCase","pureOptions","justify","protoProps","staticProps","el","styles","getComputedStyle","getPropertyValue","transform","style","push","splice","appendImages","addToFjGalleryList","$images","jQuery","$item","$image","fjGalleryImage","querySelector","width","parseFloat","getAttribute","height","loadSizes","img","cb","interval","hasSize","addedListeners","removeListeners","itemData","onHasSize","naturalWidth","naturalHeight","clearInterval","onLoaded","onError","checkSize","dimensions","removeEventListener","setInterval","justifyArray","justifiedData","containerWidth","getBoundingClientRect","containerPadding","top","right","bottom","left","boxSpacing","targetRowHeight","targetRowHeightTolerance","concat","containerHeight","position","boxes","removeFromFjGalleryList","val","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","throttle","delay","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","Date","now","exec","undefined","setTimeout","cancel","debounce","atBegin","wrapperFn","lastArgs","frameId","cancelAnimationFrame","merge","clone","recursive","argv","result","size","typeOf","index","sitem","Public","merge_recursive","base","extend","input","toString","isNode","output","type","webpackPolyfill","deprecate","paths","children","Row","createNewRow","layoutConfig","layoutData","isBreakoutRow","fullWidthBreakoutRowCadence","_rows","_containerHeight","spacing","horizontal","edgeCaseMinRowHeight","edgeCaseMaxRowHeight","rightToLeft","widowLayoutStyle","addRow","row","_layoutItems","getItems","vertical","config","itemLayoutData","itemAdded","currentRow","nextToLastRowHeight","laidOutItems","maxNumRows","Number","POSITIVE_INFINITY","forceAspectRatio","showWidows","isNaN","_awakeItems","_inViewportItems","_leadingOrphans","_trailingOrphans","_orphans","_widowCount","map","aspectRatio","forcedAspectRatio","some","Error","addItem","isLayoutComplete","forceComplete","widowCount","params","minAspectRatio","maxAspectRatio","previousRowWidthWithoutSpacing","previousAspectRatio","previousTargetAspectRatio","newItems","rowWidthWithoutSpacing","newAspectRatio","reduce","sum","targetAspectRatio","completeLayout","Math","abs","newHeight","clampedToNativeRatio","clampedHeight","errorWidthPerItem","roundedCumulativeErrors","centerOffset","itemWidthSum","indexOf","max","min","round","fitToWidth"],"mappings":"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","file":"fjGallery.min.js","sourcesContent":["/*!\n * Name : Flickr's Justified Gallery [fjGallery]\n * Version : 1.0.5\n * Author : nK <https://nkdev.info>\n * GitHub : https://github.com/nk-o/flickr-justified-gallery\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n // no conflict\n\nvar oldPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery;\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nglobal__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery = oldPlugin;\n return this;\n}; // jQuery support\n\n\nif (typeof global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"] !== 'undefined') {\n // add data to jQuery .data('fjGallery')\n var oldInit = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.init = function () {\n this.jQcontainer = Object(global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"])(this.$container);\n this.jQcontainer.data('fjGallery', this);\n\n if (oldInit) {\n oldInit.call(this);\n }\n }; // remove data from jQuery .data('fjGallery')\n\n\n var oldDestroy = global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"window\"].fjGallery.constructor.prototype.destroy = function () {\n if (this.jQcontainer) {\n this.jQcontainer.removeData('fjGallery');\n }\n\n if (oldDestroy) {\n oldDestroy.call(this);\n }\n };\n\n var jQueryPlugin = function jQueryPlugin() {\n var args = arguments || [];\n Array.prototype.unshift.call(args, this);\n var res = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].apply(global__WEBPACK_IMPORTED_MODULE_1__[\"window\"], args);\n return _typeof(res) !== 'object' ? res : this;\n };\n\n jQueryPlugin.constructor = _fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"].constructor; // no conflict\n\n var oldJqPlugin = global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery;\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = jQueryPlugin;\n\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery.noConflict = function () {\n global__WEBPACK_IMPORTED_MODULE_1__[\"jQuery\"].fn.fjGallery = oldJqPlugin;\n return this;\n };\n} // .fj-gallery initialization\n\n\nlite_ready__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n Object(_fjGallery_esm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(document.querySelectorAll('.fj-gallery'));\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (callback) {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // Already ready or interactive, execute callback\n callback.call();\n } else if (document.attachEvent) {\n // Old browsers\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'interactive') callback.call();\n });\n } else if (document.addEventListener) {\n // Modern browsers\n document.addEventListener('DOMContentLoaded', callback);\n }\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\") {\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var throttle_debounce__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var raf_schd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n/* harmony import */ var merge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(merge__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);\n/* harmony import */ var lite_ready__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lite_ready__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);\n/* harmony import */ var justified_layout__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(justified_layout__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);\n/* harmony import */ var global__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(global__WEBPACK_IMPORTED_MODULE_5__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n // list with all fjGallery instances\n// need to render all in one scroll/resize event\n\nvar fjGalleryList = [];\n\nfunction updateFjGallery() {\n global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].requestAnimationFrame(function () {\n fjGalleryList.forEach(function (item) {\n item.resize();\n });\n });\n}\n\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('resize', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('orientationchange', updateFjGallery);\nglobal__WEBPACK_IMPORTED_MODULE_5__[\"window\"].addEventListener('load', updateFjGallery);\nlite_ready__WEBPACK_IMPORTED_MODULE_3___default()(function () {\n updateFjGallery();\n}); // get image dimensions\n// thanks https://gist.github.com/dimsemenov/5382856\n\nfunction getImgDimensions(img, cb) {\n var interval;\n var hasSize = false;\n var addedListeners = false;\n\n var onHasSize = function onHasSize() {\n if (hasSize) {\n cb(hasSize);\n return;\n }\n\n hasSize = {\n width: img.naturalWidth,\n height: img.naturalHeight\n };\n cb(hasSize);\n clearInterval(interval);\n\n if (addedListeners) {\n // eslint-disable-next-line no-use-before-define\n removeListeners();\n }\n };\n\n var onLoaded = function onLoaded() {\n onHasSize();\n };\n\n var onError = function onError() {\n onHasSize();\n };\n\n var checkSize = function checkSize() {\n if (img.naturalWidth > 0) {\n onHasSize();\n }\n };\n\n var addListeners = function addListeners() {\n addedListeners = true;\n img.addEventListener('load', onLoaded);\n img.addEventListener('error', onError);\n };\n\n var removeListeners = function removeListeners() {\n addedListeners = false;\n img.removeEventListener('load', onLoaded);\n img.removeEventListener('error', onError);\n };\n\n checkSize();\n\n if (!hasSize) {\n addListeners();\n interval = setInterval(checkSize, 100);\n }\n}\n\nvar instanceID = 0; // fjGallery class\n\nvar fjGallery = /*#__PURE__*/function () {\n function fjGallery(container, userOptions) {\n _classCallCheck(this, fjGallery);\n\n var self = this;\n self.instanceID = instanceID++;\n self.$container = container;\n self.images = [];\n self.defaults = {\n itemSelector: '.fj-gallery-item',\n imageSelector: 'img',\n gutter: 10,\n // supports object like `{ horizontal: 10, vertical: 10 }`.\n rowHeight: 320,\n rowHeightTolerance: 0.25,\n // [0, 1]\n resizeThrottle: 200,\n isRtl: self.css(self.$container, 'direction') === 'rtl',\n // events\n onInit: null,\n // function() {}\n onDestroy: null,\n // function() {}\n onAppendImages: null,\n // function() {}\n onBeforeJustify: null,\n // function() {}\n onJustify: null // function() {}\n\n }; // prepare data-options\n\n var dataOptions = self.$container.dataset || {};\n var pureDataOptions = {};\n Object.keys(dataOptions).forEach(function (key) {\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options); // throttle for resize\n\n self.resize = Object(throttle_debounce__WEBPACK_IMPORTED_MODULE_0__[\"throttle\"])(self.options.resizeThrottle, self.resize);\n self.justify = Object(raf_schd__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(self.justify.bind(self));\n self.init();\n } // add styles to element\n\n\n _createClass(fjGallery, [{\n key: \"css\",\n value: function css(el, styles) {\n if (typeof styles === 'string') {\n return global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].getComputedStyle(el).getPropertyValue(styles);\n } // add transform property with vendor prefix\n\n\n if (styles.transform) {\n styles['-webkit-transform'] = styles.transform;\n }\n\n Object.keys(styles).forEach(function (key) {\n el.style[key] = styles[key];\n });\n return el;\n } // add to fjGallery instances list\n\n }, {\n key: \"addToFjGalleryList\",\n value: function addToFjGalleryList() {\n fjGalleryList.push(this);\n updateFjGallery();\n } // remove from fjGallery instances list\n\n }, {\n key: \"removeFromFjGalleryList\",\n value: function removeFromFjGalleryList() {\n var self = this;\n fjGalleryList.forEach(function (item, key) {\n if (item.instanceID === self.instanceID) {\n fjGalleryList.splice(key, 1);\n }\n });\n }\n }, {\n key: \"init\",\n value: function init() {\n var self = this;\n self.appendImages(self.$container.querySelectorAll(self.options.itemSelector));\n self.addToFjGalleryList(); // call onInit event\n\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n } // append images\n\n }, {\n key: \"appendImages\",\n value: function appendImages($images) {\n var self = this; // check if jQuery\n\n if (global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery && $images instanceof global__WEBPACK_IMPORTED_MODULE_5__[\"window\"].jQuery) {\n $images = $images.get();\n }\n\n if (!$images || !$images.length) {\n return;\n }\n\n $images.forEach(function ($item) {\n // if $images is jQuery, for some reason in this array there is undefined item, that not a DOM,\n // so we need to check for $item.querySelector.\n if ($item && !$item.fjGalleryImage && $item.querySelector) {\n var $image = $item.querySelector(self.options.imageSelector);\n\n if ($image) {\n $item.fjGalleryImage = self;\n var data = {\n $item: $item,\n $image: $image,\n width: parseFloat($image.getAttribute('width')) || false,\n height: parseFloat($image.getAttribute('height')) || false,\n loadSizes: function loadSizes() {\n var itemData = this;\n getImgDimensions($image, function (dimensions) {\n if (itemData.width !== dimensions.width || itemData.height !== dimensions.height) {\n itemData.width = dimensions.width;\n itemData.height = dimensions.height;\n self.resize();\n }\n });\n }\n };\n data.loadSizes();\n self.images.push(data);\n }\n }\n }); // call onAppendImages event\n\n if (self.options.onAppendImages) {\n self.options.onAppendImages.call(self, [$images]);\n }\n\n self.justify();\n } // justify images\n\n }, {\n key: \"justify\",\n value: function justify() {\n var self = this;\n var justifyArray = []; // call onBeforeJustify event\n\n if (self.options.onBeforeJustify) {\n self.options.onBeforeJustify.call(self);\n }\n\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n justifyArray.push(data.width / data.height);\n }\n });\n var justifiedData = justified_layout__WEBPACK_IMPORTED_MODULE_4___default()(justifyArray, {\n containerWidth: self.$container.getBoundingClientRect().width,\n containerPadding: {\n top: parseFloat(self.css(self.$container, 'padding-top')) || 0,\n right: parseFloat(self.css(self.$container, 'padding-right')) || 0,\n bottom: parseFloat(self.css(self.$container, 'padding-bottom')) || 0,\n left: parseFloat(self.css(self.$container, 'padding-left')) || 0\n },\n boxSpacing: self.options.gutter,\n targetRowHeight: self.options.rowHeight,\n targetRowHeightTolerance: self.options.rowHeightTolerance\n });\n self.css(self.$container, {\n height: \"\".concat(justifiedData.containerHeight, \"px\")\n });\n var i = 0;\n self.images.forEach(function (data) {\n if (data.width && data.height) {\n self.css(data.$item, {\n position: 'absolute',\n transform: \"translateX(\".concat((self.options.isRtl ? -1 : 1) * justifiedData.boxes[i].left, \"px) translateY(\").concat(justifiedData.boxes[i].top, \"px) translateZ(0)\"),\n width: \"\".concat(justifiedData.boxes[i].width, \"px\"),\n height: \"\".concat(justifiedData.boxes[i].height, \"px\")\n });\n i++;\n }\n }); // call onJustify event\n\n if (self.options.onJustify) {\n self.options.onJustify.call(self);\n }\n } // update options and resize gallery items\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(options) {\n var self = this;\n self.options = merge__WEBPACK_IMPORTED_MODULE_2___default()({}, self.options, options);\n self.justify();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var self = this;\n self.removeFromFjGalleryList(); // call onDestroy event\n\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n } // remove styles.\n\n\n self.css(self.$container, {\n height: ''\n });\n self.images.forEach(function (data) {\n self.css(data.$item, {\n position: '',\n transform: '',\n width: '',\n height: ''\n });\n }); // delete fjGalleryImage instance from images\n\n self.images.forEach(function (val) {\n delete val.$item.fjGalleryImage;\n }); // delete fjGallery instance from container\n\n delete self.$container.fjGallery;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n var self = this;\n self.justify();\n }\n }]);\n\n return fjGallery;\n}(); // global definition\n\n\nvar plugin = function plugin(items) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if ((typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && _typeof(items) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n items = [items];\n }\n\n var options = arguments[1];\n var args = Array.prototype.slice.call(arguments, 2);\n var len = items.length;\n var k = 0;\n var ret;\n\n for (k; k < len; k++) {\n if (_typeof(options) === 'object' || typeof options === 'undefined') {\n if (!items[k].fjGallery) {\n // eslint-disable-next-line new-cap\n items[k].fjGallery = new fjGallery(items[k], options);\n }\n } else if (items[k].fjGallery) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].fjGallery[options].apply(items[k].fjGallery, args);\n }\n\n if (typeof ret !== 'undefined') {\n return ret;\n }\n }\n\n return items;\n};\n\nplugin.constructor = fjGallery;\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugin);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);\n})(this, function (exports) {\n 'use strict';\n /* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n /**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\n\n function throttle(delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n }\n /* eslint-disable no-undefined */\n\n /**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\n\n function debounce(delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n }\n\n exports.debounce = debounce;\n exports.throttle = throttle;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (rafSchd);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\r\n * @name JavaScript/NodeJS Merge v1.2.1\r\n * @author yeikos\r\n * @repository https://github.com/yeikos/js.merge\r\n\r\n * Copyright 2014 yeikos - MIT license\r\n * https://raw.github.com/yeikos/js.merge/master/LICENSE\r\n */\n;\n\n(function (isNode) {\n /**\r\n * Merge one or more objects \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n var Public = function Public(clone) {\n return merge(clone === true, false, arguments);\n },\n publicName = 'merge';\n /**\r\n * Merge two or more objects recursively \r\n * @param bool? clone\r\n * @param mixed,... arguments\r\n * @return object\r\n */\n\n\n Public.recursive = function (clone) {\n return merge(clone === true, true, arguments);\n };\n /**\r\n * Clone the input removing any reference\r\n * @param mixed input\r\n * @return mixed\r\n */\n\n\n Public.clone = function (input) {\n var output = input,\n type = typeOf(input),\n index,\n size;\n\n if (type === 'array') {\n output = [];\n size = input.length;\n\n for (index = 0; index < size; ++index) {\n output[index] = Public.clone(input[index]);\n }\n } else if (type === 'object') {\n output = {};\n\n for (index in input) {\n output[index] = Public.clone(input[index]);\n }\n }\n\n return output;\n };\n /**\r\n * Merge two objects recursively\r\n * @param mixed input\r\n * @param mixed extend\r\n * @return mixed\r\n */\n\n\n function merge_recursive(base, extend) {\n if (typeOf(base) !== 'object') return extend;\n\n for (var key in extend) {\n if (typeOf(base[key]) === 'object' && typeOf(extend[key]) === 'object') {\n base[key] = merge_recursive(base[key], extend[key]);\n } else {\n base[key] = extend[key];\n }\n }\n\n return base;\n }\n /**\r\n * Merge two or more objects\r\n * @param bool clone\r\n * @param bool recursive\r\n * @param array argv\r\n * @return object\r\n */\n\n\n function merge(clone, recursive, argv) {\n var result = argv[0],\n size = argv.length;\n if (clone || typeOf(result) !== 'object') result = {};\n\n for (var index = 0; index < size; ++index) {\n var item = argv[index],\n type = typeOf(item);\n if (type !== 'object') continue;\n\n for (var key in item) {\n if (key === '__proto__') continue;\n var sitem = clone ? Public.clone(item[key]) : item[key];\n\n if (recursive) {\n result[key] = merge_recursive(result[key], sitem);\n } else {\n result[key] = sitem;\n }\n }\n }\n\n return result;\n }\n /**\r\n * Get type of variable\r\n * @param mixed input\r\n * @return string\r\n *\r\n * @see http://jsperf.com/typeofvar\r\n */\n\n\n function typeOf(input) {\n return {}.toString.call(input).slice(8, -1).toLowerCase();\n }\n\n if (isNode) {\n module.exports = Public;\n } else {\n window[publicName] = Public;\n }\n})(( false ? undefined : _typeof(module)) === 'object' && module && _typeof(module.exports) === 'object' && module.exports);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9)(module)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\n\n\nvar merge = __webpack_require__(8),\n Row = __webpack_require__(11);\n/**\n * Create a new, empty row.\n *\n * @method createNewRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @return A new, empty row of the type specified by this layout.\n */\n\n\nfunction createNewRow(layoutConfig, layoutData) {\n var isBreakoutRow; // Work out if this is a full width breakout row\n\n if (layoutConfig.fullWidthBreakoutRowCadence !== false) {\n if ((layoutData._rows.length + 1) % layoutConfig.fullWidthBreakoutRowCadence === 0) {\n isBreakoutRow = true;\n }\n }\n\n return new Row({\n top: layoutData._containerHeight,\n left: layoutConfig.containerPadding.left,\n width: layoutConfig.containerWidth - layoutConfig.containerPadding.left - layoutConfig.containerPadding.right,\n spacing: layoutConfig.boxSpacing.horizontal,\n targetRowHeight: layoutConfig.targetRowHeight,\n targetRowHeightTolerance: layoutConfig.targetRowHeightTolerance,\n edgeCaseMinRowHeight: 0.5 * layoutConfig.targetRowHeight,\n edgeCaseMaxRowHeight: 2 * layoutConfig.targetRowHeight,\n rightToLeft: false,\n isBreakoutRow: isBreakoutRow,\n widowLayoutStyle: layoutConfig.widowLayoutStyle\n });\n}\n/**\n * Add a completed row to the layout.\n * Note: the row must have already been completed.\n *\n * @method addRow\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param row {Row} The row to add.\n * @return {Array} Each item added to the row.\n */\n\n\nfunction addRow(layoutConfig, layoutData, row) {\n layoutData._rows.push(row);\n\n layoutData._layoutItems = layoutData._layoutItems.concat(row.getItems()); // Increment the container height\n\n layoutData._containerHeight += row.height + layoutConfig.boxSpacing.vertical;\n return row.items;\n}\n/**\n * Calculate the current layout for all items in the list that require layout.\n * \"Layout\" means geometry: position within container and size\n *\n * @method computeLayout\n * @param layoutConfig {Object} The layout configuration\n * @param layoutData {Object} The current state of the layout\n * @param itemLayoutData {Array} Array of items to lay out, with data required to lay out each item\n * @return {Object} The newly-calculated layout, containing the new container height, and lists of layout items\n */\n\n\nfunction computeLayout(layoutConfig, layoutData, itemLayoutData) {\n var laidOutItems = [],\n itemAdded,\n currentRow,\n nextToLastRowHeight; // Apply forced aspect ratio if specified, and set a flag.\n\n if (layoutConfig.forceAspectRatio) {\n itemLayoutData.forEach(function (itemData) {\n itemData.forcedAspectRatio = true;\n itemData.aspectRatio = layoutConfig.forceAspectRatio;\n });\n } // Loop through the items\n\n\n itemLayoutData.some(function (itemData, i) {\n if (isNaN(itemData.aspectRatio)) {\n throw new Error(\"Item \" + i + \" has an invalid aspect ratio\");\n } // If not currently building up a row, make a new one.\n\n\n if (!currentRow) {\n currentRow = createNewRow(layoutConfig, layoutData);\n } // Attempt to add item to the current row.\n\n\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // Row is filled; add it and start a new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData); // Item was rejected; add it to its own row\n\n if (!itemAdded) {\n itemAdded = currentRow.addItem(itemData);\n\n if (currentRow.isLayoutComplete()) {\n // If the rejected item fills a row on its own, add the row and start another new one\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n\n if (layoutData._rows.length >= layoutConfig.maxNumRows) {\n currentRow = null;\n return true;\n }\n\n currentRow = createNewRow(layoutConfig, layoutData);\n }\n }\n }\n }); // Handle any leftover content (orphans) depending on where they lie\n // in this layout update, and in the total content set.\n\n if (currentRow && currentRow.getItems().length && layoutConfig.showWidows) {\n // Last page of all content or orphan suppression is suppressed; lay out orphans.\n if (layoutData._rows.length) {\n // Only Match previous row's height if it exists and it isn't a breakout row\n if (layoutData._rows[layoutData._rows.length - 1].isBreakoutRow) {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].targetRowHeight;\n } else {\n nextToLastRowHeight = layoutData._rows[layoutData._rows.length - 1].height;\n }\n\n currentRow.forceComplete(false, nextToLastRowHeight);\n } else {\n // ...else use target height if there is no other row height to reference.\n currentRow.forceComplete(false);\n }\n\n laidOutItems = laidOutItems.concat(addRow(layoutConfig, layoutData, currentRow));\n layoutConfig._widowCount = currentRow.getItems().length;\n } // We need to clean up the bottom container padding\n // First remove the height added for box spacing\n\n\n layoutData._containerHeight = layoutData._containerHeight - layoutConfig.boxSpacing.vertical; // Then add our bottom container padding\n\n layoutData._containerHeight = layoutData._containerHeight + layoutConfig.containerPadding.bottom;\n return {\n containerHeight: layoutData._containerHeight,\n widowCount: layoutConfig._widowCount,\n boxes: layoutData._layoutItems\n };\n}\n/**\n * Takes in a bunch of box data and config. Returns\n * geometry to lay them out in a justified view.\n *\n * @method covertSizesToAspectRatios\n * @param sizes {Array} Array of objects with widths and heights\n * @return {Array} A list of aspect ratios\n */\n\n\nmodule.exports = function (input, config) {\n var layoutConfig = {};\n var layoutData = {}; // Defaults\n\n var defaults = {\n containerWidth: 1060,\n containerPadding: 10,\n boxSpacing: 10,\n targetRowHeight: 320,\n targetRowHeightTolerance: 0.25,\n maxNumRows: Number.POSITIVE_INFINITY,\n forceAspectRatio: false,\n showWidows: true,\n fullWidthBreakoutRowCadence: false,\n widowLayoutStyle: 'left'\n };\n var containerPadding = {};\n var boxSpacing = {};\n config = config || {}; // Merge defaults and config passed in\n\n layoutConfig = merge(defaults, config); // Sort out padding and spacing values\n\n containerPadding.top = !isNaN(parseFloat(layoutConfig.containerPadding.top)) ? layoutConfig.containerPadding.top : layoutConfig.containerPadding;\n containerPadding.right = !isNaN(parseFloat(layoutConfig.containerPadding.right)) ? layoutConfig.containerPadding.right : layoutConfig.containerPadding;\n containerPadding.bottom = !isNaN(parseFloat(layoutConfig.containerPadding.bottom)) ? layoutConfig.containerPadding.bottom : layoutConfig.containerPadding;\n containerPadding.left = !isNaN(parseFloat(layoutConfig.containerPadding.left)) ? layoutConfig.containerPadding.left : layoutConfig.containerPadding;\n boxSpacing.horizontal = !isNaN(parseFloat(layoutConfig.boxSpacing.horizontal)) ? layoutConfig.boxSpacing.horizontal : layoutConfig.boxSpacing;\n boxSpacing.vertical = !isNaN(parseFloat(layoutConfig.boxSpacing.vertical)) ? layoutConfig.boxSpacing.vertical : layoutConfig.boxSpacing;\n layoutConfig.containerPadding = containerPadding;\n layoutConfig.boxSpacing = boxSpacing; // Local\n\n layoutData._layoutItems = [];\n layoutData._awakeItems = [];\n layoutData._inViewportItems = [];\n layoutData._leadingOrphans = [];\n layoutData._trailingOrphans = [];\n layoutData._containerHeight = layoutConfig.containerPadding.top;\n layoutData._rows = [];\n layoutData._orphans = [];\n layoutConfig._widowCount = 0; // Convert widths and heights to aspect ratios if we need to\n\n return computeLayout(layoutConfig, layoutData, input.map(function (item) {\n if (item.width && item.height) {\n return {\n aspectRatio: item.width / item.height\n };\n } else {\n return {\n aspectRatio: item\n };\n }\n }));\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*!\n * Copyright 2019 SmugMug, Inc.\n * Licensed under the terms of the MIT license. Please see LICENSE file in the project root for terms.\n * @license\n */\nvar merge = __webpack_require__(8);\n/**\n * Row\n * Wrapper for each row in a justified layout.\n * Stores relevant values and provides methods for calculating layout of individual rows.\n *\n * @param {Object} layoutConfig - The same as that passed\n * @param {Object} Initialization parameters. The following are all required:\n * @param params.top {Number} Top of row, relative to container\n * @param params.left {Number} Left side of row relative to container (equal to container left padding)\n * @param params.width {Number} Width of row, not including container padding\n * @param params.spacing {Number} Horizontal spacing between items\n * @param params.targetRowHeight {Number} Layout algorithm will aim for this row height\n * @param params.targetRowHeightTolerance {Number} Row heights may vary +/- (`targetRowHeight` x `targetRowHeightTolerance`)\n * @param params.edgeCaseMinRowHeight {Number} Absolute minimum row height for edge cases that cannot be resolved within tolerance.\n * @param params.edgeCaseMaxRowHeight {Number} Absolute maximum row height for edge cases that cannot be resolved within tolerance.\n * @param params.isBreakoutRow {Boolean} Is this row in particular one of those breakout rows? Always false if it's not that kind of photo list\n * @param params.widowLayoutStyle {String} If widows are visible, how should they be laid out?\n * @constructor\n */\n\n\nvar Row = module.exports = function (params) {\n // Top of row, relative to container\n this.top = params.top; // Left side of row relative to container (equal to container left padding)\n\n this.left = params.left; // Width of row, not including container padding\n\n this.width = params.width; // Horizontal spacing between items\n\n this.spacing = params.spacing; // Row height calculation values\n\n this.targetRowHeight = params.targetRowHeight;\n this.targetRowHeightTolerance = params.targetRowHeightTolerance;\n this.minAspectRatio = this.width / params.targetRowHeight * (1 - params.targetRowHeightTolerance);\n this.maxAspectRatio = this.width / params.targetRowHeight * (1 + params.targetRowHeightTolerance); // Edge case row height minimum/maximum\n\n this.edgeCaseMinRowHeight = params.edgeCaseMinRowHeight;\n this.edgeCaseMaxRowHeight = params.edgeCaseMaxRowHeight; // Widow layout direction\n\n this.widowLayoutStyle = params.widowLayoutStyle; // Full width breakout rows\n\n this.isBreakoutRow = params.isBreakoutRow; // Store layout data for each item in row\n\n this.items = []; // Height remains at 0 until it's been calculated\n\n this.height = 0;\n};\n\nRow.prototype = {\n /**\n * Attempt to add a single item to the row.\n * This is the heart of the justified algorithm.\n * This method is direction-agnostic; it deals only with sizes, not positions.\n *\n * If the item fits in the row, without pushing row height beyond min/max tolerance,\n * the item is added and the method returns true.\n *\n * If the item leaves row height too high, there may be room to scale it down and add another item.\n * In this case, the item is added and the method returns true, but the row is incomplete.\n *\n * If the item leaves row height too short, there are too many items to fit within tolerance.\n * The method will either accept or reject the new item, favoring the resulting row height closest to within tolerance.\n * If the item is rejected, left/right padding will be required to fit the row height within tolerance;\n * if the item is accepted, top/bottom cropping will be required to fit the row height within tolerance.\n *\n * @method addItem\n * @param itemData {Object} Item layout data, containing item aspect ratio.\n * @return {Boolean} True if successfully added; false if rejected.\n */\n addItem: function addItem(itemData) {\n var newItems = this.items.concat(itemData),\n // Calculate aspect ratios for items only; exclude spacing\n rowWidthWithoutSpacing = this.width - (newItems.length - 1) * this.spacing,\n newAspectRatio = newItems.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0),\n targetAspectRatio = rowWidthWithoutSpacing / this.targetRowHeight,\n previousRowWidthWithoutSpacing,\n previousAspectRatio,\n previousTargetAspectRatio; // Handle big full-width breakout photos if we're doing them\n\n if (this.isBreakoutRow) {\n // Only do it if there's no other items in this row\n if (this.items.length === 0) {\n // Only go full width if this photo is a square or landscape\n if (itemData.aspectRatio >= 1) {\n // Close out the row with a full width photo\n this.items.push(itemData);\n this.completeLayout(rowWidthWithoutSpacing / itemData.aspectRatio, 'justify');\n return true;\n }\n }\n }\n\n if (newAspectRatio < this.minAspectRatio) {\n // New aspect ratio is too narrow / scaled row height is too tall.\n // Accept this item and leave row open for more items.\n this.items.push(merge(itemData));\n return true;\n } else if (newAspectRatio > this.maxAspectRatio) {\n // New aspect ratio is too wide / scaled row height will be too short.\n // Accept item if the resulting aspect ratio is closer to target than it would be without the item.\n // NOTE: Any row that falls into this block will require cropping/padding on individual items.\n if (this.items.length === 0) {\n // When there are no existing items, force acceptance of the new item and complete the layout.\n // This is the pano special case.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n } // Calculate width/aspect ratio for row before adding new item\n\n\n previousRowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing;\n previousAspectRatio = this.items.reduce(function (sum, item) {\n return sum + item.aspectRatio;\n }, 0);\n previousTargetAspectRatio = previousRowWidthWithoutSpacing / this.targetRowHeight;\n\n if (Math.abs(newAspectRatio - targetAspectRatio) > Math.abs(previousAspectRatio - previousTargetAspectRatio)) {\n // Row with new item is us farther away from target than row without; complete layout and reject item.\n this.completeLayout(previousRowWidthWithoutSpacing / previousAspectRatio, 'justify');\n return false;\n } else {\n // Row with new item is us closer to target than row without;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n } else {\n // New aspect ratio / scaled row height is within tolerance;\n // accept the new item and complete the row layout.\n this.items.push(merge(itemData));\n this.completeLayout(rowWidthWithoutSpacing / newAspectRatio, 'justify');\n return true;\n }\n },\n\n /**\n * Check if a row has completed its layout.\n *\n * @method isLayoutComplete\n * @return {Boolean} True if complete; false if not.\n */\n isLayoutComplete: function isLayoutComplete() {\n return this.height > 0;\n },\n\n /**\n * Set row height and compute item geometry from that height.\n * Will justify items within the row unless instructed not to.\n *\n * @method completeLayout\n * @param newHeight {Number} Set row height to this value.\n * @param widowLayoutStyle {String} How should widows display? Supported: left | justify | center\n */\n completeLayout: function completeLayout(newHeight, widowLayoutStyle) {\n var itemWidthSum = this.left,\n rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n clampedToNativeRatio,\n clampedHeight,\n errorWidthPerItem,\n roundedCumulativeErrors,\n singleItemGeometry,\n centerOffset; // Justify unless explicitly specified otherwise.\n\n if (typeof widowLayoutStyle === 'undefined' || ['justify', 'center', 'left'].indexOf(widowLayoutStyle) < 0) {\n widowLayoutStyle = 'left';\n } // Clamp row height to edge case minimum/maximum.\n\n\n clampedHeight = Math.max(this.edgeCaseMinRowHeight, Math.min(newHeight, this.edgeCaseMaxRowHeight));\n\n if (newHeight !== clampedHeight) {\n // If row height was clamped, the resulting row/item aspect ratio will be off,\n // so force it to fit the width (recalculate aspectRatio to match clamped height).\n // NOTE: this will result in cropping/padding commensurate to the amount of clamping.\n this.height = clampedHeight;\n clampedToNativeRatio = rowWidthWithoutSpacing / clampedHeight / (rowWidthWithoutSpacing / newHeight);\n } else {\n // If not clamped, leave ratio at 1.0.\n this.height = newHeight;\n clampedToNativeRatio = 1.0;\n } // Compute item geometry based on newHeight.\n\n\n this.items.forEach(function (item) {\n item.top = this.top;\n item.width = item.aspectRatio * this.height * clampedToNativeRatio;\n item.height = this.height; // Left-to-right.\n // TODO right to left\n // item.left = this.width - itemWidthSum - item.width;\n\n item.left = itemWidthSum; // Increment width.\n\n itemWidthSum += item.width + this.spacing;\n }, this); // If specified, ensure items fill row and distribute error\n // caused by rounding width and height across all items.\n\n if (widowLayoutStyle === 'justify') {\n itemWidthSum -= this.spacing + this.left;\n errorWidthPerItem = (itemWidthSum - this.width) / this.items.length;\n roundedCumulativeErrors = this.items.map(function (item, i) {\n return Math.round((i + 1) * errorWidthPerItem);\n });\n\n if (this.items.length === 1) {\n // For rows with only one item, adjust item width to fill row.\n singleItemGeometry = this.items[0];\n singleItemGeometry.width -= Math.round(errorWidthPerItem);\n } else {\n // For rows with multiple items, adjust item width and shift items to fill the row,\n // while maintaining equal spacing between items in the row.\n this.items.forEach(function (item, i) {\n if (i > 0) {\n item.left -= roundedCumulativeErrors[i - 1];\n item.width -= roundedCumulativeErrors[i] - roundedCumulativeErrors[i - 1];\n } else {\n item.width -= roundedCumulativeErrors[i];\n }\n });\n }\n } else if (widowLayoutStyle === 'center') {\n // Center widows\n centerOffset = (this.width - itemWidthSum) / 2;\n this.items.forEach(function (item) {\n item.left += centerOffset + this.spacing;\n }, this);\n }\n },\n\n /**\n * Force completion of row layout with current items.\n *\n * @method forceComplete\n * @param fitToWidth {Boolean} Stretch current items to fill the row width.\n * This will likely result in padding.\n * @param fitToWidth {Number}\n */\n forceComplete: function forceComplete(fitToWidth, rowHeight) {\n // TODO Handle fitting to width\n // var rowWidthWithoutSpacing = this.width - (this.items.length - 1) * this.spacing,\n // \tcurrentAspectRatio = this.items.reduce(function (sum, item) {\n // \t\treturn sum + item.aspectRatio;\n // \t}, 0);\n if (typeof rowHeight === 'number') {\n this.completeLayout(rowHeight, this.widowLayoutStyle);\n } else {\n // Complete using target row height.\n this.completeLayout(this.targetRowHeight, this.widowLayoutStyle);\n }\n },\n\n /**\n * Return layout data for items within row.\n * Note: returns actual list, not a copy.\n *\n * @method getItems\n * @return Layout data for items within row.\n */\n getItems: function getItems() {\n return this.items;\n }\n};\n\n/***/ })\n/******/ ]);"]}
assets/vendor/swiper-5-4-5/swiper.min.css ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Swiper 5.4.5
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: June 16, 2020
11
+ */
12
+
13
+ @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}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-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-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}: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(-1 * 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:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.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-container-horizontal>.swiper-pagination-bullets,.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:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-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-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-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%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-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-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
assets/vendor/swiper-5-4-5/swiper.min.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Swiper 5.4.5
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * http://swiperjs.com
5
+ *
6
+ * Copyright 2014-2020 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: June 16, 2020
11
+ */
12
+
13
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=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(i,s){void 0===i&&(i={}),void 0===s&&(s={}),Object.keys(s).forEach((function(a){void 0===i[a]?i[a]=s[a]:e(s[a])&&e(i[a])&&Object.keys(s[a]).length>0&&t(i[a],s[a])}))}var i="undefined"!=typeof document?document:{},s={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};t(i,s);var a="undefined"!=typeof window?window:{};t(a,{document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}}});var r=function(e){for(var t=0;t<e.length;t+=1)this[t]=e[t];return this.length=e.length,this};function n(e,t){var s=[],n=0;if(e&&!t&&e instanceof r)return e;if(e)if("string"==typeof e){var o,l,d=e.trim();if(d.indexOf("<")>=0&&d.indexOf(">")>=0){var h="div";for(0===d.indexOf("<li")&&(h="ul"),0===d.indexOf("<tr")&&(h="tbody"),0!==d.indexOf("<td")&&0!==d.indexOf("<th")||(h="tr"),0===d.indexOf("<tbody")&&(h="table"),0===d.indexOf("<option")&&(h="select"),(l=i.createElement(h)).innerHTML=d,n=0;n<l.childNodes.length;n+=1)s.push(l.childNodes[n])}else for(o=t||"#"!==e[0]||e.match(/[ .<>:~]/)?(t||i).querySelectorAll(e.trim()):[i.getElementById(e.trim().split("#")[1])],n=0;n<o.length;n+=1)o[n]&&s.push(o[n])}else if(e.nodeType||e===a||e===i)s.push(e);else if(e.length>0&&e[0].nodeType)for(n=0;n<e.length;n+=1)s.push(e[n]);return new r(s)}function o(e){for(var t=[],i=0;i<e.length;i+=1)-1===t.indexOf(e[i])&&t.push(e[i]);return t}n.fn=r.prototype,n.Class=r,n.Dom7=r;var l={addClass:function(e){if(void 0===e)return this;for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.add(t[i]);return this},removeClass:function(e){for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.remove(t[i]);return this},hasClass:function(e){return!!this[0]&&this[0].classList.contains(e)},toggleClass:function(e){for(var t=e.split(" "),i=0;i<t.length;i+=1)for(var s=0;s<this.length;s+=1)void 0!==this[s]&&void 0!==this[s].classList&&this[s].classList.toggle(t[i]);return this},attr:function(e,t){var i=arguments;if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var s=0;s<this.length;s+=1)if(2===i.length)this[s].setAttribute(e,t);else for(var a in e)this[s][a]=e[a],this[s].setAttribute(a,e[a]);return this},removeAttr:function(e){for(var t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},data:function(e,t){var i;if(void 0!==t){for(var s=0;s<this.length;s+=1)(i=this[s]).dom7ElementDataStorage||(i.dom7ElementDataStorage={}),i.dom7ElementDataStorage[e]=t;return this}if(i=this[0]){if(i.dom7ElementDataStorage&&e in i.dom7ElementDataStorage)return i.dom7ElementDataStorage[e];var a=i.getAttribute("data-"+e);return a||void 0}},transform:function(e){for(var t=0;t<this.length;t+=1){var i=this[t].style;i.webkitTransform=e,i.transform=e}return this},transition:function(e){"string"!=typeof e&&(e+="ms");for(var t=0;t<this.length;t+=1){var i=this[t].style;i.webkitTransitionDuration=e,i.transitionDuration=e}return this},on:function(){for(var e,t=[],i=arguments.length;i--;)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],o=t[3];function l(e){var t=e.target;if(t){var i=e.target.dom7EventData||[];if(i.indexOf(e)<0&&i.unshift(e),n(t).is(a))r.apply(t,i);else for(var s=n(t).parents(),o=0;o<s.length;o+=1)n(s[o]).is(a)&&r.apply(s[o],i)}}function d(e){var t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&(s=(e=t)[0],r=e[1],o=e[2],a=void 0),o||(o=!1);for(var h,p=s.split(" "),c=0;c<this.length;c+=1){var u=this[c];if(a)for(h=0;h<p.length;h+=1){var v=p[h];u.dom7LiveListeners||(u.dom7LiveListeners={}),u.dom7LiveListeners[v]||(u.dom7LiveListeners[v]=[]),u.dom7LiveListeners[v].push({listener:r,proxyListener:l}),u.addEventListener(v,l,o)}else for(h=0;h<p.length;h+=1){var f=p[h];u.dom7Listeners||(u.dom7Listeners={}),u.dom7Listeners[f]||(u.dom7Listeners[f]=[]),u.dom7Listeners[f].push({listener:r,proxyListener:d}),u.addEventListener(f,d,o)}}return this},off:function(){for(var e,t=[],i=arguments.length;i--;)t[i]=arguments[i];var s=t[0],a=t[1],r=t[2],n=t[3];"function"==typeof t[1]&&(s=(e=t)[0],r=e[1],n=e[2],a=void 0),n||(n=!1);for(var o=s.split(" "),l=0;l<o.length;l+=1)for(var d=o[l],h=0;h<this.length;h+=1){var p=this[h],c=void 0;if(!a&&p.dom7Listeners?c=p.dom7Listeners[d]:a&&p.dom7LiveListeners&&(c=p.dom7LiveListeners[d]),c&&c.length)for(var u=c.length-1;u>=0;u-=1){var v=c[u];r&&v.listener===r||r&&v.listener&&v.listener.dom7proxy&&v.listener.dom7proxy===r?(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1)):r||(p.removeEventListener(d,v.proxyListener,n),c.splice(u,1))}}return this},trigger:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var s=e[0].split(" "),r=e[1],n=0;n<s.length;n+=1)for(var o=s[n],l=0;l<this.length;l+=1){var d=this[l],h=void 0;try{h=new a.CustomEvent(o,{detail:r,bubbles:!0,cancelable:!0})}catch(e){(h=i.createEvent("Event")).initEvent(o,!0,!0),h.detail=r}d.dom7EventData=e.filter((function(e,t){return t>0})),d.dispatchEvent(h),d.dom7EventData=[],delete d.dom7EventData}return this},transitionEnd:function(e){var t,i=["webkitTransitionEnd","transitionend"],s=this;function a(r){if(r.target===this)for(e.call(this,r),t=0;t<i.length;t+=1)s.off(i[t],a)}if(e)for(t=0;t<i.length;t+=1)s.on(i[t],a);return this},outerWidth:function(e){if(this.length>0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){var 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){var e=this[0],t=e.getBoundingClientRect(),s=i.body,r=e.clientTop||s.clientTop||0,n=e.clientLeft||s.clientLeft||0,o=e===a?a.scrollY:e.scrollTop,l=e===a?a.scrollX:e.scrollLeft;return{top:t.top+o-r,left:t.left+l-n}}return null},css:function(e,t){var i;if(1===arguments.length){if("string"!=typeof e){for(i=0;i<this.length;i+=1)for(var s in e)this[i].style[s]=e[s];return this}if(this[0])return a.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(i=0;i<this.length;i+=1)this[i].style[e]=t;return this}return this},each:function(e){if(!e)return this;for(var t=0;t<this.length;t+=1)if(!1===e.call(this[t],t,this[t]))return this;return this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:void 0;for(var t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){var t,s,o=this[0];if(!o||void 0===e)return!1;if("string"==typeof e){if(o.matches)return o.matches(e);if(o.webkitMatchesSelector)return o.webkitMatchesSelector(e);if(o.msMatchesSelector)return o.msMatchesSelector(e);for(t=n(e),s=0;s<t.length;s+=1)if(t[s]===o)return!0;return!1}if(e===i)return o===i;if(e===a)return o===a;if(e.nodeType||e instanceof r){for(t=e.nodeType?[e]:e,s=0;s<t.length;s+=1)if(t[s]===o)return!0;return!1}return!1},index:function(){var e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;var t,i=this.length;return new r(e>i-1?[]:e<0?(t=i+e)<0?[]:[this[t]]:[this[e]])},append:function(){for(var e,t=[],s=arguments.length;s--;)t[s]=arguments[s];for(var a=0;a<t.length;a+=1){e=t[a];for(var n=0;n<this.length;n+=1)if("string"==typeof e){var o=i.createElement("div");for(o.innerHTML=e;o.firstChild;)this[n].appendChild(o.firstChild)}else if(e instanceof r)for(var l=0;l<e.length;l+=1)this[n].appendChild(e[l]);else this[n].appendChild(e)}return this},prepend:function(e){var t,s;for(t=0;t<this.length;t+=1)if("string"==typeof e){var a=i.createElement("div");for(a.innerHTML=e,s=a.childNodes.length-1;s>=0;s-=1)this[t].insertBefore(a.childNodes[s],this[t].childNodes[0])}else if(e instanceof r)for(s=0;s<e.length;s+=1)this[t].insertBefore(e[s],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&n(this[0].nextElementSibling).is(e)?new r([this[0].nextElementSibling]):new r([]):this[0].nextElementSibling?new r([this[0].nextElementSibling]):new r([]):new r([])},nextAll:function(e){var t=[],i=this[0];if(!i)return new r([]);for(;i.nextElementSibling;){var s=i.nextElementSibling;e?n(s).is(e)&&t.push(s):t.push(s),i=s}return new r(t)},prev:function(e){if(this.length>0){var t=this[0];return e?t.previousElementSibling&&n(t.previousElementSibling).is(e)?new r([t.previousElementSibling]):new r([]):t.previousElementSibling?new r([t.previousElementSibling]):new r([])}return new r([])},prevAll:function(e){var t=[],i=this[0];if(!i)return new r([]);for(;i.previousElementSibling;){var s=i.previousElementSibling;e?n(s).is(e)&&t.push(s):t.push(s),i=s}return new r(t)},parent:function(e){for(var t=[],i=0;i<this.length;i+=1)null!==this[i].parentNode&&(e?n(this[i].parentNode).is(e)&&t.push(this[i].parentNode):t.push(this[i].parentNode));return n(o(t))},parents:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].parentNode;s;)e?n(s).is(e)&&t.push(s):t.push(s),s=s.parentNode;return n(o(t))},closest:function(e){var t=this;return void 0===e?new r([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].querySelectorAll(e),a=0;a<s.length;a+=1)t.push(s[a]);return new r(t)},children:function(e){for(var t=[],i=0;i<this.length;i+=1)for(var s=this[i].childNodes,a=0;a<s.length;a+=1)e?1===s[a].nodeType&&n(s[a]).is(e)&&t.push(s[a]):1===s[a].nodeType&&t.push(s[a]);return new r(o(t))},filter:function(e){for(var t=[],i=0;i<this.length;i+=1)e.call(this[i],i,this[i])&&t.push(this[i]);return new r(t)},remove:function(){for(var e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this},add:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var i,s,a=this;for(i=0;i<e.length;i+=1){var r=n(e[i]);for(s=0;s<r.length;s+=1)a[a.length]=r[s],a.length+=1}return a},styles:function(){return this[0]?a.getComputedStyle(this[0],null):{}}};Object.keys(l).forEach((function(e){n.fn[e]=n.fn[e]||l[e]}));var d={deleteProps:function(e){var t=e;Object.keys(t).forEach((function(e){try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))},nextTick:function(e,t){return void 0===t&&(t=0),setTimeout(e,t)},now:function(){return Date.now()},getTranslate:function(e,t){var i,s,r;void 0===t&&(t="x");var n=a.getComputedStyle(e,null);return a.WebKitCSSMatrix?((s=n.transform||n.webkitTransform).split(",").length>6&&(s=s.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),r=new a.WebKitCSSMatrix("none"===s?"":s)):i=(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&&(s=a.WebKitCSSMatrix?r.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(s=a.WebKitCSSMatrix?r.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),s||0},parseUrlQuery:function(e){var t,i,s,r,n={},o=e||a.location.href;if("string"==typeof o&&o.length)for(r=(i=(o=o.indexOf("?")>-1?o.replace(/\S*\?/,""):"").split("&").filter((function(e){return""!==e}))).length,t=0;t<r;t+=1)s=i[t].replace(/#\S+/g,"").split("="),n[decodeURIComponent(s[0])]=void 0===s[1]?void 0:decodeURIComponent(s[1])||"";return n},isObject:function(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object},extend:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var i=Object(e[0]),s=1;s<e.length;s+=1){var a=e[s];if(null!=a)for(var r=Object.keys(Object(a)),n=0,o=r.length;n<o;n+=1){var l=r[n],h=Object.getOwnPropertyDescriptor(a,l);void 0!==h&&h.enumerable&&(d.isObject(i[l])&&d.isObject(a[l])?d.extend(i[l],a[l]):!d.isObject(i[l])&&d.isObject(a[l])?(i[l]={},d.extend(i[l],a[l])):i[l]=a[l])}}return i}},h={touch:!!("ontouchstart"in a||a.DocumentTouch&&i instanceof a.DocumentTouch),pointerEvents:!!a.PointerEvent&&"maxTouchPoints"in a.navigator&&a.navigator.maxTouchPoints>=0,observer:"MutationObserver"in a||"WebkitMutationObserver"in a,passiveListener:function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});a.addEventListener("testPassiveListener",null,t)}catch(e){}return e}(),gestures:"ongesturestart"in a},p=function(e){void 0===e&&(e={});var t=this;t.params=e,t.eventsListeners={},t.params&&t.params.on&&Object.keys(t.params.on).forEach((function(e){t.on(e,t.params.on[e])}))},c={components:{configurable:!0}};p.prototype.on=function(e,t,i){var s=this;if("function"!=typeof t)return s;var a=i?"unshift":"push";return e.split(" ").forEach((function(e){s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][a](t)})),s},p.prototype.once=function(e,t,i){var s=this;if("function"!=typeof t)return s;function a(){for(var i=[],r=arguments.length;r--;)i[r]=arguments[r];s.off(e,a),a.f7proxy&&delete a.f7proxy,t.apply(s,i)}return a.f7proxy=t,s.on(e,a,i)},p.prototype.off=function(e,t){var i=this;return i.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].length&&i.eventsListeners[e].forEach((function(s,a){(s===t||s.f7proxy&&s.f7proxy===t)&&i.eventsListeners[e].splice(a,1)}))})),i):i},p.prototype.emit=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var i,s,a,r=this;if(!r.eventsListeners)return r;"string"==typeof e[0]||Array.isArray(e[0])?(i=e[0],s=e.slice(1,e.length),a=r):(i=e[0].events,s=e[0].data,a=e[0].context||r);var n=Array.isArray(i)?i:i.split(" ");return n.forEach((function(e){if(r.eventsListeners&&r.eventsListeners[e]){var t=[];r.eventsListeners[e].forEach((function(e){t.push(e)})),t.forEach((function(e){e.apply(a,s)}))}})),r},p.prototype.useModulesParams=function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i];s.params&&d.extend(e,s.params)}))},p.prototype.useModules=function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(i){var s=t.modules[i],a=e[i]||{};s.instance&&Object.keys(s.instance).forEach((function(e){var i=s.instance[e];t[e]="function"==typeof i?i.bind(t):i})),s.on&&t.on&&Object.keys(s.on).forEach((function(e){t.on(e,s.on[e])})),s.create&&s.create.bind(t)(a)}))},c.components.set=function(e){this.use&&this.use(e)},p.installModule=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;s.prototype.modules||(s.prototype.modules={});var a=e.name||Object.keys(s.prototype.modules).length+"_"+d.now();return s.prototype.modules[a]=e,e.proto&&Object.keys(e.proto).forEach((function(t){s.prototype[t]=e.proto[t]})),e.static&&Object.keys(e.static).forEach((function(t){s[t]=e.static[t]})),e.install&&e.install.apply(s,t),s},p.use=function(e){for(var t=[],i=arguments.length-1;i-- >0;)t[i]=arguments[i+1];var s=this;return Array.isArray(e)?(e.forEach((function(e){return s.installModule(e)})),s):s.installModule.apply(s,[e].concat(t))},Object.defineProperties(p,c);var u={updateSize:function(){var e,t,i=this.$el;e=void 0!==this.params.width?this.params.width:i[0].clientWidth,t=void 0!==this.params.height?this.params.height:i[0].clientHeight,0===e&&this.isHorizontal()||0===t&&this.isVertical()||(e=e-parseInt(i.css("padding-left"),10)-parseInt(i.css("padding-right"),10),t=t-parseInt(i.css("padding-top"),10)-parseInt(i.css("padding-bottom"),10),d.extend(this,{width:e,height:t,size:this.isHorizontal()?e:t}))},updateSlides:function(){var e=this.params,t=this.$wrapperEl,i=this.size,s=this.rtlTranslate,r=this.wrongRTL,n=this.virtual&&e.virtual.enabled,o=n?this.virtual.slides.length:this.slides.length,l=t.children("."+this.params.slideClass),h=n?this.virtual.slides.length:l.length,p=[],c=[],u=[];function v(t){return!e.cssMode||t!==l.length-1}var f=e.slidesOffsetBefore;"function"==typeof f&&(f=e.slidesOffsetBefore.call(this));var m=e.slidesOffsetAfter;"function"==typeof m&&(m=e.slidesOffsetAfter.call(this));var g=this.snapGrid.length,b=this.snapGrid.length,w=e.spaceBetween,y=-f,x=0,E=0;if(void 0!==i){var T,S;"string"==typeof w&&w.indexOf("%")>=0&&(w=parseFloat(w.replace("%",""))/100*i),this.virtualSize=-w,s?l.css({marginLeft:"",marginTop:""}):l.css({marginRight:"",marginBottom:""}),e.slidesPerColumn>1&&(T=Math.floor(h/e.slidesPerColumn)===h/this.params.slidesPerColumn?h:Math.ceil(h/e.slidesPerColumn)*e.slidesPerColumn,"auto"!==e.slidesPerView&&"row"===e.slidesPerColumnFill&&(T=Math.max(T,e.slidesPerView*e.slidesPerColumn)));for(var C,M=e.slidesPerColumn,P=T/M,z=Math.floor(h/e.slidesPerColumn),k=0;k<h;k+=1){S=0;var $=l.eq(k);if(e.slidesPerColumn>1){var L=void 0,I=void 0,D=void 0;if("row"===e.slidesPerColumnFill&&e.slidesPerGroup>1){var O=Math.floor(k/(e.slidesPerGroup*e.slidesPerColumn)),A=k-e.slidesPerColumn*e.slidesPerGroup*O,G=0===O?e.slidesPerGroup:Math.min(Math.ceil((h-O*M*e.slidesPerGroup)/M),e.slidesPerGroup);L=(I=A-(D=Math.floor(A/G))*G+O*e.slidesPerGroup)+D*T/M,$.css({"-webkit-box-ordinal-group":L,"-moz-box-ordinal-group":L,"-ms-flex-order":L,"-webkit-order":L,order:L})}else"column"===e.slidesPerColumnFill?(D=k-(I=Math.floor(k/M))*M,(I>z||I===z&&D===M-1)&&(D+=1)>=M&&(D=0,I+=1)):I=k-(D=Math.floor(k/P))*P;$.css("margin-"+(this.isHorizontal()?"top":"left"),0!==D&&e.spaceBetween&&e.spaceBetween+"px")}if("none"!==$.css("display")){if("auto"===e.slidesPerView){var H=a.getComputedStyle($[0],null),B=$[0].style.transform,N=$[0].style.webkitTransform;if(B&&($[0].style.transform="none"),N&&($[0].style.webkitTransform="none"),e.roundLengths)S=this.isHorizontal()?$.outerWidth(!0):$.outerHeight(!0);else if(this.isHorizontal()){var X=parseFloat(H.getPropertyValue("width")),V=parseFloat(H.getPropertyValue("padding-left")),Y=parseFloat(H.getPropertyValue("padding-right")),F=parseFloat(H.getPropertyValue("margin-left")),W=parseFloat(H.getPropertyValue("margin-right")),R=H.getPropertyValue("box-sizing");S=R&&"border-box"===R?X+F+W:X+V+Y+F+W}else{var q=parseFloat(H.getPropertyValue("height")),j=parseFloat(H.getPropertyValue("padding-top")),K=parseFloat(H.getPropertyValue("padding-bottom")),U=parseFloat(H.getPropertyValue("margin-top")),_=parseFloat(H.getPropertyValue("margin-bottom")),Z=H.getPropertyValue("box-sizing");S=Z&&"border-box"===Z?q+U+_:q+j+K+U+_}B&&($[0].style.transform=B),N&&($[0].style.webkitTransform=N),e.roundLengths&&(S=Math.floor(S))}else S=(i-(e.slidesPerView-1)*w)/e.slidesPerView,e.roundLengths&&(S=Math.floor(S)),l[k]&&(this.isHorizontal()?l[k].style.width=S+"px":l[k].style.height=S+"px");l[k]&&(l[k].swiperSlideSize=S),u.push(S),e.centeredSlides?(y=y+S/2+x/2+w,0===x&&0!==k&&(y=y-i/2-w),0===k&&(y=y-i/2-w),Math.abs(y)<.001&&(y=0),e.roundLengths&&(y=Math.floor(y)),E%e.slidesPerGroup==0&&p.push(y),c.push(y)):(e.roundLengths&&(y=Math.floor(y)),(E-Math.min(this.params.slidesPerGroupSkip,E))%this.params.slidesPerGroup==0&&p.push(y),c.push(y),y=y+S+w),this.virtualSize+=S+w,x=S,E+=1}}if(this.virtualSize=Math.max(this.virtualSize,i)+m,s&&r&&("slide"===e.effect||"coverflow"===e.effect)&&t.css({width:this.virtualSize+e.spaceBetween+"px"}),e.setWrapperSize&&(this.isHorizontal()?t.css({width:this.virtualSize+e.spaceBetween+"px"}):t.css({height:this.virtualSize+e.spaceBetween+"px"})),e.slidesPerColumn>1&&(this.virtualSize=(S+e.spaceBetween)*T,this.virtualSize=Math.ceil(this.virtualSize/e.slidesPerColumn)-e.spaceBetween,this.isHorizontal()?t.css({width:this.virtualSize+e.spaceBetween+"px"}):t.css({height:this.virtualSize+e.spaceBetween+"px"}),e.centeredSlides)){C=[];for(var Q=0;Q<p.length;Q+=1){var J=p[Q];e.roundLengths&&(J=Math.floor(J)),p[Q]<this.virtualSize+p[0]&&C.push(J)}p=C}if(!e.centeredSlides){C=[];for(var ee=0;ee<p.length;ee+=1){var te=p[ee];e.roundLengths&&(te=Math.floor(te)),p[ee]<=this.virtualSize-i&&C.push(te)}p=C,Math.floor(this.virtualSize-i)-Math.floor(p[p.length-1])>1&&p.push(this.virtualSize-i)}if(0===p.length&&(p=[0]),0!==e.spaceBetween&&(this.isHorizontal()?s?l.filter(v).css({marginLeft:w+"px"}):l.filter(v).css({marginRight:w+"px"}):l.filter(v).css({marginBottom:w+"px"})),e.centeredSlides&&e.centeredSlidesBounds){var ie=0;u.forEach((function(t){ie+=t+(e.spaceBetween?e.spaceBetween:0)}));var se=(ie-=e.spaceBetween)-i;p=p.map((function(e){return e<0?-f:e>se?se+m:e}))}if(e.centerInsufficientSlides){var ae=0;if(u.forEach((function(t){ae+=t+(e.spaceBetween?e.spaceBetween:0)})),(ae-=e.spaceBetween)<i){var re=(i-ae)/2;p.forEach((function(e,t){p[t]=e-re})),c.forEach((function(e,t){c[t]=e+re}))}}d.extend(this,{slides:l,snapGrid:p,slidesGrid:c,slidesSizesGrid:u}),h!==o&&this.emit("slidesLengthChange"),p.length!==g&&(this.params.watchOverflow&&this.checkOverflow(),this.emit("snapGridLengthChange")),c.length!==b&&this.emit("slidesGridLengthChange"),(e.watchSlidesProgress||e.watchSlidesVisibility)&&this.updateSlidesOffset()}},updateAutoHeight:function(e){var t,i=[],s=0;if("number"==typeof e?this.setTransition(e):!0===e&&this.setTransition(this.params.speed),"auto"!==this.params.slidesPerView&&this.params.slidesPerView>1)if(this.params.centeredSlides)this.visibleSlides.each((function(e,t){i.push(t)}));else for(t=0;t<Math.ceil(this.params.slidesPerView);t+=1){var a=this.activeIndex+t;if(a>this.slides.length)break;i.push(this.slides.eq(a)[0])}else i.push(this.slides.eq(this.activeIndex)[0]);for(t=0;t<i.length;t+=1)if(void 0!==i[t]){var r=i[t].offsetHeight;s=r>s?r:s}s&&this.$wrapperEl.css("height",s+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t<e.length;t+=1)e[t].swiperSlideOffset=this.isHorizontal()?e[t].offsetLeft:e[t].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);var t=this.params,i=this.slides,s=this.rtlTranslate;if(0!==i.length){void 0===i[0].swiperSlideOffset&&this.updateSlidesOffset();var a=-e;s&&(a=e),i.removeClass(t.slideVisibleClass),this.visibleSlidesIndexes=[],this.visibleSlides=[];for(var r=0;r<i.length;r+=1){var o=i[r],l=(a+(t.centeredSlides?this.minTranslate():0)-o.swiperSlideOffset)/(o.swiperSlideSize+t.spaceBetween);if(t.watchSlidesVisibility||t.centeredSlides&&t.autoHeight){var d=-(a-o.swiperSlideOffset),h=d+this.slidesSizesGrid[r];(d>=0&&d<this.size-1||h>1&&h<=this.size||d<=0&&h>=this.size)&&(this.visibleSlides.push(o),this.visibleSlidesIndexes.push(r),i.eq(r).addClass(t.slideVisibleClass))}o.progress=s?-l:l}this.visibleSlides=n(this.visibleSlides)}},updateProgress:function(e){if(void 0===e){var t=this.rtlTranslate?-1:1;e=this&&this.translate&&this.translate*t||0}var i=this.params,s=this.maxTranslate()-this.minTranslate(),a=this.progress,r=this.isBeginning,n=this.isEnd,o=r,l=n;0===s?(a=0,r=!0,n=!0):(r=(a=(e-this.minTranslate())/s)<=0,n=a>=1),d.extend(this,{progress:a,isBeginning:r,isEnd:n}),(i.watchSlidesProgress||i.watchSlidesVisibility||i.centeredSlides&&i.autoHeight)&&this.updateSlidesProgress(e),r&&!o&&this.emit("reachBeginning toEdge"),n&&!l&&this.emit("reachEnd toEdge"),(o&&!r||l&&!n)&&this.emit("fromEdge"),this.emit("progress",a)},updateSlidesClasses:function(){var e,t=this.slides,i=this.params,s=this.$wrapperEl,a=this.activeIndex,r=this.realIndex,n=this.virtual&&i.virtual.enabled;t.removeClass(i.slideActiveClass+" "+i.slideNextClass+" "+i.slidePrevClass+" "+i.slideDuplicateActiveClass+" "+i.slideDuplicateNextClass+" "+i.slideDuplicatePrevClass),(e=n?this.$wrapperEl.find("."+i.slideClass+'[data-swiper-slide-index="'+a+'"]'):t.eq(a)).addClass(i.slideActiveClass),i.loop&&(e.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+r+'"]').addClass(i.slideDuplicateActiveClass));var o=e.nextAll("."+i.slideClass).eq(0).addClass(i.slideNextClass);i.loop&&0===o.length&&(o=t.eq(0)).addClass(i.slideNextClass);var l=e.prevAll("."+i.slideClass).eq(0).addClass(i.slidePrevClass);i.loop&&0===l.length&&(l=t.eq(-1)).addClass(i.slidePrevClass),i.loop&&(o.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+o.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicateNextClass),l.hasClass(i.slideDuplicateClass)?s.children("."+i.slideClass+":not(."+i.slideDuplicateClass+')[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass):s.children("."+i.slideClass+"."+i.slideDuplicateClass+'[data-swiper-slide-index="'+l.attr("data-swiper-slide-index")+'"]').addClass(i.slideDuplicatePrevClass))},updateActiveIndex:function(e){var t,i=this.rtlTranslate?this.translate:-this.translate,s=this.slidesGrid,a=this.snapGrid,r=this.params,n=this.activeIndex,o=this.realIndex,l=this.snapIndex,h=e;if(void 0===h){for(var p=0;p<s.length;p+=1)void 0!==s[p+1]?i>=s[p]&&i<s[p+1]-(s[p+1]-s[p])/2?h=p:i>=s[p]&&i<s[p+1]&&(h=p+1):i>=s[p]&&(h=p);r.normalizeSlideIndex&&(h<0||void 0===h)&&(h=0)}if(a.indexOf(i)>=0)t=a.indexOf(i);else{var c=Math.min(r.slidesPerGroupSkip,h);t=c+Math.floor((h-c)/r.slidesPerGroup)}if(t>=a.length&&(t=a.length-1),h!==n){var u=parseInt(this.slides.eq(h).attr("data-swiper-slide-index")||h,10);d.extend(this,{snapIndex:t,realIndex:u,previousIndex:n,activeIndex:h}),this.emit("activeIndexChange"),this.emit("snapIndexChange"),o!==u&&this.emit("realIndexChange"),(this.initialized||this.params.runCallbacksOnInit)&&this.emit("slideChange")}else t!==l&&(this.snapIndex=t,this.emit("snapIndexChange"))},updateClickedSlide:function(e){var t=this.params,i=n(e.target).closest("."+t.slideClass)[0],s=!1;if(i)for(var a=0;a<this.slides.length;a+=1)this.slides[a]===i&&(s=!0);if(!i||!s)return this.clickedSlide=void 0,void(this.clickedIndex=void 0);this.clickedSlide=i,this.virtual&&this.params.virtual.enabled?this.clickedIndex=parseInt(n(i).attr("data-swiper-slide-index"),10):this.clickedIndex=n(i).index(),t.slideToClickedSlide&&void 0!==this.clickedIndex&&this.clickedIndex!==this.activeIndex&&this.slideToClickedSlide()}};var v={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");var t=this.params,i=this.rtlTranslate,s=this.translate,a=this.$wrapperEl;if(t.virtualTranslate)return i?-s:s;if(t.cssMode)return s;var r=d.getTranslate(a[0],e);return i&&(r=-r),r||0},setTranslate:function(e,t){var i=this.rtlTranslate,s=this.params,a=this.$wrapperEl,r=this.wrapperEl,n=this.progress,o=0,l=0;this.isHorizontal()?o=i?-e:e:l=e,s.roundLengths&&(o=Math.floor(o),l=Math.floor(l)),s.cssMode?r[this.isHorizontal()?"scrollLeft":"scrollTop"]=this.isHorizontal()?-o:-l:s.virtualTranslate||a.transform("translate3d("+o+"px, "+l+"px, 0px)"),this.previousTranslate=this.translate,this.translate=this.isHorizontal()?o:l;var d=this.maxTranslate()-this.minTranslate();(0===d?0:(e-this.minTranslate())/d)!==n&&this.updateProgress(e),this.emit("setTranslate",this.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,i,s,a){var r;void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0),void 0===s&&(s=!0);var n=this,o=n.params,l=n.wrapperEl;if(n.animating&&o.preventInteractionOnTransition)return!1;var d,h=n.minTranslate(),p=n.maxTranslate();if(d=s&&e>h?h:s&&e<p?p:e,n.updateProgress(d),o.cssMode){var c=n.isHorizontal();return 0===t?l[c?"scrollLeft":"scrollTop"]=-d:l.scrollTo?l.scrollTo(((r={})[c?"left":"top"]=-d,r.behavior="smooth",r)):l[c?"scrollLeft":"scrollTop"]=-d,!0}return 0===t?(n.setTransition(0),n.setTranslate(d),i&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionEnd"))):(n.setTransition(t),n.setTranslate(d),i&&(n.emit("beforeTransitionStart",t,a),n.emit("transitionStart")),n.animating||(n.animating=!0,n.onTranslateToWrapperTransitionEnd||(n.onTranslateToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.$wrapperEl[0].removeEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].removeEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd),n.onTranslateToWrapperTransitionEnd=null,delete n.onTranslateToWrapperTransitionEnd,i&&n.emit("transitionEnd"))}),n.$wrapperEl[0].addEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.$wrapperEl[0].addEventListener("webkitTransitionEnd",n.onTranslateToWrapperTransitionEnd))),!0}};var f={setTransition:function(e,t){this.params.cssMode||this.$wrapperEl.transition(e),this.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.params,a=this.previousIndex;if(!s.cssMode){s.autoHeight&&this.updateAutoHeight();var r=t;if(r||(r=i>a?"next":i<a?"prev":"reset"),this.emit("transitionStart"),e&&i!==a){if("reset"===r)return void this.emit("slideResetTransitionStart");this.emit("slideChangeTransitionStart"),"next"===r?this.emit("slideNextTransitionStart"):this.emit("slidePrevTransitionStart")}}},transitionEnd:function(e,t){void 0===e&&(e=!0);var i=this.activeIndex,s=this.previousIndex,a=this.params;if(this.animating=!1,!a.cssMode){this.setTransition(0);var r=t;if(r||(r=i>s?"next":i<s?"prev":"reset"),this.emit("transitionEnd"),e&&i!==s){if("reset"===r)return void this.emit("slideResetTransitionEnd");this.emit("slideChangeTransitionEnd"),"next"===r?this.emit("slideNextTransitionEnd"):this.emit("slidePrevTransitionEnd")}}}};var m={slideTo:function(e,t,i,s){var a;void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var r=this,n=e;n<0&&(n=0);var o=r.params,l=r.snapGrid,d=r.slidesGrid,h=r.previousIndex,p=r.activeIndex,c=r.rtlTranslate,u=r.wrapperEl;if(r.animating&&o.preventInteractionOnTransition)return!1;var v=Math.min(r.params.slidesPerGroupSkip,n),f=v+Math.floor((n-v)/r.params.slidesPerGroup);f>=l.length&&(f=l.length-1),(p||o.initialSlide||0)===(h||0)&&i&&r.emit("beforeSlideChangeStart");var m,g=-l[f];if(r.updateProgress(g),o.normalizeSlideIndex)for(var b=0;b<d.length;b+=1)-Math.floor(100*g)>=Math.floor(100*d[b])&&(n=b);if(r.initialized&&n!==p){if(!r.allowSlideNext&&g<r.translate&&g<r.minTranslate())return!1;if(!r.allowSlidePrev&&g>r.translate&&g>r.maxTranslate()&&(p||0)!==n)return!1}if(m=n>p?"next":n<p?"prev":"reset",c&&-g===r.translate||!c&&g===r.translate)return r.updateActiveIndex(n),o.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==o.effect&&r.setTranslate(g),"reset"!==m&&(r.transitionStart(i,m),r.transitionEnd(i,m)),!1;if(o.cssMode){var w=r.isHorizontal(),y=-g;return c&&(y=u.scrollWidth-u.offsetWidth-y),0===t?u[w?"scrollLeft":"scrollTop"]=y:u.scrollTo?u.scrollTo(((a={})[w?"left":"top"]=y,a.behavior="smooth",a)):u[w?"scrollLeft":"scrollTop"]=y,!0}return 0===t?(r.setTransition(0),r.setTranslate(g),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,s),r.transitionStart(i,m),r.transitionEnd(i,m)):(r.setTransition(t),r.setTranslate(g),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,s),r.transitionStart(i,m),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(i,m))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd))),!0},slideToLoop:function(e,t,i,s){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===i&&(i=!0);var a=e;return this.params.loop&&(a+=this.loopedSlides),this.slideTo(a,t,i,s)},slideNext:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.activeIndex<s.slidesPerGroupSkip?1:s.slidesPerGroup;if(s.loop){if(a)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}return this.slideTo(this.activeIndex+r,e,t,i)},slidePrev:function(e,t,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);var s=this.params,a=this.animating,r=this.snapGrid,n=this.slidesGrid,o=this.rtlTranslate;if(s.loop){if(a)return!1;this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft}function l(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}var d,h=l(o?this.translate:-this.translate),p=r.map((function(e){return l(e)})),c=(n.map((function(e){return l(e)})),r[p.indexOf(h)],r[p.indexOf(h)-1]);return void 0===c&&s.cssMode&&r.forEach((function(e){!c&&h>=e&&(c=e)})),void 0!==c&&(d=n.indexOf(c))<0&&(d=this.activeIndex-1),this.slideTo(d,e,t,i)},slideReset:function(e,t,i){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,i)},slideToClosest:function(e,t,i,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===s&&(s=.5);var a=this.activeIndex,r=Math.min(this.params.slidesPerGroupSkip,a),n=r+Math.floor((a-r)/this.params.slidesPerGroup),o=this.rtlTranslate?this.translate:-this.translate;if(o>=this.snapGrid[n]){var l=this.snapGrid[n];o-l>(this.snapGrid[n+1]-l)*s&&(a+=this.params.slidesPerGroup)}else{var d=this.snapGrid[n-1];o-d<=(this.snapGrid[n]-d)*s&&(a-=this.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,this.slidesGrid.length-1),this.slideTo(a,e,t,i)},slideToClickedSlide:function(){var e,t=this,i=t.params,s=t.$wrapperEl,a="auto"===i.slidesPerView?t.slidesPerViewDynamic():i.slidesPerView,r=t.clickedIndex;if(i.loop){if(t.animating)return;e=parseInt(n(t.clickedSlide).attr("data-swiper-slide-index"),10),i.centeredSlides?r<t.loopedSlides-a/2||r>t.slides.length-t.loopedSlides+a/2?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),d.nextTick((function(){t.slideTo(r)}))):t.slideTo(r):r>t.slides.length-a?(t.loopFix(),r=s.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+i.slideDuplicateClass+")").eq(0).index(),d.nextTick((function(){t.slideTo(r)}))):t.slideTo(r)}else t.slideTo(r)}};var g={loopCreate:function(){var e=this,t=e.params,s=e.$wrapperEl;s.children("."+t.slideClass+"."+t.slideDuplicateClass).remove();var a=s.children("."+t.slideClass);if(t.loopFillGroupWithBlank){var r=t.slidesPerGroup-a.length%t.slidesPerGroup;if(r!==t.slidesPerGroup){for(var o=0;o<r;o+=1){var l=n(i.createElement("div")).addClass(t.slideClass+" "+t.slideBlankClass);s.append(l)}a=s.children("."+t.slideClass)}}"auto"!==t.slidesPerView||t.loopedSlides||(t.loopedSlides=a.length),e.loopedSlides=Math.ceil(parseFloat(t.loopedSlides||t.slidesPerView,10)),e.loopedSlides+=t.loopAdditionalSlides,e.loopedSlides>a.length&&(e.loopedSlides=a.length);var d=[],h=[];a.each((function(t,i){var s=n(i);t<e.loopedSlides&&h.push(i),t<a.length&&t>=a.length-e.loopedSlides&&d.push(i),s.attr("data-swiper-slide-index",t)}));for(var p=0;p<h.length;p+=1)s.append(n(h[p].cloneNode(!0)).addClass(t.slideDuplicateClass));for(var c=d.length-1;c>=0;c-=1)s.prepend(n(d[c].cloneNode(!0)).addClass(t.slideDuplicateClass))},loopFix:function(){this.emit("beforeLoopFix");var e,t=this.activeIndex,i=this.slides,s=this.loopedSlides,a=this.allowSlidePrev,r=this.allowSlideNext,n=this.snapGrid,o=this.rtlTranslate;this.allowSlidePrev=!0,this.allowSlideNext=!0;var l=-n[t]-this.getTranslate();if(t<s)e=i.length-3*s+t,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l);else if(t>=i.length-s){e=-i.length+t+s,e+=s,this.slideTo(e,0,!1,!0)&&0!==l&&this.setTranslate((o?-this.translate:this.translate)-l)}this.allowSlidePrev=a,this.allowSlideNext=r,this.emit("loopFix")},loopDestroy:function(){var e=this.$wrapperEl,t=this.params,i=this.slides;e.children("."+t.slideClass+"."+t.slideDuplicateClass+",."+t.slideClass+"."+t.slideBlankClass).remove(),i.removeAttr("data-swiper-slide-index")}};var b={setGrabCursor:function(e){if(!(h.touch||!this.params.simulateTouch||this.params.watchOverflow&&this.isLocked||this.params.cssMode)){var t=this.el;t.style.cursor="move",t.style.cursor=e?"-webkit-grabbing":"-webkit-grab",t.style.cursor=e?"-moz-grabbin":"-moz-grab",t.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){h.touch||this.params.watchOverflow&&this.isLocked||this.params.cssMode||(this.el.style.cursor="")}};var w,y,x,E,T,S,C,M,P,z,k,$,L,I,D,O={appendSlide:function(e){var t=this.$wrapperEl,i=this.params;if(i.loop&&this.loopDestroy(),"object"==typeof e&&"length"in e)for(var s=0;s<e.length;s+=1)e[s]&&t.append(e[s]);else t.append(e);i.loop&&this.loopCreate(),i.observer&&h.observer||this.update()},prependSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&this.loopDestroy();var a=s+1;if("object"==typeof e&&"length"in e){for(var r=0;r<e.length;r+=1)e[r]&&i.prepend(e[r]);a=s+e.length}else i.prepend(e);t.loop&&this.loopCreate(),t.observer&&h.observer||this.update(),this.slideTo(a,0,!1)},addSlide:function(e,t){var i=this.$wrapperEl,s=this.params,a=this.activeIndex;s.loop&&(a-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+s.slideClass));var r=this.slides.length;if(e<=0)this.prependSlide(t);else if(e>=r)this.appendSlide(t);else{for(var n=a>e?a+1:a,o=[],l=r-1;l>=e;l-=1){var d=this.slides.eq(l);d.remove(),o.unshift(d)}if("object"==typeof t&&"length"in t){for(var p=0;p<t.length;p+=1)t[p]&&i.append(t[p]);n=a>e?a+t.length:a}else i.append(t);for(var c=0;c<o.length;c+=1)i.append(o[c]);s.loop&&this.loopCreate(),s.observer&&h.observer||this.update(),s.loop?this.slideTo(n+this.loopedSlides,0,!1):this.slideTo(n,0,!1)}},removeSlide:function(e){var t=this.params,i=this.$wrapperEl,s=this.activeIndex;t.loop&&(s-=this.loopedSlides,this.loopDestroy(),this.slides=i.children("."+t.slideClass));var a,r=s;if("object"==typeof e&&"length"in e){for(var n=0;n<e.length;n+=1)a=e[n],this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1);r=Math.max(r,0)}else a=e,this.slides[a]&&this.slides.eq(a).remove(),a<r&&(r-=1),r=Math.max(r,0);t.loop&&this.loopCreate(),t.observer&&h.observer||this.update(),t.loop?this.slideTo(r+this.loopedSlides,0,!1):this.slideTo(r,0,!1)},removeAllSlides:function(){for(var e=[],t=0;t<this.slides.length;t+=1)e.push(t);this.removeSlide(e)}},A=(w=a.navigator.platform,y=a.navigator.userAgent,x={ios:!1,android:!1,androidChrome:!1,desktop:!1,iphone:!1,ipod:!1,ipad:!1,edge:!1,ie:!1,firefox:!1,macos:!1,windows:!1,cordova:!(!a.cordova&&!a.phonegap),phonegap:!(!a.cordova&&!a.phonegap),electron:!1},E=a.screen.width,T=a.screen.height,S=y.match(/(Android);?[\s\/]+([\d.]+)?/),C=y.match(/(iPad).*OS\s([\d_]+)/),M=y.match(/(iPod)(.*OS\s([\d_]+))?/),P=!C&&y.match(/(iPhone\sOS|iOS)\s([\d_]+)/),z=y.indexOf("MSIE ")>=0||y.indexOf("Trident/")>=0,k=y.indexOf("Edge/")>=0,$=y.indexOf("Gecko/")>=0&&y.indexOf("Firefox/")>=0,L="Win32"===w,I=y.toLowerCase().indexOf("electron")>=0,D="MacIntel"===w,!C&&D&&h.touch&&(1024===E&&1366===T||834===E&&1194===T||834===E&&1112===T||768===E&&1024===T)&&(C=y.match(/(Version)\/([\d.]+)/),D=!1),x.ie=z,x.edge=k,x.firefox=$,S&&!L&&(x.os="android",x.osVersion=S[2],x.android=!0,x.androidChrome=y.toLowerCase().indexOf("chrome")>=0),(C||P||M)&&(x.os="ios",x.ios=!0),P&&!M&&(x.osVersion=P[2].replace(/_/g,"."),x.iphone=!0),C&&(x.osVersion=C[2].replace(/_/g,"."),x.ipad=!0),M&&(x.osVersion=M[3]?M[3].replace(/_/g,"."):null,x.ipod=!0),x.ios&&x.osVersion&&y.indexOf("Version/")>=0&&"10"===x.osVersion.split(".")[0]&&(x.osVersion=y.toLowerCase().split("version/")[1].split(" ")[0]),x.webView=!(!(P||C||M)||!y.match(/.*AppleWebKit(?!.*Safari)/i)&&!a.navigator.standalone)||a.matchMedia&&a.matchMedia("(display-mode: standalone)").matches,x.webview=x.webView,x.standalone=x.webView,x.desktop=!(x.ios||x.android)||I,x.desktop&&(x.electron=I,x.macos=D,x.windows=L,x.macos&&(x.os="macos"),x.windows&&(x.os="windows")),x.pixelRatio=a.devicePixelRatio||1,x);function G(e){var t=this.touchEventsData,s=this.params,r=this.touches;if(!this.animating||!s.preventInteractionOnTransition){var o=e;o.originalEvent&&(o=o.originalEvent);var l=n(o.target);if(("wrapper"!==s.touchEventsTarget||l.closest(this.wrapperEl).length)&&(t.isTouchEvent="touchstart"===o.type,(t.isTouchEvent||!("which"in o)||3!==o.which)&&!(!t.isTouchEvent&&"button"in o&&o.button>0||t.isTouched&&t.isMoved)))if(s.noSwiping&&l.closest(s.noSwipingSelector?s.noSwipingSelector:"."+s.noSwipingClass)[0])this.allowClick=!0;else if(!s.swipeHandler||l.closest(s.swipeHandler)[0]){r.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,r.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;var h=r.currentX,p=r.currentY,c=s.edgeSwipeDetection||s.iOSEdgeSwipeDetection,u=s.edgeSwipeThreshold||s.iOSEdgeSwipeThreshold;if(!c||!(h<=u||h>=a.screen.width-u)){if(d.extend(t,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),r.startX=h,r.startY=p,t.touchStartTime=d.now(),this.allowClick=!0,this.updateSize(),this.swipeDirection=void 0,s.threshold>0&&(t.allowThresholdMove=!1),"touchstart"!==o.type){var v=!0;l.is(t.formElements)&&(v=!1),i.activeElement&&n(i.activeElement).is(t.formElements)&&i.activeElement!==l[0]&&i.activeElement.blur();var f=v&&this.allowTouchMove&&s.touchStartPreventDefault;(s.touchStartForcePreventDefault||f)&&o.preventDefault()}this.emit("touchStart",o)}}}}function H(e){var t=this.touchEventsData,s=this.params,a=this.touches,r=this.rtlTranslate,o=e;if(o.originalEvent&&(o=o.originalEvent),t.isTouched){if(!t.isTouchEvent||"touchmove"===o.type){var l="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),h="touchmove"===o.type?l.pageX:o.pageX,p="touchmove"===o.type?l.pageY:o.pageY;if(o.preventedByNestedSwiper)return a.startX=h,void(a.startY=p);if(!this.allowTouchMove)return this.allowClick=!1,void(t.isTouched&&(d.extend(a,{startX:h,startY:p,currentX:h,currentY:p}),t.touchStartTime=d.now()));if(t.isTouchEvent&&s.touchReleaseOnEdges&&!s.loop)if(this.isVertical()){if(p<a.startY&&this.translate<=this.maxTranslate()||p>a.startY&&this.translate>=this.minTranslate())return t.isTouched=!1,void(t.isMoved=!1)}else if(h<a.startX&&this.translate<=this.maxTranslate()||h>a.startX&&this.translate>=this.minTranslate())return;if(t.isTouchEvent&&i.activeElement&&o.target===i.activeElement&&n(o.target).is(t.formElements))return t.isMoved=!0,void(this.allowClick=!1);if(t.allowTouchCallbacks&&this.emit("touchMove",o),!(o.targetTouches&&o.targetTouches.length>1)){a.currentX=h,a.currentY=p;var c=a.currentX-a.startX,u=a.currentY-a.startY;if(!(this.params.threshold&&Math.sqrt(Math.pow(c,2)+Math.pow(u,2))<this.params.threshold)){var v;if(void 0===t.isScrolling)this.isHorizontal()&&a.currentY===a.startY||this.isVertical()&&a.currentX===a.startX?t.isScrolling=!1:c*c+u*u>=25&&(v=180*Math.atan2(Math.abs(u),Math.abs(c))/Math.PI,t.isScrolling=this.isHorizontal()?v>s.touchAngle:90-v>s.touchAngle);if(t.isScrolling&&this.emit("touchMoveOpposite",o),void 0===t.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(t.startMoving=!0)),t.isScrolling)t.isTouched=!1;else if(t.startMoving){this.allowClick=!1,!s.cssMode&&o.cancelable&&o.preventDefault(),s.touchMoveStopPropagation&&!s.nested&&o.stopPropagation(),t.isMoved||(s.loop&&this.loopFix(),t.startTranslate=this.getTranslate(),this.setTransition(0),this.animating&&this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),t.allowMomentumBounce=!1,!s.grabCursor||!0!==this.allowSlideNext&&!0!==this.allowSlidePrev||this.setGrabCursor(!0),this.emit("sliderFirstMove",o)),this.emit("sliderMove",o),t.isMoved=!0;var f=this.isHorizontal()?c:u;a.diff=f,f*=s.touchRatio,r&&(f=-f),this.swipeDirection=f>0?"prev":"next",t.currentTranslate=f+t.startTranslate;var m=!0,g=s.resistanceRatio;if(s.touchReleaseOnEdges&&(g=0),f>0&&t.currentTranslate>this.minTranslate()?(m=!1,s.resistance&&(t.currentTranslate=this.minTranslate()-1+Math.pow(-this.minTranslate()+t.startTranslate+f,g))):f<0&&t.currentTranslate<this.maxTranslate()&&(m=!1,s.resistance&&(t.currentTranslate=this.maxTranslate()+1-Math.pow(this.maxTranslate()-t.startTranslate-f,g))),m&&(o.preventedByNestedSwiper=!0),!this.allowSlideNext&&"next"===this.swipeDirection&&t.currentTranslate<t.startTranslate&&(t.currentTranslate=t.startTranslate),!this.allowSlidePrev&&"prev"===this.swipeDirection&&t.currentTranslate>t.startTranslate&&(t.currentTranslate=t.startTranslate),s.threshold>0){if(!(Math.abs(f)>s.threshold||t.allowThresholdMove))return void(t.currentTranslate=t.startTranslate);if(!t.allowThresholdMove)return t.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,t.currentTranslate=t.startTranslate,void(a.diff=this.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}s.followFinger&&!s.cssMode&&((s.freeMode||s.watchSlidesProgress||s.watchSlidesVisibility)&&(this.updateActiveIndex(),this.updateSlidesClasses()),s.freeMode&&(0===t.velocities.length&&t.velocities.push({position:a[this.isHorizontal()?"startX":"startY"],time:t.touchStartTime}),t.velocities.push({position:a[this.isHorizontal()?"currentX":"currentY"],time:d.now()})),this.updateProgress(t.currentTranslate),this.setTranslate(t.currentTranslate))}}}}}else t.startMoving&&t.isScrolling&&this.emit("touchMoveOpposite",o)}function B(e){var t=this,i=t.touchEventsData,s=t.params,a=t.touches,r=t.rtlTranslate,n=t.$wrapperEl,o=t.slidesGrid,l=t.snapGrid,h=e;if(h.originalEvent&&(h=h.originalEvent),i.allowTouchCallbacks&&t.emit("touchEnd",h),i.allowTouchCallbacks=!1,!i.isTouched)return i.isMoved&&s.grabCursor&&t.setGrabCursor(!1),i.isMoved=!1,void(i.startMoving=!1);s.grabCursor&&i.isMoved&&i.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);var p,c=d.now(),u=c-i.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(h),t.emit("tap click",h),u<300&&c-i.lastClickTime<300&&t.emit("doubleTap doubleClick",h)),i.lastClickTime=d.now(),d.nextTick((function(){t.destroyed||(t.allowClick=!0)})),!i.isTouched||!i.isMoved||!t.swipeDirection||0===a.diff||i.currentTranslate===i.startTranslate)return i.isTouched=!1,i.isMoved=!1,void(i.startMoving=!1);if(i.isTouched=!1,i.isMoved=!1,i.startMoving=!1,p=s.followFinger?r?t.translate:-t.translate:-i.currentTranslate,!s.cssMode)if(s.freeMode){if(p<-t.minTranslate())return void t.slideTo(t.activeIndex);if(p>-t.maxTranslate())return void(t.slides.length<l.length?t.slideTo(l.length-1):t.slideTo(t.slides.length-1));if(s.freeModeMomentum){if(i.velocities.length>1){var v=i.velocities.pop(),f=i.velocities.pop(),m=v.position-f.position,g=v.time-f.time;t.velocity=m/g,t.velocity/=2,Math.abs(t.velocity)<s.freeModeMinimumVelocity&&(t.velocity=0),(g>150||d.now()-v.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=s.freeModeMomentumVelocityRatio,i.velocities.length=0;var b=1e3*s.freeModeMomentumRatio,w=t.velocity*b,y=t.translate+w;r&&(y=-y);var x,E,T=!1,S=20*Math.abs(t.velocity)*s.freeModeMomentumBounceRatio;if(y<t.maxTranslate())s.freeModeMomentumBounce?(y+t.maxTranslate()<-S&&(y=t.maxTranslate()-S),x=t.maxTranslate(),T=!0,i.allowMomentumBounce=!0):y=t.maxTranslate(),s.loop&&s.centeredSlides&&(E=!0);else if(y>t.minTranslate())s.freeModeMomentumBounce?(y-t.minTranslate()>S&&(y=t.minTranslate()+S),x=t.minTranslate(),T=!0,i.allowMomentumBounce=!0):y=t.minTranslate(),s.loop&&s.centeredSlides&&(E=!0);else if(s.freeModeSticky){for(var C,M=0;M<l.length;M+=1)if(l[M]>-y){C=M;break}y=-(y=Math.abs(l[C]-y)<Math.abs(l[C-1]-y)||"next"===t.swipeDirection?l[C]:l[C-1])}if(E&&t.once("transitionEnd",(function(){t.loopFix()})),0!==t.velocity){if(b=r?Math.abs((-y-t.translate)/t.velocity):Math.abs((y-t.translate)/t.velocity),s.freeModeSticky){var P=Math.abs((r?-y:y)-t.translate),z=t.slidesSizesGrid[t.activeIndex];b=P<z?s.speed:P<2*z?1.5*s.speed:2.5*s.speed}}else if(s.freeModeSticky)return void t.slideToClosest();s.freeModeMomentumBounce&&T?(t.updateProgress(x),t.setTransition(b),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&i.allowMomentumBounce&&(t.emit("momentumBounce"),t.setTransition(s.speed),setTimeout((function(){t.setTranslate(x),n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(t.updateProgress(y),t.setTransition(b),t.setTranslate(y),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((function(){t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(y),t.updateActiveIndex(),t.updateSlidesClasses()}else if(s.freeModeSticky)return void t.slideToClosest();(!s.freeModeMomentum||u>=s.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var k=0,$=t.slidesSizesGrid[0],L=0;L<o.length;L+=L<s.slidesPerGroupSkip?1:s.slidesPerGroup){var I=L<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;void 0!==o[L+I]?p>=o[L]&&p<o[L+I]&&(k=L,$=o[L+I]-o[L]):p>=o[L]&&(k=L,$=o[o.length-1]-o[o.length-2])}var D=(p-o[k])/$,O=k<s.slidesPerGroupSkip-1?1:s.slidesPerGroup;if(u>s.longSwipesMs){if(!s.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(D>=s.longSwipesRatio?t.slideTo(k+O):t.slideTo(k)),"prev"===t.swipeDirection&&(D>1-s.longSwipesRatio?t.slideTo(k+O):t.slideTo(k))}else{if(!s.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(h.target===t.navigation.nextEl||h.target===t.navigation.prevEl)?h.target===t.navigation.nextEl?t.slideTo(k+O):t.slideTo(k):("next"===t.swipeDirection&&t.slideTo(k+O),"prev"===t.swipeDirection&&t.slideTo(k))}}}function N(){var e=this.params,t=this.el;if(!t||0!==t.offsetWidth){e.breakpoints&&this.setBreakpoint();var i=this.allowSlideNext,s=this.allowSlidePrev,a=this.snapGrid;this.allowSlideNext=!0,this.allowSlidePrev=!0,this.updateSize(),this.updateSlides(),this.updateSlidesClasses(),("auto"===e.slidesPerView||e.slidesPerView>1)&&this.isEnd&&!this.isBeginning&&!this.params.centeredSlides?this.slideTo(this.slides.length-1,0,!1,!0):this.slideTo(this.activeIndex,0,!1,!0),this.autoplay&&this.autoplay.running&&this.autoplay.paused&&this.autoplay.run(),this.allowSlidePrev=s,this.allowSlideNext=i,this.params.watchOverflow&&a!==this.snapGrid&&this.checkOverflow()}}function X(e){this.allowClick||(this.params.preventClicks&&e.preventDefault(),this.params.preventClicksPropagation&&this.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))}function V(){var e=this.wrapperEl,t=this.rtlTranslate;this.previousTranslate=this.translate,this.isHorizontal()?this.translate=t?e.scrollWidth-e.offsetWidth-e.scrollLeft:-e.scrollLeft:this.translate=-e.scrollTop,-0===this.translate&&(this.translate=0),this.updateActiveIndex(),this.updateSlidesClasses();var i=this.maxTranslate()-this.minTranslate();(0===i?0:(this.translate-this.minTranslate())/i)!==this.progress&&this.updateProgress(t?-this.translate:this.translate),this.emit("setTranslate",this.translate,!1)}var Y=!1;function F(){}var W={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,preventInteractionOnTransition:!1,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,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,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",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},R={update:u,translate:v,transition:f,slide:m,loop:g,grabCursor:b,manipulation:O,events:{attachEvents:function(){var e=this.params,t=this.touchEvents,s=this.el,a=this.wrapperEl;this.onTouchStart=G.bind(this),this.onTouchMove=H.bind(this),this.onTouchEnd=B.bind(this),e.cssMode&&(this.onScroll=V.bind(this)),this.onClick=X.bind(this);var r=!!e.nested;if(!h.touch&&h.pointerEvents)s.addEventListener(t.start,this.onTouchStart,!1),i.addEventListener(t.move,this.onTouchMove,r),i.addEventListener(t.end,this.onTouchEnd,!1);else{if(h.touch){var n=!("touchstart"!==t.start||!h.passiveListener||!e.passiveListeners)&&{passive:!0,capture:!1};s.addEventListener(t.start,this.onTouchStart,n),s.addEventListener(t.move,this.onTouchMove,h.passiveListener?{passive:!1,capture:r}:r),s.addEventListener(t.end,this.onTouchEnd,n),t.cancel&&s.addEventListener(t.cancel,this.onTouchEnd,n),Y||(i.addEventListener("touchstart",F),Y=!0)}(e.simulateTouch&&!A.ios&&!A.android||e.simulateTouch&&!h.touch&&A.ios)&&(s.addEventListener("mousedown",this.onTouchStart,!1),i.addEventListener("mousemove",this.onTouchMove,r),i.addEventListener("mouseup",this.onTouchEnd,!1))}(e.preventClicks||e.preventClicksPropagation)&&s.addEventListener("click",this.onClick,!0),e.cssMode&&a.addEventListener("scroll",this.onScroll),e.updateOnWindowResize?this.on(A.ios||A.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):this.on("observerUpdate",N,!0)},detachEvents:function(){var e=this.params,t=this.touchEvents,s=this.el,a=this.wrapperEl,r=!!e.nested;if(!h.touch&&h.pointerEvents)s.removeEventListener(t.start,this.onTouchStart,!1),i.removeEventListener(t.move,this.onTouchMove,r),i.removeEventListener(t.end,this.onTouchEnd,!1);else{if(h.touch){var n=!("onTouchStart"!==t.start||!h.passiveListener||!e.passiveListeners)&&{passive:!0,capture:!1};s.removeEventListener(t.start,this.onTouchStart,n),s.removeEventListener(t.move,this.onTouchMove,r),s.removeEventListener(t.end,this.onTouchEnd,n),t.cancel&&s.removeEventListener(t.cancel,this.onTouchEnd,n)}(e.simulateTouch&&!A.ios&&!A.android||e.simulateTouch&&!h.touch&&A.ios)&&(s.removeEventListener("mousedown",this.onTouchStart,!1),i.removeEventListener("mousemove",this.onTouchMove,r),i.removeEventListener("mouseup",this.onTouchEnd,!1))}(e.preventClicks||e.preventClicksPropagation)&&s.removeEventListener("click",this.onClick,!0),e.cssMode&&a.removeEventListener("scroll",this.onScroll),this.off(A.ios||A.android?"resize orientationchange observerUpdate":"resize observerUpdate",N)}},breakpoints:{setBreakpoint:function(){var e=this.activeIndex,t=this.initialized,i=this.loopedSlides;void 0===i&&(i=0);var s=this.params,a=this.$el,r=s.breakpoints;if(r&&(!r||0!==Object.keys(r).length)){var n=this.getBreakpoint(r);if(n&&this.currentBreakpoint!==n){var o=n in r?r[n]:void 0;o&&["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=o[e];void 0!==t&&(o[e]="slidesPerView"!==e||"AUTO"!==t&&"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var l=o||this.originalParams,h=s.slidesPerColumn>1,p=l.slidesPerColumn>1;h&&!p?a.removeClass(s.containerModifierClass+"multirow "+s.containerModifierClass+"multirow-column"):!h&&p&&(a.addClass(s.containerModifierClass+"multirow"),"column"===l.slidesPerColumnFill&&a.addClass(s.containerModifierClass+"multirow-column"));var c=l.direction&&l.direction!==s.direction,u=s.loop&&(l.slidesPerView!==s.slidesPerView||c);c&&t&&this.changeDirection(),d.extend(this.params,l),d.extend(this,{allowTouchMove:this.params.allowTouchMove,allowSlideNext:this.params.allowSlideNext,allowSlidePrev:this.params.allowSlidePrev}),this.currentBreakpoint=n,u&&t&&(this.loopDestroy(),this.loopCreate(),this.updateSlides(),this.slideTo(e-i+this.loopedSlides,0,!1)),this.emit("breakpoint",l)}}},getBreakpoint:function(e){if(e){var t=!1,i=Object.keys(e).map((function(e){if("string"==typeof e&&0===e.indexOf("@")){var t=parseFloat(e.substr(1));return{value:a.innerHeight*t,point:e}}return{value:e,point:e}}));i.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var s=0;s<i.length;s+=1){var r=i[s],n=r.point;r.value<=a.innerWidth&&(t=n)}return t||"max"}}},checkOverflow:{checkOverflow:function(){var e=this.params,t=this.isLocked,i=this.slides.length>0&&e.slidesOffsetBefore+e.spaceBetween*(this.slides.length-1)+this.slides[0].offsetWidth*this.slides.length;e.slidesOffsetBefore&&e.slidesOffsetAfter&&i?this.isLocked=i<=this.size:this.isLocked=1===this.snapGrid.length,this.allowSlideNext=!this.isLocked,this.allowSlidePrev=!this.isLocked,t!==this.isLocked&&this.emit(this.isLocked?"lock":"unlock"),t&&t!==this.isLocked&&(this.isEnd=!1,this.navigation&&this.navigation.update())}},classes:{addClasses:function(){var e=this.classNames,t=this.params,i=this.rtl,s=this.$el,a=[];a.push("initialized"),a.push(t.direction),t.freeMode&&a.push("free-mode"),t.autoHeight&&a.push("autoheight"),i&&a.push("rtl"),t.slidesPerColumn>1&&(a.push("multirow"),"column"===t.slidesPerColumnFill&&a.push("multirow-column")),A.android&&a.push("android"),A.ios&&a.push("ios"),t.cssMode&&a.push("css-mode"),a.forEach((function(i){e.push(t.containerModifierClass+i)})),s.addClass(e.join(" "))},removeClasses:function(){var e=this.$el,t=this.classNames;e.removeClass(t.join(" "))}},images:{loadImage:function(e,t,i,s,r,o){var l;function d(){o&&o()}n(e).parent("picture")[0]||e.complete&&r?d():t?((l=new a.Image).onload=d,l.onerror=d,s&&(l.sizes=s),i&&(l.srcset=i),t&&(l.src=t)):d()},preloadImages:function(){var 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(var i=0;i<e.imagesToLoad.length;i+=1){var s=e.imagesToLoad[i];e.loadImage(s,s.currentSrc||s.getAttribute("src"),s.srcset||s.getAttribute("srcset"),s.sizes||s.getAttribute("sizes"),!0,t)}}}},q={},j=function(e){function t(){for(var i,s,a,r=[],o=arguments.length;o--;)r[o]=arguments[o];1===r.length&&r[0].constructor&&r[0].constructor===Object?a=r[0]:(s=(i=r)[0],a=i[1]),a||(a={}),a=d.extend({},a),s&&!a.el&&(a.el=s),e.call(this,a),Object.keys(R).forEach((function(e){Object.keys(R[e]).forEach((function(i){t.prototype[i]||(t.prototype[i]=R[e][i])}))}));var l=this;void 0===l.modules&&(l.modules={}),Object.keys(l.modules).forEach((function(e){var t=l.modules[e];if(t.params){var i=Object.keys(t.params)[0],s=t.params[i];if("object"!=typeof s||null===s)return;if(!(i in a)||!("enabled"in s))return;!0===a[i]&&(a[i]={enabled:!0}),"object"!=typeof a[i]||"enabled"in a[i]||(a[i].enabled=!0),a[i]||(a[i]={enabled:!1})}}));var p=d.extend({},W);l.useModulesParams(p),l.params=d.extend({},p,q,a),l.originalParams=d.extend({},l.params),l.passedParams=d.extend({},a),l.$=n;var c=n(l.params.el);if(s=c[0]){if(c.length>1){var u=[];return c.each((function(e,i){var s=d.extend({},a,{el:i});u.push(new t(s))})),u}var v,f,m;return s.swiper=l,c.data("swiper",l),s&&s.shadowRoot&&s.shadowRoot.querySelector?(v=n(s.shadowRoot.querySelector("."+l.params.wrapperClass))).children=function(e){return c.children(e)}:v=c.children("."+l.params.wrapperClass),d.extend(l,{$el:c,el:s,$wrapperEl:v,wrapperEl:v[0],classNames:[],slides:n(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===l.params.direction},isVertical:function(){return"vertical"===l.params.direction},rtl:"rtl"===s.dir.toLowerCase()||"rtl"===c.css("direction"),rtlTranslate:"horizontal"===l.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===c.css("direction")),wrongRTL:"-webkit-box"===v.css("display"),activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEvents:(f=["touchstart","touchmove","touchend","touchcancel"],m=["mousedown","mousemove","mouseup"],h.pointerEvents&&(m=["pointerdown","pointermove","pointerup"]),l.touchEventsTouch={start:f[0],move:f[1],end:f[2],cancel:f[3]},l.touchEventsDesktop={start:m[0],move:m[1],end:m[2]},h.touch||!l.params.simulateTouch?l.touchEventsTouch:l.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,formElements:"input, select, option, textarea, button, video, label",lastClickTime:d.now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.useModules(),l.params.init&&l.init(),l}}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var i={extendedDefaults:{configurable:!0},defaults:{configurable:!0},Class:{configurable:!0},$:{configurable:!0}};return t.prototype.slidesPerViewDynamic=function(){var e=this.params,t=this.slides,i=this.slidesGrid,s=this.size,a=this.activeIndex,r=1;if(e.centeredSlides){for(var n,o=t[a].swiperSlideSize,l=a+1;l<t.length;l+=1)t[l]&&!n&&(r+=1,(o+=t[l].swiperSlideSize)>s&&(n=!0));for(var d=a-1;d>=0;d-=1)t[d]&&!n&&(r+=1,(o+=t[d].swiperSlideSize)>s&&(n=!0))}else for(var h=a+1;h<t.length;h+=1)i[h]-i[a]<s&&(r+=1);return r},t.prototype.update=function(){var e=this;if(e&&!e.destroyed){var t=e.snapGrid,i=e.params;i.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(s(),e.params.autoHeight&&e.updateAutoHeight()):(("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||s(),i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function s(){var t=e.rtlTranslate?-1*e.translate:e.translate,i=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(i),e.updateActiveIndex(),e.updateSlidesClasses()}},t.prototype.changeDirection=function(e,t){void 0===t&&(t=!0);var i=this.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(this.$el.removeClass(""+this.params.containerModifierClass+i).addClass(""+this.params.containerModifierClass+e),this.params.direction=e,this.slides.each((function(t,i){"vertical"===e?i.style.width="":i.style.height=""})),this.emit("changeDirection"),t&&this.update()),this},t.prototype.init=function(){this.initialized||(this.emit("beforeInit"),this.params.breakpoints&&this.setBreakpoint(),this.addClasses(),this.params.loop&&this.loopCreate(),this.updateSize(),this.updateSlides(),this.params.watchOverflow&&this.checkOverflow(),this.params.grabCursor&&this.setGrabCursor(),this.params.preloadImages&&this.preloadImages(),this.params.loop?this.slideTo(this.params.initialSlide+this.loopedSlides,0,this.params.runCallbacksOnInit):this.slideTo(this.params.initialSlide,0,this.params.runCallbacksOnInit),this.attachEvents(),this.initialized=!0,this.emit("init"))},t.prototype.destroy=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);var i=this,s=i.params,a=i.$el,r=i.$wrapperEl,n=i.slides;return void 0===i.params||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),s.loop&&i.loopDestroy(),t&&(i.removeClasses(),a.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([s.slideVisibleClass,s.slideActiveClass,s.slideNextClass,s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),i.emit("destroy"),Object.keys(i.eventsListeners).forEach((function(e){i.off(e)})),!1!==e&&(i.$el[0].swiper=null,i.$el.data("swiper",null),d.deleteProps(i)),i.destroyed=!0),null},t.extendDefaults=function(e){d.extend(q,e)},i.extendedDefaults.get=function(){return q},i.defaults.get=function(){return W},i.Class.get=function(){return e},i.$.get=function(){return n},Object.defineProperties(t,i),t}(p),K={name:"device",proto:{device:A},static:{device:A}},U={name:"support",proto:{support:h},static:{support:h}},_={isEdge:!!a.navigator.userAgent.match(/Edge/g),isSafari:function(){var e=a.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(a.navigator.userAgent)},Z={name:"browser",proto:{browser:_},static:{browser:_}},Q={name:"resize",create:function(){var e=this;d.extend(e,{resize:{resizeHandler:function(){e&&!e.destroyed&&e.initialized&&(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&&!e.destroyed&&e.initialized&&e.emit("orientationchange")}}})},on:{init:function(){a.addEventListener("resize",this.resize.resizeHandler),a.addEventListener("orientationchange",this.resize.orientationChangeHandler)},destroy:function(){a.removeEventListener("resize",this.resize.resizeHandler),a.removeEventListener("orientationchange",this.resize.orientationChangeHandler)}}},J={func:a.MutationObserver||a.WebkitMutationObserver,attach:function(e,t){void 0===t&&(t={});var i=this,s=new(0,J.func)((function(e){if(1!==e.length){var t=function(){i.emit("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(t):a.setTimeout(t,0)}else i.emit("observerUpdate",e[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}),i.observer.observers.push(s)},init:function(){if(h.observer&&this.params.observer){if(this.params.observeParents)for(var e=this.$el.parents(),t=0;t<e.length;t+=1)this.observer.attach(e[t]);this.observer.attach(this.$el[0],{childList:this.params.observeSlideChildren}),this.observer.attach(this.$wrapperEl[0],{attributes:!1})}},destroy:function(){this.observer.observers.forEach((function(e){e.disconnect()})),this.observer.observers=[]}},ee={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create:function(){d.extend(this,{observer:{init:J.init.bind(this),attach:J.attach.bind(this),destroy:J.destroy.bind(this),observers:[]}})},on:{init:function(){this.observer.init()},destroy:function(){this.observer.destroy()}}},te={update:function(e){var t=this,i=t.params,s=i.slidesPerView,a=i.slidesPerGroup,r=i.centeredSlides,n=t.params.virtual,o=n.addSlidesBefore,l=n.addSlidesAfter,h=t.virtual,p=h.from,c=h.to,u=h.slides,v=h.slidesGrid,f=h.renderSlide,m=h.offset;t.updateActiveIndex();var g,b,w,y=t.activeIndex||0;g=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",r?(b=Math.floor(s/2)+a+o,w=Math.floor(s/2)+a+l):(b=s+(a-1)+o,w=a+l);var x=Math.max((y||0)-w,0),E=Math.min((y||0)+b,u.length-1),T=(t.slidesGrid[x]||0)-(t.slidesGrid[0]||0);function S(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),t.lazy&&t.params.lazy.enabled&&t.lazy.load()}if(d.extend(t.virtual,{from:x,to:E,offset:T,slidesGrid:t.slidesGrid}),p===x&&c===E&&!e)return t.slidesGrid!==v&&T!==m&&t.slides.css(g,T+"px"),void t.updateProgress();if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:T,from:x,to:E,slides:function(){for(var e=[],t=x;t<=E;t+=1)e.push(u[t]);return e}()}),void S();var C=[],M=[];if(e)t.$wrapperEl.find("."+t.params.slideClass).remove();else for(var P=p;P<=c;P+=1)(P<x||P>E)&&t.$wrapperEl.find("."+t.params.slideClass+'[data-swiper-slide-index="'+P+'"]').remove();for(var z=0;z<u.length;z+=1)z>=x&&z<=E&&(void 0===c||e?M.push(z):(z>c&&M.push(z),z<p&&C.push(z)));M.forEach((function(e){t.$wrapperEl.append(f(u[e],e))})),C.sort((function(e,t){return t-e})).forEach((function(e){t.$wrapperEl.prepend(f(u[e],e))})),t.$wrapperEl.children(".swiper-slide").css(g,T+"px"),S()},renderSlide:function(e,t){var i=this.params.virtual;if(i.cache&&this.virtual.cache[t])return this.virtual.cache[t];var s=i.renderSlide?n(i.renderSlide.call(this,e,t)):n('<div class="'+this.params.slideClass+'" data-swiper-slide-index="'+t+'">'+e+"</div>");return s.attr("data-swiper-slide-index")||s.attr("data-swiper-slide-index",t),i.cache&&(this.virtual.cache[t]=s),s},appendSlide:function(e){if("object"==typeof e&&"length"in e)for(var t=0;t<e.length;t+=1)e[t]&&this.virtual.slides.push(e[t]);else this.virtual.slides.push(e);this.virtual.update(!0)},prependSlide:function(e){var t=this.activeIndex,i=t+1,s=1;if(Array.isArray(e)){for(var a=0;a<e.length;a+=1)e[a]&&this.virtual.slides.unshift(e[a]);i=t+e.length,s=e.length}else this.virtual.slides.unshift(e);if(this.params.virtual.cache){var r=this.virtual.cache,n={};Object.keys(r).forEach((function(e){var t=r[e],i=t.attr("data-swiper-slide-index");i&&t.attr("data-swiper-slide-index",parseInt(i,10)+1),n[parseInt(e,10)+s]=t})),this.virtual.cache=n}this.virtual.update(!0),this.slideTo(i,0)},removeSlide:function(e){if(null!=e){var t=this.activeIndex;if(Array.isArray(e))for(var i=e.length-1;i>=0;i-=1)this.virtual.slides.splice(e[i],1),this.params.virtual.cache&&delete this.virtual.cache[e[i]],e[i]<t&&(t-=1),t=Math.max(t,0);else this.virtual.slides.splice(e,1),this.params.virtual.cache&&delete this.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);this.virtual.update(!0),this.slideTo(t,0)}},removeAllSlides:function(){this.virtual.slides=[],this.params.virtual.cache&&(this.virtual.cache={}),this.virtual.update(!0),this.slideTo(0,0)}},ie={name:"virtual",params:{virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,addSlidesBefore:0,addSlidesAfter:0}},create:function(){d.extend(this,{virtual:{update:te.update.bind(this),appendSlide:te.appendSlide.bind(this),prependSlide:te.prependSlide.bind(this),removeSlide:te.removeSlide.bind(this),removeAllSlides:te.removeAllSlides.bind(this),renderSlide:te.renderSlide.bind(this),slides:this.params.virtual.slides,cache:{}}})},on:{beforeInit:function(){if(this.params.virtual.enabled){this.classNames.push(this.params.containerModifierClass+"virtual");var e={watchSlidesProgress:!0};d.extend(this.params,e),d.extend(this.originalParams,e),this.params.initialSlide||this.virtual.update()}},setTranslate:function(){this.params.virtual.enabled&&this.virtual.update()}}},se={handle:function(e){var t=this.rtlTranslate,s=e;s.originalEvent&&(s=s.originalEvent);var r=s.keyCode||s.charCode,n=this.params.keyboard.pageUpDown,o=n&&33===r,l=n&&34===r,d=37===r,h=39===r,p=38===r,c=40===r;if(!this.allowSlideNext&&(this.isHorizontal()&&h||this.isVertical()&&c||l))return!1;if(!this.allowSlidePrev&&(this.isHorizontal()&&d||this.isVertical()&&p||o))return!1;if(!(s.shiftKey||s.altKey||s.ctrlKey||s.metaKey||i.activeElement&&i.activeElement.nodeName&&("input"===i.activeElement.nodeName.toLowerCase()||"textarea"===i.activeElement.nodeName.toLowerCase()))){if(this.params.keyboard.onlyInViewport&&(o||l||d||h||p||c)){var u=!1;if(this.$el.parents("."+this.params.slideClass).length>0&&0===this.$el.parents("."+this.params.slideActiveClass).length)return;var v=a.innerWidth,f=a.innerHeight,m=this.$el.offset();t&&(m.left-=this.$el[0].scrollLeft);for(var g=[[m.left,m.top],[m.left+this.width,m.top],[m.left,m.top+this.height],[m.left+this.width,m.top+this.height]],b=0;b<g.length;b+=1){var w=g[b];w[0]>=0&&w[0]<=v&&w[1]>=0&&w[1]<=f&&(u=!0)}if(!u)return}this.isHorizontal()?((o||l||d||h)&&(s.preventDefault?s.preventDefault():s.returnValue=!1),((l||h)&&!t||(o||d)&&t)&&this.slideNext(),((o||d)&&!t||(l||h)&&t)&&this.slidePrev()):((o||l||p||c)&&(s.preventDefault?s.preventDefault():s.returnValue=!1),(l||c)&&this.slideNext(),(o||p)&&this.slidePrev()),this.emit("keyPress",r)}},enable:function(){this.keyboard.enabled||(n(i).on("keydown",this.keyboard.handle),this.keyboard.enabled=!0)},disable:function(){this.keyboard.enabled&&(n(i).off("keydown",this.keyboard.handle),this.keyboard.enabled=!1)}},ae={name:"keyboard",params:{keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}},create:function(){d.extend(this,{keyboard:{enabled:!1,enable:se.enable.bind(this),disable:se.disable.bind(this),handle:se.handle.bind(this)}})},on:{init:function(){this.params.keyboard.enabled&&this.keyboard.enable()},destroy:function(){this.keyboard.enabled&&this.keyboard.disable()}}};var re={lastScrollTime:d.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[],event:function(){return a.navigator.userAgent.indexOf("firefox")>-1?"DOMMouseScroll":function(){var e="onwheel"in i;if(!e){var t=i.createElement("div");t.setAttribute("onwheel","return;"),e="function"==typeof t.onwheel}return!e&&i.implementation&&i.implementation.hasFeature&&!0!==i.implementation.hasFeature("","")&&(e=i.implementation.hasFeature("Events.wheel","3.0")),e}()?"wheel":"mousewheel"},normalize:function(e){var t=0,i=0,s=0,a=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),s=10*t,a=10*i,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=a,a=0),(s||a)&&e.deltaMode&&(1===e.deltaMode?(s*=40,a*=40):(s*=800,a*=800)),s&&!t&&(t=s<1?-1:1),a&&!i&&(i=a<1?-1:1),{spinX:t,spinY:i,pixelX:s,pixelY:a}},handleMouseEnter:function(){this.mouseEntered=!0},handleMouseLeave:function(){this.mouseEntered=!1},handle:function(e){var t=e,i=this,s=i.params.mousewheel;i.params.cssMode&&t.preventDefault();var a=i.$el;if("container"!==i.params.mousewheel.eventsTarged&&(a=n(i.params.mousewheel.eventsTarged)),!i.mouseEntered&&!a[0].contains(t.target)&&!s.releaseOnEdges)return!0;t.originalEvent&&(t=t.originalEvent);var r=0,o=i.rtlTranslate?-1:1,l=re.normalize(t);if(s.forceToAxis)if(i.isHorizontal()){if(!(Math.abs(l.pixelX)>Math.abs(l.pixelY)))return!0;r=-l.pixelX*o}else{if(!(Math.abs(l.pixelY)>Math.abs(l.pixelX)))return!0;r=-l.pixelY}else r=Math.abs(l.pixelX)>Math.abs(l.pixelY)?-l.pixelX*o:-l.pixelY;if(0===r)return!0;if(s.invert&&(r=-r),i.params.freeMode){var h={time:d.now(),delta:Math.abs(r),direction:Math.sign(r)},p=i.mousewheel.lastEventBeforeSnap,c=p&&h.time<p.time+500&&h.delta<=p.delta&&h.direction===p.direction;if(!c){i.mousewheel.lastEventBeforeSnap=void 0,i.params.loop&&i.loopFix();var u=i.getTranslate()+r*s.sensitivity,v=i.isBeginning,f=i.isEnd;if(u>=i.minTranslate()&&(u=i.minTranslate()),u<=i.maxTranslate()&&(u=i.maxTranslate()),i.setTransition(0),i.setTranslate(u),i.updateProgress(),i.updateActiveIndex(),i.updateSlidesClasses(),(!v&&i.isBeginning||!f&&i.isEnd)&&i.updateSlidesClasses(),i.params.freeModeSticky){clearTimeout(i.mousewheel.timeout),i.mousewheel.timeout=void 0;var m=i.mousewheel.recentWheelEvents;m.length>=15&&m.shift();var g=m.length?m[m.length-1]:void 0,b=m[0];if(m.push(h),g&&(h.delta>g.delta||h.direction!==g.direction))m.splice(0);else if(m.length>=15&&h.time-b.time<500&&b.delta-h.delta>=1&&h.delta<=6){var w=r>0?.8:.2;i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.mousewheel.timeout=d.nextTick((function(){i.slideToClosest(i.params.speed,!0,void 0,w)}),0)}i.mousewheel.timeout||(i.mousewheel.timeout=d.nextTick((function(){i.mousewheel.lastEventBeforeSnap=h,m.splice(0),i.slideToClosest(i.params.speed,!0,void 0,.5)}),500))}if(c||i.emit("scroll",t),i.params.autoplay&&i.params.autoplayDisableOnInteraction&&i.autoplay.stop(),u===i.minTranslate()||u===i.maxTranslate())return!0}}else{var y={time:d.now(),delta:Math.abs(r),direction:Math.sign(r),raw:e},x=i.mousewheel.recentWheelEvents;x.length>=2&&x.shift();var E=x.length?x[x.length-1]:void 0;if(x.push(y),E?(y.direction!==E.direction||y.delta>E.delta||y.time>E.time+150)&&i.mousewheel.animateSlider(y):i.mousewheel.animateSlider(y),i.mousewheel.releaseScroll(y))return!0}return t.preventDefault?t.preventDefault():t.returnValue=!1,!1},animateSlider:function(e){return e.delta>=6&&d.now()-this.mousewheel.lastScrollTime<60||(e.direction<0?this.isEnd&&!this.params.loop||this.animating||(this.slideNext(),this.emit("scroll",e.raw)):this.isBeginning&&!this.params.loop||this.animating||(this.slidePrev(),this.emit("scroll",e.raw)),this.mousewheel.lastScrollTime=(new a.Date).getTime(),!1)},releaseScroll:function(e){var t=this.params.mousewheel;if(e.direction<0){if(this.isEnd&&!this.params.loop&&t.releaseOnEdges)return!0}else if(this.isBeginning&&!this.params.loop&&t.releaseOnEdges)return!0;return!1},enable:function(){var e=re.event();if(this.params.cssMode)return this.wrapperEl.removeEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarged&&(t=n(this.params.mousewheel.eventsTarged)),t.on("mouseenter",this.mousewheel.handleMouseEnter),t.on("mouseleave",this.mousewheel.handleMouseLeave),t.on(e,this.mousewheel.handle),this.mousewheel.enabled=!0,!0},disable:function(){var e=re.event();if(this.params.cssMode)return this.wrapperEl.addEventListener(e,this.mousewheel.handle),!0;if(!e)return!1;if(!this.mousewheel.enabled)return!1;var t=this.$el;return"container"!==this.params.mousewheel.eventsTarged&&(t=n(this.params.mousewheel.eventsTarged)),t.off(e,this.mousewheel.handle),this.mousewheel.enabled=!1,!0}},ne={update:function(){var e=this.params.navigation;if(!this.params.loop){var t=this.navigation,i=t.$nextEl,s=t.$prevEl;s&&s.length>0&&(this.isBeginning?s.addClass(e.disabledClass):s.removeClass(e.disabledClass),s[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass)),i&&i.length>0&&(this.isEnd?i.addClass(e.disabledClass):i.removeClass(e.disabledClass),i[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](e.lockClass))}},onPrevClick:function(e){e.preventDefault(),this.isBeginning&&!this.params.loop||this.slidePrev()},onNextClick:function(e){e.preventDefault(),this.isEnd&&!this.params.loop||this.slideNext()},init:function(){var e,t,i=this.params.navigation;(i.nextEl||i.prevEl)&&(i.nextEl&&(e=n(i.nextEl),this.params.uniqueNavElements&&"string"==typeof i.nextEl&&e.length>1&&1===this.$el.find(i.nextEl).length&&(e=this.$el.find(i.nextEl))),i.prevEl&&(t=n(i.prevEl),this.params.uniqueNavElements&&"string"==typeof i.prevEl&&t.length>1&&1===this.$el.find(i.prevEl).length&&(t=this.$el.find(i.prevEl))),e&&e.length>0&&e.on("click",this.navigation.onNextClick),t&&t.length>0&&t.on("click",this.navigation.onPrevClick),d.extend(this.navigation,{$nextEl:e,nextEl:e&&e[0],$prevEl:t,prevEl:t&&t[0]}))},destroy:function(){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;t&&t.length&&(t.off("click",this.navigation.onNextClick),t.removeClass(this.params.navigation.disabledClass)),i&&i.length&&(i.off("click",this.navigation.onPrevClick),i.removeClass(this.params.navigation.disabledClass))}},oe={update:function(){var e=this.rtl,t=this.params.pagination;if(t.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var i,s=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,a=this.pagination.$el,r=this.params.loop?Math.ceil((s-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length;if(this.params.loop?((i=Math.ceil((this.activeIndex-this.loopedSlides)/this.params.slidesPerGroup))>s-1-2*this.loopedSlides&&(i-=s-2*this.loopedSlides),i>r-1&&(i-=r),i<0&&"bullets"!==this.params.paginationType&&(i=r+i)):i=void 0!==this.snapIndex?this.snapIndex:this.activeIndex||0,"bullets"===t.type&&this.pagination.bullets&&this.pagination.bullets.length>0){var o,l,d,h=this.pagination.bullets;if(t.dynamicBullets&&(this.pagination.bulletSize=h.eq(0)[this.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(this.isHorizontal()?"width":"height",this.pagination.bulletSize*(t.dynamicMainBullets+4)+"px"),t.dynamicMainBullets>1&&void 0!==this.previousIndex&&(this.pagination.dynamicBulletIndex+=i-this.previousIndex,this.pagination.dynamicBulletIndex>t.dynamicMainBullets-1?this.pagination.dynamicBulletIndex=t.dynamicMainBullets-1:this.pagination.dynamicBulletIndex<0&&(this.pagination.dynamicBulletIndex=0)),o=i-this.pagination.dynamicBulletIndex,d=((l=o+(Math.min(h.length,t.dynamicMainBullets)-1))+o)/2),h.removeClass(t.bulletActiveClass+" "+t.bulletActiveClass+"-next "+t.bulletActiveClass+"-next-next "+t.bulletActiveClass+"-prev "+t.bulletActiveClass+"-prev-prev "+t.bulletActiveClass+"-main"),a.length>1)h.each((function(e,s){var a=n(s),r=a.index();r===i&&a.addClass(t.bulletActiveClass),t.dynamicBullets&&(r>=o&&r<=l&&a.addClass(t.bulletActiveClass+"-main"),r===o&&a.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),r===l&&a.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next"))}));else{var p=h.eq(i),c=p.index();if(p.addClass(t.bulletActiveClass),t.dynamicBullets){for(var u=h.eq(o),v=h.eq(l),f=o;f<=l;f+=1)h.eq(f).addClass(t.bulletActiveClass+"-main");if(this.params.loop)if(c>=h.length-t.dynamicMainBullets){for(var m=t.dynamicMainBullets;m>=0;m-=1)h.eq(h.length-m).addClass(t.bulletActiveClass+"-main");h.eq(h.length-t.dynamicMainBullets-1).addClass(t.bulletActiveClass+"-prev")}else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next");else u.prev().addClass(t.bulletActiveClass+"-prev").prev().addClass(t.bulletActiveClass+"-prev-prev"),v.next().addClass(t.bulletActiveClass+"-next").next().addClass(t.bulletActiveClass+"-next-next")}}if(t.dynamicBullets){var g=Math.min(h.length,t.dynamicMainBullets+4),b=(this.pagination.bulletSize*g-this.pagination.bulletSize)/2-d*this.pagination.bulletSize,w=e?"right":"left";h.css(this.isHorizontal()?w:"top",b+"px")}}if("fraction"===t.type&&(a.find("."+t.currentClass).text(t.formatFractionCurrent(i+1)),a.find("."+t.totalClass).text(t.formatFractionTotal(r))),"progressbar"===t.type){var y;y=t.progressbarOpposite?this.isHorizontal()?"vertical":"horizontal":this.isHorizontal()?"horizontal":"vertical";var x=(i+1)/r,E=1,T=1;"horizontal"===y?E=x:T=x,a.find("."+t.progressbarFillClass).transform("translate3d(0,0,0) scaleX("+E+") scaleY("+T+")").transition(this.params.speed)}"custom"===t.type&&t.renderCustom?(a.html(t.renderCustom(this,i+1,r)),this.emit("paginationRender",this,a[0])):this.emit("paginationUpdate",this,a[0]),a[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](t.lockClass)}},render:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.virtual&&this.params.virtual.enabled?this.virtual.slides.length:this.slides.length,i=this.pagination.$el,s="";if("bullets"===e.type){for(var a=this.params.loop?Math.ceil((t-2*this.loopedSlides)/this.params.slidesPerGroup):this.snapGrid.length,r=0;r<a;r+=1)e.renderBullet?s+=e.renderBullet.call(this,r,e.bulletClass):s+="<"+e.bulletElement+' class="'+e.bulletClass+'"></'+e.bulletElement+">";i.html(s),this.pagination.bullets=i.find("."+e.bulletClass)}"fraction"===e.type&&(s=e.renderFraction?e.renderFraction.call(this,e.currentClass,e.totalClass):'<span class="'+e.currentClass+'"></span> / <span class="'+e.totalClass+'"></span>',i.html(s)),"progressbar"===e.type&&(s=e.renderProgressbar?e.renderProgressbar.call(this,e.progressbarFillClass):'<span class="'+e.progressbarFillClass+'"></span>',i.html(s)),"custom"!==e.type&&this.emit("paginationRender",this.pagination.$el[0])}},init:function(){var e=this,t=e.params.pagination;if(t.el){var i=n(t.el);0!==i.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&i.length>1&&(i=e.$el.find(t.el)),"bullets"===t.type&&t.clickable&&i.addClass(t.clickableClass),i.addClass(t.modifierClass+t.type),"bullets"===t.type&&t.dynamicBullets&&(i.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&i.addClass(t.progressbarOppositeClass),t.clickable&&i.on("click","."+t.bulletClass,(function(t){t.preventDefault();var i=n(this).index()*e.params.slidesPerGroup;e.params.loop&&(i+=e.loopedSlides),e.slideTo(i)})),d.extend(e.pagination,{$el:i,el:i[0]}))}},destroy:function(){var e=this.params.pagination;if(e.el&&this.pagination.el&&this.pagination.$el&&0!==this.pagination.$el.length){var t=this.pagination.$el;t.removeClass(e.hiddenClass),t.removeClass(e.modifierClass+e.type),this.pagination.bullets&&this.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&t.off("click","."+e.bulletClass)}}},le={setTranslate:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=this.rtlTranslate,i=this.progress,s=e.dragSize,a=e.trackSize,r=e.$dragEl,n=e.$el,o=this.params.scrollbar,l=s,d=(a-s)*i;t?(d=-d)>0?(l=s-d,d=0):-d+s>a&&(l=a+d):d<0?(l=s+d,d=0):d+s>a&&(l=a-d),this.isHorizontal()?(r.transform("translate3d("+d+"px, 0, 0)"),r[0].style.width=l+"px"):(r.transform("translate3d(0px, "+d+"px, 0)"),r[0].style.height=l+"px"),o.hide&&(clearTimeout(this.scrollbar.timeout),n[0].style.opacity=1,this.scrollbar.timeout=setTimeout((function(){n[0].style.opacity=0,n.transition(400)}),1e3))}},setTransition:function(e){this.params.scrollbar.el&&this.scrollbar.el&&this.scrollbar.$dragEl.transition(e)},updateSize:function(){if(this.params.scrollbar.el&&this.scrollbar.el){var e=this.scrollbar,t=e.$dragEl,i=e.$el;t[0].style.width="",t[0].style.height="";var s,a=this.isHorizontal()?i[0].offsetWidth:i[0].offsetHeight,r=this.size/this.virtualSize,n=r*(a/this.size);s="auto"===this.params.scrollbar.dragSize?a*r:parseInt(this.params.scrollbar.dragSize,10),this.isHorizontal()?t[0].style.width=s+"px":t[0].style.height=s+"px",i[0].style.display=r>=1?"none":"",this.params.scrollbar.hide&&(i[0].style.opacity=0),d.extend(e,{trackSize:a,divider:r,moveDivider:n,dragSize:s}),e.$el[this.params.watchOverflow&&this.isLocked?"addClass":"removeClass"](this.params.scrollbar.lockClass)}},getPointerPosition:function(e){return this.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},setDragPosition:function(e){var t,i=this.scrollbar,s=this.rtlTranslate,a=i.$el,r=i.dragSize,n=i.trackSize,o=i.dragStartPos;t=(i.getPointerPosition(e)-a.offset()[this.isHorizontal()?"left":"top"]-(null!==o?o:r/2))/(n-r),t=Math.max(Math.min(t,1),0),s&&(t=1-t);var l=this.minTranslate()+(this.maxTranslate()-this.minTranslate())*t;this.updateProgress(l),this.setTranslate(l),this.updateActiveIndex(),this.updateSlidesClasses()},onDragStart:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el,r=i.$dragEl;this.scrollbar.isTouched=!0,this.scrollbar.dragStartPos=e.target===r[0]||e.target===r?i.getPointerPosition(e)-e.target.getBoundingClientRect()[this.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),s.transition(100),r.transition(100),i.setDragPosition(e),clearTimeout(this.scrollbar.dragTimeout),a.transition(0),t.hide&&a.css("opacity",1),this.params.cssMode&&this.$wrapperEl.css("scroll-snap-type","none"),this.emit("scrollbarDragStart",e)},onDragMove:function(e){var t=this.scrollbar,i=this.$wrapperEl,s=t.$el,a=t.$dragEl;this.scrollbar.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,t.setDragPosition(e),i.transition(0),s.transition(0),a.transition(0),this.emit("scrollbarDragMove",e))},onDragEnd:function(e){var t=this.params.scrollbar,i=this.scrollbar,s=this.$wrapperEl,a=i.$el;this.scrollbar.isTouched&&(this.scrollbar.isTouched=!1,this.params.cssMode&&(this.$wrapperEl.css("scroll-snap-type",""),s.transition("")),t.hide&&(clearTimeout(this.scrollbar.dragTimeout),this.scrollbar.dragTimeout=d.nextTick((function(){a.css("opacity",0),a.transition(400)}),1e3)),this.emit("scrollbarDragEnd",e),t.snapOnRelease&&this.slideToClosest())},enableDraggable:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=e.$el[0],n=!(!h.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},o=!(!h.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};h.touch?(r.addEventListener(t.start,this.scrollbar.onDragStart,n),r.addEventListener(t.move,this.scrollbar.onDragMove,n),r.addEventListener(t.end,this.scrollbar.onDragEnd,o)):(r.addEventListener(s.start,this.scrollbar.onDragStart,n),i.addEventListener(s.move,this.scrollbar.onDragMove,n),i.addEventListener(s.end,this.scrollbar.onDragEnd,o))}},disableDraggable:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.touchEventsTouch,s=this.touchEventsDesktop,a=this.params,r=e.$el[0],n=!(!h.passiveListener||!a.passiveListeners)&&{passive:!1,capture:!1},o=!(!h.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};h.touch?(r.removeEventListener(t.start,this.scrollbar.onDragStart,n),r.removeEventListener(t.move,this.scrollbar.onDragMove,n),r.removeEventListener(t.end,this.scrollbar.onDragEnd,o)):(r.removeEventListener(s.start,this.scrollbar.onDragStart,n),i.removeEventListener(s.move,this.scrollbar.onDragMove,n),i.removeEventListener(s.end,this.scrollbar.onDragEnd,o))}},init:function(){if(this.params.scrollbar.el){var e=this.scrollbar,t=this.$el,i=this.params.scrollbar,s=n(i.el);this.params.uniqueNavElements&&"string"==typeof i.el&&s.length>1&&1===t.find(i.el).length&&(s=t.find(i.el));var a=s.find("."+this.params.scrollbar.dragClass);0===a.length&&(a=n('<div class="'+this.params.scrollbar.dragClass+'"></div>'),s.append(a)),d.extend(e,{$el:s,el:s[0],$dragEl:a,dragEl:a[0]}),i.draggable&&e.enableDraggable()}},destroy:function(){this.scrollbar.disableDraggable()}},de={setTransform:function(e,t){var i=this.rtl,s=n(e),a=i?-1:1,r=s.attr("data-swiper-parallax")||"0",o=s.attr("data-swiper-parallax-x"),l=s.attr("data-swiper-parallax-y"),d=s.attr("data-swiper-parallax-scale"),h=s.attr("data-swiper-parallax-opacity");if(o||l?(o=o||"0",l=l||"0"):this.isHorizontal()?(o=r,l="0"):(l=r,o="0"),o=o.indexOf("%")>=0?parseInt(o,10)*t*a+"%":o*t*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*t+"%":l*t+"px",null!=h){var p=h-(h-1)*(1-Math.abs(t));s[0].style.opacity=p}if(null==d)s.transform("translate3d("+o+", "+l+", 0px)");else{var c=d-(d-1)*(1-Math.abs(t));s.transform("translate3d("+o+", "+l+", 0px) scale("+c+")")}},setTranslate:function(){var e=this,t=e.$el,i=e.slides,s=e.progress,a=e.snapGrid;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,s)})),i.each((function(t,i){var r=i.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(r+=Math.ceil(t/2)-s*(a.length-1)),r=Math.min(Math.max(r,-1),1),n(i).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){e.parallax.setTransform(i,r)}))}))},setTransition:function(e){void 0===e&&(e=this.params.speed);this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t,i){var s=n(i),a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}},he={getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var t=e.targetTouches[0].pageX,i=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,a=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-t,2)+Math.pow(a-i,2))},onGestureStart:function(e){var t=this.params.zoom,i=this.zoom,s=i.gesture;if(i.fakeGestureTouched=!1,i.fakeGestureMoved=!1,!h.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;i.fakeGestureTouched=!0,s.scaleStart=he.getDistanceBetweenTouches(e)}s.$slideEl&&s.$slideEl.length||(s.$slideEl=n(e.target).closest("."+this.params.slideClass),0===s.$slideEl.length&&(s.$slideEl=this.slides.eq(this.activeIndex)),s.$imageEl=s.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),s.$imageWrapEl=s.$imageEl.parent("."+t.containerClass),s.maxRatio=s.$imageWrapEl.attr("data-swiper-zoom")||t.maxRatio,0!==s.$imageWrapEl.length)?(s.$imageEl&&s.$imageEl.transition(0),this.zoom.isScaling=!0):s.$imageEl=void 0},onGestureChange:function(e){var t=this.params.zoom,i=this.zoom,s=i.gesture;if(!h.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;i.fakeGestureMoved=!0,s.scaleMove=he.getDistanceBetweenTouches(e)}s.$imageEl&&0!==s.$imageEl.length&&(i.scale=h.gestures?e.scale*i.currentScale:s.scaleMove/s.scaleStart*i.currentScale,i.scale>s.maxRatio&&(i.scale=s.maxRatio-1+Math.pow(i.scale-s.maxRatio+1,.5)),i.scale<t.minRatio&&(i.scale=t.minRatio+1-Math.pow(t.minRatio-i.scale+1,.5)),s.$imageEl.transform("translate3d(0,0,0) scale("+i.scale+")"))},onGestureEnd:function(e){var t=this.params.zoom,i=this.zoom,s=i.gesture;if(!h.gestures){if(!i.fakeGestureTouched||!i.fakeGestureMoved)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!A.android)return;i.fakeGestureTouched=!1,i.fakeGestureMoved=!1}s.$imageEl&&0!==s.$imageEl.length&&(i.scale=Math.max(Math.min(i.scale,s.maxRatio),t.minRatio),s.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale("+i.scale+")"),i.currentScale=i.scale,i.isScaling=!1,1===i.scale&&(s.$slideEl=void 0))},onTouchStart:function(e){var t=this.zoom,i=t.gesture,s=t.image;i.$imageEl&&0!==i.$imageEl.length&&(s.isTouched||(A.android&&e.cancelable&&e.preventDefault(),s.isTouched=!0,s.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))},onTouchMove:function(e){var t=this.zoom,i=t.gesture,s=t.image,a=t.velocity;if(i.$imageEl&&0!==i.$imageEl.length&&(this.allowClick=!1,s.isTouched&&i.$slideEl)){s.isMoved||(s.width=i.$imageEl[0].offsetWidth,s.height=i.$imageEl[0].offsetHeight,s.startX=d.getTranslate(i.$imageWrapEl[0],"x")||0,s.startY=d.getTranslate(i.$imageWrapEl[0],"y")||0,i.slideWidth=i.$slideEl[0].offsetWidth,i.slideHeight=i.$slideEl[0].offsetHeight,i.$imageWrapEl.transition(0),this.rtl&&(s.startX=-s.startX,s.startY=-s.startY));var r=s.width*t.scale,n=s.height*t.scale;if(!(r<i.slideWidth&&n<i.slideHeight)){if(s.minX=Math.min(i.slideWidth/2-r/2,0),s.maxX=-s.minX,s.minY=Math.min(i.slideHeight/2-n/2,0),s.maxY=-s.minY,s.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,s.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!s.isMoved&&!t.isScaling){if(this.isHorizontal()&&(Math.floor(s.minX)===Math.floor(s.startX)&&s.touchesCurrent.x<s.touchesStart.x||Math.floor(s.maxX)===Math.floor(s.startX)&&s.touchesCurrent.x>s.touchesStart.x))return void(s.isTouched=!1);if(!this.isHorizontal()&&(Math.floor(s.minY)===Math.floor(s.startY)&&s.touchesCurrent.y<s.touchesStart.y||Math.floor(s.maxY)===Math.floor(s.startY)&&s.touchesCurrent.y>s.touchesStart.y))return void(s.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),s.isMoved=!0,s.currentX=s.touchesCurrent.x-s.touchesStart.x+s.startX,s.currentY=s.touchesCurrent.y-s.touchesStart.y+s.startY,s.currentX<s.minX&&(s.currentX=s.minX+1-Math.pow(s.minX-s.currentX+1,.8)),s.currentX>s.maxX&&(s.currentX=s.maxX-1+Math.pow(s.currentX-s.maxX+1,.8)),s.currentY<s.minY&&(s.currentY=s.minY+1-Math.pow(s.minY-s.currentY+1,.8)),s.currentY>s.maxY&&(s.currentY=s.maxY-1+Math.pow(s.currentY-s.maxY+1,.8)),a.prevPositionX||(a.prevPositionX=s.touchesCurrent.x),a.prevPositionY||(a.prevPositionY=s.touchesCurrent.y),a.prevTime||(a.prevTime=Date.now()),a.x=(s.touchesCurrent.x-a.prevPositionX)/(Date.now()-a.prevTime)/2,a.y=(s.touchesCurrent.y-a.prevPositionY)/(Date.now()-a.prevTime)/2,Math.abs(s.touchesCurrent.x-a.prevPositionX)<2&&(a.x=0),Math.abs(s.touchesCurrent.y-a.prevPositionY)<2&&(a.y=0),a.prevPositionX=s.touchesCurrent.x,a.prevPositionY=s.touchesCurrent.y,a.prevTime=Date.now(),i.$imageWrapEl.transform("translate3d("+s.currentX+"px, "+s.currentY+"px,0)")}}},onTouchEnd:function(){var e=this.zoom,t=e.gesture,i=e.image,s=e.velocity;if(t.$imageEl&&0!==t.$imageEl.length){if(!i.isTouched||!i.isMoved)return i.isTouched=!1,void(i.isMoved=!1);i.isTouched=!1,i.isMoved=!1;var a=300,r=300,n=s.x*a,o=i.currentX+n,l=s.y*r,d=i.currentY+l;0!==s.x&&(a=Math.abs((o-i.currentX)/s.x)),0!==s.y&&(r=Math.abs((d-i.currentY)/s.y));var h=Math.max(a,r);i.currentX=o,i.currentY=d;var p=i.width*e.scale,c=i.height*e.scale;i.minX=Math.min(t.slideWidth/2-p/2,0),i.maxX=-i.minX,i.minY=Math.min(t.slideHeight/2-c/2,0),i.maxY=-i.minY,i.currentX=Math.max(Math.min(i.currentX,i.maxX),i.minX),i.currentY=Math.max(Math.min(i.currentY,i.maxY),i.minY),t.$imageWrapEl.transition(h).transform("translate3d("+i.currentX+"px, "+i.currentY+"px,0)")}},onTransitionEnd:function(){var e=this.zoom,t=e.gesture;t.$slideEl&&this.previousIndex!==this.activeIndex&&(t.$imageEl&&t.$imageEl.transform("translate3d(0,0,0) scale(1)"),t.$imageWrapEl&&t.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,e.currentScale=1,t.$slideEl=void 0,t.$imageEl=void 0,t.$imageWrapEl=void 0)},toggle:function(e){var t=this.zoom;t.scale&&1!==t.scale?t.out():t.in(e)},in:function(e){var t,i,s,a,r,n,o,l,d,h,p,c,u,v,f,m,g=this.zoom,b=this.params.zoom,w=g.gesture,y=g.image;(w.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?w.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):w.$slideEl=this.slides.eq(this.activeIndex),w.$imageEl=w.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),w.$imageWrapEl=w.$imageEl.parent("."+b.containerClass)),w.$imageEl&&0!==w.$imageEl.length)&&(w.$slideEl.addClass(""+b.zoomedSlideClass),void 0===y.touchesStart.x&&e?(t="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,i="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(t=y.touchesStart.x,i=y.touchesStart.y),g.scale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,g.currentScale=w.$imageWrapEl.attr("data-swiper-zoom")||b.maxRatio,e?(f=w.$slideEl[0].offsetWidth,m=w.$slideEl[0].offsetHeight,s=w.$slideEl.offset().left+f/2-t,a=w.$slideEl.offset().top+m/2-i,o=w.$imageEl[0].offsetWidth,l=w.$imageEl[0].offsetHeight,d=o*g.scale,h=l*g.scale,u=-(p=Math.min(f/2-d/2,0)),v=-(c=Math.min(m/2-h/2,0)),(r=s*g.scale)<p&&(r=p),r>u&&(r=u),(n=a*g.scale)<c&&(n=c),n>v&&(n=v)):(r=0,n=0),w.$imageWrapEl.transition(300).transform("translate3d("+r+"px, "+n+"px,0)"),w.$imageEl.transition(300).transform("translate3d(0,0,0) scale("+g.scale+")"))},out:function(){var e=this.zoom,t=this.params.zoom,i=e.gesture;i.$slideEl||(this.params.virtual&&this.params.virtual.enabled&&this.virtual?i.$slideEl=this.$wrapperEl.children("."+this.params.slideActiveClass):i.$slideEl=this.slides.eq(this.activeIndex),i.$imageEl=i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),i.$imageWrapEl=i.$imageEl.parent("."+t.containerClass)),i.$imageEl&&0!==i.$imageEl.length&&(e.scale=1,e.currentScale=1,i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),i.$slideEl.removeClass(""+t.zoomedSlideClass),i.$slideEl=void 0)},enable:function(){var e=this.zoom;if(!e.enabled){e.enabled=!0;var t=!("touchstart"!==this.touchEvents.start||!h.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!h.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;h.gestures?(this.$wrapperEl.on("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.on("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.on("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.on(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.on(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.on(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.on(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.on(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}},disable:function(){var e=this.zoom;if(e.enabled){this.zoom.enabled=!1;var t=!("touchstart"!==this.touchEvents.start||!h.passiveListener||!this.params.passiveListeners)&&{passive:!0,capture:!1},i=!h.passiveListener||{passive:!1,capture:!0},s="."+this.params.slideClass;h.gestures?(this.$wrapperEl.off("gesturestart",s,e.onGestureStart,t),this.$wrapperEl.off("gesturechange",s,e.onGestureChange,t),this.$wrapperEl.off("gestureend",s,e.onGestureEnd,t)):"touchstart"===this.touchEvents.start&&(this.$wrapperEl.off(this.touchEvents.start,s,e.onGestureStart,t),this.$wrapperEl.off(this.touchEvents.move,s,e.onGestureChange,i),this.$wrapperEl.off(this.touchEvents.end,s,e.onGestureEnd,t),this.touchEvents.cancel&&this.$wrapperEl.off(this.touchEvents.cancel,s,e.onGestureEnd,t)),this.$wrapperEl.off(this.touchEvents.move,"."+this.params.zoom.containerClass,e.onTouchMove,i)}}},pe={loadInSlide:function(e,t){void 0===t&&(t=!0);var i=this,s=i.params.lazy;if(void 0!==e&&0!==i.slides.length){var a=i.virtual&&i.params.virtual.enabled?i.$wrapperEl.children("."+i.params.slideClass+'[data-swiper-slide-index="'+e+'"]'):i.slides.eq(e),r=a.find("."+s.elementClass+":not(."+s.loadedClass+"):not(."+s.loadingClass+")");!a.hasClass(s.elementClass)||a.hasClass(s.loadedClass)||a.hasClass(s.loadingClass)||(r=r.add(a[0])),0!==r.length&&r.each((function(e,r){var o=n(r);o.addClass(s.loadingClass);var l=o.attr("data-background"),d=o.attr("data-src"),h=o.attr("data-srcset"),p=o.attr("data-sizes"),c=o.parent("picture");i.loadImage(o[0],d||l,h,p,!1,(function(){if(null!=i&&i&&(!i||i.params)&&!i.destroyed){if(l?(o.css("background-image",'url("'+l+'")'),o.removeAttr("data-background")):(h&&(o.attr("srcset",h),o.removeAttr("data-srcset")),p&&(o.attr("sizes",p),o.removeAttr("data-sizes")),c.length&&c.children("source").each((function(e,t){var i=n(t);i.attr("data-srcset")&&(i.attr("srcset",i.attr("data-srcset")),i.removeAttr("data-srcset"))})),d&&(o.attr("src",d),o.removeAttr("data-src"))),o.addClass(s.loadedClass).removeClass(s.loadingClass),a.find("."+s.preloaderClass).remove(),i.params.loop&&t){var e=a.attr("data-swiper-slide-index");if(a.hasClass(i.params.slideDuplicateClass)){var r=i.$wrapperEl.children('[data-swiper-slide-index="'+e+'"]:not(.'+i.params.slideDuplicateClass+")");i.lazy.loadInSlide(r.index(),!1)}else{var u=i.$wrapperEl.children("."+i.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');i.lazy.loadInSlide(u.index(),!1)}}i.emit("lazyImageReady",a[0],o[0]),i.params.autoHeight&&i.updateAutoHeight()}})),i.emit("lazyImageLoad",a[0],o[0])}))}},load:function(){var e=this,t=e.$wrapperEl,i=e.params,s=e.slides,a=e.activeIndex,r=e.virtual&&i.virtual.enabled,o=i.lazy,l=i.slidesPerView;function d(e){if(r){if(t.children("."+i.slideClass+'[data-swiper-slide-index="'+e+'"]').length)return!0}else if(s[e])return!0;return!1}function h(e){return r?n(e).attr("data-swiper-slide-index"):n(e).index()}if("auto"===l&&(l=0),e.lazy.initialImageLoaded||(e.lazy.initialImageLoaded=!0),e.params.watchSlidesVisibility)t.children("."+i.slideVisibleClass).each((function(t,i){var s=r?n(i).attr("data-swiper-slide-index"):n(i).index();e.lazy.loadInSlide(s)}));else if(l>1)for(var p=a;p<a+l;p+=1)d(p)&&e.lazy.loadInSlide(p);else e.lazy.loadInSlide(a);if(o.loadPrevNext)if(l>1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){for(var c=o.loadPrevNextAmount,u=l,v=Math.min(a+u+Math.max(c,u),s.length),f=Math.max(a-Math.max(u,c),0),m=a+l;m<v;m+=1)d(m)&&e.lazy.loadInSlide(m);for(var g=f;g<a;g+=1)d(g)&&e.lazy.loadInSlide(g)}else{var b=t.children("."+i.slideNextClass);b.length>0&&e.lazy.loadInSlide(h(b));var w=t.children("."+i.slidePrevClass);w.length>0&&e.lazy.loadInSlide(h(w))}}},ce={LinearSpline:function(e,t){var i,s,a,r,n,o=function(e,t){for(s=-1,i=e.length;i-s>1;)e[a=i+s>>1]<=t?s=a:i=a;return i};return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(n=o(this.x,e),r=n-1,(e-this.x[r])*(this.y[n]-this.y[r])/(this.x[n]-this.x[r])+this.y[r]):0},this},getInterpolateFunction:function(e){this.controller.spline||(this.controller.spline=this.params.loop?new ce.LinearSpline(this.slidesGrid,e.slidesGrid):new ce.LinearSpline(this.snapGrid,e.snapGrid))},setTranslate:function(e,t){var i,s,a=this,r=a.controller.control;function n(e){var t=a.rtlTranslate?-a.translate:a.translate;"slide"===a.params.controller.by&&(a.controller.getInterpolateFunction(e),s=-a.controller.spline.interpolate(-t)),s&&"container"!==a.params.controller.by||(i=(e.maxTranslate()-e.minTranslate())/(a.maxTranslate()-a.minTranslate()),s=(t-a.minTranslate())*i+e.minTranslate()),a.params.controller.inverse&&(s=e.maxTranslate()-s),e.updateProgress(s),e.setTranslate(s,a),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(r))for(var o=0;o<r.length;o+=1)r[o]!==t&&r[o]instanceof j&&n(r[o]);else r instanceof j&&t!==r&&n(r)},setTransition:function(e,t){var i,s=this,a=s.controller.control;function r(t){t.setTransition(e,s),0!==e&&(t.transitionStart(),t.params.autoHeight&&d.nextTick((function(){t.updateAutoHeight()})),t.$wrapperEl.transitionEnd((function(){a&&(t.params.loop&&"slide"===s.params.controller.by&&t.loopFix(),t.transitionEnd())})))}if(Array.isArray(a))for(i=0;i<a.length;i+=1)a[i]!==t&&a[i]instanceof j&&r(a[i]);else a instanceof j&&t!==a&&r(a)}},ue={makeElFocusable:function(e){return e.attr("tabIndex","0"),e},makeElNotFocusable:function(e){return e.attr("tabIndex","-1"),e},addElRole:function(e,t){return e.attr("role",t),e},addElLabel:function(e,t){return e.attr("aria-label",t),e},disableEl:function(e){return e.attr("aria-disabled",!0),e},enableEl:function(e){return e.attr("aria-disabled",!1),e},onEnterKey:function(e){var t=this.params.a11y;if(13===e.keyCode){var i=n(e.target);this.navigation&&this.navigation.$nextEl&&i.is(this.navigation.$nextEl)&&(this.isEnd&&!this.params.loop||this.slideNext(),this.isEnd?this.a11y.notify(t.lastSlideMessage):this.a11y.notify(t.nextSlideMessage)),this.navigation&&this.navigation.$prevEl&&i.is(this.navigation.$prevEl)&&(this.isBeginning&&!this.params.loop||this.slidePrev(),this.isBeginning?this.a11y.notify(t.firstSlideMessage):this.a11y.notify(t.prevSlideMessage)),this.pagination&&i.is("."+this.params.pagination.bulletClass)&&i[0].click()}},notify:function(e){var t=this.a11y.liveRegion;0!==t.length&&(t.html(""),t.html(e))},updateNavigation:function(){if(!this.params.loop&&this.navigation){var e=this.navigation,t=e.$nextEl,i=e.$prevEl;i&&i.length>0&&(this.isBeginning?(this.a11y.disableEl(i),this.a11y.makeElNotFocusable(i)):(this.a11y.enableEl(i),this.a11y.makeElFocusable(i))),t&&t.length>0&&(this.isEnd?(this.a11y.disableEl(t),this.a11y.makeElNotFocusable(t)):(this.a11y.enableEl(t),this.a11y.makeElFocusable(t)))}},updatePagination:function(){var e=this,t=e.params.a11y;e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length&&e.pagination.bullets.each((function(i,s){var a=n(s);e.a11y.makeElFocusable(a),e.a11y.addElRole(a,"button"),e.a11y.addElLabel(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1))}))},init:function(){this.$el.append(this.a11y.liveRegion);var e,t,i=this.params.a11y;this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&(this.a11y.makeElFocusable(e),this.a11y.addElRole(e,"button"),this.a11y.addElLabel(e,i.nextSlideMessage),e.on("keydown",this.a11y.onEnterKey)),t&&(this.a11y.makeElFocusable(t),this.a11y.addElRole(t,"button"),this.a11y.addElLabel(t,i.prevSlideMessage),t.on("keydown",this.a11y.onEnterKey)),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.on("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)},destroy:function(){var e,t;this.a11y.liveRegion&&this.a11y.liveRegion.length>0&&this.a11y.liveRegion.remove(),this.navigation&&this.navigation.$nextEl&&(e=this.navigation.$nextEl),this.navigation&&this.navigation.$prevEl&&(t=this.navigation.$prevEl),e&&e.off("keydown",this.a11y.onEnterKey),t&&t.off("keydown",this.a11y.onEnterKey),this.pagination&&this.params.pagination.clickable&&this.pagination.bullets&&this.pagination.bullets.length&&this.pagination.$el.off("keydown","."+this.params.pagination.bulletClass,this.a11y.onEnterKey)}},ve={init:function(){if(this.params.history){if(!a.history||!a.history.pushState)return this.params.history.enabled=!1,void(this.params.hashNavigation.enabled=!0);var e=this.history;e.initialized=!0,e.paths=ve.getPathValues(),(e.paths.key||e.paths.value)&&(e.scrollToSlide(0,e.paths.value,this.params.runCallbacksOnInit),this.params.history.replaceState||a.addEventListener("popstate",this.history.setHistoryPopState))}},destroy:function(){this.params.history.replaceState||a.removeEventListener("popstate",this.history.setHistoryPopState)},setHistoryPopState:function(){this.history.paths=ve.getPathValues(),this.history.scrollToSlide(this.params.speed,this.history.paths.value,!1)},getPathValues:function(){var e=a.location.pathname.slice(1).split("/").filter((function(e){return""!==e})),t=e.length;return{key:e[t-2],value:e[t-1]}},setHistory:function(e,t){if(this.history.initialized&&this.params.history.enabled){var i=this.slides.eq(t),s=ve.slugify(i.attr("data-history"));a.location.pathname.includes(e)||(s=e+"/"+s);var r=a.history.state;r&&r.value===s||(this.params.history.replaceState?a.history.replaceState({value:s},null,s):a.history.pushState({value:s},null,s))}},slugify:function(e){return e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")},scrollToSlide:function(e,t,i){if(t)for(var s=0,a=this.slides.length;s<a;s+=1){var r=this.slides.eq(s);if(ve.slugify(r.attr("data-history"))===t&&!r.hasClass(this.params.slideDuplicateClass)){var n=r.index();this.slideTo(n,e,i)}}else this.slideTo(0,e,i)}},fe={onHashCange:function(){this.emit("hashChange");var e=i.location.hash.replace("#","");if(e!==this.slides.eq(this.activeIndex).attr("data-hash")){var t=this.$wrapperEl.children("."+this.params.slideClass+'[data-hash="'+e+'"]').index();if(void 0===t)return;this.slideTo(t)}},setHash:function(){if(this.hashNavigation.initialized&&this.params.hashNavigation.enabled)if(this.params.hashNavigation.replaceState&&a.history&&a.history.replaceState)a.history.replaceState(null,null,"#"+this.slides.eq(this.activeIndex).attr("data-hash")||""),this.emit("hashSet");else{var e=this.slides.eq(this.activeIndex),t=e.attr("data-hash")||e.attr("data-history");i.location.hash=t||"",this.emit("hashSet")}},init:function(){if(!(!this.params.hashNavigation.enabled||this.params.history&&this.params.history.enabled)){this.hashNavigation.initialized=!0;var e=i.location.hash.replace("#","");if(e)for(var t=0,s=this.slides.length;t<s;t+=1){var r=this.slides.eq(t);if((r.attr("data-hash")||r.attr("data-history"))===e&&!r.hasClass(this.params.slideDuplicateClass)){var o=r.index();this.slideTo(o,0,this.params.runCallbacksOnInit,!0)}}this.params.hashNavigation.watchState&&n(a).on("hashchange",this.hashNavigation.onHashCange)}},destroy:function(){this.params.hashNavigation.watchState&&n(a).off("hashchange",this.hashNavigation.onHashCange)}},me={run:function(){var e=this,t=e.slides.eq(e.activeIndex),i=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(i=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(e.autoplay.timeout),e.autoplay.timeout=d.nextTick((function(){e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(e.slides.length-1,e.params.speed,!0,!0),e.emit("autoplay")):(e.slidePrev(e.params.speed,!0,!0),e.emit("autoplay")):e.params.loop?(e.loopFix(),e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?e.autoplay.stop():(e.slideTo(0,e.params.speed,!0,!0),e.emit("autoplay")):(e.slideNext(e.params.speed,!0,!0),e.emit("autoplay")),e.params.cssMode&&e.autoplay.running&&e.autoplay.run()}),i)},start:function(){return void 0===this.autoplay.timeout&&(!this.autoplay.running&&(this.autoplay.running=!0,this.emit("autoplayStart"),this.autoplay.run(),!0))},stop:function(){return!!this.autoplay.running&&(void 0!==this.autoplay.timeout&&(this.autoplay.timeout&&(clearTimeout(this.autoplay.timeout),this.autoplay.timeout=void 0),this.autoplay.running=!1,this.emit("autoplayStop"),!0))},pause:function(e){this.autoplay.running&&(this.autoplay.paused||(this.autoplay.timeout&&clearTimeout(this.autoplay.timeout),this.autoplay.paused=!0,0!==e&&this.params.autoplay.waitForTransition?(this.$wrapperEl[0].addEventListener("transitionend",this.autoplay.onTransitionEnd),this.$wrapperEl[0].addEventListener("webkitTransitionEnd",this.autoplay.onTransitionEnd)):(this.autoplay.paused=!1,this.autoplay.run())))}},ge={setTranslate:function(){for(var e=this.slides,t=0;t<e.length;t+=1){var i=this.slides.eq(t),s=-i[0].swiperSlideOffset;this.params.virtualTranslate||(s-=this.translate);var a=0;this.isHorizontal()||(a=s,s=0);var r=this.params.fadeEffect.crossFade?Math.max(1-Math.abs(i[0].progress),0):1+Math.min(Math.max(i[0].progress,-1),0);i.css({opacity:r}).transform("translate3d("+s+"px, "+a+"px, 0px)")}},setTransition:function(e){var t=this,i=t.slides,s=t.$wrapperEl;if(i.transition(e),t.params.virtualTranslate&&0!==e){var a=!1;i.transitionEnd((function(){if(!a&&t&&!t.destroyed){a=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)s.trigger(e[i])}}))}}},be={setTranslate:function(){var e,t=this.$el,i=this.$wrapperEl,s=this.slides,a=this.width,r=this.height,o=this.rtlTranslate,l=this.size,d=this.params.cubeEffect,h=this.isHorizontal(),p=this.virtual&&this.params.virtual.enabled,c=0;d.shadow&&(h?(0===(e=i.find(".swiper-cube-shadow")).length&&(e=n('<div class="swiper-cube-shadow"></div>'),i.append(e)),e.css({height:a+"px"})):0===(e=t.find(".swiper-cube-shadow")).length&&(e=n('<div class="swiper-cube-shadow"></div>'),t.append(e)));for(var u=0;u<s.length;u+=1){var v=s.eq(u),f=u;p&&(f=parseInt(v.attr("data-swiper-slide-index"),10));var m=90*f,g=Math.floor(m/360);o&&(m=-m,g=Math.floor(-m/360));var b=Math.max(Math.min(v[0].progress,1),-1),w=0,y=0,x=0;f%4==0?(w=4*-g*l,x=0):(f-1)%4==0?(w=0,x=4*-g*l):(f-2)%4==0?(w=l+4*g*l,x=l):(f-3)%4==0&&(w=-l,x=3*l+4*l*g),o&&(w=-w),h||(y=w,w=0);var E="rotateX("+(h?0:-m)+"deg) rotateY("+(h?m:0)+"deg) translate3d("+w+"px, "+y+"px, "+x+"px)";if(b<=1&&b>-1&&(c=90*f+90*b,o&&(c=90*-f-90*b)),v.transform(E),d.slideShadows){var T=h?v.find(".swiper-slide-shadow-left"):v.find(".swiper-slide-shadow-top"),S=h?v.find(".swiper-slide-shadow-right"):v.find(".swiper-slide-shadow-bottom");0===T.length&&(T=n('<div class="swiper-slide-shadow-'+(h?"left":"top")+'"></div>'),v.append(T)),0===S.length&&(S=n('<div class="swiper-slide-shadow-'+(h?"right":"bottom")+'"></div>'),v.append(S)),T.length&&(T[0].style.opacity=Math.max(-b,0)),S.length&&(S[0].style.opacity=Math.max(b,0))}}if(i.css({"-webkit-transform-origin":"50% 50% -"+l/2+"px","-moz-transform-origin":"50% 50% -"+l/2+"px","-ms-transform-origin":"50% 50% -"+l/2+"px","transform-origin":"50% 50% -"+l/2+"px"}),d.shadow)if(h)e.transform("translate3d(0px, "+(a/2+d.shadowOffset)+"px, "+-a/2+"px) rotateX(90deg) rotateZ(0deg) scale("+d.shadowScale+")");else{var C=Math.abs(c)-90*Math.floor(Math.abs(c)/90),M=1.5-(Math.sin(2*C*Math.PI/360)/2+Math.cos(2*C*Math.PI/360)/2),P=d.shadowScale,z=d.shadowScale/M,k=d.shadowOffset;e.transform("scale3d("+P+", 1, "+z+") translate3d(0px, "+(r/2+k)+"px, "+-r/2/z+"px) rotateX(-90deg)")}var $=_.isSafari||_.isWebView?-l/2:0;i.transform("translate3d(0px,0,"+$+"px) rotateX("+(this.isHorizontal()?0:c)+"deg) rotateY("+(this.isHorizontal()?-c:0)+"deg)")},setTransition:function(e){var t=this.$el;this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),this.params.cubeEffect.shadow&&!this.isHorizontal()&&t.find(".swiper-cube-shadow").transition(e)}},we={setTranslate:function(){for(var e=this.slides,t=this.rtlTranslate,i=0;i<e.length;i+=1){var s=e.eq(i),a=s[0].progress;this.params.flipEffect.limitRotation&&(a=Math.max(Math.min(s[0].progress,1),-1));var r=-180*a,o=0,l=-s[0].swiperSlideOffset,d=0;if(this.isHorizontal()?t&&(r=-r):(d=l,l=0,o=-r,r=0),s[0].style.zIndex=-Math.abs(Math.round(a))+e.length,this.params.flipEffect.slideShadows){var h=this.isHorizontal()?s.find(".swiper-slide-shadow-left"):s.find(".swiper-slide-shadow-top"),p=this.isHorizontal()?s.find(".swiper-slide-shadow-right"):s.find(".swiper-slide-shadow-bottom");0===h.length&&(h=n('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"left":"top")+'"></div>'),s.append(h)),0===p.length&&(p=n('<div class="swiper-slide-shadow-'+(this.isHorizontal()?"right":"bottom")+'"></div>'),s.append(p)),h.length&&(h[0].style.opacity=Math.max(-a,0)),p.length&&(p[0].style.opacity=Math.max(a,0))}s.transform("translate3d("+l+"px, "+d+"px, 0px) rotateX("+o+"deg) rotateY("+r+"deg)")}},setTransition:function(e){var t=this,i=t.slides,s=t.activeIndex,a=t.$wrapperEl;if(i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.virtualTranslate&&0!==e){var r=!1;i.eq(s).transitionEnd((function(){if(!r&&t&&!t.destroyed){r=!0,t.animating=!1;for(var e=["webkitTransitionEnd","transitionend"],i=0;i<e.length;i+=1)a.trigger(e[i])}}))}}},ye={setTranslate:function(){for(var e=this.width,t=this.height,i=this.slides,s=this.$wrapperEl,a=this.slidesSizesGrid,r=this.params.coverflowEffect,o=this.isHorizontal(),l=this.translate,d=o?e/2-l:t/2-l,p=o?r.rotate:-r.rotate,c=r.depth,u=0,v=i.length;u<v;u+=1){var f=i.eq(u),m=a[u],g=(d-f[0].swiperSlideOffset-m/2)/m*r.modifier,b=o?p*g:0,w=o?0:p*g,y=-c*Math.abs(g),x=r.stretch;"string"==typeof x&&-1!==x.indexOf("%")&&(x=parseFloat(r.stretch)/100*m);var E=o?0:x*g,T=o?x*g:0,S=1-(1-r.scale)*Math.abs(g);Math.abs(T)<.001&&(T=0),Math.abs(E)<.001&&(E=0),Math.abs(y)<.001&&(y=0),Math.abs(b)<.001&&(b=0),Math.abs(w)<.001&&(w=0),Math.abs(S)<.001&&(S=0);var C="translate3d("+T+"px,"+E+"px,"+y+"px) rotateX("+w+"deg) rotateY("+b+"deg) scale("+S+")";if(f.transform(C),f[0].style.zIndex=1-Math.abs(Math.round(g)),r.slideShadows){var M=o?f.find(".swiper-slide-shadow-left"):f.find(".swiper-slide-shadow-top"),P=o?f.find(".swiper-slide-shadow-right"):f.find(".swiper-slide-shadow-bottom");0===M.length&&(M=n('<div class="swiper-slide-shadow-'+(o?"left":"top")+'"></div>'),f.append(M)),0===P.length&&(P=n('<div class="swiper-slide-shadow-'+(o?"right":"bottom")+'"></div>'),f.append(P)),M.length&&(M[0].style.opacity=g>0?g:0),P.length&&(P[0].style.opacity=-g>0?-g:0)}}(h.pointerEvents||h.prefixedPointerEvents)&&(s[0].style.perspectiveOrigin=d+"px 50%")},setTransition:function(e){this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}},xe={init:function(){var e=this.params.thumbs,t=this.constructor;e.swiper instanceof t?(this.thumbs.swiper=e.swiper,d.extend(this.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),d.extend(this.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1})):d.isObject(e.swiper)&&(this.thumbs.swiper=new t(d.extend({},e.swiper,{watchSlidesVisibility:!0,watchSlidesProgress:!0,slideToClickedSlide:!1})),this.thumbs.swiperCreated=!0),this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass),this.thumbs.swiper.on("tap",this.thumbs.onThumbClick)},onThumbClick:function(){var e=this.thumbs.swiper;if(e){var t=e.clickedIndex,i=e.clickedSlide;if(!(i&&n(i).hasClass(this.params.thumbs.slideThumbActiveClass)||null==t)){var s;if(s=e.params.loop?parseInt(n(e.clickedSlide).attr("data-swiper-slide-index"),10):t,this.params.loop){var a=this.activeIndex;this.slides.eq(a).hasClass(this.params.slideDuplicateClass)&&(this.loopFix(),this._clientLeft=this.$wrapperEl[0].clientLeft,a=this.activeIndex);var r=this.slides.eq(a).prevAll('[data-swiper-slide-index="'+s+'"]').eq(0).index(),o=this.slides.eq(a).nextAll('[data-swiper-slide-index="'+s+'"]').eq(0).index();s=void 0===r?o:void 0===o?r:o-a<a-r?o:r}this.slideTo(s)}}},update:function(e){var t=this.thumbs.swiper;if(t){var i="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():t.params.slidesPerView,s=this.params.thumbs.autoScrollOffset,a=s&&!t.params.loop;if(this.realIndex!==t.realIndex||a){var r,n,o=t.activeIndex;if(t.params.loop){t.slides.eq(o).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,o=t.activeIndex);var l=t.slides.eq(o).prevAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index(),d=t.slides.eq(o).nextAll('[data-swiper-slide-index="'+this.realIndex+'"]').eq(0).index();r=void 0===l?d:void 0===d?l:d-o==o-l?o:d-o<o-l?d:l,n=this.activeIndex>this.previousIndex?"next":"prev"}else n=(r=this.realIndex)>this.previousIndex?"next":"prev";a&&(r+="next"===n?s:-1*s),t.visibleSlidesIndexes&&t.visibleSlidesIndexes.indexOf(r)<0&&(t.params.centeredSlides?r=r>o?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>o&&(r=r-i+1),t.slideTo(r,e?0:void 0))}var h=1,p=this.params.thumbs.slideThumbActiveClass;if(this.params.slidesPerView>1&&!this.params.centeredSlides&&(h=this.params.slidesPerView),this.params.thumbs.multipleActiveThumbs||(h=1),h=Math.floor(h),t.slides.removeClass(p),t.params.loop||t.params.virtual&&t.params.virtual.enabled)for(var c=0;c<h;c+=1)t.$wrapperEl.children('[data-swiper-slide-index="'+(this.realIndex+c)+'"]').addClass(p);else for(var u=0;u<h;u+=1)t.slides.eq(this.realIndex+u).addClass(p)}}},Ee=[K,U,Z,Q,ee,ie,ae,{name:"mousewheel",params:{mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarged:"container"}},create:function(){d.extend(this,{mousewheel:{enabled:!1,enable:re.enable.bind(this),disable:re.disable.bind(this),handle:re.handle.bind(this),handleMouseEnter:re.handleMouseEnter.bind(this),handleMouseLeave:re.handleMouseLeave.bind(this),animateSlider:re.animateSlider.bind(this),releaseScroll:re.releaseScroll.bind(this),lastScrollTime:d.now(),lastEventBeforeSnap:void 0,recentWheelEvents:[]}})},on:{init:function(){!this.params.mousewheel.enabled&&this.params.cssMode&&this.mousewheel.disable(),this.params.mousewheel.enabled&&this.mousewheel.enable()},destroy:function(){this.params.cssMode&&this.mousewheel.enable(),this.mousewheel.enabled&&this.mousewheel.disable()}}},{name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create:function(){d.extend(this,{navigation:{init:ne.init.bind(this),update:ne.update.bind(this),destroy:ne.destroy.bind(this),onNextClick:ne.onNextClick.bind(this),onPrevClick:ne.onPrevClick.bind(this)}})},on:{init:function(){this.navigation.init(),this.navigation.update()},toEdge:function(){this.navigation.update()},fromEdge:function(){this.navigation.update()},destroy:function(){this.navigation.destroy()},click:function(e){var t,i=this.navigation,s=i.$nextEl,a=i.$prevEl;!this.params.navigation.hideOnClick||n(e.target).is(a)||n(e.target).is(s)||(s?t=s.hasClass(this.params.navigation.hiddenClass):a&&(t=a.hasClass(this.params.navigation.hiddenClass)),!0===t?this.emit("navigationShow",this):this.emit("navigationHide",this),s&&s.toggleClass(this.params.navigation.hiddenClass),a&&a.toggleClass(this.params.navigation.hiddenClass))}}},{name:"pagination",params:{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:function(e){return e},formatFractionTotal:function(e){return e},bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",modifierClass:"swiper-pagination-",currentClass:"swiper-pagination-current",totalClass:"swiper-pagination-total",hiddenClass:"swiper-pagination-hidden",progressbarFillClass:"swiper-pagination-progressbar-fill",progressbarOppositeClass:"swiper-pagination-progressbar-opposite",clickableClass:"swiper-pagination-clickable",lockClass:"swiper-pagination-lock"}},create:function(){d.extend(this,{pagination:{init:oe.init.bind(this),render:oe.render.bind(this),update:oe.update.bind(this),destroy:oe.destroy.bind(this),dynamicBulletIndex:0}})},on:{init:function(){this.pagination.init(),this.pagination.render(),this.pagination.update()},activeIndexChange:function(){(this.params.loop||void 0===this.snapIndex)&&this.pagination.update()},snapIndexChange:function(){this.params.loop||this.pagination.update()},slidesLengthChange:function(){this.params.loop&&(this.pagination.render(),this.pagination.update())},snapGridLengthChange:function(){this.params.loop||(this.pagination.render(),this.pagination.update())},destroy:function(){this.pagination.destroy()},click:function(e){this.params.pagination.el&&this.params.pagination.hideOnClick&&this.pagination.$el.length>0&&!n(e.target).hasClass(this.params.pagination.bulletClass)&&(!0===this.pagination.$el.hasClass(this.params.pagination.hiddenClass)?this.emit("paginationShow",this):this.emit("paginationHide",this),this.pagination.$el.toggleClass(this.params.pagination.hiddenClass))}}},{name:"scrollbar",params:{scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}},create:function(){d.extend(this,{scrollbar:{init:le.init.bind(this),destroy:le.destroy.bind(this),updateSize:le.updateSize.bind(this),setTranslate:le.setTranslate.bind(this),setTransition:le.setTransition.bind(this),enableDraggable:le.enableDraggable.bind(this),disableDraggable:le.disableDraggable.bind(this),setDragPosition:le.setDragPosition.bind(this),getPointerPosition:le.getPointerPosition.bind(this),onDragStart:le.onDragStart.bind(this),onDragMove:le.onDragMove.bind(this),onDragEnd:le.onDragEnd.bind(this),isTouched:!1,timeout:null,dragTimeout:null}})},on:{init:function(){this.scrollbar.init(),this.scrollbar.updateSize(),this.scrollbar.setTranslate()},update:function(){this.scrollbar.updateSize()},resize:function(){this.scrollbar.updateSize()},observerUpdate:function(){this.scrollbar.updateSize()},setTranslate:function(){this.scrollbar.setTranslate()},setTransition:function(e){this.scrollbar.setTransition(e)},destroy:function(){this.scrollbar.destroy()}}},{name:"parallax",params:{parallax:{enabled:!1}},create:function(){d.extend(this,{parallax:{setTransform:de.setTransform.bind(this),setTranslate:de.setTranslate.bind(this),setTransition:de.setTransition.bind(this)}})},on:{beforeInit:function(){this.params.parallax.enabled&&(this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},init:function(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTranslate:function(){this.params.parallax.enabled&&this.parallax.setTranslate()},setTransition:function(e){this.params.parallax.enabled&&this.parallax.setTransition(e)}}},{name:"zoom",params:{zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}},create:function(){var e=this,t={enabled:!1,scale:1,currentScale:1,isScaling:!1,gesture:{$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},image:{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:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0}};"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach((function(i){t[i]=he[i].bind(e)})),d.extend(e,{zoom:t});var i=1;Object.defineProperty(e.zoom,"scale",{get:function(){return i},set:function(t){if(i!==t){var s=e.zoom.gesture.$imageEl?e.zoom.gesture.$imageEl[0]:void 0,a=e.zoom.gesture.$slideEl?e.zoom.gesture.$slideEl[0]:void 0;e.emit("zoomChange",t,s,a)}i=t}})},on:{init:function(){this.params.zoom.enabled&&this.zoom.enable()},destroy:function(){this.zoom.disable()},touchStart:function(e){this.zoom.enabled&&this.zoom.onTouchStart(e)},touchEnd:function(e){this.zoom.enabled&&this.zoom.onTouchEnd(e)},doubleTap:function(e){this.params.zoom.enabled&&this.zoom.enabled&&this.params.zoom.toggle&&this.zoom.toggle(e)},transitionEnd:function(){this.zoom.enabled&&this.params.zoom.enabled&&this.zoom.onTransitionEnd()},slideChange:function(){this.zoom.enabled&&this.params.zoom.enabled&&this.params.cssMode&&this.zoom.onTransitionEnd()}}},{name:"lazy",params:{lazy:{enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}},create:function(){d.extend(this,{lazy:{initialImageLoaded:!1,load:pe.load.bind(this),loadInSlide:pe.loadInSlide.bind(this)}})},on:{beforeInit:function(){this.params.lazy.enabled&&this.params.preloadImages&&(this.params.preloadImages=!1)},init:function(){this.params.lazy.enabled&&!this.params.loop&&0===this.params.initialSlide&&this.lazy.load()},scroll:function(){this.params.freeMode&&!this.params.freeModeSticky&&this.lazy.load()},resize:function(){this.params.lazy.enabled&&this.lazy.load()},scrollbarDragMove:function(){this.params.lazy.enabled&&this.lazy.load()},transitionStart:function(){this.params.lazy.enabled&&(this.params.lazy.loadOnTransitionStart||!this.params.lazy.loadOnTransitionStart&&!this.lazy.initialImageLoaded)&&this.lazy.load()},transitionEnd:function(){this.params.lazy.enabled&&!this.params.lazy.loadOnTransitionStart&&this.lazy.load()},slideChange:function(){this.params.lazy.enabled&&this.params.cssMode&&this.lazy.load()}}},{name:"controller",params:{controller:{control:void 0,inverse:!1,by:"slide"}},create:function(){d.extend(this,{controller:{control:this.params.controller.control,getInterpolateFunction:ce.getInterpolateFunction.bind(this),setTranslate:ce.setTranslate.bind(this),setTransition:ce.setTransition.bind(this)}})},on:{update:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},resize:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},observerUpdate:function(){this.controller.control&&this.controller.spline&&(this.controller.spline=void 0,delete this.controller.spline)},setTranslate:function(e,t){this.controller.control&&this.controller.setTranslate(e,t)},setTransition:function(e,t){this.controller.control&&this.controller.setTransition(e,t)}}},{name:"a11y",params:{a11y:{enabled:!0,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}}"}},create:function(){var e=this;d.extend(e,{a11y:{liveRegion:n('<span class="'+e.params.a11y.notificationClass+'" aria-live="assertive" aria-atomic="true"></span>')}}),Object.keys(ue).forEach((function(t){e.a11y[t]=ue[t].bind(e)}))},on:{init:function(){this.params.a11y.enabled&&(this.a11y.init(),this.a11y.updateNavigation())},toEdge:function(){this.params.a11y.enabled&&this.a11y.updateNavigation()},fromEdge:function(){this.params.a11y.enabled&&this.a11y.updateNavigation()},paginationUpdate:function(){this.params.a11y.enabled&&this.a11y.updatePagination()},destroy:function(){this.params.a11y.enabled&&this.a11y.destroy()}}},{name:"history",params:{history:{enabled:!1,replaceState:!1,key:"slides"}},create:function(){d.extend(this,{history:{init:ve.init.bind(this),setHistory:ve.setHistory.bind(this),setHistoryPopState:ve.setHistoryPopState.bind(this),scrollToSlide:ve.scrollToSlide.bind(this),destroy:ve.destroy.bind(this)}})},on:{init:function(){this.params.history.enabled&&this.history.init()},destroy:function(){this.params.history.enabled&&this.history.destroy()},transitionEnd:function(){this.history.initialized&&this.history.setHistory(this.params.history.key,this.activeIndex)},slideChange:function(){this.history.initialized&&this.params.cssMode&&this.history.setHistory(this.params.history.key,this.activeIndex)}}},{name:"hash-navigation",params:{hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}},create:function(){d.extend(this,{hashNavigation:{initialized:!1,init:fe.init.bind(this),destroy:fe.destroy.bind(this),setHash:fe.setHash.bind(this),onHashCange:fe.onHashCange.bind(this)}})},on:{init:function(){this.params.hashNavigation.enabled&&this.hashNavigation.init()},destroy:function(){this.params.hashNavigation.enabled&&this.hashNavigation.destroy()},transitionEnd:function(){this.hashNavigation.initialized&&this.hashNavigation.setHash()},slideChange:function(){this.hashNavigation.initialized&&this.params.cssMode&&this.hashNavigation.setHash()}}},{name:"autoplay",params:{autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1}},create:function(){var e=this;d.extend(e,{autoplay:{running:!1,paused:!1,run:me.run.bind(e),start:me.start.bind(e),stop:me.stop.bind(e),pause:me.pause.bind(e),onVisibilityChange:function(){"hidden"===document.visibilityState&&e.autoplay.running&&e.autoplay.pause(),"visible"===document.visibilityState&&e.autoplay.paused&&(e.autoplay.run(),e.autoplay.paused=!1)},onTransitionEnd:function(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===this&&(e.$wrapperEl[0].removeEventListener("transitionend",e.autoplay.onTransitionEnd),e.$wrapperEl[0].removeEventListener("webkitTransitionEnd",e.autoplay.onTransitionEnd),e.autoplay.paused=!1,e.autoplay.running?e.autoplay.run():e.autoplay.stop())}}})},on:{init:function(){this.params.autoplay.enabled&&(this.autoplay.start(),document.addEventListener("visibilitychange",this.autoplay.onVisibilityChange))},beforeTransitionStart:function(e,t){this.autoplay.running&&(t||!this.params.autoplay.disableOnInteraction?this.autoplay.pause(e):this.autoplay.stop())},sliderFirstMove:function(){this.autoplay.running&&(this.params.autoplay.disableOnInteraction?this.autoplay.stop():this.autoplay.pause())},touchEnd:function(){this.params.cssMode&&this.autoplay.paused&&!this.params.autoplay.disableOnInteraction&&this.autoplay.run()},destroy:function(){this.autoplay.running&&this.autoplay.stop(),document.removeEventListener("visibilitychange",this.autoplay.onVisibilityChange)}}},{name:"effect-fade",params:{fadeEffect:{crossFade:!1}},create:function(){d.extend(this,{fadeEffect:{setTranslate:ge.setTranslate.bind(this),setTransition:ge.setTransition.bind(this)}})},on:{beforeInit:function(){if("fade"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"fade");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};d.extend(this.params,e),d.extend(this.originalParams,e)}},setTranslate:function(){"fade"===this.params.effect&&this.fadeEffect.setTranslate()},setTransition:function(e){"fade"===this.params.effect&&this.fadeEffect.setTransition(e)}}},{name:"effect-cube",params:{cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}},create:function(){d.extend(this,{cubeEffect:{setTranslate:be.setTranslate.bind(this),setTransition:be.setTransition.bind(this)}})},on:{beforeInit:function(){if("cube"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"cube"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0};d.extend(this.params,e),d.extend(this.originalParams,e)}},setTranslate:function(){"cube"===this.params.effect&&this.cubeEffect.setTranslate()},setTransition:function(e){"cube"===this.params.effect&&this.cubeEffect.setTransition(e)}}},{name:"effect-flip",params:{flipEffect:{slideShadows:!0,limitRotation:!0}},create:function(){d.extend(this,{flipEffect:{setTranslate:we.setTranslate.bind(this),setTransition:we.setTransition.bind(this)}})},on:{beforeInit:function(){if("flip"===this.params.effect){this.classNames.push(this.params.containerModifierClass+"flip"),this.classNames.push(this.params.containerModifierClass+"3d");var e={slidesPerView:1,slidesPerColumn:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!0};d.extend(this.params,e),d.extend(this.originalParams,e)}},setTranslate:function(){"flip"===this.params.effect&&this.flipEffect.setTranslate()},setTransition:function(e){"flip"===this.params.effect&&this.flipEffect.setTransition(e)}}},{name:"effect-coverflow",params:{coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}},create:function(){d.extend(this,{coverflowEffect:{setTranslate:ye.setTranslate.bind(this),setTransition:ye.setTransition.bind(this)}})},on:{beforeInit:function(){"coverflow"===this.params.effect&&(this.classNames.push(this.params.containerModifierClass+"coverflow"),this.classNames.push(this.params.containerModifierClass+"3d"),this.params.watchSlidesProgress=!0,this.originalParams.watchSlidesProgress=!0)},setTranslate:function(){"coverflow"===this.params.effect&&this.coverflowEffect.setTranslate()},setTransition:function(e){"coverflow"===this.params.effect&&this.coverflowEffect.setTransition(e)}}},{name:"thumbs",params:{thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-container-thumbs"}},create:function(){d.extend(this,{thumbs:{swiper:null,init:xe.init.bind(this),update:xe.update.bind(this),onThumbClick:xe.onThumbClick.bind(this)}})},on:{beforeInit:function(){var e=this.params.thumbs;e&&e.swiper&&(this.thumbs.init(),this.thumbs.update(!0))},slideChange:function(){this.thumbs.swiper&&this.thumbs.update()},update:function(){this.thumbs.swiper&&this.thumbs.update()},resize:function(){this.thumbs.swiper&&this.thumbs.update()},observerUpdate:function(){this.thumbs.swiper&&this.thumbs.update()},setTransition:function(e){var t=this.thumbs.swiper;t&&t.setTransition(e)},beforeDestroy:function(){var e=this.thumbs.swiper;e&&this.thumbs.swiperCreated&&e&&e.destroy()}}}];return void 0===j.use&&(j.use=j.Class.use,j.installModule=j.Class.installModule),j.use(Ee),j}));
14
+ //# sourceMappingURL=swiper.min.js.map
assets/vendor/swiper-5-4-5/swiper.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["0"],"names":["global","factory","exports","module","define","amd","self","Swiper","this","isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","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","win","window","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments$1","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","assign","args","len","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","event","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","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","matchedItems","removeChild","toAdd","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","o","len$1","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","defineProperty","get","gestures","SwiperClass","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","use","installModule","name","proto","static","install","m","concat","defineProperties","update","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesSize$1","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","swiper","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transition$1","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","ie","edge","firefox","windows","electron","macos","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ios","androidChrome","desktop","cordova","phonegap","toLowerCase","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","increment$1","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","noSwipingClass","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","ref","innerWidth","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent$1","sign","ignoreWheelEvents","sensitivity","timeout","recentWheelEvents$1","shift","prevEvent$1","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","newEvent","raw","prevEvent","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","array","interpolate","getInterpolateFunction","c","controller","spline","setTranslate$1","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"swiper.min.js"}
assets/vendor/swiper/swiper-bundle.js DELETED
@@ -1,9379 +0,0 @@
1
- /**
2
- * Swiper 6.3.2
3
- * Most modern mobile touch slider and framework with hardware accelerated transitions
4
- * http://swiperjs.com
5
- *
6
- * Copyright 2014-2020 Vladimir Kharlampidi
7
- *
8
- * Released under the MIT License
9
- *
10
- * Released on: September 28, 2020
11
- */
12
-
13
- (function (global, factory) {
14
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
15
- typeof define === 'function' && define.amd ? define(factory) :
16
- (global = global || self, global.Swiper = factory());
17
- }(this, (function () { 'use strict';
18
-
19
- function _defineProperties(target, props) {
20
- for (var i = 0; i < props.length; i++) {
21
- var descriptor = props[i];
22
- descriptor.enumerable = descriptor.enumerable || false;
23
- descriptor.configurable = true;
24
- if ("value" in descriptor) descriptor.writable = true;
25
- Object.defineProperty(target, descriptor.key, descriptor);
26
- }
27
- }
28
-
29
- function _createClass(Constructor, protoProps, staticProps) {
30
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
- if (staticProps) _defineProperties(Constructor, staticProps);
32
- return Constructor;
33
- }
34
-
35
- function _extends() {
36
- _extends = Object.assign || function (target) {
37
- for (var i = 1; i < arguments.length; i++) {
38
- var source = arguments[i];
39
-
40
- for (var key in source) {
41
- if (Object.prototype.hasOwnProperty.call(source, key)) {
42
- target[key] = source[key];
43
- }
44
- }
45
- }
46
-
47
- return target;
48
- };
49
-
50
- return _extends.apply(this, arguments);
51
- }
52
-
53
- /**
54
- * SSR Window 3.0.0-alpha.4
55
- * Better handling for window object in SSR environment
56
- * https://github.com/nolimits4web/ssr-window
57
- *
58
- * Copyright 2020, Vladimir Kharlampidi
59
- *
60
- * Licensed under MIT
61
- *
62
- * Released on: May 20, 2020
63
- */
64
-
65
- /* eslint-disable no-param-reassign */
66
- function isObject(obj) {
67
- return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
68
- }
69
-
70
- function extend(target, src) {
71
- if (target === void 0) {
72
- target = {};
73
- }
74
-
75
- if (src === void 0) {
76
- src = {};
77
- }
78
-
79
- Object.keys(src).forEach(function (key) {
80
- if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
81
- extend(target[key], src[key]);
82
- }
83
- });
84
- }
85
-
86
- var ssrDocument = {
87
- body: {},
88
- addEventListener: function addEventListener() {},
89
- removeEventListener: function removeEventListener() {},
90
- activeElement: {
91
- blur: function blur() {},
92
- nodeName: ''
93
- },
94
- querySelector: function querySelector() {
95
- return null;
96
- },
97
- querySelectorAll: function querySelectorAll() {
98
- return [];
99
- },
100
- getElementById: function getElementById() {
101
- return null;
102
- },
103
- createEvent: function createEvent() {
104
- return {
105
- initEvent: function initEvent() {}
106
- };
107
- },
108
- createElement: function createElement() {
109
- return {
110
- children: [],
111
- childNodes: [],
112
- style: {},
113
- setAttribute: function setAttribute() {},
114
- getElementsByTagName: function getElementsByTagName() {
115
- return [];
116
- }
117
- };
118
- },
119
- createElementNS: function createElementNS() {
120
- return {};
121
- },
122
- importNode: function importNode() {
123
- return null;
124
- },
125
- location: {
126
- hash: '',
127
- host: '',
128
- hostname: '',
129
- href: '',
130
- origin: '',
131
- pathname: '',
132
- protocol: '',
133
- search: ''
134
- }
135
- };
136
-
137
- function getDocument() {
138
- var doc = typeof document !== 'undefined' ? document : {};
139
- extend(doc, ssrDocument);
140
- return doc;
141
- }
142
-
143
- var ssrWindow = {
144
- document: ssrDocument,
145
- navigator: {
146
- userAgent: ''
147
- },
148
- location: {
149
- hash: '',
150
- host: '',
151
- hostname: '',
152
- href: '',
153
- origin: '',
154
- pathname: '',
155
- protocol: '',
156
- search: ''
157
- },
158
- history: {
159
- replaceState: function replaceState() {},
160
- pushState: function pushState() {},
161
- go: function go() {},
162
- back: function back() {}
163
- },
164
- CustomEvent: function CustomEvent() {
165
- return this;
166
- },
167
- addEventListener: function addEventListener() {},
168
- removeEventListener: function removeEventListener() {},
169
- getComputedStyle: function getComputedStyle() {
170
- return {
171
- getPropertyValue: function getPropertyValue() {
172
- return '';
173
- }
174
- };
175
- },
176
- Image: function Image() {},
177
- Date: function Date() {},
178
- screen: {},
179
- setTimeout: function setTimeout() {},
180
- clearTimeout: function clearTimeout() {},
181
- matchMedia: function matchMedia() {
182
- return {};
183
- },
184
- requestAnimationFrame: function requestAnimationFrame(callback) {
185
- if (typeof setTimeout === 'undefined') {
186
- callback();
187
- return null;
188
- }
189
-
190
- return setTimeout(callback, 0);
191
- },
192
- cancelAnimationFrame: function cancelAnimationFrame(id) {
193
- if (typeof setTimeout === 'undefined') {
194
- return;
195
- }
196
-
197
- clearTimeout(id);
198
- }
199
- };
200
-
201
- function getWindow() {
202
- var win = typeof window !== 'undefined' ? window : {};
203
- extend(win, ssrWindow);
204
- return win;
205
- }
206
-
207
- /**
208
- * Dom7 3.0.0-alpha.7
209
- * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
210
- * https://framework7.io/docs/dom7.html
211
- *
212
- * Copyright 2020, Vladimir Kharlampidi
213
- *
214
- * Licensed under MIT
215
- *
216
- * Released on: July 14, 2020
217
- */
218
-
219
- function _inheritsLoose(subClass, superClass) {
220
- subClass.prototype = Object.create(superClass.prototype);
221
- subClass.prototype.constructor = subClass;
222
- subClass.__proto__ = superClass;
223
- }
224
-
225
- function _getPrototypeOf(o) {
226
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
227
- return o.__proto__ || Object.getPrototypeOf(o);
228
- };
229
- return _getPrototypeOf(o);
230
- }
231
-
232
- function _setPrototypeOf(o, p) {
233
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
234
- o.__proto__ = p;
235
- return o;
236
- };
237
-
238
- return _setPrototypeOf(o, p);
239
- }
240
-
241
- function _isNativeReflectConstruct() {
242
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
243
- if (Reflect.construct.sham) return false;
244
- if (typeof Proxy === "function") return true;
245
-
246
- try {
247
- Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
248
- return true;
249
- } catch (e) {
250
- return false;
251
- }
252
- }
253
-
254
- function _construct(Parent, args, Class) {
255
- if (_isNativeReflectConstruct()) {
256
- _construct = Reflect.construct;
257
- } else {
258
- _construct = function _construct(Parent, args, Class) {
259
- var a = [null];
260
- a.push.apply(a, args);
261
- var Constructor = Function.bind.apply(Parent, a);
262
- var instance = new Constructor();
263
- if (Class) _setPrototypeOf(instance, Class.prototype);
264
- return instance;
265
- };
266
- }
267
-
268
- return _construct.apply(null, arguments);
269
- }
270
-
271
- function _isNativeFunction(fn) {
272
- return Function.toString.call(fn).indexOf("[native code]") !== -1;
273
- }
274
-
275
- function _wrapNativeSuper(Class) {
276
- var _cache = typeof Map === "function" ? new Map() : undefined;
277
-
278
- _wrapNativeSuper = function _wrapNativeSuper(Class) {
279
- if (Class === null || !_isNativeFunction(Class)) return Class;
280
-
281
- if (typeof Class !== "function") {
282
- throw new TypeError("Super expression must either be null or a function");
283
- }
284
-
285
- if (typeof _cache !== "undefined") {
286
- if (_cache.has(Class)) return _cache.get(Class);
287
-
288
- _cache.set(Class, Wrapper);
289
- }
290
-
291
- function Wrapper() {
292
- return _construct(Class, arguments, _getPrototypeOf(this).constructor);
293
- }
294
-
295
- Wrapper.prototype = Object.create(Class.prototype, {
296
- constructor: {
297
- value: Wrapper,
298
- enumerable: false,
299
- writable: true,
300
- configurable: true
301
- }
302
- });
303
- return _setPrototypeOf(Wrapper, Class);
304
- };
305
-
306
- return _wrapNativeSuper(Class);
307
- }
308
-
309
- function _assertThisInitialized(self) {
310
- if (self === void 0) {
311
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
312
- }
313
-
314
- return self;
315
- }
316
- /* eslint-disable no-proto */
317
-
318
-
319
- function makeReactive(obj) {
320
- var proto = obj.__proto__;
321
- Object.defineProperty(obj, '__proto__', {
322
- get: function get() {
323
- return proto;
324
- },
325
- set: function set(value) {
326
- proto.__proto__ = value;
327
- }
328
- });
329
- }
330
-
331
- var Dom7 = /*#__PURE__*/function (_Array) {
332
- _inheritsLoose(Dom7, _Array);
333
-
334
- function Dom7(items) {
335
- var _this;
336
-
337
- _this = _Array.call.apply(_Array, [this].concat(items)) || this;
338
- makeReactive(_assertThisInitialized(_this));
339
- return _this;
340
- }
341
-
342
- return Dom7;
343
- }( /*#__PURE__*/_wrapNativeSuper(Array));
344
-
345
- function arrayFlat(arr) {
346
- if (arr === void 0) {
347
- arr = [];
348
- }
349
-
350
- var res = [];
351
- arr.forEach(function (el) {
352
- if (Array.isArray(el)) {
353
- res.push.apply(res, arrayFlat(el));
354
- } else {
355
- res.push(el);
356
- }
357
- });
358
- return res;
359
- }
360
-
361
- function arrayFilter(arr, callback) {
362
- return Array.prototype.filter.call(arr, callback);
363
- }
364
-
365
- function arrayUnique(arr) {
366
- var uniqueArray = [];
367
-
368
- for (var i = 0; i < arr.length; i += 1) {
369
- if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
370
- }
371
-
372
- return uniqueArray;
373
- }
374
-
375
- function qsa(selector, context) {
376
- if (typeof selector !== 'string') {
377
- return [selector];
378
- }
379
-
380
- var a = [];
381
- var res = context.querySelectorAll(selector);
382
-
383
- for (var i = 0; i < res.length; i += 1) {
384
- a.push(res[i]);
385
- }
386
-
387
- return a;
388
- }
389
-
390
- function $(selector, context) {
391
- var window = getWindow();
392
- var document = getDocument();
393
- var arr = [];
394
-
395
- if (!context && selector instanceof Dom7) {
396
- return selector;
397
- }
398
-
399
- if (!selector) {
400
- return new Dom7(arr);
401
- }
402
-
403
- if (typeof selector === 'string') {
404
- var html = selector.trim();
405
-
406
- if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
407
- var toCreate = 'div';
408
- if (html.indexOf('<li') === 0) toCreate = 'ul';
409
- if (html.indexOf('<tr') === 0) toCreate = 'tbody';
410
- if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
411
- if (html.indexOf('<tbody') === 0) toCreate = 'table';
412
- if (html.indexOf('<option') === 0) toCreate = 'select';
413
- var tempParent = document.createElement(toCreate);
414
- tempParent.innerHTML = html;
415
-
416
- for (var i = 0; i < tempParent.childNodes.length; i += 1) {
417
- arr.push(tempParent.childNodes[i]);
418
- }
419
- } else {
420
- arr = qsa(selector.trim(), context || document);
421
- } // arr = qsa(selector, document);
422
-
423
- } else if (selector.nodeType || selector === window || selector === document) {
424
- arr.push(selector);
425
- } else if (Array.isArray(selector)) {
426
- if (selector instanceof Dom7) return selector;
427
- arr = selector;
428
- }
429
-
430
- return new Dom7(arrayUnique(arr));
431
- }
432
-
433
- $.fn = Dom7.prototype;
434
-
435
- function addClass() {
436
- for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
437
- classes[_key] = arguments[_key];
438
- }
439
-
440
- var classNames = arrayFlat(classes.map(function (c) {
441
- return c.split(' ');
442
- }));
443
- this.forEach(function (el) {
444
- var _el$classList;
445
-
446
- (_el$classList = el.classList).add.apply(_el$classList, classNames);
447
- });
448
- return this;
449
- }
450
-
451
- function removeClass() {
452
- for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
453
- classes[_key2] = arguments[_key2];
454
- }
455
-
456
- var classNames = arrayFlat(classes.map(function (c) {
457
- return c.split(' ');
458
- }));
459
- this.forEach(function (el) {
460
- var _el$classList2;
461
-
462
- (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);
463
- });
464
- return this;
465
- }
466
-
467
- function toggleClass() {
468
- for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
469
- classes[_key3] = arguments[_key3];
470
- }
471
-
472
- var classNames = arrayFlat(classes.map(function (c) {
473
- return c.split(' ');
474
- }));
475
- this.forEach(function (el) {
476
- classNames.forEach(function (className) {
477
- el.classList.toggle(className);
478
- });
479
- });
480
- }
481
-
482
- function hasClass() {
483
- for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
484
- classes[_key4] = arguments[_key4];
485
- }
486
-
487
- var classNames = arrayFlat(classes.map(function (c) {
488
- return c.split(' ');
489
- }));
490
- return arrayFilter(this, function (el) {
491
- return classNames.filter(function (className) {
492
- return el.classList.contains(className);
493
- }).length > 0;
494
- }).length > 0;
495
- }
496
-
497
- function attr(attrs, value) {
498
- if (arguments.length === 1 && typeof attrs === 'string') {
499
- // Get attr
500
- if (this[0]) return this[0].getAttribute(attrs);
501
- return undefined;
502
- } // Set attrs
503
-
504
-
505
- for (var i = 0; i < this.length; i += 1) {
506
- if (arguments.length === 2) {
507
- // String
508
- this[i].setAttribute(attrs, value);
509
- } else {
510
- // Object
511
- for (var attrName in attrs) {
512
- this[i][attrName] = attrs[attrName];
513
- this[i].setAttribute(attrName, attrs[attrName]);
514
- }
515
- }
516
- }
517
-
518
- return this;
519
- }
520
-
521
- function removeAttr(attr) {
522
- for (var i = 0; i < this.length; i += 1) {
523
- this[i].removeAttribute(attr);
524
- }
525
-
526
- return this;
527
- }
528
-
529
- function transform(transform) {
530
- for (var i = 0; i < this.length; i += 1) {
531
- this[i].style.transform = transform;
532
- }
533
-
534
- return this;
535
- }
536
-
537
- function transition(duration) {
538
- for (var i = 0; i < this.length; i += 1) {
539
- this[i].style.transition = typeof duration !== 'string' ? duration + "ms" : duration;
540
- }
541
-
542
- return this;
543
- }
544
-
545
- function on() {
546
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
547
- args[_key5] = arguments[_key5];
548
- }
549
-
550
- var eventType = args[0],
551
- targetSelector = args[1],
552
- listener = args[2],
553
- capture = args[3];
554
-
555
- if (typeof args[1] === 'function') {
556
- eventType = args[0];
557
- listener = args[1];
558
- capture = args[2];
559
- targetSelector = undefined;
560
- }
561
-
562
- if (!capture) capture = false;
563
-
564
- function handleLiveEvent(e) {
565
- var target = e.target;
566
- if (!target) return;
567
- var eventData = e.target.dom7EventData || [];
568
-
569
- if (eventData.indexOf(e) < 0) {
570
- eventData.unshift(e);
571
- }
572
-
573
- if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
574
- var _parents = $(target).parents(); // eslint-disable-line
575
-
576
-
577
- for (var k = 0; k < _parents.length; k += 1) {
578
- if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
579
- }
580
- }
581
- }
582
-
583
- function handleEvent(e) {
584
- var eventData = e && e.target ? e.target.dom7EventData || [] : [];
585
-
586
- if (eventData.indexOf(e) < 0) {
587
- eventData.unshift(e);
588
- }
589
-
590
- listener.apply(this, eventData);
591
- }
592
-
593
- var events = eventType.split(' ');
594
- var j;
595
-
596
- for (var i = 0; i < this.length; i += 1) {
597
- var el = this[i];
598
-
599
- if (!targetSelector) {
600
- for (j = 0; j < events.length; j += 1) {
601
- var event = events[j];
602
- if (!el.dom7Listeners) el.dom7Listeners = {};
603
- if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
604
- el.dom7Listeners[event].push({
605
- listener: listener,
606
- proxyListener: handleEvent
607
- });
608
- el.addEventListener(event, handleEvent, capture);
609
- }
610
- } else {
611
- // Live events
612
- for (j = 0; j < events.length; j += 1) {
613
- var _event = events[j];
614
- if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
615
- if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
616
-
617
- el.dom7LiveListeners[_event].push({
618
- listener: listener,
619
- proxyListener: handleLiveEvent
620
- });
621
-
622
- el.addEventListener(_event, handleLiveEvent, capture);
623
- }
624
- }
625
- }
626
-
627
- return this;
628
- }
629
-
630
- function off() {
631
- for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
632
- args[_key6] = arguments[_key6];
633
- }
634
-
635
- var eventType = args[0],
636
- targetSelector = args[1],
637
- listener = args[2],
638
- capture = args[3];
639
-
640
- if (typeof args[1] === 'function') {
641
- eventType = args[0];
642
- listener = args[1];
643
- capture = args[2];
644
- targetSelector = undefined;
645
- }
646
-
647
- if (!capture) capture = false;
648
- var events = eventType.split(' ');
649
-
650
- for (var i = 0; i < events.length; i += 1) {
651
- var event = events[i];
652
-
653
- for (var j = 0; j < this.length; j += 1) {
654
- var el = this[j];
655
- var handlers = void 0;
656
-
657
- if (!targetSelector && el.dom7Listeners) {
658
- handlers = el.dom7Listeners[event];
659
- } else if (targetSelector && el.dom7LiveListeners) {
660
- handlers = el.dom7LiveListeners[event];
661
- }
662
-
663
- if (handlers && handlers.length) {
664
- for (var k = handlers.length - 1; k >= 0; k -= 1) {
665
- var handler = handlers[k];
666
-
667
- if (listener && handler.listener === listener) {
668
- el.removeEventListener(event, handler.proxyListener, capture);
669
- handlers.splice(k, 1);
670
- } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
671
- el.removeEventListener(event, handler.proxyListener, capture);
672
- handlers.splice(k, 1);
673
- } else if (!listener) {
674
- el.removeEventListener(event, handler.proxyListener, capture);
675
- handlers.splice(k, 1);
676
- }
677
- }
678
- }
679
- }
680
- }
681
-
682
- return this;
683
- }
684
-
685
- function trigger() {
686
- var window = getWindow();
687
-
688
- for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
689
- args[_key9] = arguments[_key9];
690
- }
691
-
692
- var events = args[0].split(' ');
693
- var eventData = args[1];
694
-
695
- for (var i = 0; i < events.length; i += 1) {
696
- var event = events[i];
697
-
698
- for (var j = 0; j < this.length; j += 1) {
699
- var el = this[j];
700
-
701
- if (window.CustomEvent) {
702
- var evt = new window.CustomEvent(event, {
703
- detail: eventData,
704
- bubbles: true,
705
- cancelable: true
706
- });
707
- el.dom7EventData = args.filter(function (data, dataIndex) {
708
- return dataIndex > 0;
709
- });
710
- el.dispatchEvent(evt);
711
- el.dom7EventData = [];
712
- delete el.dom7EventData;
713
- }
714
- }
715
- }
716
-
717
- return this;
718
- }
719
-
720
- function transitionEnd(callback) {
721
- var dom = this;
722
-
723
- function fireCallBack(e) {
724
- if (e.target !== this) return;
725
- callback.call(this, e);
726
- dom.off('transitionend', fireCallBack);
727
- }
728
-
729
- if (callback) {
730
- dom.on('transitionend', fireCallBack);
731
- }
732
-
733
- return this;
734
- }
735
-
736
- function outerWidth(includeMargins) {
737
- if (this.length > 0) {
738
- if (includeMargins) {
739
- var _styles = this.styles();
740
-
741
- return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
742
- }
743
-
744
- return this[0].offsetWidth;
745
- }
746
-
747
- return null;
748
- }
749
-
750
- function outerHeight(includeMargins) {
751
- if (this.length > 0) {
752
- if (includeMargins) {
753
- var _styles2 = this.styles();
754
-
755
- return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
756
- }
757
-
758
- return this[0].offsetHeight;
759
- }
760
-
761
- return null;
762
- }
763
-
764
- function offset() {
765
- if (this.length > 0) {
766
- var window = getWindow();
767
- var document = getDocument();
768
- var el = this[0];
769
- var box = el.getBoundingClientRect();
770
- var body = document.body;
771
- var clientTop = el.clientTop || body.clientTop || 0;
772
- var clientLeft = el.clientLeft || body.clientLeft || 0;
773
- var scrollTop = el === window ? window.scrollY : el.scrollTop;
774
- var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
775
- return {
776
- top: box.top + scrollTop - clientTop,
777
- left: box.left + scrollLeft - clientLeft
778
- };
779
- }
780
-
781
- return null;
782
- }
783
-
784
- function styles() {
785
- var window = getWindow();
786
- if (this[0]) return window.getComputedStyle(this[0], null);
787
- return {};
788
- }
789
-
790
- function css(props, value) {
791
- var window = getWindow();
792
- var i;
793
-
794
- if (arguments.length === 1) {
795
- if (typeof props === 'string') {
796
- // .css('width')
797
- if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
798
- } else {
799
- // .css({ width: '100px' })
800
- for (i = 0; i < this.length; i += 1) {
801
- for (var _prop in props) {
802
- this[i].style[_prop] = props[_prop];
803
- }
804
- }
805
-
806
- return this;
807
- }
808
- }
809
-
810
- if (arguments.length === 2 && typeof props === 'string') {
811
- // .css('width', '100px')
812
- for (i = 0; i < this.length; i += 1) {
813
- this[i].style[props] = value;
814
- }
815
-
816
- return this;
817
- }
818
-
819
- return this;
820
- }
821
-
822
- function each(callback) {
823
- if (!callback) return this;
824
- this.forEach(function (el, index) {
825
- callback.apply(el, [el, index]);
826
- });
827
- return this;
828
- }
829
-
830
- function filter(callback) {
831
- var result = arrayFilter(this, callback);
832
- return $(result);
833
- }
834
-
835
- function html(html) {
836
- if (typeof html === 'undefined') {
837
- return this[0] ? this[0].innerHTML : null;
838
- }
839
-
840
- for (var i = 0; i < this.length; i += 1) {
841
- this[i].innerHTML = html;
842
- }
843
-
844
- return this;
845
- }
846
-
847
- function text(text) {
848
- if (typeof text === 'undefined') {
849
- return this[0] ? this[0].textContent.trim() : null;
850
- }
851
-
852
- for (var i = 0; i < this.length; i += 1) {
853
- this[i].textContent = text;
854
- }
855
-
856
- return this;
857
- }
858
-
859
- function is(selector) {
860
- var window = getWindow();
861
- var document = getDocument();
862
- var el = this[0];
863
- var compareWith;
864
- var i;
865
- if (!el || typeof selector === 'undefined') return false;
866
-
867
- if (typeof selector === 'string') {
868
- if (el.matches) return el.matches(selector);
869
- if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
870
- if (el.msMatchesSelector) return el.msMatchesSelector(selector);
871
- compareWith = $(selector);
872
-
873
- for (i = 0; i < compareWith.length; i += 1) {
874
- if (compareWith[i] === el) return true;
875
- }
876
-
877
- return false;
878
- }
879
-
880
- if (selector === document) {
881
- return el === document;
882
- }
883
-
884
- if (selector === window) {
885
- return el === window;
886
- }
887
-
888
- if (selector.nodeType || selector instanceof Dom7) {
889
- compareWith = selector.nodeType ? [selector] : selector;
890
-
891
- for (i = 0; i < compareWith.length; i += 1) {
892
- if (compareWith[i] === el) return true;
893
- }
894
-
895
- return false;
896
- }
897
-
898
- return false;
899
- }
900
-
901
- function index() {
902
- var child = this[0];
903
- var i;
904
-
905
- if (child) {
906
- i = 0; // eslint-disable-next-line
907
-
908
- while ((child = child.previousSibling) !== null) {
909
- if (child.nodeType === 1) i += 1;
910
- }
911
-
912
- return i;
913
- }
914
-
915
- return undefined;
916
- }
917
-
918
- function eq(index) {
919
- if (typeof index === 'undefined') return this;
920
- var length = this.length;
921
-
922
- if (index > length - 1) {
923
- return $([]);
924
- }
925
-
926
- if (index < 0) {
927
- var returnIndex = length + index;
928
- if (returnIndex < 0) return $([]);
929
- return $([this[returnIndex]]);
930
- }
931
-
932
- return $([this[index]]);
933
- }
934
-
935
- function append() {
936
- var newChild;
937
- var document = getDocument();
938
-
939
- for (var k = 0; k < arguments.length; k += 1) {
940
- newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
941
-
942
- for (var i = 0; i < this.length; i += 1) {
943
- if (typeof newChild === 'string') {
944
- var tempDiv = document.createElement('div');
945
- tempDiv.innerHTML = newChild;
946
-
947
- while (tempDiv.firstChild) {
948
- this[i].appendChild(tempDiv.firstChild);
949
- }
950
- } else if (newChild instanceof Dom7) {
951
- for (var j = 0; j < newChild.length; j += 1) {
952
- this[i].appendChild(newChild[j]);
953
- }
954
- } else {
955
- this[i].appendChild(newChild);
956
- }
957
- }
958
- }
959
-
960
- return this;
961
- }
962
-
963
- function prepend(newChild) {
964
- var document = getDocument();
965
- var i;
966
- var j;
967
-
968
- for (i = 0; i < this.length; i += 1) {
969
- if (typeof newChild === 'string') {
970
- var tempDiv = document.createElement('div');
971
- tempDiv.innerHTML = newChild;
972
-
973
- for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
974
- this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
975
- }
976
- } else if (newChild instanceof Dom7) {
977
- for (j = 0; j < newChild.length; j += 1) {
978
- this[i].insertBefore(newChild[j], this[i].childNodes[0]);
979
- }
980
- } else {
981
- this[i].insertBefore(newChild, this[i].childNodes[0]);
982
- }
983
- }
984
-
985
- return this;
986
- }
987
-
988
- function next(selector) {
989
- if (this.length > 0) {
990
- if (selector) {
991
- if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
992
- return $([this[0].nextElementSibling]);
993
- }
994
-
995
- return $([]);
996
- }
997
-
998
- if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
999
- return $([]);
1000
- }
1001
-
1002
- return $([]);
1003
- }
1004
-
1005
- function nextAll(selector) {
1006
- var nextEls = [];
1007
- var el = this[0];
1008
- if (!el) return $([]);
1009
-
1010
- while (el.nextElementSibling) {
1011
- var _next = el.nextElementSibling; // eslint-disable-line
1012
-
1013
- if (selector) {
1014
- if ($(_next).is(selector)) nextEls.push(_next);
1015
- } else nextEls.push(_next);
1016
-
1017
- el = _next;
1018
- }
1019
-
1020
- return $(nextEls);
1021
- }
1022
-
1023
- function prev(selector) {
1024
- if (this.length > 0) {
1025
- var el = this[0];
1026
-
1027
- if (selector) {
1028
- if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
1029
- return $([el.previousElementSibling]);
1030
- }
1031
-
1032
- return $([]);
1033
- }
1034
-
1035
- if (el.previousElementSibling) return $([el.previousElementSibling]);
1036
- return $([]);
1037
- }
1038
-
1039
- return $([]);
1040
- }
1041
-
1042
- function prevAll(selector) {
1043
- var prevEls = [];
1044
- var el = this[0];
1045
- if (!el) return $([]);
1046
-
1047
- while (el.previousElementSibling) {
1048
- var _prev = el.previousElementSibling; // eslint-disable-line
1049
-
1050
- if (selector) {
1051
- if ($(_prev).is(selector)) prevEls.push(_prev);
1052
- } else prevEls.push(_prev);
1053
-
1054
- el = _prev;
1055
- }
1056
-
1057
- return $(prevEls);
1058
- }
1059
-
1060
- function parent(selector) {
1061
- var parents = []; // eslint-disable-line
1062
-
1063
- for (var i = 0; i < this.length; i += 1) {
1064
- if (this[i].parentNode !== null) {
1065
- if (selector) {
1066
- if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
1067
- } else {
1068
- parents.push(this[i].parentNode);
1069
- }
1070
- }
1071
- }
1072
-
1073
- return $(parents);
1074
- }
1075
-
1076
- function parents(selector) {
1077
- var parents = []; // eslint-disable-line
1078
-
1079
- for (var i = 0; i < this.length; i += 1) {
1080
- var _parent = this[i].parentNode; // eslint-disable-line
1081
-
1082
- while (_parent) {
1083
- if (selector) {
1084
- if ($(_parent).is(selector)) parents.push(_parent);
1085
- } else {
1086
- parents.push(_parent);
1087
- }
1088
-
1089
- _parent = _parent.parentNode;
1090
- }
1091
- }
1092
-
1093
- return $(parents);
1094
- }
1095
-
1096
- function closest(selector) {
1097
- var closest = this; // eslint-disable-line
1098
-
1099
- if (typeof selector === 'undefined') {
1100
- return $([]);
1101
- }
1102
-
1103
- if (!closest.is(selector)) {
1104
- closest = closest.parents(selector).eq(0);
1105
- }
1106
-
1107
- return closest;
1108
- }
1109
-
1110
- function find(selector) {
1111
- var foundElements = [];
1112
-
1113
- for (var i = 0; i < this.length; i += 1) {
1114
- var found = this[i].querySelectorAll(selector);
1115
-
1116
- for (var j = 0; j < found.length; j += 1) {
1117
- foundElements.push(found[j]);
1118
- }
1119
- }
1120
-
1121
- return $(foundElements);
1122
- }
1123
-
1124
- function children(selector) {
1125
- var children = []; // eslint-disable-line
1126
-
1127
- for (var i = 0; i < this.length; i += 1) {
1128
- var childNodes = this[i].children;
1129
-
1130
- for (var j = 0; j < childNodes.length; j += 1) {
1131
- if (!selector || $(childNodes[j]).is(selector)) {
1132
- children.push(childNodes[j]);
1133
- }
1134
- }
1135
- }
1136
-
1137
- return $(children);
1138
- }
1139
-
1140
- function remove() {
1141
- for (var i = 0; i < this.length; i += 1) {
1142
- if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
1143
- }
1144
-
1145
- return this;
1146
- }
1147
-
1148
- var Methods = {
1149
- addClass: addClass,
1150
- removeClass: removeClass,
1151
- hasClass: hasClass,
1152
- toggleClass: toggleClass,
1153
- attr: attr,
1154
- removeAttr: removeAttr,
1155
- transform: transform,
1156
- transition: transition,
1157
- on: on,
1158
- off: off,
1159
- trigger: trigger,
1160
- transitionEnd: transitionEnd,
1161
- outerWidth: outerWidth,
1162
- outerHeight: outerHeight,
1163
- styles: styles,
1164
- offset: offset,
1165
- css: css,
1166
- each: each,
1167
- html: html,
1168
- text: text,
1169
- is: is,
1170
- index: index,
1171
- eq: eq,
1172
- append: append,
1173
- prepend: prepend,
1174
- next: next,
1175
- nextAll: nextAll,
1176
- prev: prev,
1177
- prevAll: prevAll,
1178
- parent: parent,
1179
- parents: parents,
1180
- closest: closest,
1181
- find: find,
1182
- children: children,
1183
- filter: filter,
1184
- remove: remove
1185
- };
1186
- Object.keys(Methods).forEach(function (methodName) {
1187
- $.fn[methodName] = Methods[methodName];
1188
- });
1189
-
1190
- function deleteProps(obj) {
1191
- var object = obj;
1192
- Object.keys(object).forEach(function (key) {
1193
- try {
1194
- object[key] = null;
1195
- } catch (e) {// no getter for object
1196
- }
1197
-
1198
- try {
1199
- delete object[key];
1200
- } catch (e) {// something got wrong
1201
- }
1202
- });
1203
- }
1204
-
1205
- function nextTick(callback, delay) {
1206
- if (delay === void 0) {
1207
- delay = 0;
1208
- }
1209
-
1210
- return setTimeout(callback, delay);
1211
- }
1212
-
1213
- function now() {
1214
- return Date.now();
1215
- }
1216
-
1217
- function getTranslate(el, axis) {
1218
- if (axis === void 0) {
1219
- axis = 'x';
1220
- }
1221
-
1222
- var window = getWindow();
1223
- var matrix;
1224
- var curTransform;
1225
- var transformMatrix;
1226
- var curStyle = window.getComputedStyle(el, null);
1227
-
1228
- if (window.WebKitCSSMatrix) {
1229
- curTransform = curStyle.transform || curStyle.webkitTransform;
1230
-
1231
- if (curTransform.split(',').length > 6) {
1232
- curTransform = curTransform.split(', ').map(function (a) {
1233
- return a.replace(',', '.');
1234
- }).join(', ');
1235
- } // Some old versions of Webkit choke when 'none' is passed; pass
1236
- // empty string instead in this case
1237
-
1238
-
1239
- transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
1240
- } else {
1241
- transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
1242
- matrix = transformMatrix.toString().split(',');
1243
- }
1244
-
1245
- if (axis === 'x') {
1246
- // Latest Chrome and webkits Fix
1247
- if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
1248
- else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
1249
- else curTransform = parseFloat(matrix[4]);
1250
- }
1251
-
1252
- if (axis === 'y') {
1253
- // Latest Chrome and webkits Fix
1254
- if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
1255
- else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
1256
- else curTransform = parseFloat(matrix[5]);
1257
- }
1258
-
1259
- return curTransform || 0;
1260
- }
1261
-
1262
- function isObject$1(o) {
1263
- return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
1264
- }
1265
-
1266
- function extend$1() {
1267
- var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
1268
-
1269
- for (var i = 1; i < arguments.length; i += 1) {
1270
- var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
1271
-
1272
- if (nextSource !== undefined && nextSource !== null) {
1273
- var keysArray = Object.keys(Object(nextSource));
1274
-
1275
- for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
1276
- var nextKey = keysArray[nextIndex];
1277
- var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
1278
-
1279
- if (desc !== undefined && desc.enumerable) {
1280
- if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1281
- extend$1(to[nextKey], nextSource[nextKey]);
1282
- } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
1283
- to[nextKey] = {};
1284
- extend$1(to[nextKey], nextSource[nextKey]);
1285
- } else {
1286
- to[nextKey] = nextSource[nextKey];
1287
- }
1288
- }
1289
- }
1290
- }
1291
- }
1292
-
1293
- return to;
1294
- }
1295
-
1296
- function bindModuleMethods(instance, obj) {
1297
- Object.keys(obj).forEach(function (key) {
1298
- if (isObject$1(obj[key])) {
1299
- Object.keys(obj[key]).forEach(function (subKey) {
1300
- if (typeof obj[key][subKey] === 'function') {
1301
- obj[key][subKey] = obj[key][subKey].bind(instance);
1302
- }
1303
- });
1304
- }
1305
-
1306
- instance[key] = obj[key];
1307
- });
1308
- }
1309
-
1310
- var support;
1311
-
1312
- function calcSupport() {
1313
- var window = getWindow();
1314
- var document = getDocument();
1315
- return {
1316
- touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
1317
- pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
1318
- observer: function checkObserver() {
1319
- return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
1320
- }(),
1321
- passiveListener: function checkPassiveListener() {
1322
- var supportsPassive = false;
1323
-
1324
- try {
1325
- var opts = Object.defineProperty({}, 'passive', {
1326
- // eslint-disable-next-line
1327
- get: function get() {
1328
- supportsPassive = true;
1329
- }
1330
- });
1331
- window.addEventListener('testPassiveListener', null, opts);
1332
- } catch (e) {// No support
1333
- }
1334
-
1335
- return supportsPassive;
1336
- }(),
1337
- gestures: function checkGestures() {
1338
- return 'ongesturestart' in window;
1339
- }()
1340
- };
1341
- }
1342
-
1343
- function getSupport() {
1344
- if (!support) {
1345
- support = calcSupport();
1346
- }
1347
-
1348
- return support;
1349
- }
1350
-
1351
- var device;
1352
-
1353
- function calcDevice(_temp) {
1354
- var _ref = _temp === void 0 ? {} : _temp,
1355
- userAgent = _ref.userAgent;
1356
-
1357
- var support = getSupport();
1358
- var window = getWindow();
1359
- var platform = window.navigator.platform;
1360
- var ua = userAgent || window.navigator.userAgent;
1361
- var device = {
1362
- ios: false,
1363
- android: false
1364
- };
1365
- var screenWidth = window.screen.width;
1366
- var screenHeight = window.screen.height;
1367
- var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
1368
-
1369
- var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
1370
- var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
1371
- var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
1372
- var windows = platform === 'Win32';
1373
- var macos = platform === 'MacIntel'; // iPadOs 13 fix
1374
-
1375
- var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768'];
1376
-
1377
- if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
1378
- ipad = ua.match(/(Version)\/([\d.]+)/);
1379
- if (!ipad) ipad = [0, 1, '13_0_0'];
1380
- macos = false;
1381
- } // Android
1382
-
1383
-
1384
- if (android && !windows) {
1385
- device.os = 'android';
1386
- device.android = true;
1387
- }
1388
-
1389
- if (ipad || iphone || ipod) {
1390
- device.os = 'ios';
1391
- device.ios = true;
1392
- } // Export object
1393
-
1394
-
1395
- return device;
1396
- }
1397
-
1398
- function getDevice(overrides) {
1399
- if (overrides === void 0) {
1400
- overrides = {};
1401
- }
1402
-
1403
- if (!device) {
1404
- device = calcDevice(overrides);
1405
- }
1406
-
1407
- return device;
1408
- }
1409
-
1410
- var browser;
1411
-
1412
- function calcBrowser() {
1413
- var window = getWindow();
1414
-
1415
- function isSafari() {
1416
- var ua = window.navigator.userAgent.toLowerCase();
1417
- return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
1418
- }
1419
-
1420
- return {
1421
- isEdge: !!window.navigator.userAgent.match(/Edge/g),
1422
- isSafari: isSafari(),
1423
- isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
1424
- };
1425
- }
1426
-
1427
- function getBrowser() {
1428
- if (!browser) {
1429
- browser = calcBrowser();
1430
- }
1431
-
1432
- return browser;
1433
- }
1434
-
1435
- var Resize = {
1436
- name: 'resize',
1437
- create: function create() {
1438
- var swiper = this;
1439
- extend$1(swiper, {
1440
- resize: {
1441
- resizeHandler: function resizeHandler() {
1442
- if (!swiper || swiper.destroyed || !swiper.initialized) return;
1443
- swiper.emit('beforeResize');
1444
- swiper.emit('resize');
1445
- },
1446
- orientationChangeHandler: function orientationChangeHandler() {
1447
- if (!swiper || swiper.destroyed || !swiper.initialized) return;
1448
- swiper.emit('orientationchange');
1449
- }
1450
- }
1451
- });
1452
- },
1453
- on: {
1454
- init: function init(swiper) {
1455
- var window = getWindow(); // Emit resize
1456
-
1457
- window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange
1458
-
1459
- window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1460
- },
1461
- destroy: function destroy(swiper) {
1462
- var window = getWindow();
1463
- window.removeEventListener('resize', swiper.resize.resizeHandler);
1464
- window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
1465
- }
1466
- }
1467
- };
1468
-
1469
- var Observer = {
1470
- attach: function attach(target, options) {
1471
- if (options === void 0) {
1472
- options = {};
1473
- }
1474
-
1475
- var window = getWindow();
1476
- var swiper = this;
1477
- var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
1478
- var observer = new ObserverFunc(function (mutations) {
1479
- // The observerUpdate event should only be triggered
1480
- // once despite the number of mutations. Additional
1481
- // triggers are redundant and are very costly
1482
- if (mutations.length === 1) {
1483
- swiper.emit('observerUpdate', mutations[0]);
1484
- return;
1485
- }
1486
-
1487
- var observerUpdate = function observerUpdate() {
1488
- swiper.emit('observerUpdate', mutations[0]);
1489
- };
1490
-
1491
- if (window.requestAnimationFrame) {
1492
- window.requestAnimationFrame(observerUpdate);
1493
- } else {
1494
- window.setTimeout(observerUpdate, 0);
1495
- }
1496
- });
1497
- observer.observe(target, {
1498
- attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
1499
- childList: typeof options.childList === 'undefined' ? true : options.childList,
1500
- characterData: typeof options.characterData === 'undefined' ? true : options.characterData
1501
- });
1502
- swiper.observer.observers.push(observer);
1503
- },
1504
- init: function init() {
1505
- var swiper = this;
1506
- if (!swiper.support.observer || !swiper.params.observer) return;
1507
-
1508
- if (swiper.params.observeParents) {
1509
- var containerParents = swiper.$el.parents();
1510
-
1511
- for (var i = 0; i < containerParents.length; i += 1) {
1512
- swiper.observer.attach(containerParents[i]);
1513
- }
1514
- } // Observe container
1515
-
1516
-
1517
- swiper.observer.attach(swiper.$el[0], {
1518
- childList: swiper.params.observeSlideChildren
1519
- }); // Observe wrapper
1520
-
1521
- swiper.observer.attach(swiper.$wrapperEl[0], {
1522
- attributes: false
1523
- });
1524
- },
1525
- destroy: function destroy() {
1526
- var swiper = this;
1527
- swiper.observer.observers.forEach(function (observer) {
1528
- observer.disconnect();
1529
- });
1530
- swiper.observer.observers = [];
1531
- }
1532
- };
1533
- var Observer$1 = {
1534
- name: 'observer',
1535
- params: {
1536
- observer: false,
1537
- observeParents: false,
1538
- observeSlideChildren: false
1539
- },
1540
- create: function create() {
1541
- var swiper = this;
1542
- bindModuleMethods(swiper, {
1543
- observer: _extends(_extends({}, Observer), {}, {
1544
- observers: []
1545
- })
1546
- });
1547
- },
1548
- on: {
1549
- init: function init(swiper) {
1550
- swiper.observer.init();
1551
- },
1552
- destroy: function destroy(swiper) {
1553
- swiper.observer.destroy();
1554
- }
1555
- }
1556
- };
1557
-
1558
- var modular = {
1559
- useParams: function useParams(instanceParams) {
1560
- var instance = this;
1561
- if (!instance.modules) return;
1562
- Object.keys(instance.modules).forEach(function (moduleName) {
1563
- var module = instance.modules[moduleName]; // Extend params
1564
-
1565
- if (module.params) {
1566
- extend$1(instanceParams, module.params);
1567
- }
1568
- });
1569
- },
1570
- useModules: function useModules(modulesParams) {
1571
- if (modulesParams === void 0) {
1572
- modulesParams = {};
1573
- }
1574
-
1575
- var instance = this;
1576
- if (!instance.modules) return;
1577
- Object.keys(instance.modules).forEach(function (moduleName) {
1578
- var module = instance.modules[moduleName];
1579
- var moduleParams = modulesParams[moduleName] || {}; // Add event listeners
1580
-
1581
- if (module.on && instance.on) {
1582
- Object.keys(module.on).forEach(function (moduleEventName) {
1583
- instance.on(moduleEventName, module.on[moduleEventName]);
1584
- });
1585
- } // Module create callback
1586
-
1587
-
1588
- if (module.create) {
1589
- module.create.bind(instance)(moduleParams);
1590
- }
1591
- });
1592
- }
1593
- };
1594
-
1595
- /* eslint-disable no-underscore-dangle */
1596
- var eventsEmitter = {
1597
- on: function on(events, handler, priority) {
1598
- var self = this;
1599
- if (typeof handler !== 'function') return self;
1600
- var method = priority ? 'unshift' : 'push';
1601
- events.split(' ').forEach(function (event) {
1602
- if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
1603
- self.eventsListeners[event][method](handler);
1604
- });
1605
- return self;
1606
- },
1607
- once: function once(events, handler, priority) {
1608
- var self = this;
1609
- if (typeof handler !== 'function') return self;
1610
-
1611
- function onceHandler() {
1612
- self.off(events, onceHandler);
1613
-
1614
- if (onceHandler.__emitterProxy) {
1615
- delete onceHandler.__emitterProxy;
1616
- }
1617
-
1618
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1619
- args[_key] = arguments[_key];
1620
- }
1621
-
1622
- handler.apply(self, args);
1623
- }
1624
-
1625
- onceHandler.__emitterProxy = handler;
1626
- return self.on(events, onceHandler, priority);
1627
- },
1628
- onAny: function onAny(handler, priority) {
1629
- var self = this;
1630
- if (typeof handler !== 'function') return self;
1631
- var method = priority ? 'unshift' : 'push';
1632
-
1633
- if (self.eventsAnyListeners.indexOf(handler) < 0) {
1634
- self.eventsAnyListeners[method](handler);
1635
- }
1636
-
1637
- return self;
1638
- },
1639
- offAny: function offAny(handler) {
1640
- var self = this;
1641
- if (!self.eventsAnyListeners) return self;
1642
- var index = self.eventsAnyListeners.indexOf(handler);
1643
-
1644
- if (index >= 0) {
1645
- self.eventsAnyListeners.splice(index, 1);
1646
- }
1647
-
1648
- return self;
1649
- },
1650
- off: function off(events, handler) {
1651
- var self = this;
1652
- if (!self.eventsListeners) return self;
1653
- events.split(' ').forEach(function (event) {
1654
- if (typeof handler === 'undefined') {
1655
- self.eventsListeners[event] = [];
1656
- } else if (self.eventsListeners[event]) {
1657
- self.eventsListeners[event].forEach(function (eventHandler, index) {
1658
- if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
1659
- self.eventsListeners[event].splice(index, 1);
1660
- }
1661
- });
1662
- }
1663
- });
1664
- return self;
1665
- },
1666
- emit: function emit() {
1667
- var self = this;
1668
- if (!self.eventsListeners) return self;
1669
- var events;
1670
- var data;
1671
- var context;
1672
-
1673
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1674
- args[_key2] = arguments[_key2];
1675
- }
1676
-
1677
- if (typeof args[0] === 'string' || Array.isArray(args[0])) {
1678
- events = args[0];
1679
- data = args.slice(1, args.length);
1680
- context = self;
1681
- } else {
1682
- events = args[0].events;
1683
- data = args[0].data;
1684
- context = args[0].context || self;
1685
- }
1686
-
1687
- data.unshift(context);
1688
- var eventsArray = Array.isArray(events) ? events : events.split(' ');
1689
- eventsArray.forEach(function (event) {
1690
- if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
1691
- self.eventsAnyListeners.forEach(function (eventHandler) {
1692
- eventHandler.apply(context, [event].concat(data));
1693
- });
1694
- }
1695
-
1696
- if (self.eventsListeners && self.eventsListeners[event]) {
1697
- var handlers = [];
1698
- self.eventsListeners[event].forEach(function (eventHandler) {
1699
- handlers.push(eventHandler);
1700
- });
1701
- handlers.forEach(function (eventHandler) {
1702
- eventHandler.apply(context, data);
1703
- });
1704
- }
1705
- });
1706
- return self;
1707
- }
1708
- };
1709
-
1710
- function updateSize() {
1711
- var swiper = this;
1712
- var width;
1713
- var height;
1714
- var $el = swiper.$el;
1715
-
1716
- if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
1717
- width = swiper.params.width;
1718
- } else {
1719
- width = $el[0].clientWidth;
1720
- }
1721
-
1722
- if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
1723
- height = swiper.params.height;
1724
- } else {
1725
- height = $el[0].clientHeight;
1726
- }
1727
-
1728
- if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
1729
- return;
1730
- } // Subtract paddings
1731
-
1732
-
1733
- width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
1734
- height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
1735
- if (Number.isNaN(width)) width = 0;
1736
- if (Number.isNaN(height)) height = 0;
1737
- extend$1(swiper, {
1738
- width: width,
1739
- height: height,
1740
- size: swiper.isHorizontal() ? width : height
1741
- });
1742
- }
1743
-
1744
- function updateSlides() {
1745
- var swiper = this;
1746
- var window = getWindow();
1747
- var params = swiper.params;
1748
- var $wrapperEl = swiper.$wrapperEl,
1749
- swiperSize = swiper.size,
1750
- rtl = swiper.rtlTranslate,
1751
- wrongRTL = swiper.wrongRTL;
1752
- var isVirtual = swiper.virtual && params.virtual.enabled;
1753
- var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
1754
- var slides = $wrapperEl.children("." + swiper.params.slideClass);
1755
- var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
1756
- var snapGrid = [];
1757
- var slidesGrid = [];
1758
- var slidesSizesGrid = [];
1759
-
1760
- function slidesForMargin(slideEl, slideIndex) {
1761
- if (!params.cssMode) return true;
1762
-
1763
- if (slideIndex === slides.length - 1) {
1764
- return false;
1765
- }
1766
-
1767
- return true;
1768
- }
1769
-
1770
- var offsetBefore = params.slidesOffsetBefore;
1771
-
1772
- if (typeof offsetBefore === 'function') {
1773
- offsetBefore = params.slidesOffsetBefore.call(swiper);
1774
- }
1775
-
1776
- var offsetAfter = params.slidesOffsetAfter;
1777
-
1778
- if (typeof offsetAfter === 'function') {
1779
- offsetAfter = params.slidesOffsetAfter.call(swiper);
1780
- }
1781
-
1782
- var previousSnapGridLength = swiper.snapGrid.length;
1783
- var previousSlidesGridLength = swiper.snapGrid.length;
1784
- var spaceBetween = params.spaceBetween;
1785
- var slidePosition = -offsetBefore;
1786
- var prevSlideSize = 0;
1787
- var index = 0;
1788
-
1789
- if (typeof swiperSize === 'undefined') {
1790
- return;
1791
- }
1792
-
1793
- if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
1794
- spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
1795
- }
1796
-
1797
- swiper.virtualSize = -spaceBetween; // reset margins
1798
-
1799
- if (rtl) slides.css({
1800
- marginLeft: '',
1801
- marginTop: ''
1802
- });else slides.css({
1803
- marginRight: '',
1804
- marginBottom: ''
1805
- });
1806
- var slidesNumberEvenToRows;
1807
-
1808
- if (params.slidesPerColumn > 1) {
1809
- if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
1810
- slidesNumberEvenToRows = slidesLength;
1811
- } else {
1812
- slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
1813
- }
1814
-
1815
- if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
1816
- slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
1817
- }
1818
- } // Calc slides
1819
-
1820
-
1821
- var slideSize;
1822
- var slidesPerColumn = params.slidesPerColumn;
1823
- var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
1824
- var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
1825
-
1826
- for (var i = 0; i < slidesLength; i += 1) {
1827
- slideSize = 0;
1828
- var slide = slides.eq(i);
1829
-
1830
- if (params.slidesPerColumn > 1) {
1831
- // Set slides order
1832
- var newSlideOrderIndex = void 0;
1833
- var column = void 0;
1834
- var row = void 0;
1835
-
1836
- if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
1837
- var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
1838
- var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
1839
- var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
1840
- row = Math.floor(slideIndexInGroup / columnsInGroup);
1841
- column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
1842
- newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
1843
- slide.css({
1844
- '-webkit-box-ordinal-group': newSlideOrderIndex,
1845
- '-moz-box-ordinal-group': newSlideOrderIndex,
1846
- '-ms-flex-order': newSlideOrderIndex,
1847
- '-webkit-order': newSlideOrderIndex,
1848
- order: newSlideOrderIndex
1849
- });
1850
- } else if (params.slidesPerColumnFill === 'column') {
1851
- column = Math.floor(i / slidesPerColumn);
1852
- row = i - column * slidesPerColumn;
1853
-
1854
- if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
1855
- row += 1;
1856
-
1857
- if (row >= slidesPerColumn) {
1858
- row = 0;
1859
- column += 1;
1860
- }
1861
- }
1862
- } else {
1863
- row = Math.floor(i / slidesPerRow);
1864
- column = i - row * slidesPerRow;
1865
- }
1866
-
1867
- slide.css("margin-" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
1868
- }
1869
-
1870
- if (slide.css('display') === 'none') continue; // eslint-disable-line
1871
-
1872
- if (params.slidesPerView === 'auto') {
1873
- var slideStyles = window.getComputedStyle(slide[0], null);
1874
- var currentTransform = slide[0].style.transform;
1875
- var currentWebKitTransform = slide[0].style.webkitTransform;
1876
-
1877
- if (currentTransform) {
1878
- slide[0].style.transform = 'none';
1879
- }
1880
-
1881
- if (currentWebKitTransform) {
1882
- slide[0].style.webkitTransform = 'none';
1883
- }
1884
-
1885
- if (params.roundLengths) {
1886
- slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
1887
- } else {
1888
- // eslint-disable-next-line
1889
- if (swiper.isHorizontal()) {
1890
- var width = parseFloat(slideStyles.getPropertyValue('width') || 0);
1891
- var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);
1892
- var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);
1893
- var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);
1894
- var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);
1895
- var boxSizing = slideStyles.getPropertyValue('box-sizing');
1896
-
1897
- if (boxSizing && boxSizing === 'border-box') {
1898
- slideSize = width + marginLeft + marginRight;
1899
- } else {
1900
- slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
1901
- }
1902
- } else {
1903
- var height = parseFloat(slideStyles.getPropertyValue('height') || 0);
1904
- var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);
1905
- var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);
1906
- var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);
1907
- var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);
1908
-
1909
- var _boxSizing = slideStyles.getPropertyValue('box-sizing');
1910
-
1911
- if (_boxSizing && _boxSizing === 'border-box') {
1912
- slideSize = height + marginTop + marginBottom;
1913
- } else {
1914
- slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
1915
- }
1916
- }
1917
- }
1918
-
1919
- if (currentTransform) {
1920
- slide[0].style.transform = currentTransform;
1921
- }
1922
-
1923
- if (currentWebKitTransform) {
1924
- slide[0].style.webkitTransform = currentWebKitTransform;
1925
- }
1926
-
1927
- if (params.roundLengths) slideSize = Math.floor(slideSize);
1928
- } else {
1929
- slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
1930
- if (params.roundLengths) slideSize = Math.floor(slideSize);
1931
-
1932
- if (slides[i]) {
1933
- if (swiper.isHorizontal()) {
1934
- slides[i].style.width = slideSize + "px";
1935
- } else {
1936
- slides[i].style.height = slideSize + "px";
1937
- }
1938
- }
1939
- }
1940
-
1941
- if (slides[i]) {
1942
- slides[i].swiperSlideSize = slideSize;
1943
- }
1944
-
1945
- slidesSizesGrid.push(slideSize);
1946
-
1947
- if (params.centeredSlides) {
1948
- slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
1949
- if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1950
- if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
1951
- if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
1952
- if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1953
- if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1954
- slidesGrid.push(slidePosition);
1955
- } else {
1956
- if (params.roundLengths) slidePosition = Math.floor(slidePosition);
1957
- if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
1958
- slidesGrid.push(slidePosition);
1959
- slidePosition = slidePosition + slideSize + spaceBetween;
1960
- }
1961
-
1962
- swiper.virtualSize += slideSize + spaceBetween;
1963
- prevSlideSize = slideSize;
1964
- index += 1;
1965
- }
1966
-
1967
- swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
1968
- var newSlidesGrid;
1969
-
1970
- if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
1971
- $wrapperEl.css({
1972
- width: swiper.virtualSize + params.spaceBetween + "px"
1973
- });
1974
- }
1975
-
1976
- if (params.setWrapperSize) {
1977
- if (swiper.isHorizontal()) $wrapperEl.css({
1978
- width: swiper.virtualSize + params.spaceBetween + "px"
1979
- });else $wrapperEl.css({
1980
- height: swiper.virtualSize + params.spaceBetween + "px"
1981
- });
1982
- }
1983
-
1984
- if (params.slidesPerColumn > 1) {
1985
- swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
1986
- swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
1987
- if (swiper.isHorizontal()) $wrapperEl.css({
1988
- width: swiper.virtualSize + params.spaceBetween + "px"
1989
- });else $wrapperEl.css({
1990
- height: swiper.virtualSize + params.spaceBetween + "px"
1991
- });
1992
-
1993
- if (params.centeredSlides) {
1994
- newSlidesGrid = [];
1995
-
1996
- for (var _i = 0; _i < snapGrid.length; _i += 1) {
1997
- var slidesGridItem = snapGrid[_i];
1998
- if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
1999
- if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
2000
- }
2001
-
2002
- snapGrid = newSlidesGrid;
2003
- }
2004
- } // Remove last grid elements depending on width
2005
-
2006
-
2007
- if (!params.centeredSlides) {
2008
- newSlidesGrid = [];
2009
-
2010
- for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
2011
- var _slidesGridItem = snapGrid[_i2];
2012
- if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
2013
-
2014
- if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
2015
- newSlidesGrid.push(_slidesGridItem);
2016
- }
2017
- }
2018
-
2019
- snapGrid = newSlidesGrid;
2020
-
2021
- if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
2022
- snapGrid.push(swiper.virtualSize - swiperSize);
2023
- }
2024
- }
2025
-
2026
- if (snapGrid.length === 0) snapGrid = [0];
2027
-
2028
- if (params.spaceBetween !== 0) {
2029
- if (swiper.isHorizontal()) {
2030
- if (rtl) slides.filter(slidesForMargin).css({
2031
- marginLeft: spaceBetween + "px"
2032
- });else slides.filter(slidesForMargin).css({
2033
- marginRight: spaceBetween + "px"
2034
- });
2035
- } else slides.filter(slidesForMargin).css({
2036
- marginBottom: spaceBetween + "px"
2037
- });
2038
- }
2039
-
2040
- if (params.centeredSlides && params.centeredSlidesBounds) {
2041
- var allSlidesSize = 0;
2042
- slidesSizesGrid.forEach(function (slideSizeValue) {
2043
- allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2044
- });
2045
- allSlidesSize -= params.spaceBetween;
2046
- var maxSnap = allSlidesSize - swiperSize;
2047
- snapGrid = snapGrid.map(function (snap) {
2048
- if (snap < 0) return -offsetBefore;
2049
- if (snap > maxSnap) return maxSnap + offsetAfter;
2050
- return snap;
2051
- });
2052
- }
2053
-
2054
- if (params.centerInsufficientSlides) {
2055
- var _allSlidesSize = 0;
2056
- slidesSizesGrid.forEach(function (slideSizeValue) {
2057
- _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
2058
- });
2059
- _allSlidesSize -= params.spaceBetween;
2060
-
2061
- if (_allSlidesSize < swiperSize) {
2062
- var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
2063
- snapGrid.forEach(function (snap, snapIndex) {
2064
- snapGrid[snapIndex] = snap - allSlidesOffset;
2065
- });
2066
- slidesGrid.forEach(function (snap, snapIndex) {
2067
- slidesGrid[snapIndex] = snap + allSlidesOffset;
2068
- });
2069
- }
2070
- }
2071
-
2072
- extend$1(swiper, {
2073
- slides: slides,
2074
- snapGrid: snapGrid,
2075
- slidesGrid: slidesGrid,
2076
- slidesSizesGrid: slidesSizesGrid
2077
- });
2078
-
2079
- if (slidesLength !== previousSlidesLength) {
2080
- swiper.emit('slidesLengthChange');
2081
- }
2082
-
2083
- if (snapGrid.length !== previousSnapGridLength) {
2084
- if (swiper.params.watchOverflow) swiper.checkOverflow();
2085
- swiper.emit('snapGridLengthChange');
2086
- }
2087
-
2088
- if (slidesGrid.length !== previousSlidesGridLength) {
2089
- swiper.emit('slidesGridLengthChange');
2090
- }
2091
-
2092
- if (params.watchSlidesProgress || params.watchSlidesVisibility) {
2093
- swiper.updateSlidesOffset();
2094
- }
2095
- }
2096
-
2097
- function updateAutoHeight(speed) {
2098
- var swiper = this;
2099
- var activeSlides = [];
2100
- var newHeight = 0;
2101
- var i;
2102
-
2103
- if (typeof speed === 'number') {
2104
- swiper.setTransition(speed);
2105
- } else if (speed === true) {
2106
- swiper.setTransition(swiper.params.speed);
2107
- } // Find slides currently in view
2108
-
2109
-
2110
- if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
2111
- if (swiper.params.centeredSlides) {
2112
- swiper.visibleSlides.each(function (slide) {
2113
- activeSlides.push(slide);
2114
- });
2115
- } else {
2116
- for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
2117
- var index = swiper.activeIndex + i;
2118
- if (index > swiper.slides.length) break;
2119
- activeSlides.push(swiper.slides.eq(index)[0]);
2120
- }
2121
- }
2122
- } else {
2123
- activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
2124
- } // Find new height from highest slide in view
2125
-
2126
-
2127
- for (i = 0; i < activeSlides.length; i += 1) {
2128
- if (typeof activeSlides[i] !== 'undefined') {
2129
- var height = activeSlides[i].offsetHeight;
2130
- newHeight = height > newHeight ? height : newHeight;
2131
- }
2132
- } // Update Height
2133
-
2134
-
2135
- if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
2136
- }
2137
-
2138
- function updateSlidesOffset() {
2139
- var swiper = this;
2140
- var slides = swiper.slides;
2141
-
2142
- for (var i = 0; i < slides.length; i += 1) {
2143
- slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
2144
- }
2145
- }
2146
-
2147
- function updateSlidesProgress(translate) {
2148
- if (translate === void 0) {
2149
- translate = this && this.translate || 0;
2150
- }
2151
-
2152
- var swiper = this;
2153
- var params = swiper.params;
2154
- var slides = swiper.slides,
2155
- rtl = swiper.rtlTranslate;
2156
- if (slides.length === 0) return;
2157
- if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
2158
- var offsetCenter = -translate;
2159
- if (rtl) offsetCenter = translate; // Visible Slides
2160
-
2161
- slides.removeClass(params.slideVisibleClass);
2162
- swiper.visibleSlidesIndexes = [];
2163
- swiper.visibleSlides = [];
2164
-
2165
- for (var i = 0; i < slides.length; i += 1) {
2166
- var slide = slides[i];
2167
- var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
2168
-
2169
- if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
2170
- var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
2171
- var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
2172
- var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
2173
-
2174
- if (isVisible) {
2175
- swiper.visibleSlides.push(slide);
2176
- swiper.visibleSlidesIndexes.push(i);
2177
- slides.eq(i).addClass(params.slideVisibleClass);
2178
- }
2179
- }
2180
-
2181
- slide.progress = rtl ? -slideProgress : slideProgress;
2182
- }
2183
-
2184
- swiper.visibleSlides = $(swiper.visibleSlides);
2185
- }
2186
-
2187
- function updateProgress(translate) {
2188
- var swiper = this;
2189
-
2190
- if (typeof translate === 'undefined') {
2191
- var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
2192
-
2193
- translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
2194
- }
2195
-
2196
- var params = swiper.params;
2197
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2198
- var progress = swiper.progress,
2199
- isBeginning = swiper.isBeginning,
2200
- isEnd = swiper.isEnd;
2201
- var wasBeginning = isBeginning;
2202
- var wasEnd = isEnd;
2203
-
2204
- if (translatesDiff === 0) {
2205
- progress = 0;
2206
- isBeginning = true;
2207
- isEnd = true;
2208
- } else {
2209
- progress = (translate - swiper.minTranslate()) / translatesDiff;
2210
- isBeginning = progress <= 0;
2211
- isEnd = progress >= 1;
2212
- }
2213
-
2214
- extend$1(swiper, {
2215
- progress: progress,
2216
- isBeginning: isBeginning,
2217
- isEnd: isEnd
2218
- });
2219
- if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
2220
-
2221
- if (isBeginning && !wasBeginning) {
2222
- swiper.emit('reachBeginning toEdge');
2223
- }
2224
-
2225
- if (isEnd && !wasEnd) {
2226
- swiper.emit('reachEnd toEdge');
2227
- }
2228
-
2229
- if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
2230
- swiper.emit('fromEdge');
2231
- }
2232
-
2233
- swiper.emit('progress', progress);
2234
- }
2235
-
2236
- function updateSlidesClasses() {
2237
- var swiper = this;
2238
- var slides = swiper.slides,
2239
- params = swiper.params,
2240
- $wrapperEl = swiper.$wrapperEl,
2241
- activeIndex = swiper.activeIndex,
2242
- realIndex = swiper.realIndex;
2243
- var isVirtual = swiper.virtual && params.virtual.enabled;
2244
- slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
2245
- var activeSlide;
2246
-
2247
- if (isVirtual) {
2248
- activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
2249
- } else {
2250
- activeSlide = slides.eq(activeIndex);
2251
- } // Active classes
2252
-
2253
-
2254
- activeSlide.addClass(params.slideActiveClass);
2255
-
2256
- if (params.loop) {
2257
- // Duplicate to all looped slides
2258
- if (activeSlide.hasClass(params.slideDuplicateClass)) {
2259
- $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2260
- } else {
2261
- $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
2262
- }
2263
- } // Next Slide
2264
-
2265
-
2266
- var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
2267
-
2268
- if (params.loop && nextSlide.length === 0) {
2269
- nextSlide = slides.eq(0);
2270
- nextSlide.addClass(params.slideNextClass);
2271
- } // Prev Slide
2272
-
2273
-
2274
- var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
2275
-
2276
- if (params.loop && prevSlide.length === 0) {
2277
- prevSlide = slides.eq(-1);
2278
- prevSlide.addClass(params.slidePrevClass);
2279
- }
2280
-
2281
- if (params.loop) {
2282
- // Duplicate to all looped slides
2283
- if (nextSlide.hasClass(params.slideDuplicateClass)) {
2284
- $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2285
- } else {
2286
- $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
2287
- }
2288
-
2289
- if (prevSlide.hasClass(params.slideDuplicateClass)) {
2290
- $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2291
- } else {
2292
- $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
2293
- }
2294
- }
2295
-
2296
- swiper.emitSlidesClasses();
2297
- }
2298
-
2299
- function updateActiveIndex(newActiveIndex) {
2300
- var swiper = this;
2301
- var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2302
- var slidesGrid = swiper.slidesGrid,
2303
- snapGrid = swiper.snapGrid,
2304
- params = swiper.params,
2305
- previousIndex = swiper.activeIndex,
2306
- previousRealIndex = swiper.realIndex,
2307
- previousSnapIndex = swiper.snapIndex;
2308
- var activeIndex = newActiveIndex;
2309
- var snapIndex;
2310
-
2311
- if (typeof activeIndex === 'undefined') {
2312
- for (var i = 0; i < slidesGrid.length; i += 1) {
2313
- if (typeof slidesGrid[i + 1] !== 'undefined') {
2314
- if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
2315
- activeIndex = i;
2316
- } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
2317
- activeIndex = i + 1;
2318
- }
2319
- } else if (translate >= slidesGrid[i]) {
2320
- activeIndex = i;
2321
- }
2322
- } // Normalize slideIndex
2323
-
2324
-
2325
- if (params.normalizeSlideIndex) {
2326
- if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
2327
- }
2328
- }
2329
-
2330
- if (snapGrid.indexOf(translate) >= 0) {
2331
- snapIndex = snapGrid.indexOf(translate);
2332
- } else {
2333
- var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
2334
- snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
2335
- }
2336
-
2337
- if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2338
-
2339
- if (activeIndex === previousIndex) {
2340
- if (snapIndex !== previousSnapIndex) {
2341
- swiper.snapIndex = snapIndex;
2342
- swiper.emit('snapIndexChange');
2343
- }
2344
-
2345
- return;
2346
- } // Get real index
2347
-
2348
-
2349
- var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
2350
- extend$1(swiper, {
2351
- snapIndex: snapIndex,
2352
- realIndex: realIndex,
2353
- previousIndex: previousIndex,
2354
- activeIndex: activeIndex
2355
- });
2356
- swiper.emit('activeIndexChange');
2357
- swiper.emit('snapIndexChange');
2358
-
2359
- if (previousRealIndex !== realIndex) {
2360
- swiper.emit('realIndexChange');
2361
- }
2362
-
2363
- if (swiper.initialized || swiper.params.runCallbacksOnInit) {
2364
- swiper.emit('slideChange');
2365
- }
2366
- }
2367
-
2368
- function updateClickedSlide(e) {
2369
- var swiper = this;
2370
- var params = swiper.params;
2371
- var slide = $(e.target).closest("." + params.slideClass)[0];
2372
- var slideFound = false;
2373
-
2374
- if (slide) {
2375
- for (var i = 0; i < swiper.slides.length; i += 1) {
2376
- if (swiper.slides[i] === slide) slideFound = true;
2377
- }
2378
- }
2379
-
2380
- if (slide && slideFound) {
2381
- swiper.clickedSlide = slide;
2382
-
2383
- if (swiper.virtual && swiper.params.virtual.enabled) {
2384
- swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
2385
- } else {
2386
- swiper.clickedIndex = $(slide).index();
2387
- }
2388
- } else {
2389
- swiper.clickedSlide = undefined;
2390
- swiper.clickedIndex = undefined;
2391
- return;
2392
- }
2393
-
2394
- if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
2395
- swiper.slideToClickedSlide();
2396
- }
2397
- }
2398
-
2399
- var update = {
2400
- updateSize: updateSize,
2401
- updateSlides: updateSlides,
2402
- updateAutoHeight: updateAutoHeight,
2403
- updateSlidesOffset: updateSlidesOffset,
2404
- updateSlidesProgress: updateSlidesProgress,
2405
- updateProgress: updateProgress,
2406
- updateSlidesClasses: updateSlidesClasses,
2407
- updateActiveIndex: updateActiveIndex,
2408
- updateClickedSlide: updateClickedSlide
2409
- };
2410
-
2411
- function getSwiperTranslate(axis) {
2412
- if (axis === void 0) {
2413
- axis = this.isHorizontal() ? 'x' : 'y';
2414
- }
2415
-
2416
- var swiper = this;
2417
- var params = swiper.params,
2418
- rtl = swiper.rtlTranslate,
2419
- translate = swiper.translate,
2420
- $wrapperEl = swiper.$wrapperEl;
2421
-
2422
- if (params.virtualTranslate) {
2423
- return rtl ? -translate : translate;
2424
- }
2425
-
2426
- if (params.cssMode) {
2427
- return translate;
2428
- }
2429
-
2430
- var currentTranslate = getTranslate($wrapperEl[0], axis);
2431
- if (rtl) currentTranslate = -currentTranslate;
2432
- return currentTranslate || 0;
2433
- }
2434
-
2435
- function setTranslate(translate, byController) {
2436
- var swiper = this;
2437
- var rtl = swiper.rtlTranslate,
2438
- params = swiper.params,
2439
- $wrapperEl = swiper.$wrapperEl,
2440
- wrapperEl = swiper.wrapperEl,
2441
- progress = swiper.progress;
2442
- var x = 0;
2443
- var y = 0;
2444
- var z = 0;
2445
-
2446
- if (swiper.isHorizontal()) {
2447
- x = rtl ? -translate : translate;
2448
- } else {
2449
- y = translate;
2450
- }
2451
-
2452
- if (params.roundLengths) {
2453
- x = Math.floor(x);
2454
- y = Math.floor(y);
2455
- }
2456
-
2457
- if (params.cssMode) {
2458
- wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
2459
- } else if (!params.virtualTranslate) {
2460
- $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
2461
- }
2462
-
2463
- swiper.previousTranslate = swiper.translate;
2464
- swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
2465
-
2466
- var newProgress;
2467
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
2468
-
2469
- if (translatesDiff === 0) {
2470
- newProgress = 0;
2471
- } else {
2472
- newProgress = (translate - swiper.minTranslate()) / translatesDiff;
2473
- }
2474
-
2475
- if (newProgress !== progress) {
2476
- swiper.updateProgress(translate);
2477
- }
2478
-
2479
- swiper.emit('setTranslate', swiper.translate, byController);
2480
- }
2481
-
2482
- function minTranslate() {
2483
- return -this.snapGrid[0];
2484
- }
2485
-
2486
- function maxTranslate() {
2487
- return -this.snapGrid[this.snapGrid.length - 1];
2488
- }
2489
-
2490
- function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
2491
- if (translate === void 0) {
2492
- translate = 0;
2493
- }
2494
-
2495
- if (speed === void 0) {
2496
- speed = this.params.speed;
2497
- }
2498
-
2499
- if (runCallbacks === void 0) {
2500
- runCallbacks = true;
2501
- }
2502
-
2503
- if (translateBounds === void 0) {
2504
- translateBounds = true;
2505
- }
2506
-
2507
- var swiper = this;
2508
- var params = swiper.params,
2509
- wrapperEl = swiper.wrapperEl;
2510
-
2511
- if (swiper.animating && params.preventInteractionOnTransition) {
2512
- return false;
2513
- }
2514
-
2515
- var minTranslate = swiper.minTranslate();
2516
- var maxTranslate = swiper.maxTranslate();
2517
- var newTranslate;
2518
- if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
2519
-
2520
- swiper.updateProgress(newTranslate);
2521
-
2522
- if (params.cssMode) {
2523
- var isH = swiper.isHorizontal();
2524
-
2525
- if (speed === 0) {
2526
- wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2527
- } else {
2528
- // eslint-disable-next-line
2529
- if (wrapperEl.scrollTo) {
2530
- var _wrapperEl$scrollTo;
2531
-
2532
- wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2533
- } else {
2534
- wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
2535
- }
2536
- }
2537
-
2538
- return true;
2539
- }
2540
-
2541
- if (speed === 0) {
2542
- swiper.setTransition(0);
2543
- swiper.setTranslate(newTranslate);
2544
-
2545
- if (runCallbacks) {
2546
- swiper.emit('beforeTransitionStart', speed, internal);
2547
- swiper.emit('transitionEnd');
2548
- }
2549
- } else {
2550
- swiper.setTransition(speed);
2551
- swiper.setTranslate(newTranslate);
2552
-
2553
- if (runCallbacks) {
2554
- swiper.emit('beforeTransitionStart', speed, internal);
2555
- swiper.emit('transitionStart');
2556
- }
2557
-
2558
- if (!swiper.animating) {
2559
- swiper.animating = true;
2560
-
2561
- if (!swiper.onTranslateToWrapperTransitionEnd) {
2562
- swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
2563
- if (!swiper || swiper.destroyed) return;
2564
- if (e.target !== this) return;
2565
- swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2566
- swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2567
- swiper.onTranslateToWrapperTransitionEnd = null;
2568
- delete swiper.onTranslateToWrapperTransitionEnd;
2569
-
2570
- if (runCallbacks) {
2571
- swiper.emit('transitionEnd');
2572
- }
2573
- };
2574
- }
2575
-
2576
- swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
2577
- swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
2578
- }
2579
- }
2580
-
2581
- return true;
2582
- }
2583
-
2584
- var translate = {
2585
- getTranslate: getSwiperTranslate,
2586
- setTranslate: setTranslate,
2587
- minTranslate: minTranslate,
2588
- maxTranslate: maxTranslate,
2589
- translateTo: translateTo
2590
- };
2591
-
2592
- function setTransition(duration, byController) {
2593
- var swiper = this;
2594
-
2595
- if (!swiper.params.cssMode) {
2596
- swiper.$wrapperEl.transition(duration);
2597
- }
2598
-
2599
- swiper.emit('setTransition', duration, byController);
2600
- }
2601
-
2602
- function transitionStart(runCallbacks, direction) {
2603
- if (runCallbacks === void 0) {
2604
- runCallbacks = true;
2605
- }
2606
-
2607
- var swiper = this;
2608
- var activeIndex = swiper.activeIndex,
2609
- params = swiper.params,
2610
- previousIndex = swiper.previousIndex;
2611
- if (params.cssMode) return;
2612
-
2613
- if (params.autoHeight) {
2614
- swiper.updateAutoHeight();
2615
- }
2616
-
2617
- var dir = direction;
2618
-
2619
- if (!dir) {
2620
- if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2621
- }
2622
-
2623
- swiper.emit('transitionStart');
2624
-
2625
- if (runCallbacks && activeIndex !== previousIndex) {
2626
- if (dir === 'reset') {
2627
- swiper.emit('slideResetTransitionStart');
2628
- return;
2629
- }
2630
-
2631
- swiper.emit('slideChangeTransitionStart');
2632
-
2633
- if (dir === 'next') {
2634
- swiper.emit('slideNextTransitionStart');
2635
- } else {
2636
- swiper.emit('slidePrevTransitionStart');
2637
- }
2638
- }
2639
- }
2640
-
2641
- function transitionEnd$1(runCallbacks, direction) {
2642
- if (runCallbacks === void 0) {
2643
- runCallbacks = true;
2644
- }
2645
-
2646
- var swiper = this;
2647
- var activeIndex = swiper.activeIndex,
2648
- previousIndex = swiper.previousIndex,
2649
- params = swiper.params;
2650
- swiper.animating = false;
2651
- if (params.cssMode) return;
2652
- swiper.setTransition(0);
2653
- var dir = direction;
2654
-
2655
- if (!dir) {
2656
- if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
2657
- }
2658
-
2659
- swiper.emit('transitionEnd');
2660
-
2661
- if (runCallbacks && activeIndex !== previousIndex) {
2662
- if (dir === 'reset') {
2663
- swiper.emit('slideResetTransitionEnd');
2664
- return;
2665
- }
2666
-
2667
- swiper.emit('slideChangeTransitionEnd');
2668
-
2669
- if (dir === 'next') {
2670
- swiper.emit('slideNextTransitionEnd');
2671
- } else {
2672
- swiper.emit('slidePrevTransitionEnd');
2673
- }
2674
- }
2675
- }
2676
-
2677
- var transition$1 = {
2678
- setTransition: setTransition,
2679
- transitionStart: transitionStart,
2680
- transitionEnd: transitionEnd$1
2681
- };
2682
-
2683
- function slideTo(index, speed, runCallbacks, internal) {
2684
- if (index === void 0) {
2685
- index = 0;
2686
- }
2687
-
2688
- if (speed === void 0) {
2689
- speed = this.params.speed;
2690
- }
2691
-
2692
- if (runCallbacks === void 0) {
2693
- runCallbacks = true;
2694
- }
2695
-
2696
- var swiper = this;
2697
- var slideIndex = index;
2698
- if (slideIndex < 0) slideIndex = 0;
2699
- var params = swiper.params,
2700
- snapGrid = swiper.snapGrid,
2701
- slidesGrid = swiper.slidesGrid,
2702
- previousIndex = swiper.previousIndex,
2703
- activeIndex = swiper.activeIndex,
2704
- rtl = swiper.rtlTranslate,
2705
- wrapperEl = swiper.wrapperEl;
2706
-
2707
- if (swiper.animating && params.preventInteractionOnTransition) {
2708
- return false;
2709
- }
2710
-
2711
- var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
2712
- var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
2713
- if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
2714
-
2715
- if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
2716
- swiper.emit('beforeSlideChangeStart');
2717
- }
2718
-
2719
- var translate = -snapGrid[snapIndex]; // Update progress
2720
-
2721
- swiper.updateProgress(translate); // Normalize slideIndex
2722
-
2723
- if (params.normalizeSlideIndex) {
2724
- for (var i = 0; i < slidesGrid.length; i += 1) {
2725
- if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
2726
- slideIndex = i;
2727
- }
2728
- }
2729
- } // Directions locks
2730
-
2731
-
2732
- if (swiper.initialized && slideIndex !== activeIndex) {
2733
- if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
2734
- return false;
2735
- }
2736
-
2737
- if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
2738
- if ((activeIndex || 0) !== slideIndex) return false;
2739
- }
2740
- }
2741
-
2742
- var direction;
2743
- if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
2744
-
2745
- if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
2746
- swiper.updateActiveIndex(slideIndex); // Update Height
2747
-
2748
- if (params.autoHeight) {
2749
- swiper.updateAutoHeight();
2750
- }
2751
-
2752
- swiper.updateSlidesClasses();
2753
-
2754
- if (params.effect !== 'slide') {
2755
- swiper.setTranslate(translate);
2756
- }
2757
-
2758
- if (direction !== 'reset') {
2759
- swiper.transitionStart(runCallbacks, direction);
2760
- swiper.transitionEnd(runCallbacks, direction);
2761
- }
2762
-
2763
- return false;
2764
- }
2765
-
2766
- if (params.cssMode) {
2767
- var isH = swiper.isHorizontal();
2768
- var t = -translate;
2769
-
2770
- if (rtl) {
2771
- t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
2772
- }
2773
-
2774
- if (speed === 0) {
2775
- wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2776
- } else {
2777
- // eslint-disable-next-line
2778
- if (wrapperEl.scrollTo) {
2779
- var _wrapperEl$scrollTo;
2780
-
2781
- wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
2782
- } else {
2783
- wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
2784
- }
2785
- }
2786
-
2787
- return true;
2788
- }
2789
-
2790
- if (speed === 0) {
2791
- swiper.setTransition(0);
2792
- swiper.setTranslate(translate);
2793
- swiper.updateActiveIndex(slideIndex);
2794
- swiper.updateSlidesClasses();
2795
- swiper.emit('beforeTransitionStart', speed, internal);
2796
- swiper.transitionStart(runCallbacks, direction);
2797
- swiper.transitionEnd(runCallbacks, direction);
2798
- } else {
2799
- swiper.setTransition(speed);
2800
- swiper.setTranslate(translate);
2801
- swiper.updateActiveIndex(slideIndex);
2802
- swiper.updateSlidesClasses();
2803
- swiper.emit('beforeTransitionStart', speed, internal);
2804
- swiper.transitionStart(runCallbacks, direction);
2805
-
2806
- if (!swiper.animating) {
2807
- swiper.animating = true;
2808
-
2809
- if (!swiper.onSlideToWrapperTransitionEnd) {
2810
- swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
2811
- if (!swiper || swiper.destroyed) return;
2812
- if (e.target !== this) return;
2813
- swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2814
- swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2815
- swiper.onSlideToWrapperTransitionEnd = null;
2816
- delete swiper.onSlideToWrapperTransitionEnd;
2817
- swiper.transitionEnd(runCallbacks, direction);
2818
- };
2819
- }
2820
-
2821
- swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
2822
- swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
2823
- }
2824
- }
2825
-
2826
- return true;
2827
- }
2828
-
2829
- function slideToLoop(index, speed, runCallbacks, internal) {
2830
- if (index === void 0) {
2831
- index = 0;
2832
- }
2833
-
2834
- if (speed === void 0) {
2835
- speed = this.params.speed;
2836
- }
2837
-
2838
- if (runCallbacks === void 0) {
2839
- runCallbacks = true;
2840
- }
2841
-
2842
- var swiper = this;
2843
- var newIndex = index;
2844
-
2845
- if (swiper.params.loop) {
2846
- newIndex += swiper.loopedSlides;
2847
- }
2848
-
2849
- return swiper.slideTo(newIndex, speed, runCallbacks, internal);
2850
- }
2851
-
2852
- /* eslint no-unused-vars: "off" */
2853
- function slideNext(speed, runCallbacks, internal) {
2854
- if (speed === void 0) {
2855
- speed = this.params.speed;
2856
- }
2857
-
2858
- if (runCallbacks === void 0) {
2859
- runCallbacks = true;
2860
- }
2861
-
2862
- var swiper = this;
2863
- var params = swiper.params,
2864
- animating = swiper.animating;
2865
- var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
2866
-
2867
- if (params.loop) {
2868
- if (animating && params.loopPreventsSlide) return false;
2869
- swiper.loopFix(); // eslint-disable-next-line
2870
-
2871
- swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2872
- }
2873
-
2874
- return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
2875
- }
2876
-
2877
- /* eslint no-unused-vars: "off" */
2878
- function slidePrev(speed, runCallbacks, internal) {
2879
- if (speed === void 0) {
2880
- speed = this.params.speed;
2881
- }
2882
-
2883
- if (runCallbacks === void 0) {
2884
- runCallbacks = true;
2885
- }
2886
-
2887
- var swiper = this;
2888
- var params = swiper.params,
2889
- animating = swiper.animating,
2890
- snapGrid = swiper.snapGrid,
2891
- slidesGrid = swiper.slidesGrid,
2892
- rtlTranslate = swiper.rtlTranslate;
2893
-
2894
- if (params.loop) {
2895
- if (animating && params.loopPreventsSlide) return false;
2896
- swiper.loopFix(); // eslint-disable-next-line
2897
-
2898
- swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
2899
- }
2900
-
2901
- var translate = rtlTranslate ? swiper.translate : -swiper.translate;
2902
-
2903
- function normalize(val) {
2904
- if (val < 0) return -Math.floor(Math.abs(val));
2905
- return Math.floor(val);
2906
- }
2907
-
2908
- var normalizedTranslate = normalize(translate);
2909
- var normalizedSnapGrid = snapGrid.map(function (val) {
2910
- return normalize(val);
2911
- });
2912
- var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
2913
- var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
2914
-
2915
- if (typeof prevSnap === 'undefined' && params.cssMode) {
2916
- snapGrid.forEach(function (snap) {
2917
- if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
2918
- });
2919
- }
2920
-
2921
- var prevIndex;
2922
-
2923
- if (typeof prevSnap !== 'undefined') {
2924
- prevIndex = slidesGrid.indexOf(prevSnap);
2925
- if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
2926
- }
2927
-
2928
- return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
2929
- }
2930
-
2931
- /* eslint no-unused-vars: "off" */
2932
- function slideReset(speed, runCallbacks, internal) {
2933
- if (speed === void 0) {
2934
- speed = this.params.speed;
2935
- }
2936
-
2937
- if (runCallbacks === void 0) {
2938
- runCallbacks = true;
2939
- }
2940
-
2941
- var swiper = this;
2942
- return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
2943
- }
2944
-
2945
- /* eslint no-unused-vars: "off" */
2946
- function slideToClosest(speed, runCallbacks, internal, threshold) {
2947
- if (speed === void 0) {
2948
- speed = this.params.speed;
2949
- }
2950
-
2951
- if (runCallbacks === void 0) {
2952
- runCallbacks = true;
2953
- }
2954
-
2955
- if (threshold === void 0) {
2956
- threshold = 0.5;
2957
- }
2958
-
2959
- var swiper = this;
2960
- var index = swiper.activeIndex;
2961
- var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
2962
- var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
2963
- var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
2964
-
2965
- if (translate >= swiper.snapGrid[snapIndex]) {
2966
- // The current translate is on or after the current snap index, so the choice
2967
- // is between the current index and the one after it.
2968
- var currentSnap = swiper.snapGrid[snapIndex];
2969
- var nextSnap = swiper.snapGrid[snapIndex + 1];
2970
-
2971
- if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
2972
- index += swiper.params.slidesPerGroup;
2973
- }
2974
- } else {
2975
- // The current translate is before the current snap index, so the choice
2976
- // is between the current index and the one before it.
2977
- var prevSnap = swiper.snapGrid[snapIndex - 1];
2978
- var _currentSnap = swiper.snapGrid[snapIndex];
2979
-
2980
- if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
2981
- index -= swiper.params.slidesPerGroup;
2982
- }
2983
- }
2984
-
2985
- index = Math.max(index, 0);
2986
- index = Math.min(index, swiper.slidesGrid.length - 1);
2987
- return swiper.slideTo(index, speed, runCallbacks, internal);
2988
- }
2989
-
2990
- function slideToClickedSlide() {
2991
- var swiper = this;
2992
- var params = swiper.params,
2993
- $wrapperEl = swiper.$wrapperEl;
2994
- var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
2995
- var slideToIndex = swiper.clickedIndex;
2996
- var realIndex;
2997
-
2998
- if (params.loop) {
2999
- if (swiper.animating) return;
3000
- realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
3001
-
3002
- if (params.centeredSlides) {
3003
- if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
3004
- swiper.loopFix();
3005
- slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3006
- nextTick(function () {
3007
- swiper.slideTo(slideToIndex);
3008
- });
3009
- } else {
3010
- swiper.slideTo(slideToIndex);
3011
- }
3012
- } else if (slideToIndex > swiper.slides.length - slidesPerView) {
3013
- swiper.loopFix();
3014
- slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
3015
- nextTick(function () {
3016
- swiper.slideTo(slideToIndex);
3017
- });
3018
- } else {
3019
- swiper.slideTo(slideToIndex);
3020
- }
3021
- } else {
3022
- swiper.slideTo(slideToIndex);
3023
- }
3024
- }
3025
-
3026
- var slide = {
3027
- slideTo: slideTo,
3028
- slideToLoop: slideToLoop,
3029
- slideNext: slideNext,
3030
- slidePrev: slidePrev,
3031
- slideReset: slideReset,
3032
- slideToClosest: slideToClosest,
3033
- slideToClickedSlide: slideToClickedSlide
3034
- };
3035
-
3036
- function loopCreate() {
3037
- var swiper = this;
3038
- var document = getDocument();
3039
- var params = swiper.params,
3040
- $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
3041
-
3042
- $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
3043
- var slides = $wrapperEl.children("." + params.slideClass);
3044
-
3045
- if (params.loopFillGroupWithBlank) {
3046
- var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
3047
-
3048
- if (blankSlidesNum !== params.slidesPerGroup) {
3049
- for (var i = 0; i < blankSlidesNum; i += 1) {
3050
- var blankNode = $(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
3051
- $wrapperEl.append(blankNode);
3052
- }
3053
-
3054
- slides = $wrapperEl.children("." + params.slideClass);
3055
- }
3056
- }
3057
-
3058
- if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
3059
- swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
3060
- swiper.loopedSlides += params.loopAdditionalSlides;
3061
-
3062
- if (swiper.loopedSlides > slides.length) {
3063
- swiper.loopedSlides = slides.length;
3064
- }
3065
-
3066
- var prependSlides = [];
3067
- var appendSlides = [];
3068
- slides.each(function (el, index) {
3069
- var slide = $(el);
3070
-
3071
- if (index < swiper.loopedSlides) {
3072
- appendSlides.push(el);
3073
- }
3074
-
3075
- if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
3076
- prependSlides.push(el);
3077
- }
3078
-
3079
- slide.attr('data-swiper-slide-index', index);
3080
- });
3081
-
3082
- for (var _i = 0; _i < appendSlides.length; _i += 1) {
3083
- $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
3084
- }
3085
-
3086
- for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
3087
- $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
3088
- }
3089
- }
3090
-
3091
- function loopFix() {
3092
- var swiper = this;
3093
- swiper.emit('beforeLoopFix');
3094
- var activeIndex = swiper.activeIndex,
3095
- slides = swiper.slides,
3096
- loopedSlides = swiper.loopedSlides,
3097
- allowSlidePrev = swiper.allowSlidePrev,
3098
- allowSlideNext = swiper.allowSlideNext,
3099
- snapGrid = swiper.snapGrid,
3100
- rtl = swiper.rtlTranslate;
3101
- var newIndex;
3102
- swiper.allowSlidePrev = true;
3103
- swiper.allowSlideNext = true;
3104
- var snapTranslate = -snapGrid[activeIndex];
3105
- var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
3106
-
3107
- if (activeIndex < loopedSlides) {
3108
- newIndex = slides.length - loopedSlides * 3 + activeIndex;
3109
- newIndex += loopedSlides;
3110
- var slideChanged = swiper.slideTo(newIndex, 0, false, true);
3111
-
3112
- if (slideChanged && diff !== 0) {
3113
- swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3114
- }
3115
- } else if (activeIndex >= slides.length - loopedSlides) {
3116
- // Fix For Positive Oversliding
3117
- newIndex = -slides.length + activeIndex + loopedSlides;
3118
- newIndex += loopedSlides;
3119
-
3120
- var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
3121
-
3122
- if (_slideChanged && diff !== 0) {
3123
- swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
3124
- }
3125
- }
3126
-
3127
- swiper.allowSlidePrev = allowSlidePrev;
3128
- swiper.allowSlideNext = allowSlideNext;
3129
- swiper.emit('loopFix');
3130
- }
3131
-
3132
- function loopDestroy() {
3133
- var swiper = this;
3134
- var $wrapperEl = swiper.$wrapperEl,
3135
- params = swiper.params,
3136
- slides = swiper.slides;
3137
- $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
3138
- slides.removeAttr('data-swiper-slide-index');
3139
- }
3140
-
3141
- var loop = {
3142
- loopCreate: loopCreate,
3143
- loopFix: loopFix,
3144
- loopDestroy: loopDestroy
3145
- };
3146
-
3147
- function setGrabCursor(moving) {
3148
- var swiper = this;
3149
- if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
3150
- var el = swiper.el;
3151
- el.style.cursor = 'move';
3152
- el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
3153
- el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
3154
- el.style.cursor = moving ? 'grabbing' : 'grab';
3155
- }
3156
-
3157
- function unsetGrabCursor() {
3158
- var swiper = this;
3159
-
3160
- if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
3161
- return;
3162
- }
3163
-
3164
- swiper.el.style.cursor = '';
3165
- }
3166
-
3167
- var grabCursor = {
3168
- setGrabCursor: setGrabCursor,
3169
- unsetGrabCursor: unsetGrabCursor
3170
- };
3171
-
3172
- function appendSlide(slides) {
3173
- var swiper = this;
3174
- var $wrapperEl = swiper.$wrapperEl,
3175
- params = swiper.params;
3176
-
3177
- if (params.loop) {
3178
- swiper.loopDestroy();
3179
- }
3180
-
3181
- if (typeof slides === 'object' && 'length' in slides) {
3182
- for (var i = 0; i < slides.length; i += 1) {
3183
- if (slides[i]) $wrapperEl.append(slides[i]);
3184
- }
3185
- } else {
3186
- $wrapperEl.append(slides);
3187
- }
3188
-
3189
- if (params.loop) {
3190
- swiper.loopCreate();
3191
- }
3192
-
3193
- if (!(params.observer && swiper.support.observer)) {
3194
- swiper.update();
3195
- }
3196
- }
3197
-
3198
- function prependSlide(slides) {
3199
- var swiper = this;
3200
- var params = swiper.params,
3201
- $wrapperEl = swiper.$wrapperEl,
3202
- activeIndex = swiper.activeIndex;
3203
-
3204
- if (params.loop) {
3205
- swiper.loopDestroy();
3206
- }
3207
-
3208
- var newActiveIndex = activeIndex + 1;
3209
-
3210
- if (typeof slides === 'object' && 'length' in slides) {
3211
- for (var i = 0; i < slides.length; i += 1) {
3212
- if (slides[i]) $wrapperEl.prepend(slides[i]);
3213
- }
3214
-
3215
- newActiveIndex = activeIndex + slides.length;
3216
- } else {
3217
- $wrapperEl.prepend(slides);
3218
- }
3219
-
3220
- if (params.loop) {
3221
- swiper.loopCreate();
3222
- }
3223
-
3224
- if (!(params.observer && swiper.support.observer)) {
3225
- swiper.update();
3226
- }
3227
-
3228
- swiper.slideTo(newActiveIndex, 0, false);
3229
- }
3230
-
3231
- function addSlide(index, slides) {
3232
- var swiper = this;
3233
- var $wrapperEl = swiper.$wrapperEl,
3234
- params = swiper.params,
3235
- activeIndex = swiper.activeIndex;
3236
- var activeIndexBuffer = activeIndex;
3237
-
3238
- if (params.loop) {
3239
- activeIndexBuffer -= swiper.loopedSlides;
3240
- swiper.loopDestroy();
3241
- swiper.slides = $wrapperEl.children("." + params.slideClass);
3242
- }
3243
-
3244
- var baseLength = swiper.slides.length;
3245
-
3246
- if (index <= 0) {
3247
- swiper.prependSlide(slides);
3248
- return;
3249
- }
3250
-
3251
- if (index >= baseLength) {
3252
- swiper.appendSlide(slides);
3253
- return;
3254
- }
3255
-
3256
- var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
3257
- var slidesBuffer = [];
3258
-
3259
- for (var i = baseLength - 1; i >= index; i -= 1) {
3260
- var currentSlide = swiper.slides.eq(i);
3261
- currentSlide.remove();
3262
- slidesBuffer.unshift(currentSlide);
3263
- }
3264
-
3265
- if (typeof slides === 'object' && 'length' in slides) {
3266
- for (var _i = 0; _i < slides.length; _i += 1) {
3267
- if (slides[_i]) $wrapperEl.append(slides[_i]);
3268
- }
3269
-
3270
- newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
3271
- } else {
3272
- $wrapperEl.append(slides);
3273
- }
3274
-
3275
- for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
3276
- $wrapperEl.append(slidesBuffer[_i2]);
3277
- }
3278
-
3279
- if (params.loop) {
3280
- swiper.loopCreate();
3281
- }
3282
-
3283
- if (!(params.observer && swiper.support.observer)) {
3284
- swiper.update();
3285
- }
3286
-
3287
- if (params.loop) {
3288
- swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3289
- } else {
3290
- swiper.slideTo(newActiveIndex, 0, false);
3291
- }
3292
- }
3293
-
3294
- function removeSlide(slidesIndexes) {
3295
- var swiper = this;
3296
- var params = swiper.params,
3297
- $wrapperEl = swiper.$wrapperEl,
3298
- activeIndex = swiper.activeIndex;
3299
- var activeIndexBuffer = activeIndex;
3300
-
3301
- if (params.loop) {
3302
- activeIndexBuffer -= swiper.loopedSlides;
3303
- swiper.loopDestroy();
3304
- swiper.slides = $wrapperEl.children("." + params.slideClass);
3305
- }
3306
-
3307
- var newActiveIndex = activeIndexBuffer;
3308
- var indexToRemove;
3309
-
3310
- if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
3311
- for (var i = 0; i < slidesIndexes.length; i += 1) {
3312
- indexToRemove = slidesIndexes[i];
3313
- if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3314
- if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3315
- }
3316
-
3317
- newActiveIndex = Math.max(newActiveIndex, 0);
3318
- } else {
3319
- indexToRemove = slidesIndexes;
3320
- if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
3321
- if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
3322
- newActiveIndex = Math.max(newActiveIndex, 0);
3323
- }
3324
-
3325
- if (params.loop) {
3326
- swiper.loopCreate();
3327
- }
3328
-
3329
- if (!(params.observer && swiper.support.observer)) {
3330
- swiper.update();
3331
- }
3332
-
3333
- if (params.loop) {
3334
- swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
3335
- } else {
3336
- swiper.slideTo(newActiveIndex, 0, false);
3337
- }
3338
- }
3339
-
3340
- function removeAllSlides() {
3341
- var swiper = this;
3342
- var slidesIndexes = [];
3343
-
3344
- for (var i = 0; i < swiper.slides.length; i += 1) {
3345
- slidesIndexes.push(i);
3346
- }
3347
-
3348
- swiper.removeSlide(slidesIndexes);
3349
- }
3350
-
3351
- var manipulation = {
3352
- appendSlide: appendSlide,
3353
- prependSlide: prependSlide,
3354
- addSlide: addSlide,
3355
- removeSlide: removeSlide,
3356
- removeAllSlides: removeAllSlides
3357
- };
3358
-
3359
- function onTouchStart(event) {
3360
- var swiper = this;
3361
- var document = getDocument();
3362
- var window = getWindow();
3363
- var data = swiper.touchEventsData;
3364
- var params = swiper.params,
3365
- touches = swiper.touches;
3366
-
3367
- if (swiper.animating && params.preventInteractionOnTransition) {
3368
- return;
3369
- }
3370
-
3371
- var e = event;
3372
- if (e.originalEvent) e = e.originalEvent;
3373
- var $targetEl = $(e.target);
3374
-
3375
- if (params.touchEventsTarget === 'wrapper') {
3376
- if (!$targetEl.closest(swiper.wrapperEl).length) return;
3377
- }
3378
-
3379
- data.isTouchEvent = e.type === 'touchstart';
3380
- if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
3381
- if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
3382
- if (data.isTouched && data.isMoved) return;
3383
-
3384
- if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
3385
- swiper.allowClick = true;
3386
- return;
3387
- }
3388
-
3389
- if (params.swipeHandler) {
3390
- if (!$targetEl.closest(params.swipeHandler)[0]) return;
3391
- }
3392
-
3393
- touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
3394
- touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
3395
- var startX = touches.currentX;
3396
- var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
3397
-
3398
- var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
3399
- var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
3400
-
3401
- if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {
3402
- return;
3403
- }
3404
-
3405
- extend$1(data, {
3406
- isTouched: true,
3407
- isMoved: false,
3408
- allowTouchCallbacks: true,
3409
- isScrolling: undefined,
3410
- startMoving: undefined
3411
- });
3412
- touches.startX = startX;
3413
- touches.startY = startY;
3414
- data.touchStartTime = now();
3415
- swiper.allowClick = true;
3416
- swiper.updateSize();
3417
- swiper.swipeDirection = undefined;
3418
- if (params.threshold > 0) data.allowThresholdMove = false;
3419
-
3420
- if (e.type !== 'touchstart') {
3421
- var preventDefault = true;
3422
- if ($targetEl.is(data.formElements)) preventDefault = false;
3423
-
3424
- if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
3425
- document.activeElement.blur();
3426
- }
3427
-
3428
- var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
3429
-
3430
- if (params.touchStartForcePreventDefault || shouldPreventDefault) {
3431
- e.preventDefault();
3432
- }
3433
- }
3434
-
3435
- swiper.emit('touchStart', e);
3436
- }
3437
-
3438
- function onTouchMove(event) {
3439
- var document = getDocument();
3440
- var swiper = this;
3441
- var data = swiper.touchEventsData;
3442
- var params = swiper.params,
3443
- touches = swiper.touches,
3444
- rtl = swiper.rtlTranslate;
3445
- var e = event;
3446
- if (e.originalEvent) e = e.originalEvent;
3447
-
3448
- if (!data.isTouched) {
3449
- if (data.startMoving && data.isScrolling) {
3450
- swiper.emit('touchMoveOpposite', e);
3451
- }
3452
-
3453
- return;
3454
- }
3455
-
3456
- if (data.isTouchEvent && e.type !== 'touchmove') return;
3457
- var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
3458
- var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
3459
- var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
3460
-
3461
- if (e.preventedByNestedSwiper) {
3462
- touches.startX = pageX;
3463
- touches.startY = pageY;
3464
- return;
3465
- }
3466
-
3467
- if (!swiper.allowTouchMove) {
3468
- // isMoved = true;
3469
- swiper.allowClick = false;
3470
-
3471
- if (data.isTouched) {
3472
- extend$1(touches, {
3473
- startX: pageX,
3474
- startY: pageY,
3475
- currentX: pageX,
3476
- currentY: pageY
3477
- });
3478
- data.touchStartTime = now();
3479
- }
3480
-
3481
- return;
3482
- }
3483
-
3484
- if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
3485
- if (swiper.isVertical()) {
3486
- // Vertical
3487
- if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
3488
- data.isTouched = false;
3489
- data.isMoved = false;
3490
- return;
3491
- }
3492
- } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
3493
- return;
3494
- }
3495
- }
3496
-
3497
- if (data.isTouchEvent && document.activeElement) {
3498
- if (e.target === document.activeElement && $(e.target).is(data.formElements)) {
3499
- data.isMoved = true;
3500
- swiper.allowClick = false;
3501
- return;
3502
- }
3503
- }
3504
-
3505
- if (data.allowTouchCallbacks) {
3506
- swiper.emit('touchMove', e);
3507
- }
3508
-
3509
- if (e.targetTouches && e.targetTouches.length > 1) return;
3510
- touches.currentX = pageX;
3511
- touches.currentY = pageY;
3512
- var diffX = touches.currentX - touches.startX;
3513
- var diffY = touches.currentY - touches.startY;
3514
- if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
3515
-
3516
- if (typeof data.isScrolling === 'undefined') {
3517
- var touchAngle;
3518
-
3519
- if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
3520
- data.isScrolling = false;
3521
- } else {
3522
- // eslint-disable-next-line
3523
- if (diffX * diffX + diffY * diffY >= 25) {
3524
- touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
3525
- data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
3526
- }
3527
- }
3528
- }
3529
-
3530
- if (data.isScrolling) {
3531
- swiper.emit('touchMoveOpposite', e);
3532
- }
3533
-
3534
- if (typeof data.startMoving === 'undefined') {
3535
- if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
3536
- data.startMoving = true;
3537
- }
3538
- }
3539
-
3540
- if (data.isScrolling) {
3541
- data.isTouched = false;
3542
- return;
3543
- }
3544
-
3545
- if (!data.startMoving) {
3546
- return;
3547
- }
3548
-
3549
- swiper.allowClick = false;
3550
-
3551
- if (!params.cssMode && e.cancelable) {
3552
- e.preventDefault();
3553
- }
3554
-
3555
- if (params.touchMoveStopPropagation && !params.nested) {
3556
- e.stopPropagation();
3557
- }
3558
-
3559
- if (!data.isMoved) {
3560
- if (params.loop) {
3561
- swiper.loopFix();
3562
- }
3563
-
3564
- data.startTranslate = swiper.getTranslate();
3565
- swiper.setTransition(0);
3566
-
3567
- if (swiper.animating) {
3568
- swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
3569
- }
3570
-
3571
- data.allowMomentumBounce = false; // Grab Cursor
3572
-
3573
- if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3574
- swiper.setGrabCursor(true);
3575
- }
3576
-
3577
- swiper.emit('sliderFirstMove', e);
3578
- }
3579
-
3580
- swiper.emit('sliderMove', e);
3581
- data.isMoved = true;
3582
- var diff = swiper.isHorizontal() ? diffX : diffY;
3583
- touches.diff = diff;
3584
- diff *= params.touchRatio;
3585
- if (rtl) diff = -diff;
3586
- swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
3587
- data.currentTranslate = diff + data.startTranslate;
3588
- var disableParentSwiper = true;
3589
- var resistanceRatio = params.resistanceRatio;
3590
-
3591
- if (params.touchReleaseOnEdges) {
3592
- resistanceRatio = 0;
3593
- }
3594
-
3595
- if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
3596
- disableParentSwiper = false;
3597
- if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
3598
- } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
3599
- disableParentSwiper = false;
3600
- if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
3601
- }
3602
-
3603
- if (disableParentSwiper) {
3604
- e.preventedByNestedSwiper = true;
3605
- } // Directions locks
3606
-
3607
-
3608
- if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
3609
- data.currentTranslate = data.startTranslate;
3610
- }
3611
-
3612
- if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
3613
- data.currentTranslate = data.startTranslate;
3614
- } // Threshold
3615
-
3616
-
3617
- if (params.threshold > 0) {
3618
- if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
3619
- if (!data.allowThresholdMove) {
3620
- data.allowThresholdMove = true;
3621
- touches.startX = touches.currentX;
3622
- touches.startY = touches.currentY;
3623
- data.currentTranslate = data.startTranslate;
3624
- touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
3625
- return;
3626
- }
3627
- } else {
3628
- data.currentTranslate = data.startTranslate;
3629
- return;
3630
- }
3631
- }
3632
-
3633
- if (!params.followFinger || params.cssMode) return; // Update active index in free mode
3634
-
3635
- if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
3636
- swiper.updateActiveIndex();
3637
- swiper.updateSlidesClasses();
3638
- }
3639
-
3640
- if (params.freeMode) {
3641
- // Velocity
3642
- if (data.velocities.length === 0) {
3643
- data.velocities.push({
3644
- position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
3645
- time: data.touchStartTime
3646
- });
3647
- }
3648
-
3649
- data.velocities.push({
3650
- position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
3651
- time: now()
3652
- });
3653
- } // Update progress
3654
-
3655
-
3656
- swiper.updateProgress(data.currentTranslate); // Update translate
3657
-
3658
- swiper.setTranslate(data.currentTranslate);
3659
- }
3660
-
3661
- function onTouchEnd(event) {
3662
- var swiper = this;
3663
- var data = swiper.touchEventsData;
3664
- var params = swiper.params,
3665
- touches = swiper.touches,
3666
- rtl = swiper.rtlTranslate,
3667
- $wrapperEl = swiper.$wrapperEl,
3668
- slidesGrid = swiper.slidesGrid,
3669
- snapGrid = swiper.snapGrid;
3670
- var e = event;
3671
- if (e.originalEvent) e = e.originalEvent;
3672
-
3673
- if (data.allowTouchCallbacks) {
3674
- swiper.emit('touchEnd', e);
3675
- }
3676
-
3677
- data.allowTouchCallbacks = false;
3678
-
3679
- if (!data.isTouched) {
3680
- if (data.isMoved && params.grabCursor) {
3681
- swiper.setGrabCursor(false);
3682
- }
3683
-
3684
- data.isMoved = false;
3685
- data.startMoving = false;
3686
- return;
3687
- } // Return Grab Cursor
3688
-
3689
-
3690
- if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
3691
- swiper.setGrabCursor(false);
3692
- } // Time diff
3693
-
3694
-
3695
- var touchEndTime = now();
3696
- var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
3697
-
3698
- if (swiper.allowClick) {
3699
- swiper.updateClickedSlide(e);
3700
- swiper.emit('tap click', e);
3701
-
3702
- if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
3703
- swiper.emit('doubleTap doubleClick', e);
3704
- }
3705
- }
3706
-
3707
- data.lastClickTime = now();
3708
- nextTick(function () {
3709
- if (!swiper.destroyed) swiper.allowClick = true;
3710
- });
3711
-
3712
- if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
3713
- data.isTouched = false;
3714
- data.isMoved = false;
3715
- data.startMoving = false;
3716
- return;
3717
- }
3718
-
3719
- data.isTouched = false;
3720
- data.isMoved = false;
3721
- data.startMoving = false;
3722
- var currentPos;
3723
-
3724
- if (params.followFinger) {
3725
- currentPos = rtl ? swiper.translate : -swiper.translate;
3726
- } else {
3727
- currentPos = -data.currentTranslate;
3728
- }
3729
-
3730
- if (params.cssMode) {
3731
- return;
3732
- }
3733
-
3734
- if (params.freeMode) {
3735
- if (currentPos < -swiper.minTranslate()) {
3736
- swiper.slideTo(swiper.activeIndex);
3737
- return;
3738
- }
3739
-
3740
- if (currentPos > -swiper.maxTranslate()) {
3741
- if (swiper.slides.length < snapGrid.length) {
3742
- swiper.slideTo(snapGrid.length - 1);
3743
- } else {
3744
- swiper.slideTo(swiper.slides.length - 1);
3745
- }
3746
-
3747
- return;
3748
- }
3749
-
3750
- if (params.freeModeMomentum) {
3751
- if (data.velocities.length > 1) {
3752
- var lastMoveEvent = data.velocities.pop();
3753
- var velocityEvent = data.velocities.pop();
3754
- var distance = lastMoveEvent.position - velocityEvent.position;
3755
- var time = lastMoveEvent.time - velocityEvent.time;
3756
- swiper.velocity = distance / time;
3757
- swiper.velocity /= 2;
3758
-
3759
- if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
3760
- swiper.velocity = 0;
3761
- } // this implies that the user stopped moving a finger then released.
3762
- // There would be no events with distance zero, so the last event is stale.
3763
-
3764
-
3765
- if (time > 150 || now() - lastMoveEvent.time > 300) {
3766
- swiper.velocity = 0;
3767
- }
3768
- } else {
3769
- swiper.velocity = 0;
3770
- }
3771
-
3772
- swiper.velocity *= params.freeModeMomentumVelocityRatio;
3773
- data.velocities.length = 0;
3774
- var momentumDuration = 1000 * params.freeModeMomentumRatio;
3775
- var momentumDistance = swiper.velocity * momentumDuration;
3776
- var newPosition = swiper.translate + momentumDistance;
3777
- if (rtl) newPosition = -newPosition;
3778
- var doBounce = false;
3779
- var afterBouncePosition;
3780
- var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
3781
- var needsLoopFix;
3782
-
3783
- if (newPosition < swiper.maxTranslate()) {
3784
- if (params.freeModeMomentumBounce) {
3785
- if (newPosition + swiper.maxTranslate() < -bounceAmount) {
3786
- newPosition = swiper.maxTranslate() - bounceAmount;
3787
- }
3788
-
3789
- afterBouncePosition = swiper.maxTranslate();
3790
- doBounce = true;
3791
- data.allowMomentumBounce = true;
3792
- } else {
3793
- newPosition = swiper.maxTranslate();
3794
- }
3795
-
3796
- if (params.loop && params.centeredSlides) needsLoopFix = true;
3797
- } else if (newPosition > swiper.minTranslate()) {
3798
- if (params.freeModeMomentumBounce) {
3799
- if (newPosition - swiper.minTranslate() > bounceAmount) {
3800
- newPosition = swiper.minTranslate() + bounceAmount;
3801
- }
3802
-
3803
- afterBouncePosition = swiper.minTranslate();
3804
- doBounce = true;
3805
- data.allowMomentumBounce = true;
3806
- } else {
3807
- newPosition = swiper.minTranslate();
3808
- }
3809
-
3810
- if (params.loop && params.centeredSlides) needsLoopFix = true;
3811
- } else if (params.freeModeSticky) {
3812
- var nextSlide;
3813
-
3814
- for (var j = 0; j < snapGrid.length; j += 1) {
3815
- if (snapGrid[j] > -newPosition) {
3816
- nextSlide = j;
3817
- break;
3818
- }
3819
- }
3820
-
3821
- if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
3822
- newPosition = snapGrid[nextSlide];
3823
- } else {
3824
- newPosition = snapGrid[nextSlide - 1];
3825
- }
3826
-
3827
- newPosition = -newPosition;
3828
- }
3829
-
3830
- if (needsLoopFix) {
3831
- swiper.once('transitionEnd', function () {
3832
- swiper.loopFix();
3833
- });
3834
- } // Fix duration
3835
-
3836
-
3837
- if (swiper.velocity !== 0) {
3838
- if (rtl) {
3839
- momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
3840
- } else {
3841
- momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
3842
- }
3843
-
3844
- if (params.freeModeSticky) {
3845
- // If freeModeSticky is active and the user ends a swipe with a slow-velocity
3846
- // event, then durations can be 20+ seconds to slide one (or zero!) slides.
3847
- // It's easy to see this when simulating touch with mouse events. To fix this,
3848
- // limit single-slide swipes to the default slide duration. This also has the
3849
- // nice side effect of matching slide speed if the user stopped moving before
3850
- // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
3851
- // For faster swipes, also apply limits (albeit higher ones).
3852
- var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
3853
- var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
3854
-
3855
- if (moveDistance < currentSlideSize) {
3856
- momentumDuration = params.speed;
3857
- } else if (moveDistance < 2 * currentSlideSize) {
3858
- momentumDuration = params.speed * 1.5;
3859
- } else {
3860
- momentumDuration = params.speed * 2.5;
3861
- }
3862
- }
3863
- } else if (params.freeModeSticky) {
3864
- swiper.slideToClosest();
3865
- return;
3866
- }
3867
-
3868
- if (params.freeModeMomentumBounce && doBounce) {
3869
- swiper.updateProgress(afterBouncePosition);
3870
- swiper.setTransition(momentumDuration);
3871
- swiper.setTranslate(newPosition);
3872
- swiper.transitionStart(true, swiper.swipeDirection);
3873
- swiper.animating = true;
3874
- $wrapperEl.transitionEnd(function () {
3875
- if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
3876
- swiper.emit('momentumBounce');
3877
- swiper.setTransition(params.speed);
3878
- setTimeout(function () {
3879
- swiper.setTranslate(afterBouncePosition);
3880
- $wrapperEl.transitionEnd(function () {
3881
- if (!swiper || swiper.destroyed) return;
3882
- swiper.transitionEnd();
3883
- });
3884
- }, 0);
3885
- });
3886
- } else if (swiper.velocity) {
3887
- swiper.updateProgress(newPosition);
3888
- swiper.setTransition(momentumDuration);
3889
- swiper.setTranslate(newPosition);
3890
- swiper.transitionStart(true, swiper.swipeDirection);
3891
-
3892
- if (!swiper.animating) {
3893
- swiper.animating = true;
3894
- $wrapperEl.transitionEnd(function () {
3895
- if (!swiper || swiper.destroyed) return;
3896
- swiper.transitionEnd();
3897
- });
3898
- }
3899
- } else {
3900
- swiper.updateProgress(newPosition);
3901
- }
3902
-
3903
- swiper.updateActiveIndex();
3904
- swiper.updateSlidesClasses();
3905
- } else if (params.freeModeSticky) {
3906
- swiper.slideToClosest();
3907
- return;
3908
- }
3909
-
3910
- if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
3911
- swiper.updateProgress();
3912
- swiper.updateActiveIndex();
3913
- swiper.updateSlidesClasses();
3914
- }
3915
-
3916
- return;
3917
- } // Find current slide
3918
-
3919
-
3920
- var stopIndex = 0;
3921
- var groupSize = swiper.slidesSizesGrid[0];
3922
-
3923
- for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
3924
- var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3925
-
3926
- if (typeof slidesGrid[i + _increment] !== 'undefined') {
3927
- if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
3928
- stopIndex = i;
3929
- groupSize = slidesGrid[i + _increment] - slidesGrid[i];
3930
- }
3931
- } else if (currentPos >= slidesGrid[i]) {
3932
- stopIndex = i;
3933
- groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
3934
- }
3935
- } // Find current slide size
3936
-
3937
-
3938
- var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
3939
- var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
3940
-
3941
- if (timeDiff > params.longSwipesMs) {
3942
- // Long touches
3943
- if (!params.longSwipes) {
3944
- swiper.slideTo(swiper.activeIndex);
3945
- return;
3946
- }
3947
-
3948
- if (swiper.swipeDirection === 'next') {
3949
- if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3950
- }
3951
-
3952
- if (swiper.swipeDirection === 'prev') {
3953
- if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
3954
- }
3955
- } else {
3956
- // Short swipes
3957
- if (!params.shortSwipes) {
3958
- swiper.slideTo(swiper.activeIndex);
3959
- return;
3960
- }
3961
-
3962
- var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
3963
-
3964
- if (!isNavButtonTarget) {
3965
- if (swiper.swipeDirection === 'next') {
3966
- swiper.slideTo(stopIndex + increment);
3967
- }
3968
-
3969
- if (swiper.swipeDirection === 'prev') {
3970
- swiper.slideTo(stopIndex);
3971
- }
3972
- } else if (e.target === swiper.navigation.nextEl) {
3973
- swiper.slideTo(stopIndex + increment);
3974
- } else {
3975
- swiper.slideTo(stopIndex);
3976
- }
3977
- }
3978
- }
3979
-
3980
- function onResize() {
3981
- var swiper = this;
3982
- var params = swiper.params,
3983
- el = swiper.el;
3984
- if (el && el.offsetWidth === 0) return; // Breakpoints
3985
-
3986
- if (params.breakpoints) {
3987
- swiper.setBreakpoint();
3988
- } // Save locks
3989
-
3990
-
3991
- var allowSlideNext = swiper.allowSlideNext,
3992
- allowSlidePrev = swiper.allowSlidePrev,
3993
- snapGrid = swiper.snapGrid; // Disable locks on resize
3994
-
3995
- swiper.allowSlideNext = true;
3996
- swiper.allowSlidePrev = true;
3997
- swiper.updateSize();
3998
- swiper.updateSlides();
3999
- swiper.updateSlidesClasses();
4000
-
4001
- if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
4002
- swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4003
- } else {
4004
- swiper.slideTo(swiper.activeIndex, 0, false, true);
4005
- }
4006
-
4007
- if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
4008
- swiper.autoplay.run();
4009
- } // Return locks after resize
4010
-
4011
-
4012
- swiper.allowSlidePrev = allowSlidePrev;
4013
- swiper.allowSlideNext = allowSlideNext;
4014
-
4015
- if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
4016
- swiper.checkOverflow();
4017
- }
4018
- }
4019
-
4020
- function onClick(e) {
4021
- var swiper = this;
4022
-
4023
- if (!swiper.allowClick) {
4024
- if (swiper.params.preventClicks) e.preventDefault();
4025
-
4026
- if (swiper.params.preventClicksPropagation && swiper.animating) {
4027
- e.stopPropagation();
4028
- e.stopImmediatePropagation();
4029
- }
4030
- }
4031
- }
4032
-
4033
- function onScroll() {
4034
- var swiper = this;
4035
- var wrapperEl = swiper.wrapperEl,
4036
- rtlTranslate = swiper.rtlTranslate;
4037
- swiper.previousTranslate = swiper.translate;
4038
-
4039
- if (swiper.isHorizontal()) {
4040
- if (rtlTranslate) {
4041
- swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
4042
- } else {
4043
- swiper.translate = -wrapperEl.scrollLeft;
4044
- }
4045
- } else {
4046
- swiper.translate = -wrapperEl.scrollTop;
4047
- } // eslint-disable-next-line
4048
-
4049
-
4050
- if (swiper.translate === -0) swiper.translate = 0;
4051
- swiper.updateActiveIndex();
4052
- swiper.updateSlidesClasses();
4053
- var newProgress;
4054
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
4055
-
4056
- if (translatesDiff === 0) {
4057
- newProgress = 0;
4058
- } else {
4059
- newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
4060
- }
4061
-
4062
- if (newProgress !== swiper.progress) {
4063
- swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
4064
- }
4065
-
4066
- swiper.emit('setTranslate', swiper.translate, false);
4067
- }
4068
-
4069
- var dummyEventAttached = false;
4070
-
4071
- function dummyEventListener() {}
4072
-
4073
- function attachEvents() {
4074
- var swiper = this;
4075
- var document = getDocument();
4076
- var params = swiper.params,
4077
- touchEvents = swiper.touchEvents,
4078
- el = swiper.el,
4079
- wrapperEl = swiper.wrapperEl,
4080
- device = swiper.device,
4081
- support = swiper.support;
4082
- swiper.onTouchStart = onTouchStart.bind(swiper);
4083
- swiper.onTouchMove = onTouchMove.bind(swiper);
4084
- swiper.onTouchEnd = onTouchEnd.bind(swiper);
4085
-
4086
- if (params.cssMode) {
4087
- swiper.onScroll = onScroll.bind(swiper);
4088
- }
4089
-
4090
- swiper.onClick = onClick.bind(swiper);
4091
- var capture = !!params.nested; // Touch Events
4092
-
4093
- if (!support.touch && support.pointerEvents) {
4094
- el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
4095
- document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
4096
- document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
4097
- } else {
4098
- if (support.touch) {
4099
- var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
4100
- passive: true,
4101
- capture: false
4102
- } : false;
4103
- el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4104
- el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
4105
- passive: false,
4106
- capture: capture
4107
- } : capture);
4108
- el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4109
-
4110
- if (touchEvents.cancel) {
4111
- el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4112
- }
4113
-
4114
- if (!dummyEventAttached) {
4115
- document.addEventListener('touchstart', dummyEventListener);
4116
- dummyEventAttached = true;
4117
- }
4118
- }
4119
-
4120
- if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4121
- el.addEventListener('mousedown', swiper.onTouchStart, false);
4122
- document.addEventListener('mousemove', swiper.onTouchMove, capture);
4123
- document.addEventListener('mouseup', swiper.onTouchEnd, false);
4124
- }
4125
- } // Prevent Links Clicks
4126
-
4127
-
4128
- if (params.preventClicks || params.preventClicksPropagation) {
4129
- el.addEventListener('click', swiper.onClick, true);
4130
- }
4131
-
4132
- if (params.cssMode) {
4133
- wrapperEl.addEventListener('scroll', swiper.onScroll);
4134
- } // Resize handler
4135
-
4136
-
4137
- if (params.updateOnWindowResize) {
4138
- swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
4139
- } else {
4140
- swiper.on('observerUpdate', onResize, true);
4141
- }
4142
- }
4143
-
4144
- function detachEvents() {
4145
- var swiper = this;
4146
- var document = getDocument();
4147
- var params = swiper.params,
4148
- touchEvents = swiper.touchEvents,
4149
- el = swiper.el,
4150
- wrapperEl = swiper.wrapperEl,
4151
- device = swiper.device,
4152
- support = swiper.support;
4153
- var capture = !!params.nested; // Touch Events
4154
-
4155
- if (!support.touch && support.pointerEvents) {
4156
- el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
4157
- document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4158
- document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
4159
- } else {
4160
- if (support.touch) {
4161
- var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
4162
- passive: true,
4163
- capture: false
4164
- } : false;
4165
- el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
4166
- el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
4167
- el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
4168
-
4169
- if (touchEvents.cancel) {
4170
- el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
4171
- }
4172
- }
4173
-
4174
- if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
4175
- el.removeEventListener('mousedown', swiper.onTouchStart, false);
4176
- document.removeEventListener('mousemove', swiper.onTouchMove, capture);
4177
- document.removeEventListener('mouseup', swiper.onTouchEnd, false);
4178
- }
4179
- } // Prevent Links Clicks
4180
-
4181
-
4182
- if (params.preventClicks || params.preventClicksPropagation) {
4183
- el.removeEventListener('click', swiper.onClick, true);
4184
- }
4185
-
4186
- if (params.cssMode) {
4187
- wrapperEl.removeEventListener('scroll', swiper.onScroll);
4188
- } // Resize handler
4189
-
4190
-
4191
- swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
4192
- }
4193
-
4194
- var events = {
4195
- attachEvents: attachEvents,
4196
- detachEvents: detachEvents
4197
- };
4198
-
4199
- function setBreakpoint() {
4200
- var swiper = this;
4201
- var activeIndex = swiper.activeIndex,
4202
- initialized = swiper.initialized,
4203
- _swiper$loopedSlides = swiper.loopedSlides,
4204
- loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
4205
- params = swiper.params,
4206
- $el = swiper.$el;
4207
- var breakpoints = params.breakpoints;
4208
- if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
4209
-
4210
- var breakpoint = swiper.getBreakpoint(breakpoints);
4211
-
4212
- if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
4213
- var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
4214
-
4215
- if (breakpointOnlyParams) {
4216
- ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
4217
- var paramValue = breakpointOnlyParams[param];
4218
- if (typeof paramValue === 'undefined') return;
4219
-
4220
- if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
4221
- breakpointOnlyParams[param] = 'auto';
4222
- } else if (param === 'slidesPerView') {
4223
- breakpointOnlyParams[param] = parseFloat(paramValue);
4224
- } else {
4225
- breakpointOnlyParams[param] = parseInt(paramValue, 10);
4226
- }
4227
- });
4228
- }
4229
-
4230
- var breakpointParams = breakpointOnlyParams || swiper.originalParams;
4231
- var wasMultiRow = params.slidesPerColumn > 1;
4232
- var isMultiRow = breakpointParams.slidesPerColumn > 1;
4233
-
4234
- if (wasMultiRow && !isMultiRow) {
4235
- $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
4236
- swiper.emitContainerClasses();
4237
- } else if (!wasMultiRow && isMultiRow) {
4238
- $el.addClass(params.containerModifierClass + "multirow");
4239
-
4240
- if (breakpointParams.slidesPerColumnFill === 'column') {
4241
- $el.addClass(params.containerModifierClass + "multirow-column");
4242
- }
4243
-
4244
- swiper.emitContainerClasses();
4245
- }
4246
-
4247
- var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
4248
- var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
4249
-
4250
- if (directionChanged && initialized) {
4251
- swiper.changeDirection();
4252
- }
4253
-
4254
- extend$1(swiper.params, breakpointParams);
4255
- extend$1(swiper, {
4256
- allowTouchMove: swiper.params.allowTouchMove,
4257
- allowSlideNext: swiper.params.allowSlideNext,
4258
- allowSlidePrev: swiper.params.allowSlidePrev
4259
- });
4260
- swiper.currentBreakpoint = breakpoint;
4261
- swiper.emit('_beforeBreakpoint', breakpointParams);
4262
-
4263
- if (needsReLoop && initialized) {
4264
- swiper.loopDestroy();
4265
- swiper.loopCreate();
4266
- swiper.updateSlides();
4267
- swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
4268
- }
4269
-
4270
- swiper.emit('breakpoint', breakpointParams);
4271
- }
4272
- }
4273
-
4274
- function getBreakpoints(breakpoints) {
4275
- var window = getWindow(); // Get breakpoint for window width
4276
-
4277
- if (!breakpoints) return undefined;
4278
- var breakpoint = false;
4279
- var points = Object.keys(breakpoints).map(function (point) {
4280
- if (typeof point === 'string' && point.indexOf('@') === 0) {
4281
- var minRatio = parseFloat(point.substr(1));
4282
- var value = window.innerHeight * minRatio;
4283
- return {
4284
- value: value,
4285
- point: point
4286
- };
4287
- }
4288
-
4289
- return {
4290
- value: point,
4291
- point: point
4292
- };
4293
- });
4294
- points.sort(function (a, b) {
4295
- return parseInt(a.value, 10) - parseInt(b.value, 10);
4296
- });
4297
-
4298
- for (var i = 0; i < points.length; i += 1) {
4299
- var _points$i = points[i],
4300
- point = _points$i.point,
4301
- value = _points$i.value;
4302
-
4303
- if (value <= window.innerWidth) {
4304
- breakpoint = point;
4305
- }
4306
- }
4307
-
4308
- return breakpoint || 'max';
4309
- }
4310
-
4311
- var breakpoints = {
4312
- setBreakpoint: setBreakpoint,
4313
- getBreakpoint: getBreakpoints
4314
- };
4315
-
4316
- function addClasses() {
4317
- var swiper = this;
4318
- var classNames = swiper.classNames,
4319
- params = swiper.params,
4320
- rtl = swiper.rtl,
4321
- $el = swiper.$el,
4322
- device = swiper.device;
4323
- var suffixes = [];
4324
- suffixes.push('initialized');
4325
- suffixes.push(params.direction);
4326
-
4327
- if (params.freeMode) {
4328
- suffixes.push('free-mode');
4329
- }
4330
-
4331
- if (params.autoHeight) {
4332
- suffixes.push('autoheight');
4333
- }
4334
-
4335
- if (rtl) {
4336
- suffixes.push('rtl');
4337
- }
4338
-
4339
- if (params.slidesPerColumn > 1) {
4340
- suffixes.push('multirow');
4341
-
4342
- if (params.slidesPerColumnFill === 'column') {
4343
- suffixes.push('multirow-column');
4344
- }
4345
- }
4346
-
4347
- if (device.android) {
4348
- suffixes.push('android');
4349
- }
4350
-
4351
- if (device.ios) {
4352
- suffixes.push('ios');
4353
- }
4354
-
4355
- if (params.cssMode) {
4356
- suffixes.push('css-mode');
4357
- }
4358
-
4359
- suffixes.forEach(function (suffix) {
4360
- classNames.push(params.containerModifierClass + suffix);
4361
- });
4362
- $el.addClass(classNames.join(' '));
4363
- swiper.emitContainerClasses();
4364
- }
4365
-
4366
- function removeClasses() {
4367
- var swiper = this;
4368
- var $el = swiper.$el,
4369
- classNames = swiper.classNames;
4370
- $el.removeClass(classNames.join(' '));
4371
- swiper.emitContainerClasses();
4372
- }
4373
-
4374
- var classes = {
4375
- addClasses: addClasses,
4376
- removeClasses: removeClasses
4377
- };
4378
-
4379
- function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
4380
- var window = getWindow();
4381
- var image;
4382
-
4383
- function onReady() {
4384
- if (callback) callback();
4385
- }
4386
-
4387
- var isPicture = $(imageEl).parent('picture')[0];
4388
-
4389
- if (!isPicture && (!imageEl.complete || !checkForComplete)) {
4390
- if (src) {
4391
- image = new window.Image();
4392
- image.onload = onReady;
4393
- image.onerror = onReady;
4394
-
4395
- if (sizes) {
4396
- image.sizes = sizes;
4397
- }
4398
-
4399
- if (srcset) {
4400
- image.srcset = srcset;
4401
- }
4402
-
4403
- if (src) {
4404
- image.src = src;
4405
- }
4406
- } else {
4407
- onReady();
4408
- }
4409
- } else {
4410
- // image already loaded...
4411
- onReady();
4412
- }
4413
- }
4414
-
4415
- function preloadImages() {
4416
- var swiper = this;
4417
- swiper.imagesToLoad = swiper.$el.find('img');
4418
-
4419
- function onReady() {
4420
- if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
4421
- if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
4422
-
4423
- if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
4424
- if (swiper.params.updateOnImagesReady) swiper.update();
4425
- swiper.emit('imagesReady');
4426
- }
4427
- }
4428
-
4429
- for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
4430
- var imageEl = swiper.imagesToLoad[i];
4431
- swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
4432
- }
4433
- }
4434
-
4435
- var images = {
4436
- loadImage: loadImage,
4437
- preloadImages: preloadImages
4438
- };
4439
-
4440
- function checkOverflow() {
4441
- var swiper = this;
4442
- var params = swiper.params;
4443
- var wasLocked = swiper.isLocked;
4444
- var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
4445
-
4446
- if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
4447
- swiper.isLocked = lastSlidePosition <= swiper.size;
4448
- } else {
4449
- swiper.isLocked = swiper.snapGrid.length === 1;
4450
- }
4451
-
4452
- swiper.allowSlideNext = !swiper.isLocked;
4453
- swiper.allowSlidePrev = !swiper.isLocked; // events
4454
-
4455
- if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
4456
-
4457
- if (wasLocked && wasLocked !== swiper.isLocked) {
4458
- swiper.isEnd = false;
4459
- if (swiper.navigation) swiper.navigation.update();
4460
- }
4461
- }
4462
-
4463
- var checkOverflow$1 = {
4464
- checkOverflow: checkOverflow
4465
- };
4466
-
4467
- var defaults = {
4468
- init: true,
4469
- direction: 'horizontal',
4470
- touchEventsTarget: 'container',
4471
- initialSlide: 0,
4472
- speed: 300,
4473
- cssMode: false,
4474
- updateOnWindowResize: true,
4475
- // Overrides
4476
- width: null,
4477
- height: null,
4478
- //
4479
- preventInteractionOnTransition: false,
4480
- // ssr
4481
- userAgent: null,
4482
- url: null,
4483
- // To support iOS's swipe-to-go-back gesture (when being used in-app).
4484
- edgeSwipeDetection: false,
4485
- edgeSwipeThreshold: 20,
4486
- // Free mode
4487
- freeMode: false,
4488
- freeModeMomentum: true,
4489
- freeModeMomentumRatio: 1,
4490
- freeModeMomentumBounce: true,
4491
- freeModeMomentumBounceRatio: 1,
4492
- freeModeMomentumVelocityRatio: 1,
4493
- freeModeSticky: false,
4494
- freeModeMinimumVelocity: 0.02,
4495
- // Autoheight
4496
- autoHeight: false,
4497
- // Set wrapper width
4498
- setWrapperSize: false,
4499
- // Virtual Translate
4500
- virtualTranslate: false,
4501
- // Effects
4502
- effect: 'slide',
4503
- // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
4504
- // Breakpoints
4505
- breakpoints: undefined,
4506
- // Slides grid
4507
- spaceBetween: 0,
4508
- slidesPerView: 1,
4509
- slidesPerColumn: 1,
4510
- slidesPerColumnFill: 'column',
4511
- slidesPerGroup: 1,
4512
- slidesPerGroupSkip: 0,
4513
- centeredSlides: false,
4514
- centeredSlidesBounds: false,
4515
- slidesOffsetBefore: 0,
4516
- // in px
4517
- slidesOffsetAfter: 0,
4518
- // in px
4519
- normalizeSlideIndex: true,
4520
- centerInsufficientSlides: false,
4521
- // Disable swiper and hide navigation when container not overflow
4522
- watchOverflow: false,
4523
- // Round length
4524
- roundLengths: false,
4525
- // Touches
4526
- touchRatio: 1,
4527
- touchAngle: 45,
4528
- simulateTouch: true,
4529
- shortSwipes: true,
4530
- longSwipes: true,
4531
- longSwipesRatio: 0.5,
4532
- longSwipesMs: 300,
4533
- followFinger: true,
4534
- allowTouchMove: true,
4535
- threshold: 0,
4536
- touchMoveStopPropagation: false,
4537
- touchStartPreventDefault: true,
4538
- touchStartForcePreventDefault: false,
4539
- touchReleaseOnEdges: false,
4540
- // Unique Navigation Elements
4541
- uniqueNavElements: true,
4542
- // Resistance
4543
- resistance: true,
4544
- resistanceRatio: 0.85,
4545
- // Progress
4546
- watchSlidesProgress: false,
4547
- watchSlidesVisibility: false,
4548
- // Cursor
4549
- grabCursor: false,
4550
- // Clicks
4551
- preventClicks: true,
4552
- preventClicksPropagation: true,
4553
- slideToClickedSlide: false,
4554
- // Images
4555
- preloadImages: true,
4556
- updateOnImagesReady: true,
4557
- // loop
4558
- loop: false,
4559
- loopAdditionalSlides: 0,
4560
- loopedSlides: null,
4561
- loopFillGroupWithBlank: false,
4562
- loopPreventsSlide: true,
4563
- // Swiping/no swiping
4564
- allowSlidePrev: true,
4565
- allowSlideNext: true,
4566
- swipeHandler: null,
4567
- // '.swipe-handler',
4568
- noSwiping: true,
4569
- noSwipingClass: 'swiper-no-swiping',
4570
- noSwipingSelector: null,
4571
- // Passive Listeners
4572
- passiveListeners: true,
4573
- // NS
4574
- containerModifierClass: 'swiper-container-',
4575
- // NEW
4576
- slideClass: 'swiper-slide',
4577
- slideBlankClass: 'swiper-slide-invisible-blank',
4578
- slideActiveClass: 'swiper-slide-active',
4579
- slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
4580
- slideVisibleClass: 'swiper-slide-visible',
4581
- slideDuplicateClass: 'swiper-slide-duplicate',
4582
- slideNextClass: 'swiper-slide-next',
4583
- slideDuplicateNextClass: 'swiper-slide-duplicate-next',
4584
- slidePrevClass: 'swiper-slide-prev',
4585
- slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
4586
- wrapperClass: 'swiper-wrapper',
4587
- // Callbacks
4588
- runCallbacksOnInit: true,
4589
- // Internals
4590
- _emitClasses: false
4591
- };
4592
-
4593
- var prototypes = {
4594
- modular: modular,
4595
- eventsEmitter: eventsEmitter,
4596
- update: update,
4597
- translate: translate,
4598
- transition: transition$1,
4599
- slide: slide,
4600
- loop: loop,
4601
- grabCursor: grabCursor,
4602
- manipulation: manipulation,
4603
- events: events,
4604
- breakpoints: breakpoints,
4605
- checkOverflow: checkOverflow$1,
4606
- classes: classes,
4607
- images: images
4608
- };
4609
- var extendedDefaults = {};
4610
-
4611
- var Swiper = /*#__PURE__*/function () {
4612
- function Swiper() {
4613
- var el;
4614
- var params;
4615
-
4616
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4617
- args[_key] = arguments[_key];
4618
- }
4619
-
4620
- if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
4621
- params = args[0];
4622
- } else {
4623
- el = args[0];
4624
- params = args[1];
4625
- }
4626
-
4627
- if (!params) params = {};
4628
- params = extend$1({}, params);
4629
- if (el && !params.el) params.el = el; // Swiper Instance
4630
-
4631
- var swiper = this;
4632
- swiper.support = getSupport();
4633
- swiper.device = getDevice({
4634
- userAgent: params.userAgent
4635
- });
4636
- swiper.browser = getBrowser();
4637
- swiper.eventsListeners = {};
4638
- swiper.eventsAnyListeners = [];
4639
-
4640
- if (typeof swiper.modules === 'undefined') {
4641
- swiper.modules = {};
4642
- }
4643
-
4644
- Object.keys(swiper.modules).forEach(function (moduleName) {
4645
- var module = swiper.modules[moduleName];
4646
-
4647
- if (module.params) {
4648
- var moduleParamName = Object.keys(module.params)[0];
4649
- var moduleParams = module.params[moduleParamName];
4650
- if (typeof moduleParams !== 'object' || moduleParams === null) return;
4651
- if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
4652
-
4653
- if (params[moduleParamName] === true) {
4654
- params[moduleParamName] = {
4655
- enabled: true
4656
- };
4657
- }
4658
-
4659
- if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
4660
- params[moduleParamName].enabled = true;
4661
- }
4662
-
4663
- if (!params[moduleParamName]) params[moduleParamName] = {
4664
- enabled: false
4665
- };
4666
- }
4667
- }); // Extend defaults with modules params
4668
-
4669
- var swiperParams = extend$1({}, defaults);
4670
- swiper.useParams(swiperParams); // Extend defaults with passed params
4671
-
4672
- swiper.params = extend$1({}, swiperParams, extendedDefaults, params);
4673
- swiper.originalParams = extend$1({}, swiper.params);
4674
- swiper.passedParams = extend$1({}, params); // add event listeners
4675
-
4676
- if (swiper.params && swiper.params.on) {
4677
- Object.keys(swiper.params.on).forEach(function (eventName) {
4678
- swiper.on(eventName, swiper.params.on[eventName]);
4679
- });
4680
- }
4681
-
4682
- if (swiper.params && swiper.params.onAny) {
4683
- swiper.onAny(swiper.params.onAny);
4684
- } // Save Dom lib
4685
-
4686
-
4687
- swiper.$ = $; // Find el
4688
-
4689
- var $el = $(swiper.params.el);
4690
- el = $el[0];
4691
-
4692
- if (!el) {
4693
- return undefined;
4694
- }
4695
-
4696
- if ($el.length > 1) {
4697
- var swipers = [];
4698
- $el.each(function (containerEl) {
4699
- var newParams = extend$1({}, params, {
4700
- el: containerEl
4701
- });
4702
- swipers.push(new Swiper(newParams));
4703
- });
4704
- return swipers;
4705
- }
4706
-
4707
- el.swiper = swiper; // Find Wrapper
4708
-
4709
- var $wrapperEl;
4710
-
4711
- if (el && el.shadowRoot && el.shadowRoot.querySelector) {
4712
- $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
4713
-
4714
- $wrapperEl.children = function (options) {
4715
- return $el.children(options);
4716
- };
4717
- } else {
4718
- $wrapperEl = $el.children("." + swiper.params.wrapperClass);
4719
- } // Extend Swiper
4720
-
4721
-
4722
- extend$1(swiper, {
4723
- $el: $el,
4724
- el: el,
4725
- $wrapperEl: $wrapperEl,
4726
- wrapperEl: $wrapperEl[0],
4727
- // Classes
4728
- classNames: [],
4729
- // Slides
4730
- slides: $(),
4731
- slidesGrid: [],
4732
- snapGrid: [],
4733
- slidesSizesGrid: [],
4734
- // isDirection
4735
- isHorizontal: function isHorizontal() {
4736
- return swiper.params.direction === 'horizontal';
4737
- },
4738
- isVertical: function isVertical() {
4739
- return swiper.params.direction === 'vertical';
4740
- },
4741
- // RTL
4742
- rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
4743
- rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
4744
- wrongRTL: $wrapperEl.css('display') === '-webkit-box',
4745
- // Indexes
4746
- activeIndex: 0,
4747
- realIndex: 0,
4748
- //
4749
- isBeginning: true,
4750
- isEnd: false,
4751
- // Props
4752
- translate: 0,
4753
- previousTranslate: 0,
4754
- progress: 0,
4755
- velocity: 0,
4756
- animating: false,
4757
- // Locks
4758
- allowSlideNext: swiper.params.allowSlideNext,
4759
- allowSlidePrev: swiper.params.allowSlidePrev,
4760
- // Touch Events
4761
- touchEvents: function touchEvents() {
4762
- var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
4763
- var desktop = ['mousedown', 'mousemove', 'mouseup'];
4764
-
4765
- if (swiper.support.pointerEvents) {
4766
- desktop = ['pointerdown', 'pointermove', 'pointerup'];
4767
- }
4768
-
4769
- swiper.touchEventsTouch = {
4770
- start: touch[0],
4771
- move: touch[1],
4772
- end: touch[2],
4773
- cancel: touch[3]
4774
- };
4775
- swiper.touchEventsDesktop = {
4776
- start: desktop[0],
4777
- move: desktop[1],
4778
- end: desktop[2]
4779
- };
4780
- return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
4781
- }(),
4782
- touchEventsData: {
4783
- isTouched: undefined,
4784
- isMoved: undefined,
4785
- allowTouchCallbacks: undefined,
4786
- touchStartTime: undefined,
4787
- isScrolling: undefined,
4788
- currentTranslate: undefined,
4789
- startTranslate: undefined,
4790
- allowThresholdMove: undefined,
4791
- // Form elements to match
4792
- formElements: 'input, select, option, textarea, button, video, label',
4793
- // Last click time
4794
- lastClickTime: now(),
4795
- clickTimeout: undefined,
4796
- // Velocities
4797
- velocities: [],
4798
- allowMomentumBounce: undefined,
4799
- isTouchEvent: undefined,
4800
- startMoving: undefined
4801
- },
4802
- // Clicks
4803
- allowClick: true,
4804
- // Touches
4805
- allowTouchMove: swiper.params.allowTouchMove,
4806
- touches: {
4807
- startX: 0,
4808
- startY: 0,
4809
- currentX: 0,
4810
- currentY: 0,
4811
- diff: 0
4812
- },
4813
- // Images
4814
- imagesToLoad: [],
4815
- imagesLoaded: 0
4816
- }); // Install Modules
4817
-
4818
- swiper.useModules();
4819
- swiper.emit('_swiper'); // Init
4820
-
4821
- if (swiper.params.init) {
4822
- swiper.init();
4823
- } // Return app instance
4824
-
4825
-
4826
- return swiper;
4827
- }
4828
-
4829
- var _proto = Swiper.prototype;
4830
-
4831
- _proto.emitContainerClasses = function emitContainerClasses() {
4832
- var swiper = this;
4833
- if (!swiper.params._emitClasses || !swiper.el) return;
4834
- var classes = swiper.el.className.split(' ').filter(function (className) {
4835
- return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
4836
- });
4837
- swiper.emit('_containerClasses', classes.join(' '));
4838
- };
4839
-
4840
- _proto.emitSlidesClasses = function emitSlidesClasses() {
4841
- var swiper = this;
4842
- if (!swiper.params._emitClasses || !swiper.el) return;
4843
- swiper.slides.each(function (slideEl) {
4844
- var classes = slideEl.className.split(' ').filter(function (className) {
4845
- return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
4846
- });
4847
- swiper.emit('_slideClass', slideEl, classes.join(' '));
4848
- });
4849
- };
4850
-
4851
- _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
4852
- var swiper = this;
4853
- var params = swiper.params,
4854
- slides = swiper.slides,
4855
- slidesGrid = swiper.slidesGrid,
4856
- swiperSize = swiper.size,
4857
- activeIndex = swiper.activeIndex;
4858
- var spv = 1;
4859
-
4860
- if (params.centeredSlides) {
4861
- var slideSize = slides[activeIndex].swiperSlideSize;
4862
- var breakLoop;
4863
-
4864
- for (var i = activeIndex + 1; i < slides.length; i += 1) {
4865
- if (slides[i] && !breakLoop) {
4866
- slideSize += slides[i].swiperSlideSize;
4867
- spv += 1;
4868
- if (slideSize > swiperSize) breakLoop = true;
4869
- }
4870
- }
4871
-
4872
- for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
4873
- if (slides[_i] && !breakLoop) {
4874
- slideSize += slides[_i].swiperSlideSize;
4875
- spv += 1;
4876
- if (slideSize > swiperSize) breakLoop = true;
4877
- }
4878
- }
4879
- } else {
4880
- for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
4881
- if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
4882
- spv += 1;
4883
- }
4884
- }
4885
- }
4886
-
4887
- return spv;
4888
- };
4889
-
4890
- _proto.update = function update() {
4891
- var swiper = this;
4892
- if (!swiper || swiper.destroyed) return;
4893
- var snapGrid = swiper.snapGrid,
4894
- params = swiper.params; // Breakpoints
4895
-
4896
- if (params.breakpoints) {
4897
- swiper.setBreakpoint();
4898
- }
4899
-
4900
- swiper.updateSize();
4901
- swiper.updateSlides();
4902
- swiper.updateProgress();
4903
- swiper.updateSlidesClasses();
4904
-
4905
- function setTranslate() {
4906
- var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
4907
- var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
4908
- swiper.setTranslate(newTranslate);
4909
- swiper.updateActiveIndex();
4910
- swiper.updateSlidesClasses();
4911
- }
4912
-
4913
- var translated;
4914
-
4915
- if (swiper.params.freeMode) {
4916
- setTranslate();
4917
-
4918
- if (swiper.params.autoHeight) {
4919
- swiper.updateAutoHeight();
4920
- }
4921
- } else {
4922
- if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
4923
- translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
4924
- } else {
4925
- translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
4926
- }
4927
-
4928
- if (!translated) {
4929
- setTranslate();
4930
- }
4931
- }
4932
-
4933
- if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
4934
- swiper.checkOverflow();
4935
- }
4936
-
4937
- swiper.emit('update');
4938
- };
4939
-
4940
- _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
4941
- if (needUpdate === void 0) {
4942
- needUpdate = true;
4943
- }
4944
-
4945
- var swiper = this;
4946
- var currentDirection = swiper.params.direction;
4947
-
4948
- if (!newDirection) {
4949
- // eslint-disable-next-line
4950
- newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
4951
- }
4952
-
4953
- if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
4954
- return swiper;
4955
- }
4956
-
4957
- swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
4958
- swiper.emitContainerClasses();
4959
- swiper.params.direction = newDirection;
4960
- swiper.slides.each(function (slideEl) {
4961
- if (newDirection === 'vertical') {
4962
- slideEl.style.width = '';
4963
- } else {
4964
- slideEl.style.height = '';
4965
- }
4966
- });
4967
- swiper.emit('changeDirection');
4968
- if (needUpdate) swiper.update();
4969
- return swiper;
4970
- };
4971
-
4972
- _proto.init = function init() {
4973
- var swiper = this;
4974
- if (swiper.initialized) return;
4975
- swiper.emit('beforeInit'); // Set breakpoint
4976
-
4977
- if (swiper.params.breakpoints) {
4978
- swiper.setBreakpoint();
4979
- } // Add Classes
4980
-
4981
-
4982
- swiper.addClasses(); // Create loop
4983
-
4984
- if (swiper.params.loop) {
4985
- swiper.loopCreate();
4986
- } // Update size
4987
-
4988
-
4989
- swiper.updateSize(); // Update slides
4990
-
4991
- swiper.updateSlides();
4992
-
4993
- if (swiper.params.watchOverflow) {
4994
- swiper.checkOverflow();
4995
- } // Set Grab Cursor
4996
-
4997
-
4998
- if (swiper.params.grabCursor) {
4999
- swiper.setGrabCursor();
5000
- }
5001
-
5002
- if (swiper.params.preloadImages) {
5003
- swiper.preloadImages();
5004
- } // Slide To Initial Slide
5005
-
5006
-
5007
- if (swiper.params.loop) {
5008
- swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
5009
- } else {
5010
- swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
5011
- } // Attach events
5012
-
5013
-
5014
- swiper.attachEvents(); // Init Flag
5015
-
5016
- swiper.initialized = true; // Emit
5017
-
5018
- swiper.emit('init');
5019
- swiper.emit('afterInit');
5020
- };
5021
-
5022
- _proto.destroy = function destroy(deleteInstance, cleanStyles) {
5023
- if (deleteInstance === void 0) {
5024
- deleteInstance = true;
5025
- }
5026
-
5027
- if (cleanStyles === void 0) {
5028
- cleanStyles = true;
5029
- }
5030
-
5031
- var swiper = this;
5032
- var params = swiper.params,
5033
- $el = swiper.$el,
5034
- $wrapperEl = swiper.$wrapperEl,
5035
- slides = swiper.slides;
5036
-
5037
- if (typeof swiper.params === 'undefined' || swiper.destroyed) {
5038
- return null;
5039
- }
5040
-
5041
- swiper.emit('beforeDestroy'); // Init Flag
5042
-
5043
- swiper.initialized = false; // Detach events
5044
-
5045
- swiper.detachEvents(); // Destroy loop
5046
-
5047
- if (params.loop) {
5048
- swiper.loopDestroy();
5049
- } // Cleanup styles
5050
-
5051
-
5052
- if (cleanStyles) {
5053
- swiper.removeClasses();
5054
- $el.removeAttr('style');
5055
- $wrapperEl.removeAttr('style');
5056
-
5057
- if (slides && slides.length) {
5058
- slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
5059
- }
5060
- }
5061
-
5062
- swiper.emit('destroy'); // Detach emitter events
5063
-
5064
- Object.keys(swiper.eventsListeners).forEach(function (eventName) {
5065
- swiper.off(eventName);
5066
- });
5067
-
5068
- if (deleteInstance !== false) {
5069
- swiper.$el[0].swiper = null;
5070
- deleteProps(swiper);
5071
- }
5072
-
5073
- swiper.destroyed = true;
5074
- return null;
5075
- };
5076
-
5077
- Swiper.extendDefaults = function extendDefaults(newDefaults) {
5078
- extend$1(extendedDefaults, newDefaults);
5079
- };
5080
-
5081
- Swiper.installModule = function installModule(module) {
5082
- if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
5083
- var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
5084
- Swiper.prototype.modules[name] = module;
5085
- };
5086
-
5087
- Swiper.use = function use(module) {
5088
- if (Array.isArray(module)) {
5089
- module.forEach(function (m) {
5090
- return Swiper.installModule(m);
5091
- });
5092
- return Swiper;
5093
- }
5094
-
5095
- Swiper.installModule(module);
5096
- return Swiper;
5097
- };
5098
-
5099
- _createClass(Swiper, null, [{
5100
- key: "extendedDefaults",
5101
- get: function get() {
5102
- return extendedDefaults;
5103
- }
5104
- }, {
5105
- key: "defaults",
5106
- get: function get() {
5107
- return defaults;
5108
- }
5109
- }]);
5110
-
5111
- return Swiper;
5112
- }();
5113
-
5114
- Object.keys(prototypes).forEach(function (prototypeGroup) {
5115
- Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
5116
- Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
5117
- });
5118
- });
5119
- Swiper.use([Resize, Observer$1]);
5120
-
5121
- var Virtual = {
5122
- update: function update(force) {
5123
- var swiper = this;
5124
- var _swiper$params = swiper.params,
5125
- slidesPerView = _swiper$params.slidesPerView,
5126
- slidesPerGroup = _swiper$params.slidesPerGroup,
5127
- centeredSlides = _swiper$params.centeredSlides;
5128
- var _swiper$params$virtua = swiper.params.virtual,
5129
- addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
5130
- addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
5131
- var _swiper$virtual = swiper.virtual,
5132
- previousFrom = _swiper$virtual.from,
5133
- previousTo = _swiper$virtual.to,
5134
- slides = _swiper$virtual.slides,
5135
- previousSlidesGrid = _swiper$virtual.slidesGrid,
5136
- renderSlide = _swiper$virtual.renderSlide,
5137
- previousOffset = _swiper$virtual.offset;
5138
- swiper.updateActiveIndex();
5139
- var activeIndex = swiper.activeIndex || 0;
5140
- var offsetProp;
5141
- if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
5142
- var slidesAfter;
5143
- var slidesBefore;
5144
-
5145
- if (centeredSlides) {
5146
- slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
5147
- slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
5148
- } else {
5149
- slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
5150
- slidesBefore = slidesPerGroup + addSlidesBefore;
5151
- }
5152
-
5153
- var from = Math.max((activeIndex || 0) - slidesBefore, 0);
5154
- var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
5155
- var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
5156
- extend$1(swiper.virtual, {
5157
- from: from,
5158
- to: to,
5159
- offset: offset,
5160
- slidesGrid: swiper.slidesGrid
5161
- });
5162
-
5163
- function onRendered() {
5164
- swiper.updateSlides();
5165
- swiper.updateProgress();
5166
- swiper.updateSlidesClasses();
5167
-
5168
- if (swiper.lazy && swiper.params.lazy.enabled) {
5169
- swiper.lazy.load();
5170
- }
5171
- }
5172
-
5173
- if (previousFrom === from && previousTo === to && !force) {
5174
- if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
5175
- swiper.slides.css(offsetProp, offset + "px");
5176
- }
5177
-
5178
- swiper.updateProgress();
5179
- return;
5180
- }
5181
-
5182
- if (swiper.params.virtual.renderExternal) {
5183
- swiper.params.virtual.renderExternal.call(swiper, {
5184
- offset: offset,
5185
- from: from,
5186
- to: to,
5187
- slides: function getSlides() {
5188
- var slidesToRender = [];
5189
-
5190
- for (var i = from; i <= to; i += 1) {
5191
- slidesToRender.push(slides[i]);
5192
- }
5193
-
5194
- return slidesToRender;
5195
- }()
5196
- });
5197
-
5198
- if (swiper.params.virtual.renderExternalUpdate) {
5199
- onRendered();
5200
- }
5201
-
5202
- return;
5203
- }
5204
-
5205
- var prependIndexes = [];
5206
- var appendIndexes = [];
5207
-
5208
- if (force) {
5209
- swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
5210
- } else {
5211
- for (var i = previousFrom; i <= previousTo; i += 1) {
5212
- if (i < from || i > to) {
5213
- swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
5214
- }
5215
- }
5216
- }
5217
-
5218
- for (var _i = 0; _i < slides.length; _i += 1) {
5219
- if (_i >= from && _i <= to) {
5220
- if (typeof previousTo === 'undefined' || force) {
5221
- appendIndexes.push(_i);
5222
- } else {
5223
- if (_i > previousTo) appendIndexes.push(_i);
5224
- if (_i < previousFrom) prependIndexes.push(_i);
5225
- }
5226
- }
5227
- }
5228
-
5229
- appendIndexes.forEach(function (index) {
5230
- swiper.$wrapperEl.append(renderSlide(slides[index], index));
5231
- });
5232
- prependIndexes.sort(function (a, b) {
5233
- return b - a;
5234
- }).forEach(function (index) {
5235
- swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
5236
- });
5237
- swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
5238
- onRendered();
5239
- },
5240
- renderSlide: function renderSlide(slide, index) {
5241
- var swiper = this;
5242
- var params = swiper.params.virtual;
5243
-
5244
- if (params.cache && swiper.virtual.cache[index]) {
5245
- return swiper.virtual.cache[index];
5246
- }
5247
-
5248
- var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
5249
- if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
5250
- if (params.cache) swiper.virtual.cache[index] = $slideEl;
5251
- return $slideEl;
5252
- },
5253
- appendSlide: function appendSlide(slides) {
5254
- var swiper = this;
5255
-
5256
- if (typeof slides === 'object' && 'length' in slides) {
5257
- for (var i = 0; i < slides.length; i += 1) {
5258
- if (slides[i]) swiper.virtual.slides.push(slides[i]);
5259
- }
5260
- } else {
5261
- swiper.virtual.slides.push(slides);
5262
- }
5263
-
5264
- swiper.virtual.update(true);
5265
- },
5266
- prependSlide: function prependSlide(slides) {
5267
- var swiper = this;
5268
- var activeIndex = swiper.activeIndex;
5269
- var newActiveIndex = activeIndex + 1;
5270
- var numberOfNewSlides = 1;
5271
-
5272
- if (Array.isArray(slides)) {
5273
- for (var i = 0; i < slides.length; i += 1) {
5274
- if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
5275
- }
5276
-
5277
- newActiveIndex = activeIndex + slides.length;
5278
- numberOfNewSlides = slides.length;
5279
- } else {
5280
- swiper.virtual.slides.unshift(slides);
5281
- }
5282
-
5283
- if (swiper.params.virtual.cache) {
5284
- var cache = swiper.virtual.cache;
5285
- var newCache = {};
5286
- Object.keys(cache).forEach(function (cachedIndex) {
5287
- var $cachedEl = cache[cachedIndex];
5288
- var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
5289
-
5290
- if (cachedElIndex) {
5291
- $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
5292
- }
5293
-
5294
- newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
5295
- });
5296
- swiper.virtual.cache = newCache;
5297
- }
5298
-
5299
- swiper.virtual.update(true);
5300
- swiper.slideTo(newActiveIndex, 0);
5301
- },
5302
- removeSlide: function removeSlide(slidesIndexes) {
5303
- var swiper = this;
5304
- if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
5305
- var activeIndex = swiper.activeIndex;
5306
-
5307
- if (Array.isArray(slidesIndexes)) {
5308
- for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
5309
- swiper.virtual.slides.splice(slidesIndexes[i], 1);
5310
-
5311
- if (swiper.params.virtual.cache) {
5312
- delete swiper.virtual.cache[slidesIndexes[i]];
5313
- }
5314
-
5315
- if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
5316
- activeIndex = Math.max(activeIndex, 0);
5317
- }
5318
- } else {
5319
- swiper.virtual.slides.splice(slidesIndexes, 1);
5320
-
5321
- if (swiper.params.virtual.cache) {
5322
- delete swiper.virtual.cache[slidesIndexes];
5323
- }
5324
-
5325
- if (slidesIndexes < activeIndex) activeIndex -= 1;
5326
- activeIndex = Math.max(activeIndex, 0);
5327
- }
5328
-
5329
- swiper.virtual.update(true);
5330
- swiper.slideTo(activeIndex, 0);
5331
- },
5332
- removeAllSlides: function removeAllSlides() {
5333
- var swiper = this;
5334
- swiper.virtual.slides = [];
5335
-
5336
- if (swiper.params.virtual.cache) {
5337
- swiper.virtual.cache = {};
5338
- }
5339
-
5340
- swiper.virtual.update(true);
5341
- swiper.slideTo(0, 0);
5342
- }
5343
- };
5344
- var Virtual$1 = {
5345
- name: 'virtual',
5346
- params: {
5347
- virtual: {
5348
- enabled: false,
5349
- slides: [],
5350
- cache: true,
5351
- renderSlide: null,
5352
- renderExternal: null,
5353
- renderExternalUpdate: true,
5354
- addSlidesBefore: 0,
5355
- addSlidesAfter: 0
5356
- }
5357
- },
5358
- create: function create() {
5359
- var swiper = this;
5360
- bindModuleMethods(swiper, {
5361
- virtual: _extends(_extends({}, Virtual), {}, {
5362
- slides: swiper.params.virtual.slides,
5363
- cache: {}
5364
- })
5365
- });
5366
- },
5367
- on: {
5368
- beforeInit: function beforeInit(swiper) {
5369
- if (!swiper.params.virtual.enabled) return;
5370
- swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
5371
- var overwriteParams = {
5372
- watchSlidesProgress: true
5373
- };
5374
- extend$1(swiper.params, overwriteParams);
5375
- extend$1(swiper.originalParams, overwriteParams);
5376
-
5377
- if (!swiper.params.initialSlide) {
5378
- swiper.virtual.update();
5379
- }
5380
- },
5381
- setTranslate: function setTranslate(swiper) {
5382
- if (!swiper.params.virtual.enabled) return;
5383
- swiper.virtual.update();
5384
- }
5385
- }
5386
- };
5387
-
5388
- var Keyboard = {
5389
- handle: function handle(event) {
5390
- var swiper = this;
5391
- var window = getWindow();
5392
- var document = getDocument();
5393
- var rtl = swiper.rtlTranslate;
5394
- var e = event;
5395
- if (e.originalEvent) e = e.originalEvent; // jquery fix
5396
-
5397
- var kc = e.keyCode || e.charCode;
5398
- var pageUpDown = swiper.params.keyboard.pageUpDown;
5399
- var isPageUp = pageUpDown && kc === 33;
5400
- var isPageDown = pageUpDown && kc === 34;
5401
- var isArrowLeft = kc === 37;
5402
- var isArrowRight = kc === 39;
5403
- var isArrowUp = kc === 38;
5404
- var isArrowDown = kc === 40; // Directions locks
5405
-
5406
- if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
5407
- return false;
5408
- }
5409
-
5410
- if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
5411
- return false;
5412
- }
5413
-
5414
- if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
5415
- return undefined;
5416
- }
5417
-
5418
- if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
5419
- return undefined;
5420
- }
5421
-
5422
- if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
5423
- var inView = false; // Check that swiper should be inside of visible area of window
5424
-
5425
- if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
5426
- return undefined;
5427
- }
5428
-
5429
- var windowWidth = window.innerWidth;
5430
- var windowHeight = window.innerHeight;
5431
- var swiperOffset = swiper.$el.offset();
5432
- if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
5433
- var 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]];
5434
-
5435
- for (var i = 0; i < swiperCoord.length; i += 1) {
5436
- var point = swiperCoord[i];
5437
-
5438
- if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
5439
- inView = true;
5440
- }
5441
- }
5442
-
5443
- if (!inView) return undefined;
5444
- }
5445
-
5446
- if (swiper.isHorizontal()) {
5447
- if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
5448
- if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5449
- }
5450
-
5451
- if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
5452
- if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
5453
- } else {
5454
- if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
5455
- if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5456
- }
5457
-
5458
- if (isPageDown || isArrowDown) swiper.slideNext();
5459
- if (isPageUp || isArrowUp) swiper.slidePrev();
5460
- }
5461
-
5462
- swiper.emit('keyPress', kc);
5463
- return undefined;
5464
- },
5465
- enable: function enable() {
5466
- var swiper = this;
5467
- var document = getDocument();
5468
- if (swiper.keyboard.enabled) return;
5469
- $(document).on('keydown', swiper.keyboard.handle);
5470
- swiper.keyboard.enabled = true;
5471
- },
5472
- disable: function disable() {
5473
- var swiper = this;
5474
- var document = getDocument();
5475
- if (!swiper.keyboard.enabled) return;
5476
- $(document).off('keydown', swiper.keyboard.handle);
5477
- swiper.keyboard.enabled = false;
5478
- }
5479
- };
5480
- var Keyboard$1 = {
5481
- name: 'keyboard',
5482
- params: {
5483
- keyboard: {
5484
- enabled: false,
5485
- onlyInViewport: true,
5486
- pageUpDown: true
5487
- }
5488
- },
5489
- create: function create() {
5490
- var swiper = this;
5491
- bindModuleMethods(swiper, {
5492
- keyboard: _extends({
5493
- enabled: false
5494
- }, Keyboard)
5495
- });
5496
- },
5497
- on: {
5498
- init: function init(swiper) {
5499
- if (swiper.params.keyboard.enabled) {
5500
- swiper.keyboard.enable();
5501
- }
5502
- },
5503
- destroy: function destroy(swiper) {
5504
- if (swiper.keyboard.enabled) {
5505
- swiper.keyboard.disable();
5506
- }
5507
- }
5508
- }
5509
- };
5510
-
5511
- function isEventSupported() {
5512
- var document = getDocument();
5513
- var eventName = 'onwheel';
5514
- var isSupported = (eventName in document);
5515
-
5516
- if (!isSupported) {
5517
- var element = document.createElement('div');
5518
- element.setAttribute(eventName, 'return;');
5519
- isSupported = typeof element[eventName] === 'function';
5520
- }
5521
-
5522
- if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.
5523
- // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
5524
- document.implementation.hasFeature('', '') !== true) {
5525
- // This is the only way to test support for the `wheel` event in IE9+.
5526
- isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
5527
- }
5528
-
5529
- return isSupported;
5530
- }
5531
-
5532
- var Mousewheel = {
5533
- lastScrollTime: now(),
5534
- lastEventBeforeSnap: undefined,
5535
- recentWheelEvents: [],
5536
- event: function event() {
5537
- var window = getWindow();
5538
- if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
5539
- return isEventSupported() ? 'wheel' : 'mousewheel';
5540
- },
5541
- normalize: function normalize(e) {
5542
- // Reasonable defaults
5543
- var PIXEL_STEP = 10;
5544
- var LINE_HEIGHT = 40;
5545
- var PAGE_HEIGHT = 800;
5546
- var sX = 0;
5547
- var sY = 0; // spinX, spinY
5548
-
5549
- var pX = 0;
5550
- var pY = 0; // pixelX, pixelY
5551
- // Legacy
5552
-
5553
- if ('detail' in e) {
5554
- sY = e.detail;
5555
- }
5556
-
5557
- if ('wheelDelta' in e) {
5558
- sY = -e.wheelDelta / 120;
5559
- }
5560
-
5561
- if ('wheelDeltaY' in e) {
5562
- sY = -e.wheelDeltaY / 120;
5563
- }
5564
-
5565
- if ('wheelDeltaX' in e) {
5566
- sX = -e.wheelDeltaX / 120;
5567
- } // side scrolling on FF with DOMMouseScroll
5568
-
5569
-
5570
- if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
5571
- sX = sY;
5572
- sY = 0;
5573
- }
5574
-
5575
- pX = sX * PIXEL_STEP;
5576
- pY = sY * PIXEL_STEP;
5577
-
5578
- if ('deltaY' in e) {
5579
- pY = e.deltaY;
5580
- }
5581
-
5582
- if ('deltaX' in e) {
5583
- pX = e.deltaX;
5584
- }
5585
-
5586
- if (e.shiftKey && !pX) {
5587
- // if user scrolls with shift he wants horizontal scroll
5588
- pX = pY;
5589
- pY = 0;
5590
- }
5591
-
5592
- if ((pX || pY) && e.deltaMode) {
5593
- if (e.deltaMode === 1) {
5594
- // delta in LINE units
5595
- pX *= LINE_HEIGHT;
5596
- pY *= LINE_HEIGHT;
5597
- } else {
5598
- // delta in PAGE units
5599
- pX *= PAGE_HEIGHT;
5600
- pY *= PAGE_HEIGHT;
5601
- }
5602
- } // Fall-back if spin cannot be determined
5603
-
5604
-
5605
- if (pX && !sX) {
5606
- sX = pX < 1 ? -1 : 1;
5607
- }
5608
-
5609
- if (pY && !sY) {
5610
- sY = pY < 1 ? -1 : 1;
5611
- }
5612
-
5613
- return {
5614
- spinX: sX,
5615
- spinY: sY,
5616
- pixelX: pX,
5617
- pixelY: pY
5618
- };
5619
- },
5620
- handleMouseEnter: function handleMouseEnter() {
5621
- var swiper = this;
5622
- swiper.mouseEntered = true;
5623
- },
5624
- handleMouseLeave: function handleMouseLeave() {
5625
- var swiper = this;
5626
- swiper.mouseEntered = false;
5627
- },
5628
- handle: function handle(event) {
5629
- var e = event;
5630
- var swiper = this;
5631
- var params = swiper.params.mousewheel;
5632
-
5633
- if (swiper.params.cssMode) {
5634
- e.preventDefault();
5635
- }
5636
-
5637
- var target = swiper.$el;
5638
-
5639
- if (swiper.params.mousewheel.eventsTarget !== 'container') {
5640
- target = $(swiper.params.mousewheel.eventsTarget);
5641
- }
5642
-
5643
- if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
5644
- if (e.originalEvent) e = e.originalEvent; // jquery fix
5645
-
5646
- var delta = 0;
5647
- var rtlFactor = swiper.rtlTranslate ? -1 : 1;
5648
- var data = Mousewheel.normalize(e);
5649
-
5650
- if (params.forceToAxis) {
5651
- if (swiper.isHorizontal()) {
5652
- if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
5653
- } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
5654
- } else {
5655
- delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
5656
- }
5657
-
5658
- if (delta === 0) return true;
5659
- if (params.invert) delta = -delta;
5660
-
5661
- if (!swiper.params.freeMode) {
5662
- // Register the new event in a variable which stores the relevant data
5663
- var newEvent = {
5664
- time: now(),
5665
- delta: Math.abs(delta),
5666
- direction: Math.sign(delta),
5667
- raw: event
5668
- }; // Keep the most recent events
5669
-
5670
- var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5671
-
5672
- if (recentWheelEvents.length >= 2) {
5673
- recentWheelEvents.shift(); // only store the last N events
5674
- }
5675
-
5676
- var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
5677
- recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
5678
- // If direction has changed or
5679
- // if the scroll is quicker than the previous one:
5680
- // Animate the slider.
5681
- // Else (this is the first time the wheel is moved):
5682
- // Animate the slider.
5683
-
5684
- if (prevEvent) {
5685
- if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
5686
- swiper.mousewheel.animateSlider(newEvent);
5687
- }
5688
- } else {
5689
- swiper.mousewheel.animateSlider(newEvent);
5690
- } // If it's time to release the scroll:
5691
- // Return now so you don't hit the preventDefault.
5692
-
5693
-
5694
- if (swiper.mousewheel.releaseScroll(newEvent)) {
5695
- return true;
5696
- }
5697
- } else {
5698
- // Freemode or scrollContainer:
5699
- // If we recently snapped after a momentum scroll, then ignore wheel events
5700
- // to give time for the deceleration to finish. Stop ignoring after 500 msecs
5701
- // or if it's a new scroll (larger delta or inverse sign as last event before
5702
- // an end-of-momentum snap).
5703
- var _newEvent = {
5704
- time: now(),
5705
- delta: Math.abs(delta),
5706
- direction: Math.sign(delta)
5707
- };
5708
- var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
5709
- var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
5710
-
5711
- if (!ignoreWheelEvents) {
5712
- swiper.mousewheel.lastEventBeforeSnap = undefined;
5713
-
5714
- if (swiper.params.loop) {
5715
- swiper.loopFix();
5716
- }
5717
-
5718
- var position = swiper.getTranslate() + delta * params.sensitivity;
5719
- var wasBeginning = swiper.isBeginning;
5720
- var wasEnd = swiper.isEnd;
5721
- if (position >= swiper.minTranslate()) position = swiper.minTranslate();
5722
- if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
5723
- swiper.setTransition(0);
5724
- swiper.setTranslate(position);
5725
- swiper.updateProgress();
5726
- swiper.updateActiveIndex();
5727
- swiper.updateSlidesClasses();
5728
-
5729
- if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
5730
- swiper.updateSlidesClasses();
5731
- }
5732
-
5733
- if (swiper.params.freeModeSticky) {
5734
- // When wheel scrolling starts with sticky (aka snap) enabled, then detect
5735
- // the end of a momentum scroll by storing recent (N=15?) wheel events.
5736
- // 1. do all N events have decreasing or same (absolute value) delta?
5737
- // 2. did all N events arrive in the last M (M=500?) msecs?
5738
- // 3. does the earliest event have an (absolute value) delta that's
5739
- // at least P (P=1?) larger than the most recent event's delta?
5740
- // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
5741
- // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
5742
- // Snap immediately and ignore remaining wheel events in this scroll.
5743
- // See comment above for "remaining wheel events in this scroll" determination.
5744
- // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
5745
- clearTimeout(swiper.mousewheel.timeout);
5746
- swiper.mousewheel.timeout = undefined;
5747
- var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
5748
-
5749
- if (_recentWheelEvents.length >= 15) {
5750
- _recentWheelEvents.shift(); // only store the last N events
5751
-
5752
- }
5753
-
5754
- var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
5755
-
5756
- var firstEvent = _recentWheelEvents[0];
5757
-
5758
- _recentWheelEvents.push(_newEvent);
5759
-
5760
- if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
5761
- // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
5762
- _recentWheelEvents.splice(0);
5763
- } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
5764
- // We're at the end of the deceleration of a momentum scroll, so there's no need
5765
- // to wait for more events. Snap ASAP on the next tick.
5766
- // Also, because there's some remaining momentum we'll bias the snap in the
5767
- // direction of the ongoing scroll because it's better UX for the scroll to snap
5768
- // in the same direction as the scroll instead of reversing to snap. Therefore,
5769
- // if it's already scrolled more than 20% in the current direction, keep going.
5770
- var snapToThreshold = delta > 0 ? 0.8 : 0.2;
5771
- swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5772
-
5773
- _recentWheelEvents.splice(0);
5774
-
5775
- swiper.mousewheel.timeout = nextTick(function () {
5776
- swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5777
- }, 0); // no delay; move on next tick
5778
- }
5779
-
5780
- if (!swiper.mousewheel.timeout) {
5781
- // if we get here, then we haven't detected the end of a momentum scroll, so
5782
- // we'll consider a scroll "complete" when there haven't been any wheel events
5783
- // for 500ms.
5784
- swiper.mousewheel.timeout = nextTick(function () {
5785
- var snapToThreshold = 0.5;
5786
- swiper.mousewheel.lastEventBeforeSnap = _newEvent;
5787
-
5788
- _recentWheelEvents.splice(0);
5789
-
5790
- swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
5791
- }, 500);
5792
- }
5793
- } // Emit event
5794
-
5795
-
5796
- if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay
5797
-
5798
- if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
5799
-
5800
- if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
5801
- }
5802
- }
5803
-
5804
- if (e.preventDefault) e.preventDefault();else e.returnValue = false;
5805
- return false;
5806
- },
5807
- animateSlider: function animateSlider(newEvent) {
5808
- var swiper = this;
5809
- var window = getWindow();
5810
-
5811
- if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
5812
- // Prevent if delta of wheel scroll delta is below configured threshold
5813
- return false;
5814
- }
5815
-
5816
- if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
5817
- // Prevent if time between scrolls is below configured threshold
5818
- return false;
5819
- } // If the movement is NOT big enough and
5820
- // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
5821
- // Don't go any further (avoid insignificant scroll movement).
5822
-
5823
-
5824
- if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
5825
- // Return false as a default
5826
- return true;
5827
- } // If user is scrolling towards the end:
5828
- // If the slider hasn't hit the latest slide or
5829
- // if the slider is a loop and
5830
- // if the slider isn't moving right now:
5831
- // Go to next slide and
5832
- // emit a scroll event.
5833
- // Else (the user is scrolling towards the beginning) and
5834
- // if the slider hasn't hit the first slide or
5835
- // if the slider is a loop and
5836
- // if the slider isn't moving right now:
5837
- // Go to prev slide and
5838
- // emit a scroll event.
5839
-
5840
-
5841
- if (newEvent.direction < 0) {
5842
- if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
5843
- swiper.slideNext();
5844
- swiper.emit('scroll', newEvent.raw);
5845
- }
5846
- } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
5847
- swiper.slidePrev();
5848
- swiper.emit('scroll', newEvent.raw);
5849
- } // If you got here is because an animation has been triggered so store the current time
5850
-
5851
-
5852
- swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default
5853
-
5854
- return false;
5855
- },
5856
- releaseScroll: function releaseScroll(newEvent) {
5857
- var swiper = this;
5858
- var params = swiper.params.mousewheel;
5859
-
5860
- if (newEvent.direction < 0) {
5861
- if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
5862
- // Return true to animate scroll on edges
5863
- return true;
5864
- }
5865
- } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
5866
- // Return true to animate scroll on edges
5867
- return true;
5868
- }
5869
-
5870
- return false;
5871
- },
5872
- enable: function enable() {
5873
- var swiper = this;
5874
- var event = Mousewheel.event();
5875
-
5876
- if (swiper.params.cssMode) {
5877
- swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
5878
- return true;
5879
- }
5880
-
5881
- if (!event) return false;
5882
- if (swiper.mousewheel.enabled) return false;
5883
- var target = swiper.$el;
5884
-
5885
- if (swiper.params.mousewheel.eventsTarget !== 'container') {
5886
- target = $(swiper.params.mousewheel.eventsTarget);
5887
- }
5888
-
5889
- target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
5890
- target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
5891
- target.on(event, swiper.mousewheel.handle);
5892
- swiper.mousewheel.enabled = true;
5893
- return true;
5894
- },
5895
- disable: function disable() {
5896
- var swiper = this;
5897
- var event = Mousewheel.event();
5898
-
5899
- if (swiper.params.cssMode) {
5900
- swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
5901
- return true;
5902
- }
5903
-
5904
- if (!event) return false;
5905
- if (!swiper.mousewheel.enabled) return false;
5906
- var target = swiper.$el;
5907
-
5908
- if (swiper.params.mousewheel.eventsTarget !== 'container') {
5909
- target = $(swiper.params.mousewheel.eventsTarget);
5910
- }
5911
-
5912
- target.off(event, swiper.mousewheel.handle);
5913
- swiper.mousewheel.enabled = false;
5914
- return true;
5915
- }
5916
- };
5917
- var Mousewheel$1 = {
5918
- name: 'mousewheel',
5919
- params: {
5920
- mousewheel: {
5921
- enabled: false,
5922
- releaseOnEdges: false,
5923
- invert: false,
5924
- forceToAxis: false,
5925
- sensitivity: 1,
5926
- eventsTarget: 'container',
5927
- thresholdDelta: null,
5928
- thresholdTime: null
5929
- }
5930
- },
5931
- create: function create() {
5932
- var swiper = this;
5933
- bindModuleMethods(swiper, {
5934
- mousewheel: {
5935
- enabled: false,
5936
- lastScrollTime: now(),
5937
- lastEventBeforeSnap: undefined,
5938
- recentWheelEvents: [],
5939
- enable: Mousewheel.enable,
5940
- disable: Mousewheel.disable,
5941
- handle: Mousewheel.handle,
5942
- handleMouseEnter: Mousewheel.handleMouseEnter,
5943
- handleMouseLeave: Mousewheel.handleMouseLeave,
5944
- animateSlider: Mousewheel.animateSlider,
5945
- releaseScroll: Mousewheel.releaseScroll
5946
- }
5947
- });
5948
- },
5949
- on: {
5950
- init: function init(swiper) {
5951
- if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
5952
- swiper.mousewheel.disable();
5953
- }
5954
-
5955
- if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
5956
- },
5957
- destroy: function destroy(swiper) {
5958
- if (swiper.params.cssMode) {
5959
- swiper.mousewheel.enable();
5960
- }
5961
-
5962
- if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
5963
- }
5964
- }
5965
- };
5966
-
5967
- var Navigation = {
5968
- update: function update() {
5969
- // Update Navigation Buttons
5970
- var swiper = this;
5971
- var params = swiper.params.navigation;
5972
- if (swiper.params.loop) return;
5973
- var _swiper$navigation = swiper.navigation,
5974
- $nextEl = _swiper$navigation.$nextEl,
5975
- $prevEl = _swiper$navigation.$prevEl;
5976
-
5977
- if ($prevEl && $prevEl.length > 0) {
5978
- if (swiper.isBeginning) {
5979
- $prevEl.addClass(params.disabledClass);
5980
- } else {
5981
- $prevEl.removeClass(params.disabledClass);
5982
- }
5983
-
5984
- $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5985
- }
5986
-
5987
- if ($nextEl && $nextEl.length > 0) {
5988
- if (swiper.isEnd) {
5989
- $nextEl.addClass(params.disabledClass);
5990
- } else {
5991
- $nextEl.removeClass(params.disabledClass);
5992
- }
5993
-
5994
- $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
5995
- }
5996
- },
5997
- onPrevClick: function onPrevClick(e) {
5998
- var swiper = this;
5999
- e.preventDefault();
6000
- if (swiper.isBeginning && !swiper.params.loop) return;
6001
- swiper.slidePrev();
6002
- },
6003
- onNextClick: function onNextClick(e) {
6004
- var swiper = this;
6005
- e.preventDefault();
6006
- if (swiper.isEnd && !swiper.params.loop) return;
6007
- swiper.slideNext();
6008
- },
6009
- init: function init() {
6010
- var swiper = this;
6011
- var params = swiper.params.navigation;
6012
- if (!(params.nextEl || params.prevEl)) return;
6013
- var $nextEl;
6014
- var $prevEl;
6015
-
6016
- if (params.nextEl) {
6017
- $nextEl = $(params.nextEl);
6018
-
6019
- if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
6020
- $nextEl = swiper.$el.find(params.nextEl);
6021
- }
6022
- }
6023
-
6024
- if (params.prevEl) {
6025
- $prevEl = $(params.prevEl);
6026
-
6027
- if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
6028
- $prevEl = swiper.$el.find(params.prevEl);
6029
- }
6030
- }
6031
-
6032
- if ($nextEl && $nextEl.length > 0) {
6033
- $nextEl.on('click', swiper.navigation.onNextClick);
6034
- }
6035
-
6036
- if ($prevEl && $prevEl.length > 0) {
6037
- $prevEl.on('click', swiper.navigation.onPrevClick);
6038
- }
6039
-
6040
- extend$1(swiper.navigation, {
6041
- $nextEl: $nextEl,
6042
- nextEl: $nextEl && $nextEl[0],
6043
- $prevEl: $prevEl,
6044
- prevEl: $prevEl && $prevEl[0]
6045
- });
6046
- },
6047
- destroy: function destroy() {
6048
- var swiper = this;
6049
- var _swiper$navigation2 = swiper.navigation,
6050
- $nextEl = _swiper$navigation2.$nextEl,
6051
- $prevEl = _swiper$navigation2.$prevEl;
6052
-
6053
- if ($nextEl && $nextEl.length) {
6054
- $nextEl.off('click', swiper.navigation.onNextClick);
6055
- $nextEl.removeClass(swiper.params.navigation.disabledClass);
6056
- }
6057
-
6058
- if ($prevEl && $prevEl.length) {
6059
- $prevEl.off('click', swiper.navigation.onPrevClick);
6060
- $prevEl.removeClass(swiper.params.navigation.disabledClass);
6061
- }
6062
- }
6063
- };
6064
- var Navigation$1 = {
6065
- name: 'navigation',
6066
- params: {
6067
- navigation: {
6068
- nextEl: null,
6069
- prevEl: null,
6070
- hideOnClick: false,
6071
- disabledClass: 'swiper-button-disabled',
6072
- hiddenClass: 'swiper-button-hidden',
6073
- lockClass: 'swiper-button-lock'
6074
- }
6075
- },
6076
- create: function create() {
6077
- var swiper = this;
6078
- bindModuleMethods(swiper, {
6079
- navigation: _extends({}, Navigation)
6080
- });
6081
- },
6082
- on: {
6083
- init: function init(swiper) {
6084
- swiper.navigation.init();
6085
- swiper.navigation.update();
6086
- },
6087
- toEdge: function toEdge(swiper) {
6088
- swiper.navigation.update();
6089
- },
6090
- fromEdge: function fromEdge(swiper) {
6091
- swiper.navigation.update();
6092
- },
6093
- destroy: function destroy(swiper) {
6094
- swiper.navigation.destroy();
6095
- },
6096
- click: function click(swiper, e) {
6097
- var _swiper$navigation3 = swiper.navigation,
6098
- $nextEl = _swiper$navigation3.$nextEl,
6099
- $prevEl = _swiper$navigation3.$prevEl;
6100
-
6101
- if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {
6102
- var isHidden;
6103
-
6104
- if ($nextEl) {
6105
- isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
6106
- } else if ($prevEl) {
6107
- isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
6108
- }
6109
-
6110
- if (isHidden === true) {
6111
- swiper.emit('navigationShow');
6112
- } else {
6113
- swiper.emit('navigationHide');
6114
- }
6115
-
6116
- if ($nextEl) {
6117
- $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
6118
- }
6119
-
6120
- if ($prevEl) {
6121
- $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
6122
- }
6123
- }
6124
- }
6125
- }
6126
- };
6127
-
6128
- var Pagination = {
6129
- update: function update() {
6130
- // Render || Update Pagination bullets/items
6131
- var swiper = this;
6132
- var rtl = swiper.rtl;
6133
- var params = swiper.params.pagination;
6134
- if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6135
- var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6136
- var $el = swiper.pagination.$el; // Current/Total
6137
-
6138
- var current;
6139
- var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6140
-
6141
- if (swiper.params.loop) {
6142
- current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
6143
-
6144
- if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
6145
- current -= slidesLength - swiper.loopedSlides * 2;
6146
- }
6147
-
6148
- if (current > total - 1) current -= total;
6149
- if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
6150
- } else if (typeof swiper.snapIndex !== 'undefined') {
6151
- current = swiper.snapIndex;
6152
- } else {
6153
- current = swiper.activeIndex || 0;
6154
- } // Types
6155
-
6156
-
6157
- if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
6158
- var bullets = swiper.pagination.bullets;
6159
- var firstIndex;
6160
- var lastIndex;
6161
- var midIndex;
6162
-
6163
- if (params.dynamicBullets) {
6164
- swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
6165
- $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
6166
-
6167
- if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
6168
- swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
6169
-
6170
- if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
6171
- swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
6172
- } else if (swiper.pagination.dynamicBulletIndex < 0) {
6173
- swiper.pagination.dynamicBulletIndex = 0;
6174
- }
6175
- }
6176
-
6177
- firstIndex = current - swiper.pagination.dynamicBulletIndex;
6178
- lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
6179
- midIndex = (lastIndex + firstIndex) / 2;
6180
- }
6181
-
6182
- bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
6183
-
6184
- if ($el.length > 1) {
6185
- bullets.each(function (bullet) {
6186
- var $bullet = $(bullet);
6187
- var bulletIndex = $bullet.index();
6188
-
6189
- if (bulletIndex === current) {
6190
- $bullet.addClass(params.bulletActiveClass);
6191
- }
6192
-
6193
- if (params.dynamicBullets) {
6194
- if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
6195
- $bullet.addClass(params.bulletActiveClass + "-main");
6196
- }
6197
-
6198
- if (bulletIndex === firstIndex) {
6199
- $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6200
- }
6201
-
6202
- if (bulletIndex === lastIndex) {
6203
- $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6204
- }
6205
- }
6206
- });
6207
- } else {
6208
- var $bullet = bullets.eq(current);
6209
- var bulletIndex = $bullet.index();
6210
- $bullet.addClass(params.bulletActiveClass);
6211
-
6212
- if (params.dynamicBullets) {
6213
- var $firstDisplayedBullet = bullets.eq(firstIndex);
6214
- var $lastDisplayedBullet = bullets.eq(lastIndex);
6215
-
6216
- for (var i = firstIndex; i <= lastIndex; i += 1) {
6217
- bullets.eq(i).addClass(params.bulletActiveClass + "-main");
6218
- }
6219
-
6220
- if (swiper.params.loop) {
6221
- if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
6222
- for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
6223
- bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
6224
- }
6225
-
6226
- bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
6227
- } else {
6228
- $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6229
- $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6230
- }
6231
- } else {
6232
- $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
6233
- $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
6234
- }
6235
- }
6236
- }
6237
-
6238
- if (params.dynamicBullets) {
6239
- var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
6240
- var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
6241
- var offsetProp = rtl ? 'right' : 'left';
6242
- bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
6243
- }
6244
- }
6245
-
6246
- if (params.type === 'fraction') {
6247
- $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1));
6248
- $el.find("." + params.totalClass).text(params.formatFractionTotal(total));
6249
- }
6250
-
6251
- if (params.type === 'progressbar') {
6252
- var progressbarDirection;
6253
-
6254
- if (params.progressbarOpposite) {
6255
- progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
6256
- } else {
6257
- progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
6258
- }
6259
-
6260
- var scale = (current + 1) / total;
6261
- var scaleX = 1;
6262
- var scaleY = 1;
6263
-
6264
- if (progressbarDirection === 'horizontal') {
6265
- scaleX = scale;
6266
- } else {
6267
- scaleY = scale;
6268
- }
6269
-
6270
- $el.find("." + params.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
6271
- }
6272
-
6273
- if (params.type === 'custom' && params.renderCustom) {
6274
- $el.html(params.renderCustom(swiper, current + 1, total));
6275
- swiper.emit('paginationRender', $el[0]);
6276
- } else {
6277
- swiper.emit('paginationUpdate', $el[0]);
6278
- }
6279
-
6280
- $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
6281
- },
6282
- render: function render() {
6283
- // Render Container
6284
- var swiper = this;
6285
- var params = swiper.params.pagination;
6286
- if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6287
- var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
6288
- var $el = swiper.pagination.$el;
6289
- var paginationHTML = '';
6290
-
6291
- if (params.type === 'bullets') {
6292
- var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
6293
-
6294
- for (var i = 0; i < numberOfBullets; i += 1) {
6295
- if (params.renderBullet) {
6296
- paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
6297
- } else {
6298
- paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
6299
- }
6300
- }
6301
-
6302
- $el.html(paginationHTML);
6303
- swiper.pagination.bullets = $el.find("." + params.bulletClass);
6304
- }
6305
-
6306
- if (params.type === 'fraction') {
6307
- if (params.renderFraction) {
6308
- paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
6309
- } else {
6310
- paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
6311
- }
6312
-
6313
- $el.html(paginationHTML);
6314
- }
6315
-
6316
- if (params.type === 'progressbar') {
6317
- if (params.renderProgressbar) {
6318
- paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
6319
- } else {
6320
- paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
6321
- }
6322
-
6323
- $el.html(paginationHTML);
6324
- }
6325
-
6326
- if (params.type !== 'custom') {
6327
- swiper.emit('paginationRender', swiper.pagination.$el[0]);
6328
- }
6329
- },
6330
- init: function init() {
6331
- var swiper = this;
6332
- var params = swiper.params.pagination;
6333
- if (!params.el) return;
6334
- var $el = $(params.el);
6335
- if ($el.length === 0) return;
6336
-
6337
- if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
6338
- $el = swiper.$el.find(params.el);
6339
- }
6340
-
6341
- if (params.type === 'bullets' && params.clickable) {
6342
- $el.addClass(params.clickableClass);
6343
- }
6344
-
6345
- $el.addClass(params.modifierClass + params.type);
6346
-
6347
- if (params.type === 'bullets' && params.dynamicBullets) {
6348
- $el.addClass("" + params.modifierClass + params.type + "-dynamic");
6349
- swiper.pagination.dynamicBulletIndex = 0;
6350
-
6351
- if (params.dynamicMainBullets < 1) {
6352
- params.dynamicMainBullets = 1;
6353
- }
6354
- }
6355
-
6356
- if (params.type === 'progressbar' && params.progressbarOpposite) {
6357
- $el.addClass(params.progressbarOppositeClass);
6358
- }
6359
-
6360
- if (params.clickable) {
6361
- $el.on('click', "." + params.bulletClass, function onClick(e) {
6362
- e.preventDefault();
6363
- var index = $(this).index() * swiper.params.slidesPerGroup;
6364
- if (swiper.params.loop) index += swiper.loopedSlides;
6365
- swiper.slideTo(index);
6366
- });
6367
- }
6368
-
6369
- extend$1(swiper.pagination, {
6370
- $el: $el,
6371
- el: $el[0]
6372
- });
6373
- },
6374
- destroy: function destroy() {
6375
- var swiper = this;
6376
- var params = swiper.params.pagination;
6377
- if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
6378
- var $el = swiper.pagination.$el;
6379
- $el.removeClass(params.hiddenClass);
6380
- $el.removeClass(params.modifierClass + params.type);
6381
- if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
6382
-
6383
- if (params.clickable) {
6384
- $el.off('click', "." + params.bulletClass);
6385
- }
6386
- }
6387
- };
6388
- var Pagination$1 = {
6389
- name: 'pagination',
6390
- params: {
6391
- pagination: {
6392
- el: null,
6393
- bulletElement: 'span',
6394
- clickable: false,
6395
- hideOnClick: false,
6396
- renderBullet: null,
6397
- renderProgressbar: null,
6398
- renderFraction: null,
6399
- renderCustom: null,
6400
- progressbarOpposite: false,
6401
- type: 'bullets',
6402
- // 'bullets' or 'progressbar' or 'fraction' or 'custom'
6403
- dynamicBullets: false,
6404
- dynamicMainBullets: 1,
6405
- formatFractionCurrent: function formatFractionCurrent(number) {
6406
- return number;
6407
- },
6408
- formatFractionTotal: function formatFractionTotal(number) {
6409
- return number;
6410
- },
6411
- bulletClass: 'swiper-pagination-bullet',
6412
- bulletActiveClass: 'swiper-pagination-bullet-active',
6413
- modifierClass: 'swiper-pagination-',
6414
- // NEW
6415
- currentClass: 'swiper-pagination-current',
6416
- totalClass: 'swiper-pagination-total',
6417
- hiddenClass: 'swiper-pagination-hidden',
6418
- progressbarFillClass: 'swiper-pagination-progressbar-fill',
6419
- progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
6420
- clickableClass: 'swiper-pagination-clickable',
6421
- // NEW
6422
- lockClass: 'swiper-pagination-lock'
6423
- }
6424
- },
6425
- create: function create() {
6426
- var swiper = this;
6427
- bindModuleMethods(swiper, {
6428
- pagination: _extends({
6429
- dynamicBulletIndex: 0
6430
- }, Pagination)
6431
- });
6432
- },
6433
- on: {
6434
- init: function init(swiper) {
6435
- swiper.pagination.init();
6436
- swiper.pagination.render();
6437
- swiper.pagination.update();
6438
- },
6439
- activeIndexChange: function activeIndexChange(swiper) {
6440
- if (swiper.params.loop) {
6441
- swiper.pagination.update();
6442
- } else if (typeof swiper.snapIndex === 'undefined') {
6443
- swiper.pagination.update();
6444
- }
6445
- },
6446
- snapIndexChange: function snapIndexChange(swiper) {
6447
- if (!swiper.params.loop) {
6448
- swiper.pagination.update();
6449
- }
6450
- },
6451
- slidesLengthChange: function slidesLengthChange(swiper) {
6452
- if (swiper.params.loop) {
6453
- swiper.pagination.render();
6454
- swiper.pagination.update();
6455
- }
6456
- },
6457
- snapGridLengthChange: function snapGridLengthChange(swiper) {
6458
- if (!swiper.params.loop) {
6459
- swiper.pagination.render();
6460
- swiper.pagination.update();
6461
- }
6462
- },
6463
- destroy: function destroy(swiper) {
6464
- swiper.pagination.destroy();
6465
- },
6466
- click: function click(swiper, e) {
6467
- if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {
6468
- var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
6469
-
6470
- if (isHidden === true) {
6471
- swiper.emit('paginationShow');
6472
- } else {
6473
- swiper.emit('paginationHide');
6474
- }
6475
-
6476
- swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
6477
- }
6478
- }
6479
- }
6480
- };
6481
-
6482
- var Scrollbar = {
6483
- setTranslate: function setTranslate() {
6484
- var swiper = this;
6485
- if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6486
- var scrollbar = swiper.scrollbar,
6487
- rtl = swiper.rtlTranslate,
6488
- progress = swiper.progress;
6489
- var dragSize = scrollbar.dragSize,
6490
- trackSize = scrollbar.trackSize,
6491
- $dragEl = scrollbar.$dragEl,
6492
- $el = scrollbar.$el;
6493
- var params = swiper.params.scrollbar;
6494
- var newSize = dragSize;
6495
- var newPos = (trackSize - dragSize) * progress;
6496
-
6497
- if (rtl) {
6498
- newPos = -newPos;
6499
-
6500
- if (newPos > 0) {
6501
- newSize = dragSize - newPos;
6502
- newPos = 0;
6503
- } else if (-newPos + dragSize > trackSize) {
6504
- newSize = trackSize + newPos;
6505
- }
6506
- } else if (newPos < 0) {
6507
- newSize = dragSize + newPos;
6508
- newPos = 0;
6509
- } else if (newPos + dragSize > trackSize) {
6510
- newSize = trackSize - newPos;
6511
- }
6512
-
6513
- if (swiper.isHorizontal()) {
6514
- $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
6515
- $dragEl[0].style.width = newSize + "px";
6516
- } else {
6517
- $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
6518
- $dragEl[0].style.height = newSize + "px";
6519
- }
6520
-
6521
- if (params.hide) {
6522
- clearTimeout(swiper.scrollbar.timeout);
6523
- $el[0].style.opacity = 1;
6524
- swiper.scrollbar.timeout = setTimeout(function () {
6525
- $el[0].style.opacity = 0;
6526
- $el.transition(400);
6527
- }, 1000);
6528
- }
6529
- },
6530
- setTransition: function setTransition(duration) {
6531
- var swiper = this;
6532
- if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6533
- swiper.scrollbar.$dragEl.transition(duration);
6534
- },
6535
- updateSize: function updateSize() {
6536
- var swiper = this;
6537
- if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
6538
- var scrollbar = swiper.scrollbar;
6539
- var $dragEl = scrollbar.$dragEl,
6540
- $el = scrollbar.$el;
6541
- $dragEl[0].style.width = '';
6542
- $dragEl[0].style.height = '';
6543
- var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
6544
- var divider = swiper.size / swiper.virtualSize;
6545
- var moveDivider = divider * (trackSize / swiper.size);
6546
- var dragSize;
6547
-
6548
- if (swiper.params.scrollbar.dragSize === 'auto') {
6549
- dragSize = trackSize * divider;
6550
- } else {
6551
- dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
6552
- }
6553
-
6554
- if (swiper.isHorizontal()) {
6555
- $dragEl[0].style.width = dragSize + "px";
6556
- } else {
6557
- $dragEl[0].style.height = dragSize + "px";
6558
- }
6559
-
6560
- if (divider >= 1) {
6561
- $el[0].style.display = 'none';
6562
- } else {
6563
- $el[0].style.display = '';
6564
- }
6565
-
6566
- if (swiper.params.scrollbar.hide) {
6567
- $el[0].style.opacity = 0;
6568
- }
6569
-
6570
- extend$1(scrollbar, {
6571
- trackSize: trackSize,
6572
- divider: divider,
6573
- moveDivider: moveDivider,
6574
- dragSize: dragSize
6575
- });
6576
- scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
6577
- },
6578
- getPointerPosition: function getPointerPosition(e) {
6579
- var swiper = this;
6580
-
6581
- if (swiper.isHorizontal()) {
6582
- return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
6583
- }
6584
-
6585
- return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
6586
- },
6587
- setDragPosition: function setDragPosition(e) {
6588
- var swiper = this;
6589
- var scrollbar = swiper.scrollbar,
6590
- rtl = swiper.rtlTranslate;
6591
- var $el = scrollbar.$el,
6592
- dragSize = scrollbar.dragSize,
6593
- trackSize = scrollbar.trackSize,
6594
- dragStartPos = scrollbar.dragStartPos;
6595
- var positionRatio;
6596
- positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
6597
- positionRatio = Math.max(Math.min(positionRatio, 1), 0);
6598
-
6599
- if (rtl) {
6600
- positionRatio = 1 - positionRatio;
6601
- }
6602
-
6603
- var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
6604
- swiper.updateProgress(position);
6605
- swiper.setTranslate(position);
6606
- swiper.updateActiveIndex();
6607
- swiper.updateSlidesClasses();
6608
- },
6609
- onDragStart: function onDragStart(e) {
6610
- var swiper = this;
6611
- var params = swiper.params.scrollbar;
6612
- var scrollbar = swiper.scrollbar,
6613
- $wrapperEl = swiper.$wrapperEl;
6614
- var $el = scrollbar.$el,
6615
- $dragEl = scrollbar.$dragEl;
6616
- swiper.scrollbar.isTouched = true;
6617
- swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
6618
- e.preventDefault();
6619
- e.stopPropagation();
6620
- $wrapperEl.transition(100);
6621
- $dragEl.transition(100);
6622
- scrollbar.setDragPosition(e);
6623
- clearTimeout(swiper.scrollbar.dragTimeout);
6624
- $el.transition(0);
6625
-
6626
- if (params.hide) {
6627
- $el.css('opacity', 1);
6628
- }
6629
-
6630
- if (swiper.params.cssMode) {
6631
- swiper.$wrapperEl.css('scroll-snap-type', 'none');
6632
- }
6633
-
6634
- swiper.emit('scrollbarDragStart', e);
6635
- },
6636
- onDragMove: function onDragMove(e) {
6637
- var swiper = this;
6638
- var scrollbar = swiper.scrollbar,
6639
- $wrapperEl = swiper.$wrapperEl;
6640
- var $el = scrollbar.$el,
6641
- $dragEl = scrollbar.$dragEl;
6642
- if (!swiper.scrollbar.isTouched) return;
6643
- if (e.preventDefault) e.preventDefault();else e.returnValue = false;
6644
- scrollbar.setDragPosition(e);
6645
- $wrapperEl.transition(0);
6646
- $el.transition(0);
6647
- $dragEl.transition(0);
6648
- swiper.emit('scrollbarDragMove', e);
6649
- },
6650
- onDragEnd: function onDragEnd(e) {
6651
- var swiper = this;
6652
- var params = swiper.params.scrollbar;
6653
- var scrollbar = swiper.scrollbar,
6654
- $wrapperEl = swiper.$wrapperEl;
6655
- var $el = scrollbar.$el;
6656
- if (!swiper.scrollbar.isTouched) return;
6657
- swiper.scrollbar.isTouched = false;
6658
-
6659
- if (swiper.params.cssMode) {
6660
- swiper.$wrapperEl.css('scroll-snap-type', '');
6661
- $wrapperEl.transition('');
6662
- }
6663
-
6664
- if (params.hide) {
6665
- clearTimeout(swiper.scrollbar.dragTimeout);
6666
- swiper.scrollbar.dragTimeout = nextTick(function () {
6667
- $el.css('opacity', 0);
6668
- $el.transition(400);
6669
- }, 1000);
6670
- }
6671
-
6672
- swiper.emit('scrollbarDragEnd', e);
6673
-
6674
- if (params.snapOnRelease) {
6675
- swiper.slideToClosest();
6676
- }
6677
- },
6678
- enableDraggable: function enableDraggable() {
6679
- var swiper = this;
6680
- if (!swiper.params.scrollbar.el) return;
6681
- var document = getDocument();
6682
- var scrollbar = swiper.scrollbar,
6683
- touchEventsTouch = swiper.touchEventsTouch,
6684
- touchEventsDesktop = swiper.touchEventsDesktop,
6685
- params = swiper.params,
6686
- support = swiper.support;
6687
- var $el = scrollbar.$el;
6688
- var target = $el[0];
6689
- var activeListener = support.passiveListener && params.passiveListeners ? {
6690
- passive: false,
6691
- capture: false
6692
- } : false;
6693
- var passiveListener = support.passiveListener && params.passiveListeners ? {
6694
- passive: true,
6695
- capture: false
6696
- } : false;
6697
-
6698
- if (!support.touch) {
6699
- target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6700
- document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6701
- document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6702
- } else {
6703
- target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6704
- target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6705
- target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6706
- }
6707
- },
6708
- disableDraggable: function disableDraggable() {
6709
- var swiper = this;
6710
- if (!swiper.params.scrollbar.el) return;
6711
- var document = getDocument();
6712
- var scrollbar = swiper.scrollbar,
6713
- touchEventsTouch = swiper.touchEventsTouch,
6714
- touchEventsDesktop = swiper.touchEventsDesktop,
6715
- params = swiper.params,
6716
- support = swiper.support;
6717
- var $el = scrollbar.$el;
6718
- var target = $el[0];
6719
- var activeListener = support.passiveListener && params.passiveListeners ? {
6720
- passive: false,
6721
- capture: false
6722
- } : false;
6723
- var passiveListener = support.passiveListener && params.passiveListeners ? {
6724
- passive: true,
6725
- capture: false
6726
- } : false;
6727
-
6728
- if (!support.touch) {
6729
- target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
6730
- document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
6731
- document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
6732
- } else {
6733
- target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
6734
- target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
6735
- target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
6736
- }
6737
- },
6738
- init: function init() {
6739
- var swiper = this;
6740
- if (!swiper.params.scrollbar.el) return;
6741
- var scrollbar = swiper.scrollbar,
6742
- $swiperEl = swiper.$el;
6743
- var params = swiper.params.scrollbar;
6744
- var $el = $(params.el);
6745
-
6746
- if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
6747
- $el = $swiperEl.find(params.el);
6748
- }
6749
-
6750
- var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
6751
-
6752
- if ($dragEl.length === 0) {
6753
- $dragEl = $("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
6754
- $el.append($dragEl);
6755
- }
6756
-
6757
- extend$1(scrollbar, {
6758
- $el: $el,
6759
- el: $el[0],
6760
- $dragEl: $dragEl,
6761
- dragEl: $dragEl[0]
6762
- });
6763
-
6764
- if (params.draggable) {
6765
- scrollbar.enableDraggable();
6766
- }
6767
- },
6768
- destroy: function destroy() {
6769
- var swiper = this;
6770
- swiper.scrollbar.disableDraggable();
6771
- }
6772
- };
6773
- var Scrollbar$1 = {
6774
- name: 'scrollbar',
6775
- params: {
6776
- scrollbar: {
6777
- el: null,
6778
- dragSize: 'auto',
6779
- hide: false,
6780
- draggable: false,
6781
- snapOnRelease: true,
6782
- lockClass: 'swiper-scrollbar-lock',
6783
- dragClass: 'swiper-scrollbar-drag'
6784
- }
6785
- },
6786
- create: function create() {
6787
- var swiper = this;
6788
- bindModuleMethods(swiper, {
6789
- scrollbar: _extends({
6790
- isTouched: false,
6791
- timeout: null,
6792
- dragTimeout: null
6793
- }, Scrollbar)
6794
- });
6795
- },
6796
- on: {
6797
- init: function init(swiper) {
6798
- swiper.scrollbar.init();
6799
- swiper.scrollbar.updateSize();
6800
- swiper.scrollbar.setTranslate();
6801
- },
6802
- update: function update(swiper) {
6803
- swiper.scrollbar.updateSize();
6804
- },
6805
- resize: function resize(swiper) {
6806
- swiper.scrollbar.updateSize();
6807
- },
6808
- observerUpdate: function observerUpdate(swiper) {
6809
- swiper.scrollbar.updateSize();
6810
- },
6811
- setTranslate: function setTranslate(swiper) {
6812
- swiper.scrollbar.setTranslate();
6813
- },
6814
- setTransition: function setTransition(swiper, duration) {
6815
- swiper.scrollbar.setTransition(duration);
6816
- },
6817
- destroy: function destroy(swiper) {
6818
- swiper.scrollbar.destroy();
6819
- }
6820
- }
6821
- };
6822
-
6823
- var Parallax = {
6824
- setTransform: function setTransform(el, progress) {
6825
- var swiper = this;
6826
- var rtl = swiper.rtl;
6827
- var $el = $(el);
6828
- var rtlFactor = rtl ? -1 : 1;
6829
- var p = $el.attr('data-swiper-parallax') || '0';
6830
- var x = $el.attr('data-swiper-parallax-x');
6831
- var y = $el.attr('data-swiper-parallax-y');
6832
- var scale = $el.attr('data-swiper-parallax-scale');
6833
- var opacity = $el.attr('data-swiper-parallax-opacity');
6834
-
6835
- if (x || y) {
6836
- x = x || '0';
6837
- y = y || '0';
6838
- } else if (swiper.isHorizontal()) {
6839
- x = p;
6840
- y = '0';
6841
- } else {
6842
- y = p;
6843
- x = '0';
6844
- }
6845
-
6846
- if (x.indexOf('%') >= 0) {
6847
- x = parseInt(x, 10) * progress * rtlFactor + "%";
6848
- } else {
6849
- x = x * progress * rtlFactor + "px";
6850
- }
6851
-
6852
- if (y.indexOf('%') >= 0) {
6853
- y = parseInt(y, 10) * progress + "%";
6854
- } else {
6855
- y = y * progress + "px";
6856
- }
6857
-
6858
- if (typeof opacity !== 'undefined' && opacity !== null) {
6859
- var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
6860
- $el[0].style.opacity = currentOpacity;
6861
- }
6862
-
6863
- if (typeof scale === 'undefined' || scale === null) {
6864
- $el.transform("translate3d(" + x + ", " + y + ", 0px)");
6865
- } else {
6866
- var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
6867
- $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
6868
- }
6869
- },
6870
- setTranslate: function setTranslate() {
6871
- var swiper = this;
6872
- var $el = swiper.$el,
6873
- slides = swiper.slides,
6874
- progress = swiper.progress,
6875
- snapGrid = swiper.snapGrid;
6876
- $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6877
- swiper.parallax.setTransform(el, progress);
6878
- });
6879
- slides.each(function (slideEl, slideIndex) {
6880
- var slideProgress = slideEl.progress;
6881
-
6882
- if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
6883
- slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
6884
- }
6885
-
6886
- slideProgress = Math.min(Math.max(slideProgress, -1), 1);
6887
- $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
6888
- swiper.parallax.setTransform(el, slideProgress);
6889
- });
6890
- });
6891
- },
6892
- setTransition: function setTransition(duration) {
6893
- if (duration === void 0) {
6894
- duration = this.params.speed;
6895
- }
6896
-
6897
- var swiper = this;
6898
- var $el = swiper.$el;
6899
- $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
6900
- var $parallaxEl = $(parallaxEl);
6901
- var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
6902
- if (duration === 0) parallaxDuration = 0;
6903
- $parallaxEl.transition(parallaxDuration);
6904
- });
6905
- }
6906
- };
6907
- var Parallax$1 = {
6908
- name: 'parallax',
6909
- params: {
6910
- parallax: {
6911
- enabled: false
6912
- }
6913
- },
6914
- create: function create() {
6915
- var swiper = this;
6916
- bindModuleMethods(swiper, {
6917
- parallax: _extends({}, Parallax)
6918
- });
6919
- },
6920
- on: {
6921
- beforeInit: function beforeInit(swiper) {
6922
- if (!swiper.params.parallax.enabled) return;
6923
- swiper.params.watchSlidesProgress = true;
6924
- swiper.originalParams.watchSlidesProgress = true;
6925
- },
6926
- init: function init(swiper) {
6927
- if (!swiper.params.parallax.enabled) return;
6928
- swiper.parallax.setTranslate();
6929
- },
6930
- setTranslate: function setTranslate(swiper) {
6931
- if (!swiper.params.parallax.enabled) return;
6932
- swiper.parallax.setTranslate();
6933
- },
6934
- setTransition: function setTransition(swiper, duration) {
6935
- if (!swiper.params.parallax.enabled) return;
6936
- swiper.parallax.setTransition(duration);
6937
- }
6938
- }
6939
- };
6940
-
6941
- var Zoom = {
6942
- // Calc Scale From Multi-touches
6943
- getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
6944
- if (e.targetTouches.length < 2) return 1;
6945
- var x1 = e.targetTouches[0].pageX;
6946
- var y1 = e.targetTouches[0].pageY;
6947
- var x2 = e.targetTouches[1].pageX;
6948
- var y2 = e.targetTouches[1].pageY;
6949
- var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
6950
- return distance;
6951
- },
6952
- // Events
6953
- onGestureStart: function onGestureStart(e) {
6954
- var swiper = this;
6955
- var support = swiper.support;
6956
- var params = swiper.params.zoom;
6957
- var zoom = swiper.zoom;
6958
- var gesture = zoom.gesture;
6959
- zoom.fakeGestureTouched = false;
6960
- zoom.fakeGestureMoved = false;
6961
-
6962
- if (!support.gestures) {
6963
- if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
6964
- return;
6965
- }
6966
-
6967
- zoom.fakeGestureTouched = true;
6968
- gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
6969
- }
6970
-
6971
- if (!gesture.$slideEl || !gesture.$slideEl.length) {
6972
- gesture.$slideEl = $(e.target).closest("." + swiper.params.slideClass);
6973
- if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
6974
- gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
6975
- gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
6976
- gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
6977
-
6978
- if (gesture.$imageWrapEl.length === 0) {
6979
- gesture.$imageEl = undefined;
6980
- return;
6981
- }
6982
- }
6983
-
6984
- if (gesture.$imageEl) {
6985
- gesture.$imageEl.transition(0);
6986
- }
6987
-
6988
- swiper.zoom.isScaling = true;
6989
- },
6990
- onGestureChange: function onGestureChange(e) {
6991
- var swiper = this;
6992
- var support = swiper.support;
6993
- var params = swiper.params.zoom;
6994
- var zoom = swiper.zoom;
6995
- var gesture = zoom.gesture;
6996
-
6997
- if (!support.gestures) {
6998
- if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
6999
- return;
7000
- }
7001
-
7002
- zoom.fakeGestureMoved = true;
7003
- gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
7004
- }
7005
-
7006
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
7007
- if (e.type === 'gesturechange') zoom.onGestureStart(e);
7008
- return;
7009
- }
7010
-
7011
- if (support.gestures) {
7012
- zoom.scale = e.scale * zoom.currentScale;
7013
- } else {
7014
- zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
7015
- }
7016
-
7017
- if (zoom.scale > gesture.maxRatio) {
7018
- zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
7019
- }
7020
-
7021
- if (zoom.scale < params.minRatio) {
7022
- zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
7023
- }
7024
-
7025
- gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7026
- },
7027
- onGestureEnd: function onGestureEnd(e) {
7028
- var swiper = this;
7029
- var device = swiper.device;
7030
- var support = swiper.support;
7031
- var params = swiper.params.zoom;
7032
- var zoom = swiper.zoom;
7033
- var gesture = zoom.gesture;
7034
-
7035
- if (!support.gestures) {
7036
- if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
7037
- return;
7038
- }
7039
-
7040
- if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
7041
- return;
7042
- }
7043
-
7044
- zoom.fakeGestureTouched = false;
7045
- zoom.fakeGestureMoved = false;
7046
- }
7047
-
7048
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7049
- zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
7050
- gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7051
- zoom.currentScale = zoom.scale;
7052
- zoom.isScaling = false;
7053
- if (zoom.scale === 1) gesture.$slideEl = undefined;
7054
- },
7055
- onTouchStart: function onTouchStart(e) {
7056
- var swiper = this;
7057
- var device = swiper.device;
7058
- var zoom = swiper.zoom;
7059
- var gesture = zoom.gesture,
7060
- image = zoom.image;
7061
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7062
- if (image.isTouched) return;
7063
- if (device.android && e.cancelable) e.preventDefault();
7064
- image.isTouched = true;
7065
- image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
7066
- image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
7067
- },
7068
- onTouchMove: function onTouchMove(e) {
7069
- var swiper = this;
7070
- var zoom = swiper.zoom;
7071
- var gesture = zoom.gesture,
7072
- image = zoom.image,
7073
- velocity = zoom.velocity;
7074
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7075
- swiper.allowClick = false;
7076
- if (!image.isTouched || !gesture.$slideEl) return;
7077
-
7078
- if (!image.isMoved) {
7079
- image.width = gesture.$imageEl[0].offsetWidth;
7080
- image.height = gesture.$imageEl[0].offsetHeight;
7081
- image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
7082
- image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
7083
- gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
7084
- gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
7085
- gesture.$imageWrapEl.transition(0);
7086
-
7087
- if (swiper.rtl) {
7088
- image.startX = -image.startX;
7089
- image.startY = -image.startY;
7090
- }
7091
- } // Define if we need image drag
7092
-
7093
-
7094
- var scaledWidth = image.width * zoom.scale;
7095
- var scaledHeight = image.height * zoom.scale;
7096
- if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
7097
- image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7098
- image.maxX = -image.minX;
7099
- image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7100
- image.maxY = -image.minY;
7101
- image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
7102
- image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
7103
-
7104
- if (!image.isMoved && !zoom.isScaling) {
7105
- 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)) {
7106
- image.isTouched = false;
7107
- return;
7108
- }
7109
-
7110
- 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)) {
7111
- image.isTouched = false;
7112
- return;
7113
- }
7114
- }
7115
-
7116
- if (e.cancelable) {
7117
- e.preventDefault();
7118
- }
7119
-
7120
- e.stopPropagation();
7121
- image.isMoved = true;
7122
- image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
7123
- image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
7124
-
7125
- if (image.currentX < image.minX) {
7126
- image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
7127
- }
7128
-
7129
- if (image.currentX > image.maxX) {
7130
- image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
7131
- }
7132
-
7133
- if (image.currentY < image.minY) {
7134
- image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
7135
- }
7136
-
7137
- if (image.currentY > image.maxY) {
7138
- image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
7139
- } // Velocity
7140
-
7141
-
7142
- if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
7143
- if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
7144
- if (!velocity.prevTime) velocity.prevTime = Date.now();
7145
- velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
7146
- velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
7147
- if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
7148
- if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
7149
- velocity.prevPositionX = image.touchesCurrent.x;
7150
- velocity.prevPositionY = image.touchesCurrent.y;
7151
- velocity.prevTime = Date.now();
7152
- gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7153
- },
7154
- onTouchEnd: function onTouchEnd() {
7155
- var swiper = this;
7156
- var zoom = swiper.zoom;
7157
- var gesture = zoom.gesture,
7158
- image = zoom.image,
7159
- velocity = zoom.velocity;
7160
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7161
-
7162
- if (!image.isTouched || !image.isMoved) {
7163
- image.isTouched = false;
7164
- image.isMoved = false;
7165
- return;
7166
- }
7167
-
7168
- image.isTouched = false;
7169
- image.isMoved = false;
7170
- var momentumDurationX = 300;
7171
- var momentumDurationY = 300;
7172
- var momentumDistanceX = velocity.x * momentumDurationX;
7173
- var newPositionX = image.currentX + momentumDistanceX;
7174
- var momentumDistanceY = velocity.y * momentumDurationY;
7175
- var newPositionY = image.currentY + momentumDistanceY; // Fix duration
7176
-
7177
- if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
7178
- if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
7179
- var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
7180
- image.currentX = newPositionX;
7181
- image.currentY = newPositionY; // Define if we need image drag
7182
-
7183
- var scaledWidth = image.width * zoom.scale;
7184
- var scaledHeight = image.height * zoom.scale;
7185
- image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
7186
- image.maxX = -image.minX;
7187
- image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
7188
- image.maxY = -image.minY;
7189
- image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
7190
- image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
7191
- gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
7192
- },
7193
- onTransitionEnd: function onTransitionEnd() {
7194
- var swiper = this;
7195
- var zoom = swiper.zoom;
7196
- var gesture = zoom.gesture;
7197
-
7198
- if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
7199
- if (gesture.$imageEl) {
7200
- gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
7201
- }
7202
-
7203
- if (gesture.$imageWrapEl) {
7204
- gesture.$imageWrapEl.transform('translate3d(0,0,0)');
7205
- }
7206
-
7207
- zoom.scale = 1;
7208
- zoom.currentScale = 1;
7209
- gesture.$slideEl = undefined;
7210
- gesture.$imageEl = undefined;
7211
- gesture.$imageWrapEl = undefined;
7212
- }
7213
- },
7214
- // Toggle Zoom
7215
- toggle: function toggle(e) {
7216
- var swiper = this;
7217
- var zoom = swiper.zoom;
7218
-
7219
- if (zoom.scale && zoom.scale !== 1) {
7220
- // Zoom Out
7221
- zoom.out();
7222
- } else {
7223
- // Zoom In
7224
- zoom.in(e);
7225
- }
7226
- },
7227
- in: function _in(e) {
7228
- var swiper = this;
7229
- var zoom = swiper.zoom;
7230
- var params = swiper.params.zoom;
7231
- var gesture = zoom.gesture,
7232
- image = zoom.image;
7233
-
7234
- if (!gesture.$slideEl) {
7235
- if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7236
- gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7237
- } else {
7238
- gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7239
- }
7240
-
7241
- gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7242
- gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7243
- }
7244
-
7245
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7246
- gesture.$slideEl.addClass("" + params.zoomedSlideClass);
7247
- var touchX;
7248
- var touchY;
7249
- var offsetX;
7250
- var offsetY;
7251
- var diffX;
7252
- var diffY;
7253
- var translateX;
7254
- var translateY;
7255
- var imageWidth;
7256
- var imageHeight;
7257
- var scaledWidth;
7258
- var scaledHeight;
7259
- var translateMinX;
7260
- var translateMinY;
7261
- var translateMaxX;
7262
- var translateMaxY;
7263
- var slideWidth;
7264
- var slideHeight;
7265
-
7266
- if (typeof image.touchesStart.x === 'undefined' && e) {
7267
- touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
7268
- touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
7269
- } else {
7270
- touchX = image.touchesStart.x;
7271
- touchY = image.touchesStart.y;
7272
- }
7273
-
7274
- zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7275
- zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
7276
-
7277
- if (e) {
7278
- slideWidth = gesture.$slideEl[0].offsetWidth;
7279
- slideHeight = gesture.$slideEl[0].offsetHeight;
7280
- offsetX = gesture.$slideEl.offset().left;
7281
- offsetY = gesture.$slideEl.offset().top;
7282
- diffX = offsetX + slideWidth / 2 - touchX;
7283
- diffY = offsetY + slideHeight / 2 - touchY;
7284
- imageWidth = gesture.$imageEl[0].offsetWidth;
7285
- imageHeight = gesture.$imageEl[0].offsetHeight;
7286
- scaledWidth = imageWidth * zoom.scale;
7287
- scaledHeight = imageHeight * zoom.scale;
7288
- translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
7289
- translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
7290
- translateMaxX = -translateMinX;
7291
- translateMaxY = -translateMinY;
7292
- translateX = diffX * zoom.scale;
7293
- translateY = diffY * zoom.scale;
7294
-
7295
- if (translateX < translateMinX) {
7296
- translateX = translateMinX;
7297
- }
7298
-
7299
- if (translateX > translateMaxX) {
7300
- translateX = translateMaxX;
7301
- }
7302
-
7303
- if (translateY < translateMinY) {
7304
- translateY = translateMinY;
7305
- }
7306
-
7307
- if (translateY > translateMaxY) {
7308
- translateY = translateMaxY;
7309
- }
7310
- } else {
7311
- translateX = 0;
7312
- translateY = 0;
7313
- }
7314
-
7315
- gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
7316
- gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
7317
- },
7318
- out: function out() {
7319
- var swiper = this;
7320
- var zoom = swiper.zoom;
7321
- var params = swiper.params.zoom;
7322
- var gesture = zoom.gesture;
7323
-
7324
- if (!gesture.$slideEl) {
7325
- if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
7326
- gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
7327
- } else {
7328
- gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
7329
- }
7330
-
7331
- gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
7332
- gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
7333
- }
7334
-
7335
- if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
7336
- zoom.scale = 1;
7337
- zoom.currentScale = 1;
7338
- gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
7339
- gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
7340
- gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
7341
- gesture.$slideEl = undefined;
7342
- },
7343
- toggleGestures: function toggleGestures(method) {
7344
- var swiper = this;
7345
- var zoom = swiper.zoom;
7346
- var selector = zoom.slideSelector,
7347
- passive = zoom.passiveListener;
7348
- swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
7349
- swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
7350
- swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
7351
- },
7352
- enableGestures: function enableGestures() {
7353
- if (this.zoom.gesturesEnabled) return;
7354
- this.zoom.gesturesEnabled = true;
7355
- this.zoom.toggleGestures('on');
7356
- },
7357
- disableGestures: function disableGestures() {
7358
- if (!this.zoom.gesturesEnabled) return;
7359
- this.zoom.gesturesEnabled = false;
7360
- this.zoom.toggleGestures('off');
7361
- },
7362
- // Attach/Detach Events
7363
- enable: function enable() {
7364
- var swiper = this;
7365
- var support = swiper.support;
7366
- var zoom = swiper.zoom;
7367
- if (zoom.enabled) return;
7368
- zoom.enabled = true;
7369
- var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7370
- passive: true,
7371
- capture: false
7372
- } : false;
7373
- var activeListenerWithCapture = support.passiveListener ? {
7374
- passive: false,
7375
- capture: true
7376
- } : true;
7377
- var slideSelector = "." + swiper.params.slideClass;
7378
- swiper.zoom.passiveListener = passiveListener;
7379
- swiper.zoom.slideSelector = slideSelector; // Scale image
7380
-
7381
- if (support.gestures) {
7382
- swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7383
- swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7384
- } else if (swiper.touchEvents.start === 'touchstart') {
7385
- swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7386
- swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7387
- swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7388
-
7389
- if (swiper.touchEvents.cancel) {
7390
- swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7391
- }
7392
- } // Move image
7393
-
7394
-
7395
- swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7396
- },
7397
- disable: function disable() {
7398
- var swiper = this;
7399
- var zoom = swiper.zoom;
7400
- if (!zoom.enabled) return;
7401
- var support = swiper.support;
7402
- swiper.zoom.enabled = false;
7403
- var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
7404
- passive: true,
7405
- capture: false
7406
- } : false;
7407
- var activeListenerWithCapture = support.passiveListener ? {
7408
- passive: false,
7409
- capture: true
7410
- } : true;
7411
- var slideSelector = "." + swiper.params.slideClass; // Scale image
7412
-
7413
- if (support.gestures) {
7414
- swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
7415
- swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
7416
- } else if (swiper.touchEvents.start === 'touchstart') {
7417
- swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
7418
- swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
7419
- swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
7420
-
7421
- if (swiper.touchEvents.cancel) {
7422
- swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
7423
- }
7424
- } // Move image
7425
-
7426
-
7427
- swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
7428
- }
7429
- };
7430
- var Zoom$1 = {
7431
- name: 'zoom',
7432
- params: {
7433
- zoom: {
7434
- enabled: false,
7435
- maxRatio: 3,
7436
- minRatio: 1,
7437
- toggle: true,
7438
- containerClass: 'swiper-zoom-container',
7439
- zoomedSlideClass: 'swiper-slide-zoomed'
7440
- }
7441
- },
7442
- create: function create() {
7443
- var swiper = this;
7444
- bindModuleMethods(swiper, {
7445
- zoom: _extends({
7446
- enabled: false,
7447
- scale: 1,
7448
- currentScale: 1,
7449
- isScaling: false,
7450
- gesture: {
7451
- $slideEl: undefined,
7452
- slideWidth: undefined,
7453
- slideHeight: undefined,
7454
- $imageEl: undefined,
7455
- $imageWrapEl: undefined,
7456
- maxRatio: 3
7457
- },
7458
- image: {
7459
- isTouched: undefined,
7460
- isMoved: undefined,
7461
- currentX: undefined,
7462
- currentY: undefined,
7463
- minX: undefined,
7464
- minY: undefined,
7465
- maxX: undefined,
7466
- maxY: undefined,
7467
- width: undefined,
7468
- height: undefined,
7469
- startX: undefined,
7470
- startY: undefined,
7471
- touchesStart: {},
7472
- touchesCurrent: {}
7473
- },
7474
- velocity: {
7475
- x: undefined,
7476
- y: undefined,
7477
- prevPositionX: undefined,
7478
- prevPositionY: undefined,
7479
- prevTime: undefined
7480
- }
7481
- }, Zoom)
7482
- });
7483
- var scale = 1;
7484
- Object.defineProperty(swiper.zoom, 'scale', {
7485
- get: function get() {
7486
- return scale;
7487
- },
7488
- set: function set(value) {
7489
- if (scale !== value) {
7490
- var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
7491
- var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
7492
- swiper.emit('zoomChange', value, imageEl, slideEl);
7493
- }
7494
-
7495
- scale = value;
7496
- }
7497
- });
7498
- },
7499
- on: {
7500
- init: function init(swiper) {
7501
- if (swiper.params.zoom.enabled) {
7502
- swiper.zoom.enable();
7503
- }
7504
- },
7505
- destroy: function destroy(swiper) {
7506
- swiper.zoom.disable();
7507
- },
7508
- touchStart: function touchStart(swiper, e) {
7509
- if (!swiper.zoom.enabled) return;
7510
- swiper.zoom.onTouchStart(e);
7511
- },
7512
- touchEnd: function touchEnd(swiper, e) {
7513
- if (!swiper.zoom.enabled) return;
7514
- swiper.zoom.onTouchEnd(e);
7515
- },
7516
- doubleTap: function doubleTap(swiper, e) {
7517
- if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
7518
- swiper.zoom.toggle(e);
7519
- }
7520
- },
7521
- transitionEnd: function transitionEnd(swiper) {
7522
- if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
7523
- swiper.zoom.onTransitionEnd();
7524
- }
7525
- },
7526
- slideChange: function slideChange(swiper) {
7527
- if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
7528
- swiper.zoom.onTransitionEnd();
7529
- }
7530
- }
7531
- }
7532
- };
7533
-
7534
- var Lazy = {
7535
- loadInSlide: function loadInSlide(index, loadInDuplicate) {
7536
- if (loadInDuplicate === void 0) {
7537
- loadInDuplicate = true;
7538
- }
7539
-
7540
- var swiper = this;
7541
- var params = swiper.params.lazy;
7542
- if (typeof index === 'undefined') return;
7543
- if (swiper.slides.length === 0) return;
7544
- var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
7545
- var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
7546
- var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
7547
-
7548
- if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
7549
- $images.push($slideEl[0]);
7550
- }
7551
-
7552
- if ($images.length === 0) return;
7553
- $images.each(function (imageEl) {
7554
- var $imageEl = $(imageEl);
7555
- $imageEl.addClass(params.loadingClass);
7556
- var background = $imageEl.attr('data-background');
7557
- var src = $imageEl.attr('data-src');
7558
- var srcset = $imageEl.attr('data-srcset');
7559
- var sizes = $imageEl.attr('data-sizes');
7560
- var $pictureEl = $imageEl.parent('picture');
7561
- swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
7562
- if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
7563
-
7564
- if (background) {
7565
- $imageEl.css('background-image', "url(\"" + background + "\")");
7566
- $imageEl.removeAttr('data-background');
7567
- } else {
7568
- if (srcset) {
7569
- $imageEl.attr('srcset', srcset);
7570
- $imageEl.removeAttr('data-srcset');
7571
- }
7572
-
7573
- if (sizes) {
7574
- $imageEl.attr('sizes', sizes);
7575
- $imageEl.removeAttr('data-sizes');
7576
- }
7577
-
7578
- if ($pictureEl.length) {
7579
- $pictureEl.children('source').each(function (sourceEl) {
7580
- var $source = $(sourceEl);
7581
-
7582
- if ($source.attr('data-srcset')) {
7583
- $source.attr('srcset', $source.attr('data-srcset'));
7584
- $source.removeAttr('data-srcset');
7585
- }
7586
- });
7587
- }
7588
-
7589
- if (src) {
7590
- $imageEl.attr('src', src);
7591
- $imageEl.removeAttr('data-src');
7592
- }
7593
- }
7594
-
7595
- $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
7596
- $slideEl.find("." + params.preloaderClass).remove();
7597
-
7598
- if (swiper.params.loop && loadInDuplicate) {
7599
- var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
7600
-
7601
- if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
7602
- var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
7603
- swiper.lazy.loadInSlide(originalSlide.index(), false);
7604
- } else {
7605
- var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
7606
- swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
7607
- }
7608
- }
7609
-
7610
- swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
7611
-
7612
- if (swiper.params.autoHeight) {
7613
- swiper.updateAutoHeight();
7614
- }
7615
- });
7616
- swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
7617
- });
7618
- },
7619
- load: function load() {
7620
- var swiper = this;
7621
- var $wrapperEl = swiper.$wrapperEl,
7622
- swiperParams = swiper.params,
7623
- slides = swiper.slides,
7624
- activeIndex = swiper.activeIndex;
7625
- var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
7626
- var params = swiperParams.lazy;
7627
- var slidesPerView = swiperParams.slidesPerView;
7628
-
7629
- if (slidesPerView === 'auto') {
7630
- slidesPerView = 0;
7631
- }
7632
-
7633
- function slideExist(index) {
7634
- if (isVirtual) {
7635
- if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
7636
- return true;
7637
- }
7638
- } else if (slides[index]) return true;
7639
-
7640
- return false;
7641
- }
7642
-
7643
- function slideIndex(slideEl) {
7644
- if (isVirtual) {
7645
- return $(slideEl).attr('data-swiper-slide-index');
7646
- }
7647
-
7648
- return $(slideEl).index();
7649
- }
7650
-
7651
- if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
7652
-
7653
- if (swiper.params.watchSlidesVisibility) {
7654
- $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
7655
- var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
7656
- swiper.lazy.loadInSlide(index);
7657
- });
7658
- } else if (slidesPerView > 1) {
7659
- for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
7660
- if (slideExist(i)) swiper.lazy.loadInSlide(i);
7661
- }
7662
- } else {
7663
- swiper.lazy.loadInSlide(activeIndex);
7664
- }
7665
-
7666
- if (params.loadPrevNext) {
7667
- if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
7668
- var amount = params.loadPrevNextAmount;
7669
- var spv = slidesPerView;
7670
- var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
7671
- var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
7672
-
7673
- for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
7674
- if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
7675
- } // Prev Slides
7676
-
7677
-
7678
- for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
7679
- if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
7680
- }
7681
- } else {
7682
- var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
7683
- if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
7684
- var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
7685
- if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
7686
- }
7687
- }
7688
- }
7689
- };
7690
- var Lazy$1 = {
7691
- name: 'lazy',
7692
- params: {
7693
- lazy: {
7694
- enabled: false,
7695
- loadPrevNext: false,
7696
- loadPrevNextAmount: 1,
7697
- loadOnTransitionStart: false,
7698
- elementClass: 'swiper-lazy',
7699
- loadingClass: 'swiper-lazy-loading',
7700
- loadedClass: 'swiper-lazy-loaded',
7701
- preloaderClass: 'swiper-lazy-preloader'
7702
- }
7703
- },
7704
- create: function create() {
7705
- var swiper = this;
7706
- bindModuleMethods(swiper, {
7707
- lazy: _extends({
7708
- initialImageLoaded: false
7709
- }, Lazy)
7710
- });
7711
- },
7712
- on: {
7713
- beforeInit: function beforeInit(swiper) {
7714
- if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
7715
- swiper.params.preloadImages = false;
7716
- }
7717
- },
7718
- init: function init(swiper) {
7719
- if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
7720
- swiper.lazy.load();
7721
- }
7722
- },
7723
- scroll: function scroll(swiper) {
7724
- if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
7725
- swiper.lazy.load();
7726
- }
7727
- },
7728
- resize: function resize(swiper) {
7729
- if (swiper.params.lazy.enabled) {
7730
- swiper.lazy.load();
7731
- }
7732
- },
7733
- scrollbarDragMove: function scrollbarDragMove(swiper) {
7734
- if (swiper.params.lazy.enabled) {
7735
- swiper.lazy.load();
7736
- }
7737
- },
7738
- transitionStart: function transitionStart(swiper) {
7739
- if (swiper.params.lazy.enabled) {
7740
- if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
7741
- swiper.lazy.load();
7742
- }
7743
- }
7744
- },
7745
- transitionEnd: function transitionEnd(swiper) {
7746
- if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
7747
- swiper.lazy.load();
7748
- }
7749
- },
7750
- slideChange: function slideChange(swiper) {
7751
- if (swiper.params.lazy.enabled && swiper.params.cssMode) {
7752
- swiper.lazy.load();
7753
- }
7754
- }
7755
- }
7756
- };
7757
-
7758
- var Controller = {
7759
- LinearSpline: function LinearSpline(x, y) {
7760
- var binarySearch = function search() {
7761
- var maxIndex;
7762
- var minIndex;
7763
- var guess;
7764
- return function (array, val) {
7765
- minIndex = -1;
7766
- maxIndex = array.length;
7767
-
7768
- while (maxIndex - minIndex > 1) {
7769
- guess = maxIndex + minIndex >> 1;
7770
-
7771
- if (array[guess] <= val) {
7772
- minIndex = guess;
7773
- } else {
7774
- maxIndex = guess;
7775
- }
7776
- }
7777
-
7778
- return maxIndex;
7779
- };
7780
- }();
7781
-
7782
- this.x = x;
7783
- this.y = y;
7784
- this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
7785
- // (x1,y1) is the known point before given value,
7786
- // (x3,y3) is the known point after given value.
7787
-
7788
- var i1;
7789
- var i3;
7790
-
7791
- this.interpolate = function interpolate(x2) {
7792
- if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
7793
-
7794
- i3 = binarySearch(this.x, x2);
7795
- i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
7796
- // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
7797
-
7798
- return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
7799
- };
7800
-
7801
- return this;
7802
- },
7803
- // xxx: for now i will just save one spline function to to
7804
- getInterpolateFunction: function getInterpolateFunction(c) {
7805
- var swiper = this;
7806
-
7807
- if (!swiper.controller.spline) {
7808
- swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
7809
- }
7810
- },
7811
- setTranslate: function setTranslate(_setTranslate, byController) {
7812
- var swiper = this;
7813
- var controlled = swiper.controller.control;
7814
- var multiplier;
7815
- var controlledTranslate;
7816
- var Swiper = swiper.constructor;
7817
-
7818
- function setControlledTranslate(c) {
7819
- // this will create an Interpolate function based on the snapGrids
7820
- // x is the Grid of the scrolled scroller and y will be the controlled scroller
7821
- // it makes sense to create this only once and recall it for the interpolation
7822
- // the function does a lot of value caching for performance
7823
- var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
7824
-
7825
- if (swiper.params.controller.by === 'slide') {
7826
- swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
7827
- // but it did not work out
7828
-
7829
- controlledTranslate = -swiper.controller.spline.interpolate(-translate);
7830
- }
7831
-
7832
- if (!controlledTranslate || swiper.params.controller.by === 'container') {
7833
- multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
7834
- controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
7835
- }
7836
-
7837
- if (swiper.params.controller.inverse) {
7838
- controlledTranslate = c.maxTranslate() - controlledTranslate;
7839
- }
7840
-
7841
- c.updateProgress(controlledTranslate);
7842
- c.setTranslate(controlledTranslate, swiper);
7843
- c.updateActiveIndex();
7844
- c.updateSlidesClasses();
7845
- }
7846
-
7847
- if (Array.isArray(controlled)) {
7848
- for (var i = 0; i < controlled.length; i += 1) {
7849
- if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7850
- setControlledTranslate(controlled[i]);
7851
- }
7852
- }
7853
- } else if (controlled instanceof Swiper && byController !== controlled) {
7854
- setControlledTranslate(controlled);
7855
- }
7856
- },
7857
- setTransition: function setTransition(duration, byController) {
7858
- var swiper = this;
7859
- var Swiper = swiper.constructor;
7860
- var controlled = swiper.controller.control;
7861
- var i;
7862
-
7863
- function setControlledTransition(c) {
7864
- c.setTransition(duration, swiper);
7865
-
7866
- if (duration !== 0) {
7867
- c.transitionStart();
7868
-
7869
- if (c.params.autoHeight) {
7870
- nextTick(function () {
7871
- c.updateAutoHeight();
7872
- });
7873
- }
7874
-
7875
- c.$wrapperEl.transitionEnd(function () {
7876
- if (!controlled) return;
7877
-
7878
- if (c.params.loop && swiper.params.controller.by === 'slide') {
7879
- c.loopFix();
7880
- }
7881
-
7882
- c.transitionEnd();
7883
- });
7884
- }
7885
- }
7886
-
7887
- if (Array.isArray(controlled)) {
7888
- for (i = 0; i < controlled.length; i += 1) {
7889
- if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
7890
- setControlledTransition(controlled[i]);
7891
- }
7892
- }
7893
- } else if (controlled instanceof Swiper && byController !== controlled) {
7894
- setControlledTransition(controlled);
7895
- }
7896
- }
7897
- };
7898
- var Controller$1 = {
7899
- name: 'controller',
7900
- params: {
7901
- controller: {
7902
- control: undefined,
7903
- inverse: false,
7904
- by: 'slide' // or 'container'
7905
-
7906
- }
7907
- },
7908
- create: function create() {
7909
- var swiper = this;
7910
- bindModuleMethods(swiper, {
7911
- controller: _extends({
7912
- control: swiper.params.controller.control
7913
- }, Controller)
7914
- });
7915
- },
7916
- on: {
7917
- update: function update(swiper) {
7918
- if (!swiper.controller.control) return;
7919
-
7920
- if (swiper.controller.spline) {
7921
- swiper.controller.spline = undefined;
7922
- delete swiper.controller.spline;
7923
- }
7924
- },
7925
- resize: function resize(swiper) {
7926
- if (!swiper.controller.control) return;
7927
-
7928
- if (swiper.controller.spline) {
7929
- swiper.controller.spline = undefined;
7930
- delete swiper.controller.spline;
7931
- }
7932
- },
7933
- observerUpdate: function observerUpdate(swiper) {
7934
- if (!swiper.controller.control) return;
7935
-
7936
- if (swiper.controller.spline) {
7937
- swiper.controller.spline = undefined;
7938
- delete swiper.controller.spline;
7939
- }
7940
- },
7941
- setTranslate: function setTranslate(swiper, translate, byController) {
7942
- if (!swiper.controller.control) return;
7943
- swiper.controller.setTranslate(translate, byController);
7944
- },
7945
- setTransition: function setTransition(swiper, duration, byController) {
7946
- if (!swiper.controller.control) return;
7947
- swiper.controller.setTransition(duration, byController);
7948
- }
7949
- }
7950
- };
7951
-
7952
- var A11y = {
7953
- getRandomNumber: function getRandomNumber(size) {
7954
- if (size === void 0) {
7955
- size = 16;
7956
- }
7957
-
7958
- var randomChar = function randomChar() {
7959
- return Math.round(16 * Math.random()).toString(16);
7960
- };
7961
-
7962
- return 'x'.repeat(size).replace(/x/g, randomChar);
7963
- },
7964
- makeElFocusable: function makeElFocusable($el) {
7965
- $el.attr('tabIndex', '0');
7966
- return $el;
7967
- },
7968
- makeElNotFocusable: function makeElNotFocusable($el) {
7969
- $el.attr('tabIndex', '-1');
7970
- return $el;
7971
- },
7972
- addElRole: function addElRole($el, role) {
7973
- $el.attr('role', role);
7974
- return $el;
7975
- },
7976
- addElRoleDescription: function addElRoleDescription($el, description) {
7977
- $el.attr('aria-role-description', description);
7978
- return $el;
7979
- },
7980
- addElControls: function addElControls($el, controls) {
7981
- $el.attr('aria-controls', controls);
7982
- return $el;
7983
- },
7984
- addElLabel: function addElLabel($el, label) {
7985
- $el.attr('aria-label', label);
7986
- return $el;
7987
- },
7988
- addElId: function addElId($el, id) {
7989
- $el.attr('id', id);
7990
- return $el;
7991
- },
7992
- addElLive: function addElLive($el, live) {
7993
- $el.attr('aria-live', live);
7994
- return $el;
7995
- },
7996
- disableEl: function disableEl($el) {
7997
- $el.attr('aria-disabled', true);
7998
- return $el;
7999
- },
8000
- enableEl: function enableEl($el) {
8001
- $el.attr('aria-disabled', false);
8002
- return $el;
8003
- },
8004
- onEnterKey: function onEnterKey(e) {
8005
- var swiper = this;
8006
- var params = swiper.params.a11y;
8007
- if (e.keyCode !== 13) return;
8008
- var $targetEl = $(e.target);
8009
-
8010
- if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
8011
- if (!(swiper.isEnd && !swiper.params.loop)) {
8012
- swiper.slideNext();
8013
- }
8014
-
8015
- if (swiper.isEnd) {
8016
- swiper.a11y.notify(params.lastSlideMessage);
8017
- } else {
8018
- swiper.a11y.notify(params.nextSlideMessage);
8019
- }
8020
- }
8021
-
8022
- if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
8023
- if (!(swiper.isBeginning && !swiper.params.loop)) {
8024
- swiper.slidePrev();
8025
- }
8026
-
8027
- if (swiper.isBeginning) {
8028
- swiper.a11y.notify(params.firstSlideMessage);
8029
- } else {
8030
- swiper.a11y.notify(params.prevSlideMessage);
8031
- }
8032
- }
8033
-
8034
- if (swiper.pagination && $targetEl.is("." + swiper.params.pagination.bulletClass)) {
8035
- $targetEl[0].click();
8036
- }
8037
- },
8038
- notify: function notify(message) {
8039
- var swiper = this;
8040
- var notification = swiper.a11y.liveRegion;
8041
- if (notification.length === 0) return;
8042
- notification.html('');
8043
- notification.html(message);
8044
- },
8045
- updateNavigation: function updateNavigation() {
8046
- var swiper = this;
8047
- if (swiper.params.loop || !swiper.navigation) return;
8048
- var _swiper$navigation = swiper.navigation,
8049
- $nextEl = _swiper$navigation.$nextEl,
8050
- $prevEl = _swiper$navigation.$prevEl;
8051
-
8052
- if ($prevEl && $prevEl.length > 0) {
8053
- if (swiper.isBeginning) {
8054
- swiper.a11y.disableEl($prevEl);
8055
- swiper.a11y.makeElNotFocusable($prevEl);
8056
- } else {
8057
- swiper.a11y.enableEl($prevEl);
8058
- swiper.a11y.makeElFocusable($prevEl);
8059
- }
8060
- }
8061
-
8062
- if ($nextEl && $nextEl.length > 0) {
8063
- if (swiper.isEnd) {
8064
- swiper.a11y.disableEl($nextEl);
8065
- swiper.a11y.makeElNotFocusable($nextEl);
8066
- } else {
8067
- swiper.a11y.enableEl($nextEl);
8068
- swiper.a11y.makeElFocusable($nextEl);
8069
- }
8070
- }
8071
- },
8072
- updatePagination: function updatePagination() {
8073
- var swiper = this;
8074
- var params = swiper.params.a11y;
8075
-
8076
- if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8077
- swiper.pagination.bullets.each(function (bulletEl) {
8078
- var $bulletEl = $(bulletEl);
8079
- swiper.a11y.makeElFocusable($bulletEl);
8080
-
8081
- if (!swiper.params.pagination.renderBullet) {
8082
- swiper.a11y.addElRole($bulletEl, 'button');
8083
- swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
8084
- }
8085
- });
8086
- }
8087
- },
8088
- init: function init() {
8089
- var swiper = this;
8090
- var params = swiper.params.a11y;
8091
- swiper.$el.append(swiper.a11y.liveRegion); // Container
8092
-
8093
- var $containerEl = swiper.$el;
8094
-
8095
- if (params.containerRoleDescriptionMessage) {
8096
- swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
8097
- }
8098
-
8099
- if (params.containerMessage) {
8100
- swiper.a11y.addElLabel($containerEl, params.containerMessage);
8101
- } // Wrapper
8102
-
8103
-
8104
- var $wrapperEl = swiper.$wrapperEl;
8105
- var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
8106
- var live;
8107
- swiper.a11y.addElId($wrapperEl, wrapperId);
8108
-
8109
- if (swiper.params.autoplay && swiper.params.autoplay.enabled) {
8110
- live = 'off';
8111
- } else {
8112
- live = 'polite';
8113
- }
8114
-
8115
- swiper.a11y.addElLive($wrapperEl, live); // Slide
8116
-
8117
- if (params.itemRoleDescriptionMessage) {
8118
- swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
8119
- }
8120
-
8121
- swiper.a11y.addElRole($(swiper.slides), 'group');
8122
- swiper.slides.each(function (slideEl) {
8123
- var $slideEl = $(slideEl);
8124
- swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + " / " + swiper.slides.length);
8125
- }); // Navigation
8126
-
8127
- var $nextEl;
8128
- var $prevEl;
8129
-
8130
- if (swiper.navigation && swiper.navigation.$nextEl) {
8131
- $nextEl = swiper.navigation.$nextEl;
8132
- }
8133
-
8134
- if (swiper.navigation && swiper.navigation.$prevEl) {
8135
- $prevEl = swiper.navigation.$prevEl;
8136
- }
8137
-
8138
- if ($nextEl && $nextEl.length) {
8139
- swiper.a11y.makeElFocusable($nextEl);
8140
-
8141
- if ($nextEl[0].tagName !== 'BUTTON') {
8142
- swiper.a11y.addElRole($nextEl, 'button');
8143
- $nextEl.on('keydown', swiper.a11y.onEnterKey);
8144
- }
8145
-
8146
- swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
8147
- swiper.a11y.addElControls($nextEl, wrapperId);
8148
- }
8149
-
8150
- if ($prevEl && $prevEl.length) {
8151
- swiper.a11y.makeElFocusable($prevEl);
8152
-
8153
- if ($prevEl[0].tagName !== 'BUTTON') {
8154
- swiper.a11y.addElRole($prevEl, 'button');
8155
- $prevEl.on('keydown', swiper.a11y.onEnterKey);
8156
- }
8157
-
8158
- swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
8159
- swiper.a11y.addElControls($prevEl, wrapperId);
8160
- } // Pagination
8161
-
8162
-
8163
- if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8164
- swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8165
- }
8166
- },
8167
- destroy: function destroy() {
8168
- var swiper = this;
8169
- if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
8170
- var $nextEl;
8171
- var $prevEl;
8172
-
8173
- if (swiper.navigation && swiper.navigation.$nextEl) {
8174
- $nextEl = swiper.navigation.$nextEl;
8175
- }
8176
-
8177
- if (swiper.navigation && swiper.navigation.$prevEl) {
8178
- $prevEl = swiper.navigation.$prevEl;
8179
- }
8180
-
8181
- if ($nextEl) {
8182
- $nextEl.off('keydown', swiper.a11y.onEnterKey);
8183
- }
8184
-
8185
- if ($prevEl) {
8186
- $prevEl.off('keydown', swiper.a11y.onEnterKey);
8187
- } // Pagination
8188
-
8189
-
8190
- if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
8191
- swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);
8192
- }
8193
- }
8194
- };
8195
- var A11y$1 = {
8196
- name: 'a11y',
8197
- params: {
8198
- a11y: {
8199
- enabled: true,
8200
- notificationClass: 'swiper-notification',
8201
- prevSlideMessage: 'Previous slide',
8202
- nextSlideMessage: 'Next slide',
8203
- firstSlideMessage: 'This is the first slide',
8204
- lastSlideMessage: 'This is the last slide',
8205
- paginationBulletMessage: 'Go to slide {{index}}',
8206
- containerMessage: null,
8207
- containerRoleDescriptionMessage: null,
8208
- itemRoleDescriptionMessage: null
8209
- }
8210
- },
8211
- create: function create() {
8212
- var swiper = this;
8213
- bindModuleMethods(swiper, {
8214
- a11y: _extends(_extends({}, A11y), {}, {
8215
- liveRegion: $("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
8216
- })
8217
- });
8218
- },
8219
- on: {
8220
- afterInit: function afterInit(swiper) {
8221
- if (!swiper.params.a11y.enabled) return;
8222
- swiper.a11y.init();
8223
- swiper.a11y.updateNavigation();
8224
- },
8225
- toEdge: function toEdge(swiper) {
8226
- if (!swiper.params.a11y.enabled) return;
8227
- swiper.a11y.updateNavigation();
8228
- },
8229
- fromEdge: function fromEdge(swiper) {
8230
- if (!swiper.params.a11y.enabled) return;
8231
- swiper.a11y.updateNavigation();
8232
- },
8233
- paginationUpdate: function paginationUpdate(swiper) {
8234
- if (!swiper.params.a11y.enabled) return;
8235
- swiper.a11y.updatePagination();
8236
- },
8237
- destroy: function destroy(swiper) {
8238
- if (!swiper.params.a11y.enabled) return;
8239
- swiper.a11y.destroy();
8240
- }
8241
- }
8242
- };
8243
-
8244
- var History = {
8245
- init: function init() {
8246
- var swiper = this;
8247
- var window = getWindow();
8248
- if (!swiper.params.history) return;
8249
-
8250
- if (!window.history || !window.history.pushState) {
8251
- swiper.params.history.enabled = false;
8252
- swiper.params.hashNavigation.enabled = true;
8253
- return;
8254
- }
8255
-
8256
- var history = swiper.history;
8257
- history.initialized = true;
8258
- history.paths = History.getPathValues(swiper.params.url);
8259
- if (!history.paths.key && !history.paths.value) return;
8260
- history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
8261
-
8262
- if (!swiper.params.history.replaceState) {
8263
- window.addEventListener('popstate', swiper.history.setHistoryPopState);
8264
- }
8265
- },
8266
- destroy: function destroy() {
8267
- var swiper = this;
8268
- var window = getWindow();
8269
-
8270
- if (!swiper.params.history.replaceState) {
8271
- window.removeEventListener('popstate', swiper.history.setHistoryPopState);
8272
- }
8273
- },
8274
- setHistoryPopState: function setHistoryPopState() {
8275
- var swiper = this;
8276
- swiper.history.paths = History.getPathValues(swiper.params.url);
8277
- swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
8278
- },
8279
- getPathValues: function getPathValues(urlOverride) {
8280
- var window = getWindow();
8281
- var location;
8282
-
8283
- if (urlOverride) {
8284
- location = new URL(urlOverride);
8285
- } else {
8286
- location = window.location;
8287
- }
8288
-
8289
- var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
8290
- return part !== '';
8291
- });
8292
- var total = pathArray.length;
8293
- var key = pathArray[total - 2];
8294
- var value = pathArray[total - 1];
8295
- return {
8296
- key: key,
8297
- value: value
8298
- };
8299
- },
8300
- setHistory: function setHistory(key, index) {
8301
- var swiper = this;
8302
- var window = getWindow();
8303
- if (!swiper.history.initialized || !swiper.params.history.enabled) return;
8304
- var location;
8305
-
8306
- if (swiper.params.url) {
8307
- location = new URL(swiper.params.url);
8308
- } else {
8309
- location = window.location;
8310
- }
8311
-
8312
- var slide = swiper.slides.eq(index);
8313
- var value = History.slugify(slide.attr('data-history'));
8314
-
8315
- if (!location.pathname.includes(key)) {
8316
- value = key + "/" + value;
8317
- }
8318
-
8319
- var currentState = window.history.state;
8320
-
8321
- if (currentState && currentState.value === value) {
8322
- return;
8323
- }
8324
-
8325
- if (swiper.params.history.replaceState) {
8326
- window.history.replaceState({
8327
- value: value
8328
- }, null, value);
8329
- } else {
8330
- window.history.pushState({
8331
- value: value
8332
- }, null, value);
8333
- }
8334
- },
8335
- slugify: function slugify(text) {
8336
- return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
8337
- },
8338
- scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
8339
- var swiper = this;
8340
-
8341
- if (value) {
8342
- for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8343
- var slide = swiper.slides.eq(i);
8344
- var slideHistory = History.slugify(slide.attr('data-history'));
8345
-
8346
- if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8347
- var index = slide.index();
8348
- swiper.slideTo(index, speed, runCallbacks);
8349
- }
8350
- }
8351
- } else {
8352
- swiper.slideTo(0, speed, runCallbacks);
8353
- }
8354
- }
8355
- };
8356
- var History$1 = {
8357
- name: 'history',
8358
- params: {
8359
- history: {
8360
- enabled: false,
8361
- replaceState: false,
8362
- key: 'slides'
8363
- }
8364
- },
8365
- create: function create() {
8366
- var swiper = this;
8367
- bindModuleMethods(swiper, {
8368
- history: _extends({}, History)
8369
- });
8370
- },
8371
- on: {
8372
- init: function init(swiper) {
8373
- if (swiper.params.history.enabled) {
8374
- swiper.history.init();
8375
- }
8376
- },
8377
- destroy: function destroy(swiper) {
8378
- if (swiper.params.history.enabled) {
8379
- swiper.history.destroy();
8380
- }
8381
- },
8382
- transitionEnd: function transitionEnd(swiper) {
8383
- if (swiper.history.initialized) {
8384
- swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8385
- }
8386
- },
8387
- slideChange: function slideChange(swiper) {
8388
- if (swiper.history.initialized && swiper.params.cssMode) {
8389
- swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
8390
- }
8391
- }
8392
- }
8393
- };
8394
-
8395
- var HashNavigation = {
8396
- onHashCange: function onHashCange() {
8397
- var swiper = this;
8398
- var document = getDocument();
8399
- swiper.emit('hashChange');
8400
- var newHash = document.location.hash.replace('#', '');
8401
- var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
8402
-
8403
- if (newHash !== activeSlideHash) {
8404
- var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
8405
- if (typeof newIndex === 'undefined') return;
8406
- swiper.slideTo(newIndex);
8407
- }
8408
- },
8409
- setHash: function setHash() {
8410
- var swiper = this;
8411
- var window = getWindow();
8412
- var document = getDocument();
8413
- if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
8414
-
8415
- if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
8416
- window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
8417
- swiper.emit('hashSet');
8418
- } else {
8419
- var slide = swiper.slides.eq(swiper.activeIndex);
8420
- var hash = slide.attr('data-hash') || slide.attr('data-history');
8421
- document.location.hash = hash || '';
8422
- swiper.emit('hashSet');
8423
- }
8424
- },
8425
- init: function init() {
8426
- var swiper = this;
8427
- var document = getDocument();
8428
- var window = getWindow();
8429
- if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
8430
- swiper.hashNavigation.initialized = true;
8431
- var hash = document.location.hash.replace('#', '');
8432
-
8433
- if (hash) {
8434
- var speed = 0;
8435
-
8436
- for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
8437
- var slide = swiper.slides.eq(i);
8438
- var slideHash = slide.attr('data-hash') || slide.attr('data-history');
8439
-
8440
- if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
8441
- var index = slide.index();
8442
- swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
8443
- }
8444
- }
8445
- }
8446
-
8447
- if (swiper.params.hashNavigation.watchState) {
8448
- $(window).on('hashchange', swiper.hashNavigation.onHashCange);
8449
- }
8450
- },
8451
- destroy: function destroy() {
8452
- var swiper = this;
8453
- var window = getWindow();
8454
-
8455
- if (swiper.params.hashNavigation.watchState) {
8456
- $(window).off('hashchange', swiper.hashNavigation.onHashCange);
8457
- }
8458
- }
8459
- };
8460
- var HashNavigation$1 = {
8461
- name: 'hash-navigation',
8462
- params: {
8463
- hashNavigation: {
8464
- enabled: false,
8465
- replaceState: false,
8466
- watchState: false
8467
- }
8468
- },
8469
- create: function create() {
8470
- var swiper = this;
8471
- bindModuleMethods(swiper, {
8472
- hashNavigation: _extends({
8473
- initialized: false
8474
- }, HashNavigation)
8475
- });
8476
- },
8477
- on: {
8478
- init: function init(swiper) {
8479
- if (swiper.params.hashNavigation.enabled) {
8480
- swiper.hashNavigation.init();
8481
- }
8482
- },
8483
- destroy: function destroy(swiper) {
8484
- if (swiper.params.hashNavigation.enabled) {
8485
- swiper.hashNavigation.destroy();
8486
- }
8487
- },
8488
- transitionEnd: function transitionEnd(swiper) {
8489
- if (swiper.hashNavigation.initialized) {
8490
- swiper.hashNavigation.setHash();
8491
- }
8492
- },
8493
- slideChange: function slideChange(swiper) {
8494
- if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
8495
- swiper.hashNavigation.setHash();
8496
- }
8497
- }
8498
- }
8499
- };
8500
-
8501
- var Autoplay = {
8502
- run: function run() {
8503
- var swiper = this;
8504
- var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
8505
- var delay = swiper.params.autoplay.delay;
8506
-
8507
- if ($activeSlideEl.attr('data-swiper-autoplay')) {
8508
- delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
8509
- }
8510
-
8511
- clearTimeout(swiper.autoplay.timeout);
8512
- swiper.autoplay.timeout = nextTick(function () {
8513
- if (swiper.params.autoplay.reverseDirection) {
8514
- if (swiper.params.loop) {
8515
- swiper.loopFix();
8516
- swiper.slidePrev(swiper.params.speed, true, true);
8517
- swiper.emit('autoplay');
8518
- } else if (!swiper.isBeginning) {
8519
- swiper.slidePrev(swiper.params.speed, true, true);
8520
- swiper.emit('autoplay');
8521
- } else if (!swiper.params.autoplay.stopOnLastSlide) {
8522
- swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
8523
- swiper.emit('autoplay');
8524
- } else {
8525
- swiper.autoplay.stop();
8526
- }
8527
- } else if (swiper.params.loop) {
8528
- swiper.loopFix();
8529
- swiper.slideNext(swiper.params.speed, true, true);
8530
- swiper.emit('autoplay');
8531
- } else if (!swiper.isEnd) {
8532
- swiper.slideNext(swiper.params.speed, true, true);
8533
- swiper.emit('autoplay');
8534
- } else if (!swiper.params.autoplay.stopOnLastSlide) {
8535
- swiper.slideTo(0, swiper.params.speed, true, true);
8536
- swiper.emit('autoplay');
8537
- } else {
8538
- swiper.autoplay.stop();
8539
- }
8540
-
8541
- if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();
8542
- }, delay);
8543
- },
8544
- start: function start() {
8545
- var swiper = this;
8546
- if (typeof swiper.autoplay.timeout !== 'undefined') return false;
8547
- if (swiper.autoplay.running) return false;
8548
- swiper.autoplay.running = true;
8549
- swiper.emit('autoplayStart');
8550
- swiper.autoplay.run();
8551
- return true;
8552
- },
8553
- stop: function stop() {
8554
- var swiper = this;
8555
- if (!swiper.autoplay.running) return false;
8556
- if (typeof swiper.autoplay.timeout === 'undefined') return false;
8557
-
8558
- if (swiper.autoplay.timeout) {
8559
- clearTimeout(swiper.autoplay.timeout);
8560
- swiper.autoplay.timeout = undefined;
8561
- }
8562
-
8563
- swiper.autoplay.running = false;
8564
- swiper.emit('autoplayStop');
8565
- return true;
8566
- },
8567
- pause: function pause(speed) {
8568
- var swiper = this;
8569
- if (!swiper.autoplay.running) return;
8570
- if (swiper.autoplay.paused) return;
8571
- if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
8572
- swiper.autoplay.paused = true;
8573
-
8574
- if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
8575
- swiper.autoplay.paused = false;
8576
- swiper.autoplay.run();
8577
- } else {
8578
- swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8579
- swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8580
- }
8581
- },
8582
- onVisibilityChange: function onVisibilityChange() {
8583
- var swiper = this;
8584
- var document = getDocument();
8585
-
8586
- if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
8587
- swiper.autoplay.pause();
8588
- }
8589
-
8590
- if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
8591
- swiper.autoplay.run();
8592
- swiper.autoplay.paused = false;
8593
- }
8594
- },
8595
- onTransitionEnd: function onTransitionEnd(e) {
8596
- var swiper = this;
8597
- if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
8598
- if (e.target !== swiper.$wrapperEl[0]) return;
8599
- swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
8600
- swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
8601
- swiper.autoplay.paused = false;
8602
-
8603
- if (!swiper.autoplay.running) {
8604
- swiper.autoplay.stop();
8605
- } else {
8606
- swiper.autoplay.run();
8607
- }
8608
- }
8609
- };
8610
- var Autoplay$1 = {
8611
- name: 'autoplay',
8612
- params: {
8613
- autoplay: {
8614
- enabled: false,
8615
- delay: 3000,
8616
- waitForTransition: true,
8617
- disableOnInteraction: true,
8618
- stopOnLastSlide: false,
8619
- reverseDirection: false
8620
- }
8621
- },
8622
- create: function create() {
8623
- var swiper = this;
8624
- bindModuleMethods(swiper, {
8625
- autoplay: _extends(_extends({}, Autoplay), {}, {
8626
- running: false,
8627
- paused: false
8628
- })
8629
- });
8630
- },
8631
- on: {
8632
- init: function init(swiper) {
8633
- if (swiper.params.autoplay.enabled) {
8634
- swiper.autoplay.start();
8635
- var document = getDocument();
8636
- document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8637
- }
8638
- },
8639
- beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
8640
- if (swiper.autoplay.running) {
8641
- if (internal || !swiper.params.autoplay.disableOnInteraction) {
8642
- swiper.autoplay.pause(speed);
8643
- } else {
8644
- swiper.autoplay.stop();
8645
- }
8646
- }
8647
- },
8648
- sliderFirstMove: function sliderFirstMove(swiper) {
8649
- if (swiper.autoplay.running) {
8650
- if (swiper.params.autoplay.disableOnInteraction) {
8651
- swiper.autoplay.stop();
8652
- } else {
8653
- swiper.autoplay.pause();
8654
- }
8655
- }
8656
- },
8657
- touchEnd: function touchEnd(swiper) {
8658
- if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
8659
- swiper.autoplay.run();
8660
- }
8661
- },
8662
- destroy: function destroy(swiper) {
8663
- if (swiper.autoplay.running) {
8664
- swiper.autoplay.stop();
8665
- }
8666
-
8667
- var document = getDocument();
8668
- document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
8669
- }
8670
- }
8671
- };
8672
-
8673
- var Fade = {
8674
- setTranslate: function setTranslate() {
8675
- var swiper = this;
8676
- var slides = swiper.slides;
8677
-
8678
- for (var i = 0; i < slides.length; i += 1) {
8679
- var $slideEl = swiper.slides.eq(i);
8680
- var offset = $slideEl[0].swiperSlideOffset;
8681
- var tx = -offset;
8682
- if (!swiper.params.virtualTranslate) tx -= swiper.translate;
8683
- var ty = 0;
8684
-
8685
- if (!swiper.isHorizontal()) {
8686
- ty = tx;
8687
- tx = 0;
8688
- }
8689
-
8690
- var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
8691
- $slideEl.css({
8692
- opacity: slideOpacity
8693
- }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
8694
- }
8695
- },
8696
- setTransition: function setTransition(duration) {
8697
- var swiper = this;
8698
- var slides = swiper.slides,
8699
- $wrapperEl = swiper.$wrapperEl;
8700
- slides.transition(duration);
8701
-
8702
- if (swiper.params.virtualTranslate && duration !== 0) {
8703
- var eventTriggered = false;
8704
- slides.transitionEnd(function () {
8705
- if (eventTriggered) return;
8706
- if (!swiper || swiper.destroyed) return;
8707
- eventTriggered = true;
8708
- swiper.animating = false;
8709
- var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
8710
-
8711
- for (var i = 0; i < triggerEvents.length; i += 1) {
8712
- $wrapperEl.trigger(triggerEvents[i]);
8713
- }
8714
- });
8715
- }
8716
- }
8717
- };
8718
- var EffectFade = {
8719
- name: 'effect-fade',
8720
- params: {
8721
- fadeEffect: {
8722
- crossFade: false
8723
- }
8724
- },
8725
- create: function create() {
8726
- var swiper = this;
8727
- bindModuleMethods(swiper, {
8728
- fadeEffect: _extends({}, Fade)
8729
- });
8730
- },
8731
- on: {
8732
- beforeInit: function beforeInit(swiper) {
8733
- if (swiper.params.effect !== 'fade') return;
8734
- swiper.classNames.push(swiper.params.containerModifierClass + "fade");
8735
- var overwriteParams = {
8736
- slidesPerView: 1,
8737
- slidesPerColumn: 1,
8738
- slidesPerGroup: 1,
8739
- watchSlidesProgress: true,
8740
- spaceBetween: 0,
8741
- virtualTranslate: true
8742
- };
8743
- extend$1(swiper.params, overwriteParams);
8744
- extend$1(swiper.originalParams, overwriteParams);
8745
- },
8746
- setTranslate: function setTranslate(swiper) {
8747
- if (swiper.params.effect !== 'fade') return;
8748
- swiper.fadeEffect.setTranslate();
8749
- },
8750
- setTransition: function setTransition(swiper, duration) {
8751
- if (swiper.params.effect !== 'fade') return;
8752
- swiper.fadeEffect.setTransition(duration);
8753
- }
8754
- }
8755
- };
8756
-
8757
- var Cube = {
8758
- setTranslate: function setTranslate() {
8759
- var swiper = this;
8760
- var $el = swiper.$el,
8761
- $wrapperEl = swiper.$wrapperEl,
8762
- slides = swiper.slides,
8763
- swiperWidth = swiper.width,
8764
- swiperHeight = swiper.height,
8765
- rtl = swiper.rtlTranslate,
8766
- swiperSize = swiper.size,
8767
- browser = swiper.browser;
8768
- var params = swiper.params.cubeEffect;
8769
- var isHorizontal = swiper.isHorizontal();
8770
- var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
8771
- var wrapperRotate = 0;
8772
- var $cubeShadowEl;
8773
-
8774
- if (params.shadow) {
8775
- if (isHorizontal) {
8776
- $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
8777
-
8778
- if ($cubeShadowEl.length === 0) {
8779
- $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8780
- $wrapperEl.append($cubeShadowEl);
8781
- }
8782
-
8783
- $cubeShadowEl.css({
8784
- height: swiperWidth + "px"
8785
- });
8786
- } else {
8787
- $cubeShadowEl = $el.find('.swiper-cube-shadow');
8788
-
8789
- if ($cubeShadowEl.length === 0) {
8790
- $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>');
8791
- $el.append($cubeShadowEl);
8792
- }
8793
- }
8794
- }
8795
-
8796
- for (var i = 0; i < slides.length; i += 1) {
8797
- var $slideEl = slides.eq(i);
8798
- var slideIndex = i;
8799
-
8800
- if (isVirtual) {
8801
- slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
8802
- }
8803
-
8804
- var slideAngle = slideIndex * 90;
8805
- var round = Math.floor(slideAngle / 360);
8806
-
8807
- if (rtl) {
8808
- slideAngle = -slideAngle;
8809
- round = Math.floor(-slideAngle / 360);
8810
- }
8811
-
8812
- var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8813
- var tx = 0;
8814
- var ty = 0;
8815
- var tz = 0;
8816
-
8817
- if (slideIndex % 4 === 0) {
8818
- tx = -round * 4 * swiperSize;
8819
- tz = 0;
8820
- } else if ((slideIndex - 1) % 4 === 0) {
8821
- tx = 0;
8822
- tz = -round * 4 * swiperSize;
8823
- } else if ((slideIndex - 2) % 4 === 0) {
8824
- tx = swiperSize + round * 4 * swiperSize;
8825
- tz = swiperSize;
8826
- } else if ((slideIndex - 3) % 4 === 0) {
8827
- tx = -swiperSize;
8828
- tz = 3 * swiperSize + swiperSize * 4 * round;
8829
- }
8830
-
8831
- if (rtl) {
8832
- tx = -tx;
8833
- }
8834
-
8835
- if (!isHorizontal) {
8836
- ty = tx;
8837
- tx = 0;
8838
- }
8839
-
8840
- var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
8841
-
8842
- if (progress <= 1 && progress > -1) {
8843
- wrapperRotate = slideIndex * 90 + progress * 90;
8844
- if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
8845
- }
8846
-
8847
- $slideEl.transform(transform);
8848
-
8849
- if (params.slideShadows) {
8850
- // Set shadows
8851
- var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8852
- var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8853
-
8854
- if (shadowBefore.length === 0) {
8855
- shadowBefore = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
8856
- $slideEl.append(shadowBefore);
8857
- }
8858
-
8859
- if (shadowAfter.length === 0) {
8860
- shadowAfter = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
8861
- $slideEl.append(shadowAfter);
8862
- }
8863
-
8864
- if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8865
- if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8866
- }
8867
- }
8868
-
8869
- $wrapperEl.css({
8870
- '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8871
- '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8872
- '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
8873
- 'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
8874
- });
8875
-
8876
- if (params.shadow) {
8877
- if (isHorizontal) {
8878
- $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
8879
- } else {
8880
- var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
8881
- var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
8882
- var scale1 = params.shadowScale;
8883
- var scale2 = params.shadowScale / multiplier;
8884
- var offset = params.shadowOffset;
8885
- $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
8886
- }
8887
- }
8888
-
8889
- var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
8890
- $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
8891
- },
8892
- setTransition: function setTransition(duration) {
8893
- var swiper = this;
8894
- var $el = swiper.$el,
8895
- slides = swiper.slides;
8896
- slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
8897
-
8898
- if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
8899
- $el.find('.swiper-cube-shadow').transition(duration);
8900
- }
8901
- }
8902
- };
8903
- var EffectCube = {
8904
- name: 'effect-cube',
8905
- params: {
8906
- cubeEffect: {
8907
- slideShadows: true,
8908
- shadow: true,
8909
- shadowOffset: 20,
8910
- shadowScale: 0.94
8911
- }
8912
- },
8913
- create: function create() {
8914
- var swiper = this;
8915
- bindModuleMethods(swiper, {
8916
- cubeEffect: _extends({}, Cube)
8917
- });
8918
- },
8919
- on: {
8920
- beforeInit: function beforeInit(swiper) {
8921
- if (swiper.params.effect !== 'cube') return;
8922
- swiper.classNames.push(swiper.params.containerModifierClass + "cube");
8923
- swiper.classNames.push(swiper.params.containerModifierClass + "3d");
8924
- var overwriteParams = {
8925
- slidesPerView: 1,
8926
- slidesPerColumn: 1,
8927
- slidesPerGroup: 1,
8928
- watchSlidesProgress: true,
8929
- resistanceRatio: 0,
8930
- spaceBetween: 0,
8931
- centeredSlides: false,
8932
- virtualTranslate: true
8933
- };
8934
- extend$1(swiper.params, overwriteParams);
8935
- extend$1(swiper.originalParams, overwriteParams);
8936
- },
8937
- setTranslate: function setTranslate(swiper) {
8938
- if (swiper.params.effect !== 'cube') return;
8939
- swiper.cubeEffect.setTranslate();
8940
- },
8941
- setTransition: function setTransition(swiper, duration) {
8942
- if (swiper.params.effect !== 'cube') return;
8943
- swiper.cubeEffect.setTransition(duration);
8944
- }
8945
- }
8946
- };
8947
-
8948
- var Flip = {
8949
- setTranslate: function setTranslate() {
8950
- var swiper = this;
8951
- var slides = swiper.slides,
8952
- rtl = swiper.rtlTranslate;
8953
-
8954
- for (var i = 0; i < slides.length; i += 1) {
8955
- var $slideEl = slides.eq(i);
8956
- var progress = $slideEl[0].progress;
8957
-
8958
- if (swiper.params.flipEffect.limitRotation) {
8959
- progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
8960
- }
8961
-
8962
- var offset = $slideEl[0].swiperSlideOffset;
8963
- var rotate = -180 * progress;
8964
- var rotateY = rotate;
8965
- var rotateX = 0;
8966
- var tx = -offset;
8967
- var ty = 0;
8968
-
8969
- if (!swiper.isHorizontal()) {
8970
- ty = tx;
8971
- tx = 0;
8972
- rotateX = -rotateY;
8973
- rotateY = 0;
8974
- } else if (rtl) {
8975
- rotateY = -rotateY;
8976
- }
8977
-
8978
- $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
8979
-
8980
- if (swiper.params.flipEffect.slideShadows) {
8981
- // Set shadows
8982
- var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
8983
- var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
8984
-
8985
- if (shadowBefore.length === 0) {
8986
- shadowBefore = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
8987
- $slideEl.append(shadowBefore);
8988
- }
8989
-
8990
- if (shadowAfter.length === 0) {
8991
- shadowAfter = $("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
8992
- $slideEl.append(shadowAfter);
8993
- }
8994
-
8995
- if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
8996
- if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
8997
- }
8998
-
8999
- $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
9000
- }
9001
- },
9002
- setTransition: function setTransition(duration) {
9003
- var swiper = this;
9004
- var slides = swiper.slides,
9005
- activeIndex = swiper.activeIndex,
9006
- $wrapperEl = swiper.$wrapperEl;
9007
- slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9008
-
9009
- if (swiper.params.virtualTranslate && duration !== 0) {
9010
- var eventTriggered = false; // eslint-disable-next-line
9011
-
9012
- slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
9013
- if (eventTriggered) return;
9014
- if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
9015
-
9016
- eventTriggered = true;
9017
- swiper.animating = false;
9018
- var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
9019
-
9020
- for (var i = 0; i < triggerEvents.length; i += 1) {
9021
- $wrapperEl.trigger(triggerEvents[i]);
9022
- }
9023
- });
9024
- }
9025
- }
9026
- };
9027
- var EffectFlip = {
9028
- name: 'effect-flip',
9029
- params: {
9030
- flipEffect: {
9031
- slideShadows: true,
9032
- limitRotation: true
9033
- }
9034
- },
9035
- create: function create() {
9036
- var swiper = this;
9037
- bindModuleMethods(swiper, {
9038
- flipEffect: _extends({}, Flip)
9039
- });
9040
- },
9041
- on: {
9042
- beforeInit: function beforeInit(swiper) {
9043
- if (swiper.params.effect !== 'flip') return;
9044
- swiper.classNames.push(swiper.params.containerModifierClass + "flip");
9045
- swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9046
- var overwriteParams = {
9047
- slidesPerView: 1,
9048
- slidesPerColumn: 1,
9049
- slidesPerGroup: 1,
9050
- watchSlidesProgress: true,
9051
- spaceBetween: 0,
9052
- virtualTranslate: true
9053
- };
9054
- extend$1(swiper.params, overwriteParams);
9055
- extend$1(swiper.originalParams, overwriteParams);
9056
- },
9057
- setTranslate: function setTranslate(swiper) {
9058
- if (swiper.params.effect !== 'flip') return;
9059
- swiper.flipEffect.setTranslate();
9060
- },
9061
- setTransition: function setTransition(swiper, duration) {
9062
- if (swiper.params.effect !== 'flip') return;
9063
- swiper.flipEffect.setTransition(duration);
9064
- }
9065
- }
9066
- };
9067
-
9068
- var Coverflow = {
9069
- setTranslate: function setTranslate() {
9070
- var swiper = this;
9071
- var swiperWidth = swiper.width,
9072
- swiperHeight = swiper.height,
9073
- slides = swiper.slides,
9074
- slidesSizesGrid = swiper.slidesSizesGrid;
9075
- var params = swiper.params.coverflowEffect;
9076
- var isHorizontal = swiper.isHorizontal();
9077
- var transform = swiper.translate;
9078
- var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
9079
- var rotate = isHorizontal ? params.rotate : -params.rotate;
9080
- var translate = params.depth; // Each slide offset from center
9081
-
9082
- for (var i = 0, length = slides.length; i < length; i += 1) {
9083
- var $slideEl = slides.eq(i);
9084
- var slideSize = slidesSizesGrid[i];
9085
- var slideOffset = $slideEl[0].swiperSlideOffset;
9086
- var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
9087
- var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
9088
- var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
9089
-
9090
- var translateZ = -translate * Math.abs(offsetMultiplier);
9091
- var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
9092
-
9093
- if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
9094
- stretch = parseFloat(params.stretch) / 100 * slideSize;
9095
- }
9096
-
9097
- var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
9098
- var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
9099
- var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
9100
-
9101
- if (Math.abs(translateX) < 0.001) translateX = 0;
9102
- if (Math.abs(translateY) < 0.001) translateY = 0;
9103
- if (Math.abs(translateZ) < 0.001) translateZ = 0;
9104
- if (Math.abs(rotateY) < 0.001) rotateY = 0;
9105
- if (Math.abs(rotateX) < 0.001) rotateX = 0;
9106
- if (Math.abs(scale) < 0.001) scale = 0;
9107
- var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
9108
- $slideEl.transform(slideTransform);
9109
- $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
9110
-
9111
- if (params.slideShadows) {
9112
- // Set shadows
9113
- var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
9114
- var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
9115
-
9116
- if ($shadowBeforeEl.length === 0) {
9117
- $shadowBeforeEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
9118
- $slideEl.append($shadowBeforeEl);
9119
- }
9120
-
9121
- if ($shadowAfterEl.length === 0) {
9122
- $shadowAfterEl = $("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
9123
- $slideEl.append($shadowAfterEl);
9124
- }
9125
-
9126
- if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
9127
- if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
9128
- }
9129
- }
9130
- },
9131
- setTransition: function setTransition(duration) {
9132
- var swiper = this;
9133
- swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
9134
- }
9135
- };
9136
- var EffectCoverflow = {
9137
- name: 'effect-coverflow',
9138
- params: {
9139
- coverflowEffect: {
9140
- rotate: 50,
9141
- stretch: 0,
9142
- depth: 100,
9143
- scale: 1,
9144
- modifier: 1,
9145
- slideShadows: true
9146
- }
9147
- },
9148
- create: function create() {
9149
- var swiper = this;
9150
- bindModuleMethods(swiper, {
9151
- coverflowEffect: _extends({}, Coverflow)
9152
- });
9153
- },
9154
- on: {
9155
- beforeInit: function beforeInit(swiper) {
9156
- if (swiper.params.effect !== 'coverflow') return;
9157
- swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
9158
- swiper.classNames.push(swiper.params.containerModifierClass + "3d");
9159
- swiper.params.watchSlidesProgress = true;
9160
- swiper.originalParams.watchSlidesProgress = true;
9161
- },
9162
- setTranslate: function setTranslate(swiper) {
9163
- if (swiper.params.effect !== 'coverflow') return;
9164
- swiper.coverflowEffect.setTranslate();
9165
- },
9166
- setTransition: function setTransition(swiper, duration) {
9167
- if (swiper.params.effect !== 'coverflow') return;
9168
- swiper.coverflowEffect.setTransition(duration);
9169
- }
9170
- }
9171
- };
9172
-
9173
- var Thumbs = {
9174
- init: function init() {
9175
- var swiper = this;
9176
- var thumbsParams = swiper.params.thumbs;
9177
- if (swiper.thumbs.initialized) return false;
9178
- swiper.thumbs.initialized = true;
9179
- var SwiperClass = swiper.constructor;
9180
-
9181
- if (thumbsParams.swiper instanceof SwiperClass) {
9182
- swiper.thumbs.swiper = thumbsParams.swiper;
9183
- extend$1(swiper.thumbs.swiper.originalParams, {
9184
- watchSlidesProgress: true,
9185
- slideToClickedSlide: false
9186
- });
9187
- extend$1(swiper.thumbs.swiper.params, {
9188
- watchSlidesProgress: true,
9189
- slideToClickedSlide: false
9190
- });
9191
- } else if (isObject$1(thumbsParams.swiper)) {
9192
- swiper.thumbs.swiper = new SwiperClass(extend$1({}, thumbsParams.swiper, {
9193
- watchSlidesVisibility: true,
9194
- watchSlidesProgress: true,
9195
- slideToClickedSlide: false
9196
- }));
9197
- swiper.thumbs.swiperCreated = true;
9198
- }
9199
-
9200
- swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
9201
- swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
9202
- return true;
9203
- },
9204
- onThumbClick: function onThumbClick() {
9205
- var swiper = this;
9206
- var thumbsSwiper = swiper.thumbs.swiper;
9207
- if (!thumbsSwiper) return;
9208
- var clickedIndex = thumbsSwiper.clickedIndex;
9209
- var clickedSlide = thumbsSwiper.clickedSlide;
9210
- if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
9211
- if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
9212
- var slideToIndex;
9213
-
9214
- if (thumbsSwiper.params.loop) {
9215
- slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
9216
- } else {
9217
- slideToIndex = clickedIndex;
9218
- }
9219
-
9220
- if (swiper.params.loop) {
9221
- var currentIndex = swiper.activeIndex;
9222
-
9223
- if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
9224
- swiper.loopFix(); // eslint-disable-next-line
9225
-
9226
- swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
9227
- currentIndex = swiper.activeIndex;
9228
- }
9229
-
9230
- var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9231
- var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
9232
- if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
9233
- }
9234
-
9235
- swiper.slideTo(slideToIndex);
9236
- },
9237
- update: function update(initial) {
9238
- var swiper = this;
9239
- var thumbsSwiper = swiper.thumbs.swiper;
9240
- if (!thumbsSwiper) return;
9241
- var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
9242
- var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
9243
- var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
9244
-
9245
- if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
9246
- var currentThumbsIndex = thumbsSwiper.activeIndex;
9247
- var newThumbsIndex;
9248
- var direction;
9249
-
9250
- if (thumbsSwiper.params.loop) {
9251
- if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
9252
- thumbsSwiper.loopFix(); // eslint-disable-next-line
9253
-
9254
- thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
9255
- currentThumbsIndex = thumbsSwiper.activeIndex;
9256
- } // Find actual thumbs index to slide to
9257
-
9258
-
9259
- var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9260
- var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
9261
- if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
9262
- direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
9263
- } else {
9264
- newThumbsIndex = swiper.realIndex;
9265
- direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
9266
- }
9267
-
9268
- if (useOffset) {
9269
- newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
9270
- }
9271
-
9272
- if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
9273
- if (thumbsSwiper.params.centeredSlides) {
9274
- if (newThumbsIndex > currentThumbsIndex) {
9275
- newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
9276
- } else {
9277
- newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
9278
- }
9279
- } else if (newThumbsIndex > currentThumbsIndex) {
9280
- newThumbsIndex = newThumbsIndex - slidesPerView + 1;
9281
- }
9282
-
9283
- thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
9284
- }
9285
- } // Activate thumbs
9286
-
9287
-
9288
- var thumbsToActivate = 1;
9289
- var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
9290
-
9291
- if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
9292
- thumbsToActivate = swiper.params.slidesPerView;
9293
- }
9294
-
9295
- if (!swiper.params.thumbs.multipleActiveThumbs) {
9296
- thumbsToActivate = 1;
9297
- }
9298
-
9299
- thumbsToActivate = Math.floor(thumbsToActivate);
9300
- thumbsSwiper.slides.removeClass(thumbActiveClass);
9301
-
9302
- if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
9303
- for (var i = 0; i < thumbsToActivate; i += 1) {
9304
- thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
9305
- }
9306
- } else {
9307
- for (var _i = 0; _i < thumbsToActivate; _i += 1) {
9308
- thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
9309
- }
9310
- }
9311
- }
9312
- };
9313
- var Thumbs$1 = {
9314
- name: 'thumbs',
9315
- params: {
9316
- thumbs: {
9317
- swiper: null,
9318
- multipleActiveThumbs: true,
9319
- autoScrollOffset: 0,
9320
- slideThumbActiveClass: 'swiper-slide-thumb-active',
9321
- thumbsContainerClass: 'swiper-container-thumbs'
9322
- }
9323
- },
9324
- create: function create() {
9325
- var swiper = this;
9326
- bindModuleMethods(swiper, {
9327
- thumbs: _extends({
9328
- swiper: null,
9329
- initialized: false
9330
- }, Thumbs)
9331
- });
9332
- },
9333
- on: {
9334
- beforeInit: function beforeInit(swiper) {
9335
- var thumbs = swiper.params.thumbs;
9336
- if (!thumbs || !thumbs.swiper) return;
9337
- swiper.thumbs.init();
9338
- swiper.thumbs.update(true);
9339
- },
9340
- slideChange: function slideChange(swiper) {
9341
- if (!swiper.thumbs.swiper) return;
9342
- swiper.thumbs.update();
9343
- },
9344
- update: function update(swiper) {
9345
- if (!swiper.thumbs.swiper) return;
9346
- swiper.thumbs.update();
9347
- },
9348
- resize: function resize(swiper) {
9349
- if (!swiper.thumbs.swiper) return;
9350
- swiper.thumbs.update();
9351
- },
9352
- observerUpdate: function observerUpdate(swiper) {
9353
- if (!swiper.thumbs.swiper) return;
9354
- swiper.thumbs.update();
9355
- },
9356
- setTransition: function setTransition(swiper, duration) {
9357
- var thumbsSwiper = swiper.thumbs.swiper;
9358
- if (!thumbsSwiper) return;
9359
- thumbsSwiper.setTransition(duration);
9360
- },
9361
- beforeDestroy: function beforeDestroy(swiper) {
9362
- var thumbsSwiper = swiper.thumbs.swiper;
9363
- if (!thumbsSwiper) return;
9364
-
9365
- if (swiper.thumbs.swiperCreated && thumbsSwiper) {
9366
- thumbsSwiper.destroy();
9367
- }
9368
- }
9369
- }
9370
- };
9371
-
9372
- // Swiper Class
9373
- var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
9374
- Swiper.use(components);
9375
-
9376
- return Swiper;
9377
-
9378
- })));
9379
- //# sourceMappingURL=swiper-bundle.js.map
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/vendor/swiper/swiper-bundle.js.map DELETED
@@ -1 +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/utils/dom.js","../src/utils/utils.js","../src/utils/get-support.js","../src/utils/get-device.js","../src/utils/get-browser.js","../src/modules/resize/resize.js","../src/modules/observer/observer.js","../src/components/core/modular.js","../src/components/core/events-emitter.js","../src/components/core/update/updateSize.js","../src/components/core/update/updateSlides.js","../src/components/core/update/updateAutoHeight.js","../src/components/core/update/updateSlidesOffset.js","../src/components/core/update/updateSlidesProgress.js","../src/components/core/update/updateProgress.js","../src/components/core/update/updateSlidesClasses.js","../src/components/core/update/updateActiveIndex.js","../src/components/core/update/updateClickedSlide.js","../src/components/core/update/index.js","../src/components/core/translate/getTranslate.js","../src/components/core/translate/setTranslate.js","../src/components/core/translate/minTranslate.js","../src/components/core/translate/maxTranslate.js","../src/components/core/translate/translateTo.js","../src/components/core/translate/index.js","../src/components/core/transition/setTransition.js","../src/components/core/transition/transitionStart.js","../src/components/core/transition/transitionEnd.js","../src/components/core/transition/index.js","../src/components/core/slide/slideTo.js","../src/components/core/slide/slideToLoop.js","../src/components/core/slide/slideNext.js","../src/components/core/slide/slidePrev.js","../src/components/core/slide/slideReset.js","../src/components/core/slide/slideToClosest.js","../src/components/core/slide/slideToClickedSlide.js","../src/components/core/slide/index.js","../src/components/core/loop/loopCreate.js","../src/components/core/loop/loopFix.js","../src/components/core/loop/loopDestroy.js","../src/components/core/loop/index.js","../src/components/core/grab-cursor/setGrabCursor.js","../src/components/core/grab-cursor/unsetGrabCursor.js","../src/components/core/grab-cursor/index.js","../src/components/core/manipulation/appendSlide.js","../src/components/core/manipulation/prependSlide.js","../src/components/core/manipulation/addSlide.js","../src/components/core/manipulation/removeSlide.js","../src/components/core/manipulation/removeAllSlides.js","../src/components/core/manipulation/index.js","../src/components/core/events/onTouchStart.js","../src/components/core/events/onTouchMove.js","../src/components/core/events/onTouchEnd.js","../src/components/core/events/onResize.js","../src/components/core/events/onClick.js","../src/components/core/events/onScroll.js","../src/components/core/events/index.js","../src/components/core/breakpoints/setBreakpoint.js","../src/components/core/breakpoints/getBreakpoint.js","../src/components/core/breakpoints/index.js","../src/components/core/classes/addClasses.js","../src/components/core/classes/removeClasses.js","../src/components/core/classes/index.js","../src/components/core/images/loadImage.js","../src/components/core/images/preloadImages.js","../src/components/core/images/index.js","../src/components/core/check-overflow/index.js","../src/components/core/defaults.js","../src/components/core/core-class.js","../src/components/virtual/virtual.js","../src/components/keyboard/keyboard.js","../src/components/mousewheel/mousewheel.js","../src/components/navigation/navigation.js","../src/components/pagination/pagination.js","../src/components/scrollbar/scrollbar.js","../src/components/parallax/parallax.js","../src/components/zoom/zoom.js","../src/components/lazy/lazy.js","../src/components/controller/controller.js","../src/components/a11y/a11y.js","../src/components/history/history.js","../src/components/hash-navigation/hash-navigation.js","../src/components/autoplay/autoplay.js","../src/components/effect-fade/effect-fade.js","../src/components/effect-cube/effect-cube.js","../src/components/effect-flip/effect-flip.js","../src/components/effect-coverflow/effect-coverflow.js","../src/components/thumbs/thumbs.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 3.0.0-alpha.4\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 20, 2020\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 if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (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\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\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 var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar 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: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0-alpha.7\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 14, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, 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 var uniqueArray = [];\n\n for (var 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, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var 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 var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n var tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (var i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\nfunction addClass() {\n for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {\n classes[_key] = arguments[_key];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList;\n\n (_el$classList = el.classList).add.apply(_el$classList, classNames);\n });\n return this;\n}\n\nfunction removeClass() {\n for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n classes[_key2] = arguments[_key2];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList2;\n\n (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);\n });\n return this;\n}\n\nfunction toggleClass() {\n for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n classes[_key3] = arguments[_key3];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n classNames.forEach(function (className) {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass() {\n for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n classes[_key4] = arguments[_key4];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n return arrayFilter(this, function (el) {\n return classNames.filter(function (className) {\n return el.classList.contains(className);\n }).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 (var 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 (var 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 (var 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 (var 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 (var 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 var 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 var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var 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 (var i = 0; i < this.length; i += 1) {\n var 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 var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _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 (var 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 var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var 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 (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var 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 (var 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 (var i = 0; i < this.length; i += 1) {\n this[i].style.transition = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var 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 var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var 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 var 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 var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: 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 var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\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 (var k = handlers.length - 1; k >= 0; k -= 1) {\n var 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() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\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() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var 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 var 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 var 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 var _styles = this.styles();\n\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 var 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 var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.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 var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var 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 (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var 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 var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var 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 (var _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(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var 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 (var 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 (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var 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 var child = this[0];\n var 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 var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var 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 (var 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 var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var 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 var before = $(selector);\n\n for (var 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 (var 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 var after = $(selector);\n\n for (var 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 (var 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 var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _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 var 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 var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _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 var parents = []; // eslint-disable-line\n\n for (var 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 var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _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 var 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 var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var 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 (var 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() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var 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 (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var 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\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var 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 var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var 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() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var 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() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var 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\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var 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 easingProgress: function 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 stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (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: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var 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(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (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 var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var 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 if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var 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 var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var 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.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar 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 $.fn[methodName] = Methods[methodName];\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 getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.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 typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\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 extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods };\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 touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\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';\n\nlet device;\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 ];\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 (!device) {\n device = calcDevice(overrides);\n }\n return device;\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 isEdge: !!window.navigator.userAgent.match(/Edge/g),\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';\nimport { extend } from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init(swiper) {\n const window = getWindow();\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy(swiper) {\n const window = getWindow();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Observer = {\n attach(target, options = {}) {\n const window = getWindow();\n const swiper = this;\n\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 swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.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 swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!swiper.support.observer || !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 swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n observer: {\n ...Observer,\n observers: [],\n },\n });\n },\n on: {\n init(swiper) {\n swiper.observer.init();\n },\n destroy(swiper) {\n swiper.observer.destroy();\n },\n },\n};\n","import { extend } from '../../utils/utils';\n\nexport default {\n useParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n },\n};\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\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 (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 (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.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) 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) 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 const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","import { extend } from '../../../utils/utils';\n\nexport 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.width !== 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 extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../../utils/utils';\n\nexport default function updateSlides() {\n const swiper = this;\n const window = getWindow();\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 function slidesForMargin(slideEl, slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\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.snapGrid.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: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (\n Math.floor(slidesLength / params.slidesPerColumn) ===\n slidesLength / swiper.params.slidesPerColumn\n ) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows =\n Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(\n slidesNumberEvenToRows,\n params.slidesPerView * params.slidesPerColumn,\n );\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(\n Math.ceil(\n (slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) /\n slidesPerColumn,\n ),\n params.slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\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 `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n row !== 0 && params.spaceBetween && `${params.spaceBetween}px`,\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\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 if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width') || 0);\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height') || 0);\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\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 if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\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 let newSlidesGrid;\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 if (swiper.isHorizontal())\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n else\n $wrapperEl.css({\n height: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize =\n Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal())\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n else\n $wrapperEl.css({\n height: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n if (params.centeredSlides) {\n 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 + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n 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 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 if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${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 extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\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 || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\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 // 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) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\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) 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 '../../../utils/dom';\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 } = 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 const slideProgress =\n (offsetCenter +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slide.swiperSlideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\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 }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import { extend } from '../../../utils/utils';\n\nexport 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 extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (\n params.watchSlidesProgress ||\n params.watchSlidesVisibility ||\n (params.centeredSlides && params.autoHeight)\n )\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","import { extend } from '../../../utils/utils';\n\nexport 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 extend(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 '../../../utils/dom';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\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 = $(slide).index();\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';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\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 '../../../utils/utils';\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","export 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 // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\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';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\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 transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\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('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\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('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\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 } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\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 if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\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 let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\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 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\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\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 { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\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 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 } = 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 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 const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\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 '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\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';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\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 '../../../utils/dom';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.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 $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.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 $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.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';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\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.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\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.el.style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\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 && swiper.support.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 && swiper.support.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 && swiper.support.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 && swiper.support.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 './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\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 } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $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 if (\n params.noSwiping &&\n $targetEl.closest(\n params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`,\n )[0]\n ) {\n swiper.allowClick = true;\n return;\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.screen.width - edgeSwipeThreshold)\n ) {\n return;\n }\n\n extend(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.formElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.formElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\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 } = swiper;\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 // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n extend(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.formElements)) {\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) {\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\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 (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\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 // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../../utils/utils';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid } = swiper;\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 swiper.updateClickedSlide(e);\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 (params.freeMode) {\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.freeModeMomentum) {\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.freeModeMinimumVelocity) {\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.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\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.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\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.freeModeMomentumBounce) {\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.freeModeSticky) {\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 swiper.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.freeModeSticky) {\n // If freeModeSticky 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.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && 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 swiper.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 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.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\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 // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\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) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\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(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(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.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 } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\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';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if (\n (params.simulateTouch && !device.ios && !device.android) ||\n (params.simulateTouch && !support.touch && device.ios)\n ) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on(\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n const document = getDocument();\n\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n const passiveListener =\n touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if (\n (params.simulateTouch && !device.ios && !device.android) ||\n (params.simulateTouch && !support.touch && device.ios)\n ) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off(\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n );\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../../utils/utils';\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);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n [\n 'slidesPerView',\n 'spaceBetween',\n 'slidesPerGroup',\n 'slidesPerGroupSkip',\n 'slidesPerColumn',\n ].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n swiper.emitContainerClasses();\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\n extend(swiper.params, breakpointParams);\n\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\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}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoints(breakpoints) {\n const window = getWindow();\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\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 = window.innerHeight * 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 (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","export default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (device.android) {\n suffixes.push('android');\n }\n if (device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n\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';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\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';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition =\n swiper.slides.length > 0 &&\n params.slidesOffsetBefore +\n params.spaceBetween * (swiper.slides.length - 1) +\n swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\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 // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\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\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\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: false,\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 watchSlidesVisibility: 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 // 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 // NS\n containerModifierClass: 'swiper-container-', // 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","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\n\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\n\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n modular,\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\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 (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\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 // Swiper Instance\n const swiper = this;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object' &&\n !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams);\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 // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\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 // 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 // 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 let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (swiper.support.pointerEvents) {\n 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 formElements: 'input, select, option, textarea, button, video, label',\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 // Install Modules\n swiper.useModules();\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 emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const classes = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper-container') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', classes.join(' '));\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n swiper.slides.each((slideEl) => {\n const classes = slideEl.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n });\n swiper.emit('_slideClass', slideEl, classes.join(' '));\n });\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const { params, slides, slidesGrid, 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 for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\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) {\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 init() {\n const swiper = this;\n if (swiper.initialized) return;\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) {\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 );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\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\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(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n const name = module.name || `${Object.keys(Swiper.prototype.modules).length}_${now()}`;\n Swiper.prototype.modules[name] = module;\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 '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\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 renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\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 extend(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 }\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 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 }\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 renderSlide(slide, index) {\n const swiper = this;\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 `<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`,\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 appendSlide(slides) {\n const swiper = this;\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 swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\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('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\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 swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\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 create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n virtual: {\n ...Virtual,\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate(swiper) {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const window = getWindow();\n const document = getDocument();\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 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 + 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 (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\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 swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n const document = getDocument();\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n const document = getDocument();\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n keyboard: {\n enabled: false,\n ...Keyboard,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy(swiper) {\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { now, nextTick, bindModuleMethods } from '../../utils/utils';\n\nfunction isEventSupported() {\n const document = getDocument();\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (\n !isSupported &&\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n const window = getWindow();\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n 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 handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\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 = Mousewheel.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 if (!swiper.params.freeMode) {\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 const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\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 swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.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 (swiper.mousewheel.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 { lastEventBeforeSnap } = swiper.mousewheel;\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 swiper.mousewheel.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.freeModeSticky) {\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(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\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 swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.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 swiper.mousewheel.timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.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) swiper.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 animateSlider(newEvent) {\n const swiper = this;\n const window = getWindow();\n\n if (\n this.params.mousewheel.thresholdDelta &&\n newEvent.delta < this.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n this.params.mousewheel.thresholdTime &&\n now() - swiper.mousewheel.lastScrollTime < this.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() - swiper.mousewheel.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 swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\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 enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\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 create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n mousewheel: {\n enabled: false,\n lastScrollTime: now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n\n enable: Mousewheel.enable,\n disable: Mousewheel.disable,\n handle: Mousewheel.handle,\n handleMouseEnter: Mousewheel.handleMouseEnter,\n handleMouseLeave: Mousewheel.handleMouseLeave,\n animateSlider: Mousewheel.animateSlider,\n releaseScroll: Mousewheel.releaseScroll,\n },\n });\n },\n on: {\n init(swiper) {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy(swiper) {\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n params.lockClass,\n );\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n params.lockClass,\n );\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.nextEl === 'string' &&\n $nextEl.length > 1 &&\n swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.prevEl === 'string' &&\n $prevEl.length > 1 &&\n swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\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 },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n navigation: {\n ...Navigation,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy(swiper) {\n swiper.navigation.destroy();\n },\n click(swiper, e) {\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(e.target).is($prevEl) &&\n !$(e.target).is($nextEl)\n ) {\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 swiper.emit('navigationShow');\n } else {\n swiper.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};\n","import $ from '../../utils/dom';\nimport { extend, bindModuleMethods } from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n 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 swiper.pagination.bulletSize = bullets\n .eq(0)\n [swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n `${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`,\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 $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-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 - params.dynamicMainBullets) {\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 $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 -\n midIndex * swiper.pagination.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.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${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(`.${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 swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n params.lockClass,\n );\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n 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 const numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\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}\"></${params.bulletElement}>`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${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 `<span class=\"${params.currentClass}\"></span>` +\n ' / ' +\n `<span class=\"${params.totalClass}\"></span>`;\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 = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\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 }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.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', `.${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 extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (\n !params.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n )\n return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\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: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n pagination: {\n dynamicBulletIndex: 0,\n ...Pagination,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy(swiper) {\n swiper.pagination.destroy();\n },\n click(swiper, e) {\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n swiper.pagination.$el.length > 0 &&\n !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { dragSize, trackSize, $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(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\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 const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\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 extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n },\n getPointerPosition(e) {\n const swiper = this;\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 setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el, dragSize, trackSize, dragStartPos } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (scrollbar.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 onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? scrollbar.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 scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.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 swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const document = getDocument();\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\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 (!support.touch) {\n target.addEventListener(\n touchEventsDesktop.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n document.addEventListener(\n touchEventsDesktop.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n document.addEventListener(\n touchEventsDesktop.end,\n swiper.scrollbar.onDragEnd,\n passiveListener,\n );\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const document = getDocument();\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\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 (!support.touch) {\n target.removeEventListener(\n touchEventsDesktop.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n document.removeEventListener(\n touchEventsDesktop.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n document.removeEventListener(\n touchEventsDesktop.end,\n swiper.scrollbar.onDragEnd,\n passiveListener,\n );\n } else {\n target.removeEventListener(\n touchEventsTouch.start,\n swiper.scrollbar.onDragStart,\n activeListener,\n );\n target.removeEventListener(\n touchEventsTouch.move,\n swiper.scrollbar.onDragMove,\n activeListener,\n );\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\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 let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\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 },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n scrollbar: {\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n ...Scrollbar,\n },\n });\n },\n on: {\n init(swiper) {\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update(swiper) {\n swiper.scrollbar.updateSize();\n },\n resize(swiper) {\n swiper.scrollbar.updateSize();\n },\n observerUpdate(swiper) {\n swiper.scrollbar.updateSize();\n },\n setTranslate(swiper) {\n swiper.scrollbar.setTranslate();\n },\n setTransition(swiper, duration) {\n swiper.scrollbar.setTransition(duration);\n },\n destroy(swiper) {\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\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 setTranslate() {\n const swiper = this;\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 swiper.parallax.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 swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\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\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n parallax: {\n ...Parallax,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate(swiper) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(swiper, duration) {\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods, getTranslate } from '../../utils/utils';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n 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 // Events\n onGestureStart(e) {\n const swiper = this;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.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.find('img, svg, canvas, picture, .swiper-zoom-target');\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 swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const gesture = zoom.gesture;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.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 onGestureEnd(e) {\n const swiper = this;\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.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 zoom.fakeGestureTouched = false;\n zoom.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 zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const device = swiper.device;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\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 onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = 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 if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\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 && !zoom.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 onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = 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 onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = 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 zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = 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.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\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 zoom.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;\n offsetY = gesture.$slideEl.offset().top;\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 out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = 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.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.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 toggleGestures(method) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { slideSelector: selector, passiveListener: passive } = zoom;\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\n },\n enableGestures() {\n if (this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = true;\n this.zoom.toggleGestures('on');\n },\n disableGestures() {\n if (!this.zoom.gesturesEnabled) return;\n this.zoom.gesturesEnabled = false;\n this.zoom.toggleGestures('off');\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const support = swiper.support;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\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\n const slideSelector = `.${swiper.params.slideClass}`;\n\n swiper.zoom.passiveListener = passiveListener;\n swiper.zoom.slideSelector = slideSelector;\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n zoom.onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n zoom.onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.end,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n zoom.onTouchMove,\n activeListenerWithCapture,\n );\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n\n swiper.zoom.enabled = false;\n\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\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n zoom.onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n zoom.onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.end,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n zoom.onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n zoom.onTouchMove,\n activeListenerWithCapture,\n );\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\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 create() {\n const swiper = this;\n\n bindModuleMethods(swiper, {\n zoom: {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n 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 velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n ...Zoom,\n },\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 = swiper.zoom.gesture.$imageEl\n ? swiper.zoom.gesture.$imageEl[0]\n : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl\n ? swiper.zoom.gesture.$slideEl[0]\n : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy(swiper) {\n swiper.zoom.disable();\n },\n touchStart(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(swiper, e) {\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(swiper, e) {\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange(swiper) {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\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 swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\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 (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = 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 + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n lazy: {\n initialImageLoaded: false,\n ...Lazy,\n },\n });\n },\n on: {\n beforeInit(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll(swiper) {\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove(swiper) {\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart(swiper) {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)\n ) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd(swiper) {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange(swiper) {\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: 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 getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\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 swiper.controller.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 setTransition(duration, byController) {\n const swiper = this;\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};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n controller: {\n control: swiper.params.controller.control,\n ...Controller,\n },\n });\n },\n on: {\n update(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst A11y = {\n getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n },\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElRoleDescription($el, description) {\n $el.attr('aria-role-description', description);\n return $el;\n },\n addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n addElId($el, id) {\n $el.attr('id', id);\n return $el;\n },\n addElLive($el, live) {\n $el.attr('aria-live', live);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\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 swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.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 swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.a11y;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${swiper.a11y.getRandomNumber(16)}`;\n let live;\n swiper.a11y.addElId($wrapperEl, wrapperId);\n\n if (swiper.params.autoplay && swiper.params.autoplay.enabled) {\n live = 'off';\n } else {\n live = 'polite';\n }\n swiper.a11y.addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n swiper.a11y.addElRole($(swiper.slides), 'group');\n swiper.slides.each((slideEl) => {\n const $slideEl = $(slideEl);\n swiper.a11y.addElLabel($slideEl, `${$slideEl.index() + 1} / ${swiper.slides.length}`);\n });\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 swiper.a11y.makeElFocusable($nextEl);\n if ($nextEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($nextEl, 'button');\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n swiper.a11y.addElControls($nextEl, wrapperId);\n }\n if ($prevEl && $prevEl.length) {\n swiper.a11y.makeElFocusable($prevEl);\n if ($prevEl[0].tagName !== 'BUTTON') {\n swiper.a11y.addElRole($prevEl, 'button');\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n swiper.a11y.addElControls($prevEl, wrapperId);\n }\n\n // Pagination\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.$el.on(\n 'keydown',\n `.${swiper.params.pagination.bulletClass}`,\n swiper.a11y.onEnterKey,\n );\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0)\n swiper.a11y.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', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n ) {\n swiper.pagination.$el.off(\n 'keydown',\n `.${swiper.params.pagination.bulletClass}`,\n swiper.a11y.onEnterKey,\n );\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\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 containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n a11y: {\n ...A11y,\n liveRegion: $(\n `<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`,\n ),\n },\n });\n },\n on: {\n afterInit(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy(swiper) {\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\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 const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues(swiper.params.url);\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues(swiper.params.url);\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n 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 setHistory(key, index) {\n const swiper = this;\n const window = getWindow();\n if (!swiper.history.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 = History.slugify(slide.attr('data-history'));\n if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\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 slugify(text) {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\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 = History.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\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n bindModuleMethods(swiper, {\n history: {\n ...History,\n },\n });\n },\n on: {\n init(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy(swiper) {\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd(swipe