/**
* swiper 6.1.2
* most modern mobile touch slider and framework with hardware accelerated transitions
* http://swiperjs.com
*
* copyright 2014-2020 vladimir kharlampidi
*
* released under the mit license
*
* released on: august 17, 2020
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = global || self, global.swiper = factory());
}(this, (function () { 'use strict';
function _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);
}
}
function _createclass(constructor, protoprops, staticprops) {
if (protoprops) _defineproperties(constructor.prototype, protoprops);
if (staticprops) _defineproperties(constructor, staticprops);
return constructor;
}
function _extends() {
_extends = object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (object.prototype.hasownproperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
/**
* ssr window 3.0.0-alpha.4
* better handling for window object in ssr environment
* https://github.com/nolimits4web/ssr-window
*
* copyright 2020, vladimir kharlampidi
*
* licensed under mit
*
* released on: may 20, 2020
*/
/* eslint-disable no-param-reassign */
function isobject(obj) {
return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === object;
}
function extend(target, src) {
if (target === void 0) {
target = {};
}
if (src === void 0) {
src = {};
}
object.keys(src).foreach(function (key) {
if (typeof target[key] === 'undefined') target[key] = src[key];else if (isobject(src[key]) && isobject(target[key]) && object.keys(src[key]).length > 0) {
extend(target[key], src[key]);
}
});
}
var ssrdocument = {
body: {},
addeventlistener: function addeventlistener() {},
removeeventlistener: function removeeventlistener() {},
activeelement: {
blur: function blur() {},
nodename: ''
},
queryselector: function queryselector() {
return null;
},
queryselectorall: function queryselectorall() {
return [];
},
getelementbyid: function getelementbyid() {
return null;
},
createevent: function createevent() {
return {
initevent: function initevent() {}
};
},
createelement: function createelement() {
return {
children: [],
childnodes: [],
style: {},
setattribute: function setattribute() {},
getelementsbytagname: function getelementsbytagname() {
return [];
}
};
},
createelementns: function createelementns() {
return {};
},
importnode: function importnode() {
return null;
},
location: {
hash: '',
host: '',
hostname: '',
href: '',
origin: '',
pathname: '',
protocol: '',
search: ''
}
};
function getdocument() {
var doc = typeof document !== 'undefined' ? document : {};
extend(doc, ssrdocument);
return doc;
}
var ssrwindow = {
document: ssrdocument,
navigator: {
useragent: ''
},
location: {
hash: '',
host: '',
hostname: '',
href: '',
origin: '',
pathname: '',
protocol: '',
search: ''
},
history: {
replacestate: function replacestate() {},
pushstate: function pushstate() {},
go: function go() {},
back: function back() {}
},
customevent: function customevent() {
return this;
},
addeventlistener: function addeventlistener() {},
removeeventlistener: function removeeventlistener() {},
getcomputedstyle: function getcomputedstyle() {
return {
getpropertyvalue: function getpropertyvalue() {
return '';
}
};
},
image: function image() {},
date: function date() {},
screen: {},
settimeout: function settimeout() {},
cleartimeout: function cleartimeout() {},
matchmedia: function matchmedia() {
return {};
},
requestanimationframe: function requestanimationframe(callback) {
if (typeof settimeout === 'undefined') {
callback();
return null;
}
return settimeout(callback, 0);
},
cancelanimationframe: function cancelanimationframe(id) {
if (typeof settimeout === 'undefined') {
return;
}
cleartimeout(id);
}
};
function getwindow() {
var win = typeof window !== 'undefined' ? window : {};
extend(win, ssrwindow);
return win;
}
/**
* dom7 3.0.0-alpha.7
* minimalistic javascript library for dom manipulation, with a jquery-compatible api
* https://framework7.io/docs/dom7.html
*
* copyright 2020, vladimir kharlampidi
*
* licensed under mit
*
* released on: july 14, 2020
*/
function _inheritsloose(subclass, superclass) {
subclass.prototype = object.create(superclass.prototype);
subclass.prototype.constructor = subclass;
subclass.__proto__ = superclass;
}
function _getprototypeof(o) {
_getprototypeof = object.setprototypeof ? object.getprototypeof : function _getprototypeof(o) {
return o.__proto__ || object.getprototypeof(o);
};
return _getprototypeof(o);
}
function _setprototypeof(o, p) {
_setprototypeof = object.setprototypeof || function _setprototypeof(o, p) {
o.__proto__ = p;
return o;
};
return _setprototypeof(o, p);
}
function _isnativereflectconstruct() {
if (typeof reflect === "undefined" || !reflect.construct) return false;
if (reflect.construct.sham) return false;
if (typeof proxy === "function") return true;
try {
date.prototype.tostring.call(reflect.construct(date, [], function () {}));
return true;
} catch (e) {
return false;
}
}
function _construct(parent, args, class) {
if (_isnativereflectconstruct()) {
_construct = reflect.construct;
} else {
_construct = function _construct(parent, args, class) {
var a = [null];
a.push.apply(a, args);
var constructor = function.bind.apply(parent, a);
var instance = new constructor();
if (class) _setprototypeof(instance, class.prototype);
return instance;
};
}
return _construct.apply(null, arguments);
}
function _isnativefunction(fn) {
return function.tostring.call(fn).indexof("[native code]") !== -1;
}
function _wrapnativesuper(class) {
var _cache = typeof map === "function" ? new map() : undefined;
_wrapnativesuper = function _wrapnativesuper(class) {
if (class === null || !_isnativefunction(class)) return class;
if (typeof class !== "function") {
throw new typeerror("super expression must either be null or a function");
}
if (typeof _cache !== "undefined") {
if (_cache.has(class)) return _cache.get(class);
_cache.set(class, wrapper);
}
function wrapper() {
return _construct(class, arguments, _getprototypeof(this).constructor);
}
wrapper.prototype = object.create(class.prototype, {
constructor: {
value: wrapper,
enumerable: false,
writable: true,
configurable: true
}
});
return _setprototypeof(wrapper, class);
};
return _wrapnativesuper(class);
}
function _assertthisinitialized(self) {
if (self === void 0) {
throw new referenceerror("this hasn't been initialised - super() hasn't been called");
}
return self;
}
/* eslint-disable no-proto */
function makereactive(obj) {
var proto = obj.__proto__;
object.defineproperty(obj, '__proto__', {
get: function get() {
return proto;
},
set: function set(value) {
proto.__proto__ = value;
}
});
}
var dom7 = /*#__pure__*/function (_array) {
_inheritsloose(dom7, _array);
function dom7(items) {
var _this;
_this = _array.call.apply(_array, [this].concat(items)) || this;
makereactive(_assertthisinitialized(_this));
return _this;
}
return dom7;
}( /*#__pure__*/_wrapnativesuper(array));
function arrayflat(arr) {
if (arr === void 0) {
arr = [];
}
var res = [];
arr.foreach(function (el) {
if (array.isarray(el)) {
res.push.apply(res, arrayflat(el));
} else {
res.push(el);
}
});
return res;
}
function arrayfilter(arr, callback) {
return array.prototype.filter.call(arr, callback);
}
function arrayunique(arr) {
var uniquearray = [];
for (var i = 0; i < arr.length; i += 1) {
if (uniquearray.indexof(arr[i]) === -1) uniquearray.push(arr[i]);
}
return uniquearray;
}
function qsa(selector, context) {
if (typeof selector !== 'string') {
return [selector];
}
var a = [];
var res = context.queryselectorall(selector);
for (var i = 0; i < res.length; i += 1) {
a.push(res[i]);
}
return a;
}
function $(selector, context) {
var window = getwindow();
var document = getdocument();
var arr = [];
if (!context && selector instanceof dom7) {
return selector;
}
if (!selector) {
return new dom7(arr);
}
if (typeof selector === 'string') {
var html = selector.trim();
if (html.indexof('<') >= 0 && html.indexof('>') >= 0) {
var tocreate = 'div';
if (html.indexof('
0;
}).length > 0;
}
function attr(attrs, value) {
if (arguments.length === 1 && typeof attrs === 'string') {
// get attr
if (this[0]) return this[0].getattribute(attrs);
return undefined;
} // set attrs
for (var i = 0; i < this.length; i += 1) {
if (arguments.length === 2) {
// string
this[i].setattribute(attrs, value);
} else {
// object
for (var attrname in attrs) {
this[i][attrname] = attrs[attrname];
this[i].setattribute(attrname, attrs[attrname]);
}
}
}
return this;
}
function removeattr(attr) {
for (var i = 0; i < this.length; i += 1) {
this[i].removeattribute(attr);
}
return this;
}
function transform(transform) {
for (var i = 0; i < this.length; i += 1) {
this[i].style.transform = transform;
}
return this;
}
function transition(duration) {
for (var i = 0; i < this.length; i += 1) {
this[i].style.transition = typeof duration !== 'string' ? duration + "ms" : duration;
}
return this;
}
function on() {
for (var _len5 = arguments.length, args = new array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
var eventtype = args[0],
targetselector = args[1],
listener = args[2],
capture = args[3];
if (typeof args[1] === 'function') {
eventtype = args[0];
listener = args[1];
capture = args[2];
targetselector = undefined;
}
if (!capture) capture = false;
function handleliveevent(e) {
var target = e.target;
if (!target) return;
var eventdata = e.target.dom7eventdata || [];
if (eventdata.indexof(e) < 0) {
eventdata.unshift(e);
}
if ($(target).is(targetselector)) listener.apply(target, eventdata);else {
var _parents = $(target).parents(); // eslint-disable-line
for (var k = 0; k < _parents.length; k += 1) {
if ($(_parents[k]).is(targetselector)) listener.apply(_parents[k], eventdata);
}
}
}
function handleevent(e) {
var eventdata = e && e.target ? e.target.dom7eventdata || [] : [];
if (eventdata.indexof(e) < 0) {
eventdata.unshift(e);
}
listener.apply(this, eventdata);
}
var events = eventtype.split(' ');
var j;
for (var i = 0; i < this.length; i += 1) {
var el = this[i];
if (!targetselector) {
for (j = 0; j < events.length; j += 1) {
var event = events[j];
if (!el.dom7listeners) el.dom7listeners = {};
if (!el.dom7listeners[event]) el.dom7listeners[event] = [];
el.dom7listeners[event].push({
listener: listener,
proxylistener: handleevent
});
el.addeventlistener(event, handleevent, capture);
}
} else {
// live events
for (j = 0; j < events.length; j += 1) {
var _event = events[j];
if (!el.dom7livelisteners) el.dom7livelisteners = {};
if (!el.dom7livelisteners[_event]) el.dom7livelisteners[_event] = [];
el.dom7livelisteners[_event].push({
listener: listener,
proxylistener: handleliveevent
});
el.addeventlistener(_event, handleliveevent, capture);
}
}
}
return this;
}
function off() {
for (var _len6 = arguments.length, args = new array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
var eventtype = args[0],
targetselector = args[1],
listener = args[2],
capture = args[3];
if (typeof args[1] === 'function') {
eventtype = args[0];
listener = args[1];
capture = args[2];
targetselector = undefined;
}
if (!capture) capture = false;
var events = eventtype.split(' ');
for (var i = 0; i < events.length; i += 1) {
var event = events[i];
for (var j = 0; j < this.length; j += 1) {
var el = this[j];
var handlers = void 0;
if (!targetselector && el.dom7listeners) {
handlers = el.dom7listeners[event];
} else if (targetselector && el.dom7livelisteners) {
handlers = el.dom7livelisteners[event];
}
if (handlers && handlers.length) {
for (var k = handlers.length - 1; k >= 0; k -= 1) {
var handler = handlers[k];
if (listener && handler.listener === listener) {
el.removeeventlistener(event, handler.proxylistener, capture);
handlers.splice(k, 1);
} else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
el.removeeventlistener(event, handler.proxylistener, capture);
handlers.splice(k, 1);
} else if (!listener) {
el.removeeventlistener(event, handler.proxylistener, capture);
handlers.splice(k, 1);
}
}
}
}
}
return this;
}
function trigger() {
var window = getwindow();
for (var _len9 = arguments.length, args = new array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
args[_key9] = arguments[_key9];
}
var events = args[0].split(' ');
var eventdata = args[1];
for (var i = 0; i < events.length; i += 1) {
var event = events[i];
for (var j = 0; j < this.length; j += 1) {
var el = this[j];
if (window.customevent) {
var evt = new window.customevent(event, {
detail: eventdata,
bubbles: true,
cancelable: true
});
el.dom7eventdata = args.filter(function (data, dataindex) {
return dataindex > 0;
});
el.dispatchevent(evt);
el.dom7eventdata = [];
delete el.dom7eventdata;
}
}
}
return this;
}
function transitionend(callback) {
var dom = this;
function firecallback(e) {
if (e.target !== this) return;
callback.call(this, e);
dom.off('transitionend', firecallback);
}
if (callback) {
dom.on('transitionend', firecallback);
}
return this;
}
function outerwidth(includemargins) {
if (this.length > 0) {
if (includemargins) {
var _styles = this.styles();
return this[0].offsetwidth + parsefloat(_styles.getpropertyvalue('margin-right')) + parsefloat(_styles.getpropertyvalue('margin-left'));
}
return this[0].offsetwidth;
}
return null;
}
function outerheight(includemargins) {
if (this.length > 0) {
if (includemargins) {
var _styles2 = this.styles();
return this[0].offsetheight + parsefloat(_styles2.getpropertyvalue('margin-top')) + parsefloat(_styles2.getpropertyvalue('margin-bottom'));
}
return this[0].offsetheight;
}
return null;
}
function offset() {
if (this.length > 0) {
var window = getwindow();
var document = getdocument();
var el = this[0];
var box = el.getboundingclientrect();
var body = document.body;
var clienttop = el.clienttop || body.clienttop || 0;
var clientleft = el.clientleft || body.clientleft || 0;
var scrolltop = el === window ? window.scrolly : el.scrolltop;
var scrollleft = el === window ? window.scrollx : el.scrollleft;
return {
top: box.top + scrolltop - clienttop,
left: box.left + scrollleft - clientleft
};
}
return null;
}
function styles() {
var window = getwindow();
if (this[0]) return window.getcomputedstyle(this[0], null);
return {};
}
function css(props, value) {
var window = getwindow();
var i;
if (arguments.length === 1) {
if (typeof props === 'string') {
// .css('width')
if (this[0]) return window.getcomputedstyle(this[0], null).getpropertyvalue(props);
} else {
// .css({ width: '100px' })
for (i = 0; i < this.length; i += 1) {
for (var _prop in props) {
this[i].style[_prop] = props[_prop];
}
}
return this;
}
}
if (arguments.length === 2 && typeof props === 'string') {
// .css('width', '100px')
for (i = 0; i < this.length; i += 1) {
this[i].style[props] = value;
}
return this;
}
return this;
}
function each(callback) {
if (!callback) return this;
this.foreach(function (el, index) {
callback.apply(el, [el, index]);
});
return this;
}
function filter(callback) {
var result = arrayfilter(this, callback);
return $(result);
}
function html(html) {
if (typeof html === 'undefined') {
return this[0] ? this[0].innerhtml : null;
}
for (var i = 0; i < this.length; i += 1) {
this[i].innerhtml = html;
}
return this;
}
function text(text) {
if (typeof text === 'undefined') {
return this[0] ? this[0].textcontent.trim() : null;
}
for (var i = 0; i < this.length; i += 1) {
this[i].textcontent = text;
}
return this;
}
function is(selector) {
var window = getwindow();
var document = getdocument();
var el = this[0];
var comparewith;
var i;
if (!el || typeof selector === 'undefined') return false;
if (typeof selector === 'string') {
if (el.matches) return el.matches(selector);
if (el.webkitmatchesselector) return el.webkitmatchesselector(selector);
if (el.msmatchesselector) return el.msmatchesselector(selector);
comparewith = $(selector);
for (i = 0; i < comparewith.length; i += 1) {
if (comparewith[i] === el) return true;
}
return false;
}
if (selector === document) {
return el === document;
}
if (selector === window) {
return el === window;
}
if (selector.nodetype || selector instanceof dom7) {
comparewith = selector.nodetype ? [selector] : selector;
for (i = 0; i < comparewith.length; i += 1) {
if (comparewith[i] === el) return true;
}
return false;
}
return false;
}
function index() {
var child = this[0];
var i;
if (child) {
i = 0; // eslint-disable-next-line
while ((child = child.previoussibling) !== null) {
if (child.nodetype === 1) i += 1;
}
return i;
}
return undefined;
}
function eq(index) {
if (typeof index === 'undefined') return this;
var length = this.length;
if (index > length - 1) {
return $([]);
}
if (index < 0) {
var returnindex = length + index;
if (returnindex < 0) return $([]);
return $([this[returnindex]]);
}
return $([this[index]]);
}
function append() {
var newchild;
var document = getdocument();
for (var k = 0; k < arguments.length; k += 1) {
newchild = k < 0 || arguments.length <= k ? undefined : arguments[k];
for (var i = 0; i < this.length; i += 1) {
if (typeof newchild === 'string') {
var tempdiv = document.createelement('div');
tempdiv.innerhtml = newchild;
while (tempdiv.firstchild) {
this[i].appendchild(tempdiv.firstchild);
}
} else if (newchild instanceof dom7) {
for (var j = 0; j < newchild.length; j += 1) {
this[i].appendchild(newchild[j]);
}
} else {
this[i].appendchild(newchild);
}
}
}
return this;
}
function prepend(newchild) {
var document = getdocument();
var i;
var j;
for (i = 0; i < this.length; i += 1) {
if (typeof newchild === 'string') {
var tempdiv = document.createelement('div');
tempdiv.innerhtml = newchild;
for (j = tempdiv.childnodes.length - 1; j >= 0; j -= 1) {
this[i].insertbefore(tempdiv.childnodes[j], this[i].childnodes[0]);
}
} else if (newchild instanceof dom7) {
for (j = 0; j < newchild.length; j += 1) {
this[i].insertbefore(newchild[j], this[i].childnodes[0]);
}
} else {
this[i].insertbefore(newchild, this[i].childnodes[0]);
}
}
return this;
}
function next(selector) {
if (this.length > 0) {
if (selector) {
if (this[0].nextelementsibling && $(this[0].nextelementsibling).is(selector)) {
return $([this[0].nextelementsibling]);
}
return $([]);
}
if (this[0].nextelementsibling) return $([this[0].nextelementsibling]);
return $([]);
}
return $([]);
}
function nextall(selector) {
var nextels = [];
var el = this[0];
if (!el) return $([]);
while (el.nextelementsibling) {
var _next = el.nextelementsibling; // eslint-disable-line
if (selector) {
if ($(_next).is(selector)) nextels.push(_next);
} else nextels.push(_next);
el = _next;
}
return $(nextels);
}
function prev(selector) {
if (this.length > 0) {
var el = this[0];
if (selector) {
if (el.previouselementsibling && $(el.previouselementsibling).is(selector)) {
return $([el.previouselementsibling]);
}
return $([]);
}
if (el.previouselementsibling) return $([el.previouselementsibling]);
return $([]);
}
return $([]);
}
function prevall(selector) {
var prevels = [];
var el = this[0];
if (!el) return $([]);
while (el.previouselementsibling) {
var _prev = el.previouselementsibling; // eslint-disable-line
if (selector) {
if ($(_prev).is(selector)) prevels.push(_prev);
} else prevels.push(_prev);
el = _prev;
}
return $(prevels);
}
function parent(selector) {
var parents = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
if (this[i].parentnode !== null) {
if (selector) {
if ($(this[i].parentnode).is(selector)) parents.push(this[i].parentnode);
} else {
parents.push(this[i].parentnode);
}
}
}
return $(parents);
}
function parents(selector) {
var parents = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
var _parent = this[i].parentnode; // eslint-disable-line
while (_parent) {
if (selector) {
if ($(_parent).is(selector)) parents.push(_parent);
} else {
parents.push(_parent);
}
_parent = _parent.parentnode;
}
}
return $(parents);
}
function closest(selector) {
var closest = this; // eslint-disable-line
if (typeof selector === 'undefined') {
return $([]);
}
if (!closest.is(selector)) {
closest = closest.parents(selector).eq(0);
}
return closest;
}
function find(selector) {
var foundelements = [];
for (var i = 0; i < this.length; i += 1) {
var found = this[i].queryselectorall(selector);
for (var j = 0; j < found.length; j += 1) {
foundelements.push(found[j]);
}
}
return $(foundelements);
}
function children(selector) {
var children = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
var childnodes = this[i].children;
for (var j = 0; j < childnodes.length; j += 1) {
if (!selector || $(childnodes[j]).is(selector)) {
children.push(childnodes[j]);
}
}
}
return $(children);
}
function remove() {
for (var i = 0; i < this.length; i += 1) {
if (this[i].parentnode) this[i].parentnode.removechild(this[i]);
}
return this;
}
var methods = {
addclass: addclass,
removeclass: removeclass,
hasclass: hasclass,
toggleclass: toggleclass,
attr: attr,
removeattr: removeattr,
transform: transform,
transition: transition,
on: on,
off: off,
trigger: trigger,
transitionend: transitionend,
outerwidth: outerwidth,
outerheight: outerheight,
styles: styles,
offset: offset,
css: css,
each: each,
html: html,
text: text,
is: is,
index: index,
eq: eq,
append: append,
prepend: prepend,
next: next,
nextall: nextall,
prev: prev,
prevall: prevall,
parent: parent,
parents: parents,
closest: closest,
find: find,
children: children,
filter: filter,
remove: remove
};
object.keys(methods).foreach(function (methodname) {
$.fn[methodname] = methods[methodname];
});
function deleteprops(obj) {
var object = obj;
object.keys(object).foreach(function (key) {
try {
object[key] = null;
} catch (e) {// no getter for object
}
try {
delete object[key];
} catch (e) {// something got wrong
}
});
}
function nexttick(callback, delay) {
if (delay === void 0) {
delay = 0;
}
return settimeout(callback, delay);
}
function now() {
return date.now();
}
function gettranslate(el, axis) {
if (axis === void 0) {
axis = 'x';
}
var window = getwindow();
var matrix;
var curtransform;
var transformmatrix;
var curstyle = window.getcomputedstyle(el, null);
if (window.webkitcssmatrix) {
curtransform = curstyle.transform || curstyle.webkittransform;
if (curtransform.split(',').length > 6) {
curtransform = curtransform.split(', ').map(function (a) {
return a.replace(',', '.');
}).join(', ');
} // some old versions of webkit choke when 'none' is passed; pass
// empty string instead in this case
transformmatrix = new window.webkitcssmatrix(curtransform === 'none' ? '' : curtransform);
} else {
transformmatrix = curstyle.moztransform || curstyle.otransform || curstyle.mstransform || curstyle.mstransform || curstyle.transform || curstyle.getpropertyvalue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
matrix = transformmatrix.tostring().split(',');
}
if (axis === 'x') {
// latest chrome and webkits fix
if (window.webkitcssmatrix) curtransform = transformmatrix.m41; // crazy ie10 matrix
else if (matrix.length === 16) curtransform = parsefloat(matrix[12]); // normal browsers
else curtransform = parsefloat(matrix[4]);
}
if (axis === 'y') {
// latest chrome and webkits fix
if (window.webkitcssmatrix) curtransform = transformmatrix.m42; // crazy ie10 matrix
else if (matrix.length === 16) curtransform = parsefloat(matrix[13]); // normal browsers
else curtransform = parsefloat(matrix[5]);
}
return curtransform || 0;
}
function isobject$1(o) {
return typeof o === 'object' && o !== null && o.constructor && o.constructor === object;
}
function extend$1() {
var to = object(arguments.length <= 0 ? undefined : arguments[0]);
for (var i = 1; i < arguments.length; i += 1) {
var nextsource = i < 0 || arguments.length <= i ? undefined : arguments[i];
if (nextsource !== undefined && nextsource !== null) {
var keysarray = object.keys(object(nextsource));
for (var nextindex = 0, len = keysarray.length; nextindex < len; nextindex += 1) {
var nextkey = keysarray[nextindex];
var desc = object.getownpropertydescriptor(nextsource, nextkey);
if (desc !== undefined && desc.enumerable) {
if (isobject$1(to[nextkey]) && isobject$1(nextsource[nextkey])) {
extend$1(to[nextkey], nextsource[nextkey]);
} else if (!isobject$1(to[nextkey]) && isobject$1(nextsource[nextkey])) {
to[nextkey] = {};
extend$1(to[nextkey], nextsource[nextkey]);
} else {
to[nextkey] = nextsource[nextkey];
}
}
}
}
}
return to;
}
function bindmodulemethods(instance, obj) {
object.keys(obj).foreach(function (key) {
if (isobject$1(obj[key])) {
object.keys(obj[key]).foreach(function (subkey) {
if (typeof obj[key][subkey] === 'function') {
obj[key][subkey] = obj[key][subkey].bind(instance);
}
});
}
instance[key] = obj[key];
});
}
var support;
function calcsupport() {
var window = getwindow();
var document = getdocument();
return {
touch: !!('ontouchstart' in window || window.documenttouch && document instanceof window.documenttouch),
pointerevents: !!window.pointerevent && 'maxtouchpoints' in window.navigator && window.navigator.maxtouchpoints >= 0,
observer: function checkobserver() {
return 'mutationobserver' in window || 'webkitmutationobserver' in window;
}(),
passivelistener: function checkpassivelistener() {
var supportspassive = false;
try {
var opts = object.defineproperty({}, 'passive', {
// eslint-disable-next-line
get: function get() {
supportspassive = true;
}
});
window.addeventlistener('testpassivelistener', null, opts);
} catch (e) {// no support
}
return supportspassive;
}(),
gestures: function checkgestures() {
return 'ongesturestart' in window;
}()
};
}
function getsupport() {
if (!support) {
support = calcsupport();
}
return support;
}
var device;
function calcdevice(_temp) {
var _ref = _temp === void 0 ? {} : _temp,
useragent = _ref.useragent;
var support = getsupport();
var window = getwindow();
var platform = window.navigator.platform;
var ua = useragent || window.navigator.useragent;
var device = {
ios: false,
android: false
};
var screenwidth = window.screen.width;
var screenheight = window.screen.height;
var android = ua.match(/(android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
var ipad = ua.match(/(ipad).*os\s([\d_]+)/);
var ipod = ua.match(/(ipod)(.*os\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iphone\sos|ios)\s([\d_]+)/);
var windows = platform === 'win32';
var macos = platform === 'macintel'; // ipados 13 fix
var ipadscreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768'];
if (!ipad && macos && support.touch && ipadscreens.indexof(screenwidth + "x" + screenheight) >= 0) {
ipad = ua.match(/(version)\/([\d.]+)/);
if (!ipad) ipad = [0, 1, '13_0_0'];
macos = false;
} // android
if (android && !windows) {
device.os = 'android';
device.android = true;
}
if (ipad || iphone || ipod) {
device.os = 'ios';
device.ios = true;
} // export object
return device;
}
function getdevice(overrides) {
if (overrides === void 0) {
overrides = {};
}
if (!device) {
device = calcdevice(overrides);
}
return device;
}
var browser;
function calcbrowser() {
var window = getwindow();
function issafari() {
var ua = window.navigator.useragent.tolowercase();
return ua.indexof('safari') >= 0 && ua.indexof('chrome') < 0 && ua.indexof('android') < 0;
}
return {
isedge: !!window.navigator.useragent.match(/edge/g),
issafari: issafari(),
iswebview: /(iphone|ipod|ipad).*applewebkit(?!.*safari)/i.test(window.navigator.useragent)
};
}
function getbrowser() {
if (!browser) {
browser = calcbrowser();
}
return browser;
}
var resize = {
name: 'resize',
create: function create() {
var swiper = this;
extend$1(swiper, {
resize: {
resizehandler: function resizehandler() {
if (!swiper || swiper.destroyed || !swiper.initialized) return;
swiper.emit('beforeresize');
swiper.emit('resize');
},
orientationchangehandler: function orientationchangehandler() {
if (!swiper || swiper.destroyed || !swiper.initialized) return;
swiper.emit('orientationchange');
}
}
});
},
on: {
init: function init(swiper) {
var window = getwindow(); // emit resize
window.addeventlistener('resize', swiper.resize.resizehandler); // emit orientationchange
window.addeventlistener('orientationchange', swiper.resize.orientationchangehandler);
},
destroy: function destroy(swiper) {
var window = getwindow();
window.removeeventlistener('resize', swiper.resize.resizehandler);
window.removeeventlistener('orientationchange', swiper.resize.orientationchangehandler);
}
}
};
var observer = {
attach: function attach(target, options) {
if (options === void 0) {
options = {};
}
var window = getwindow();
var swiper = this;
var observerfunc = window.mutationobserver || window.webkitmutationobserver;
var observer = new observerfunc(function (mutations) {
// the observerupdate event should only be triggered
// once despite the number of mutations. additional
// triggers are redundant and are very costly
if (mutations.length === 1) {
swiper.emit('observerupdate', mutations[0]);
return;
}
var observerupdate = function observerupdate() {
swiper.emit('observerupdate', mutations[0]);
};
if (window.requestanimationframe) {
window.requestanimationframe(observerupdate);
} else {
window.settimeout(observerupdate, 0);
}
});
observer.observe(target, {
attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
childlist: typeof options.childlist === 'undefined' ? true : options.childlist,
characterdata: typeof options.characterdata === 'undefined' ? true : options.characterdata
});
swiper.observer.observers.push(observer);
},
init: function init() {
var swiper = this;
if (!swiper.support.observer || !swiper.params.observer) return;
if (swiper.params.observeparents) {
var containerparents = swiper.$el.parents();
for (var i = 0; i < containerparents.length; i += 1) {
swiper.observer.attach(containerparents[i]);
}
} // observe container
swiper.observer.attach(swiper.$el[0], {
childlist: swiper.params.observeslidechildren
}); // observe wrapper
swiper.observer.attach(swiper.$wrapperel[0], {
attributes: false
});
},
destroy: function destroy() {
var swiper = this;
swiper.observer.observers.foreach(function (observer) {
observer.disconnect();
});
swiper.observer.observers = [];
}
};
var observer$1 = {
name: 'observer',
params: {
observer: false,
observeparents: false,
observeslidechildren: false
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
observer: _extends(_extends({}, observer), {}, {
observers: []
})
});
},
on: {
init: function init(swiper) {
swiper.observer.init();
},
destroy: function destroy(swiper) {
swiper.observer.destroy();
}
}
};
var modular = {
useparams: function useparams(instanceparams) {
var instance = this;
if (!instance.modules) return;
object.keys(instance.modules).foreach(function (modulename) {
var module = instance.modules[modulename]; // extend params
if (module.params) {
extend$1(instanceparams, module.params);
}
});
},
usemodules: function usemodules(modulesparams) {
if (modulesparams === void 0) {
modulesparams = {};
}
var instance = this;
if (!instance.modules) return;
object.keys(instance.modules).foreach(function (modulename) {
var module = instance.modules[modulename];
var moduleparams = modulesparams[modulename] || {}; // add event listeners
if (module.on && instance.on) {
object.keys(module.on).foreach(function (moduleeventname) {
instance.on(moduleeventname, module.on[moduleeventname]);
});
} // module create callback
if (module.create) {
module.create.bind(instance)(moduleparams);
}
});
}
};
/* eslint-disable no-underscore-dangle */
var eventsemitter = {
on: function on(events, handler, priority) {
var self = this;
if (typeof handler !== 'function') return self;
var method = priority ? 'unshift' : 'push';
events.split(' ').foreach(function (event) {
if (!self.eventslisteners[event]) self.eventslisteners[event] = [];
self.eventslisteners[event][method](handler);
});
return self;
},
once: function once(events, handler, priority) {
var self = this;
if (typeof handler !== 'function') return self;
function oncehandler() {
self.off(events, oncehandler);
if (oncehandler.__emitterproxy) {
delete oncehandler.__emitterproxy;
}
for (var _len = arguments.length, args = new array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
handler.apply(self, args);
}
oncehandler.__emitterproxy = handler;
return self.on(events, oncehandler, priority);
},
onany: function onany(handler, priority) {
var self = this;
if (typeof handler !== 'function') return self;
var method = priority ? 'unshift' : 'push';
if (self.eventsanylisteners.indexof(handler) < 0) {
self.eventsanylisteners[method](handler);
}
return self;
},
offany: function offany(handler) {
var self = this;
if (!self.eventsanylisteners) return self;
var index = self.eventsanylisteners.indexof(handler);
if (index >= 0) {
self.eventsanylisteners.splice(index, 1);
}
return self;
},
off: function off(events, handler) {
var self = this;
if (!self.eventslisteners) return self;
events.split(' ').foreach(function (event) {
if (typeof handler === 'undefined') {
self.eventslisteners[event] = [];
} else if (self.eventslisteners[event]) {
self.eventslisteners[event].foreach(function (eventhandler, index) {
if (eventhandler === handler || eventhandler.__emitterproxy && eventhandler.__emitterproxy === handler) {
self.eventslisteners[event].splice(index, 1);
}
});
}
});
return self;
},
emit: function emit() {
var self = this;
if (!self.eventslisteners) return self;
var events;
var data;
var context;
for (var _len2 = arguments.length, args = new array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
if (typeof args[0] === 'string' || array.isarray(args[0])) {
events = args[0];
data = args.slice(1, args.length);
context = self;
} else {
events = args[0].events;
data = args[0].data;
context = args[0].context || self;
}
data.unshift(context);
var eventsarray = array.isarray(events) ? events : events.split(' ');
eventsarray.foreach(function (event) {
if (self.eventslisteners && self.eventslisteners[event]) {
var handlers = [];
self.eventslisteners[event].foreach(function (eventhandler) {
handlers.push(eventhandler);
});
handlers.foreach(function (eventhandler) {
eventhandler.apply(context, data);
});
}
});
return self;
}
};
function updatesize() {
var swiper = this;
var width;
var height;
var $el = swiper.$el;
if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
width = swiper.params.width;
} else {
width = $el[0].clientwidth;
}
if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {
height = swiper.params.height;
} else {
height = $el[0].clientheight;
}
if (width === 0 && swiper.ishorizontal() || height === 0 && swiper.isvertical()) {
return;
} // subtract paddings
width = width - parseint($el.css('padding-left') || 0, 10) - parseint($el.css('padding-right') || 0, 10);
height = height - parseint($el.css('padding-top') || 0, 10) - parseint($el.css('padding-bottom') || 0, 10);
if (number.isnan(width)) width = 0;
if (number.isnan(height)) height = 0;
extend$1(swiper, {
width: width,
height: height,
size: swiper.ishorizontal() ? width : height
});
}
function updateslides() {
var swiper = this;
var window = getwindow();
var params = swiper.params;
var $wrapperel = swiper.$wrapperel,
swipersize = swiper.size,
rtl = swiper.rtltranslate,
wrongrtl = swiper.wrongrtl;
var isvirtual = swiper.virtual && params.virtual.enabled;
var previousslideslength = isvirtual ? swiper.virtual.slides.length : swiper.slides.length;
var slides = $wrapperel.children("." + swiper.params.slideclass);
var slideslength = isvirtual ? swiper.virtual.slides.length : slides.length;
var snapgrid = [];
var slidesgrid = [];
var slidessizesgrid = [];
function slidesformargin(slideel, slideindex) {
if (!params.cssmode) return true;
if (slideindex === slides.length - 1) {
return false;
}
return true;
}
var offsetbefore = params.slidesoffsetbefore;
if (typeof offsetbefore === 'function') {
offsetbefore = params.slidesoffsetbefore.call(swiper);
}
var offsetafter = params.slidesoffsetafter;
if (typeof offsetafter === 'function') {
offsetafter = params.slidesoffsetafter.call(swiper);
}
var previoussnapgridlength = swiper.snapgrid.length;
var previousslidesgridlength = swiper.snapgrid.length;
var spacebetween = params.spacebetween;
var slideposition = -offsetbefore;
var prevslidesize = 0;
var index = 0;
if (typeof swipersize === 'undefined') {
return;
}
if (typeof spacebetween === 'string' && spacebetween.indexof('%') >= 0) {
spacebetween = parsefloat(spacebetween.replace('%', '')) / 100 * swipersize;
}
swiper.virtualsize = -spacebetween; // reset margins
if (rtl) slides.css({
marginleft: '',
margintop: ''
});else slides.css({
marginright: '',
marginbottom: ''
});
var slidesnumbereventorows;
if (params.slidespercolumn > 1) {
if (math.floor(slideslength / params.slidespercolumn) === slideslength / swiper.params.slidespercolumn) {
slidesnumbereventorows = slideslength;
} else {
slidesnumbereventorows = math.ceil(slideslength / params.slidespercolumn) * params.slidespercolumn;
}
if (params.slidesperview !== 'auto' && params.slidespercolumnfill === 'row') {
slidesnumbereventorows = math.max(slidesnumbereventorows, params.slidesperview * params.slidespercolumn);
}
} // calc slides
var slidesize;
var slidespercolumn = params.slidespercolumn;
var slidesperrow = slidesnumbereventorows / slidespercolumn;
var numfullcolumns = math.floor(slideslength / params.slidespercolumn);
for (var i = 0; i < slideslength; i += 1) {
slidesize = 0;
var slide = slides.eq(i);
if (params.slidespercolumn > 1) {
// set slides order
var newslideorderindex = void 0;
var column = void 0;
var row = void 0;
if (params.slidespercolumnfill === 'row' && params.slidespergroup > 1) {
var groupindex = math.floor(i / (params.slidespergroup * params.slidespercolumn));
var slideindexingroup = i - params.slidespercolumn * params.slidespergroup * groupindex;
var columnsingroup = groupindex === 0 ? params.slidespergroup : math.min(math.ceil((slideslength - groupindex * slidespercolumn * params.slidespergroup) / slidespercolumn), params.slidespergroup);
row = math.floor(slideindexingroup / columnsingroup);
column = slideindexingroup - row * columnsingroup + groupindex * params.slidespergroup;
newslideorderindex = column + row * slidesnumbereventorows / slidespercolumn;
slide.css({
'-webkit-box-ordinal-group': newslideorderindex,
'-moz-box-ordinal-group': newslideorderindex,
'-ms-flex-order': newslideorderindex,
'-webkit-order': newslideorderindex,
order: newslideorderindex
});
} else if (params.slidespercolumnfill === 'column') {
column = math.floor(i / slidespercolumn);
row = i - column * slidespercolumn;
if (column > numfullcolumns || column === numfullcolumns && row === slidespercolumn - 1) {
row += 1;
if (row >= slidespercolumn) {
row = 0;
column += 1;
}
}
} else {
row = math.floor(i / slidesperrow);
column = i - row * slidesperrow;
}
slide.css("margin-" + (swiper.ishorizontal() ? 'top' : 'left'), row !== 0 && params.spacebetween && params.spacebetween + "px");
}
if (slide.css('display') === 'none') continue; // eslint-disable-line
if (params.slidesperview === 'auto') {
var slidestyles = window.getcomputedstyle(slide[0], null);
var currenttransform = slide[0].style.transform;
var currentwebkittransform = slide[0].style.webkittransform;
if (currenttransform) {
slide[0].style.transform = 'none';
}
if (currentwebkittransform) {
slide[0].style.webkittransform = 'none';
}
if (params.roundlengths) {
slidesize = swiper.ishorizontal() ? slide.outerwidth(true) : slide.outerheight(true);
} else {
// eslint-disable-next-line
if (swiper.ishorizontal()) {
var width = parsefloat(slidestyles.getpropertyvalue('width') || 0);
var paddingleft = parsefloat(slidestyles.getpropertyvalue('padding-left') || 0);
var paddingright = parsefloat(slidestyles.getpropertyvalue('padding-right') || 0);
var marginleft = parsefloat(slidestyles.getpropertyvalue('margin-left') || 0);
var marginright = parsefloat(slidestyles.getpropertyvalue('margin-right') || 0);
var boxsizing = slidestyles.getpropertyvalue('box-sizing');
if (boxsizing && boxsizing === 'border-box') {
slidesize = width + marginleft + marginright;
} else {
slidesize = width + paddingleft + paddingright + marginleft + marginright;
}
} else {
var height = parsefloat(slidestyles.getpropertyvalue('height') || 0);
var paddingtop = parsefloat(slidestyles.getpropertyvalue('padding-top') || 0);
var paddingbottom = parsefloat(slidestyles.getpropertyvalue('padding-bottom') || 0);
var margintop = parsefloat(slidestyles.getpropertyvalue('margin-top') || 0);
var marginbottom = parsefloat(slidestyles.getpropertyvalue('margin-bottom') || 0);
var _boxsizing = slidestyles.getpropertyvalue('box-sizing');
if (_boxsizing && _boxsizing === 'border-box') {
slidesize = height + margintop + marginbottom;
} else {
slidesize = height + paddingtop + paddingbottom + margintop + marginbottom;
}
}
}
if (currenttransform) {
slide[0].style.transform = currenttransform;
}
if (currentwebkittransform) {
slide[0].style.webkittransform = currentwebkittransform;
}
if (params.roundlengths) slidesize = math.floor(slidesize);
} else {
slidesize = (swipersize - (params.slidesperview - 1) * spacebetween) / params.slidesperview;
if (params.roundlengths) slidesize = math.floor(slidesize);
if (slides[i]) {
if (swiper.ishorizontal()) {
slides[i].style.width = slidesize + "px";
} else {
slides[i].style.height = slidesize + "px";
}
}
}
if (slides[i]) {
slides[i].swiperslidesize = slidesize;
}
slidessizesgrid.push(slidesize);
if (params.centeredslides) {
slideposition = slideposition + slidesize / 2 + prevslidesize / 2 + spacebetween;
if (prevslidesize === 0 && i !== 0) slideposition = slideposition - swipersize / 2 - spacebetween;
if (i === 0) slideposition = slideposition - swipersize / 2 - spacebetween;
if (math.abs(slideposition) < 1 / 1000) slideposition = 0;
if (params.roundlengths) slideposition = math.floor(slideposition);
if (index % params.slidespergroup === 0) snapgrid.push(slideposition);
slidesgrid.push(slideposition);
} else {
if (params.roundlengths) slideposition = math.floor(slideposition);
if ((index - math.min(swiper.params.slidespergroupskip, index)) % swiper.params.slidespergroup === 0) snapgrid.push(slideposition);
slidesgrid.push(slideposition);
slideposition = slideposition + slidesize + spacebetween;
}
swiper.virtualsize += slidesize + spacebetween;
prevslidesize = slidesize;
index += 1;
}
swiper.virtualsize = math.max(swiper.virtualsize, swipersize) + offsetafter;
var newslidesgrid;
if (rtl && wrongrtl && (params.effect === 'slide' || params.effect === 'coverflow')) {
$wrapperel.css({
width: swiper.virtualsize + params.spacebetween + "px"
});
}
if (params.setwrappersize) {
if (swiper.ishorizontal()) $wrapperel.css({
width: swiper.virtualsize + params.spacebetween + "px"
});else $wrapperel.css({
height: swiper.virtualsize + params.spacebetween + "px"
});
}
if (params.slidespercolumn > 1) {
swiper.virtualsize = (slidesize + params.spacebetween) * slidesnumbereventorows;
swiper.virtualsize = math.ceil(swiper.virtualsize / params.slidespercolumn) - params.spacebetween;
if (swiper.ishorizontal()) $wrapperel.css({
width: swiper.virtualsize + params.spacebetween + "px"
});else $wrapperel.css({
height: swiper.virtualsize + params.spacebetween + "px"
});
if (params.centeredslides) {
newslidesgrid = [];
for (var _i = 0; _i < snapgrid.length; _i += 1) {
var slidesgriditem = snapgrid[_i];
if (params.roundlengths) slidesgriditem = math.floor(slidesgriditem);
if (snapgrid[_i] < swiper.virtualsize + snapgrid[0]) newslidesgrid.push(slidesgriditem);
}
snapgrid = newslidesgrid;
}
} // remove last grid elements depending on width
if (!params.centeredslides) {
newslidesgrid = [];
for (var _i2 = 0; _i2 < snapgrid.length; _i2 += 1) {
var _slidesgriditem = snapgrid[_i2];
if (params.roundlengths) _slidesgriditem = math.floor(_slidesgriditem);
if (snapgrid[_i2] <= swiper.virtualsize - swipersize) {
newslidesgrid.push(_slidesgriditem);
}
}
snapgrid = newslidesgrid;
if (math.floor(swiper.virtualsize - swipersize) - math.floor(snapgrid[snapgrid.length - 1]) > 1) {
snapgrid.push(swiper.virtualsize - swipersize);
}
}
if (snapgrid.length === 0) snapgrid = [0];
if (params.spacebetween !== 0) {
if (swiper.ishorizontal()) {
if (rtl) slides.filter(slidesformargin).css({
marginleft: spacebetween + "px"
});else slides.filter(slidesformargin).css({
marginright: spacebetween + "px"
});
} else slides.filter(slidesformargin).css({
marginbottom: spacebetween + "px"
});
}
if (params.centeredslides && params.centeredslidesbounds) {
var allslidessize = 0;
slidessizesgrid.foreach(function (slidesizevalue) {
allslidessize += slidesizevalue + (params.spacebetween ? params.spacebetween : 0);
});
allslidessize -= params.spacebetween;
var maxsnap = allslidessize - swipersize;
snapgrid = snapgrid.map(function (snap) {
if (snap < 0) return -offsetbefore;
if (snap > maxsnap) return maxsnap + offsetafter;
return snap;
});
}
if (params.centerinsufficientslides) {
var _allslidessize = 0;
slidessizesgrid.foreach(function (slidesizevalue) {
_allslidessize += slidesizevalue + (params.spacebetween ? params.spacebetween : 0);
});
_allslidessize -= params.spacebetween;
if (_allslidessize < swipersize) {
var allslidesoffset = (swipersize - _allslidessize) / 2;
snapgrid.foreach(function (snap, snapindex) {
snapgrid[snapindex] = snap - allslidesoffset;
});
slidesgrid.foreach(function (snap, snapindex) {
slidesgrid[snapindex] = snap + allslidesoffset;
});
}
}
extend$1(swiper, {
slides: slides,
snapgrid: snapgrid,
slidesgrid: slidesgrid,
slidessizesgrid: slidessizesgrid
});
if (slideslength !== previousslideslength) {
swiper.emit('slideslengthchange');
}
if (snapgrid.length !== previoussnapgridlength) {
if (swiper.params.watchoverflow) swiper.checkoverflow();
swiper.emit('snapgridlengthchange');
}
if (slidesgrid.length !== previousslidesgridlength) {
swiper.emit('slidesgridlengthchange');
}
if (params.watchslidesprogress || params.watchslidesvisibility) {
swiper.updateslidesoffset();
}
}
function updateautoheight(speed) {
var swiper = this;
var activeslides = [];
var newheight = 0;
var i;
if (typeof speed === 'number') {
swiper.settransition(speed);
} else if (speed === true) {
swiper.settransition(swiper.params.speed);
} // find slides currently in view
if (swiper.params.slidesperview !== 'auto' && swiper.params.slidesperview > 1) {
if (swiper.params.centeredslides) {
swiper.visibleslides.each(function (slide) {
activeslides.push(slide);
});
} else {
for (i = 0; i < math.ceil(swiper.params.slidesperview); i += 1) {
var index = swiper.activeindex + i;
if (index > swiper.slides.length) break;
activeslides.push(swiper.slides.eq(index)[0]);
}
}
} else {
activeslides.push(swiper.slides.eq(swiper.activeindex)[0]);
} // find new height from highest slide in view
for (i = 0; i < activeslides.length; i += 1) {
if (typeof activeslides[i] !== 'undefined') {
var height = activeslides[i].offsetheight;
newheight = height > newheight ? height : newheight;
}
} // update height
if (newheight) swiper.$wrapperel.css('height', newheight + "px");
}
function updateslidesoffset() {
var swiper = this;
var slides = swiper.slides;
for (var i = 0; i < slides.length; i += 1) {
slides[i].swiperslideoffset = swiper.ishorizontal() ? slides[i].offsetleft : slides[i].offsettop;
}
}
function updateslidesprogress(translate) {
if (translate === void 0) {
translate = this && this.translate || 0;
}
var swiper = this;
var params = swiper.params;
var slides = swiper.slides,
rtl = swiper.rtltranslate;
if (slides.length === 0) return;
if (typeof slides[0].swiperslideoffset === 'undefined') swiper.updateslidesoffset();
var offsetcenter = -translate;
if (rtl) offsetcenter = translate; // visible slides
slides.removeclass(params.slidevisibleclass);
swiper.visibleslidesindexes = [];
swiper.visibleslides = [];
for (var i = 0; i < slides.length; i += 1) {
var slide = slides[i];
var slideprogress = (offsetcenter + (params.centeredslides ? swiper.mintranslate() : 0) - slide.swiperslideoffset) / (slide.swiperslidesize + params.spacebetween);
if (params.watchslidesvisibility || params.centeredslides && params.autoheight) {
var slidebefore = -(offsetcenter - slide.swiperslideoffset);
var slideafter = slidebefore + swiper.slidessizesgrid[i];
var isvisible = slidebefore >= 0 && slidebefore < swiper.size - 1 || slideafter > 1 && slideafter <= swiper.size || slidebefore <= 0 && slideafter >= swiper.size;
if (isvisible) {
swiper.visibleslides.push(slide);
swiper.visibleslidesindexes.push(i);
slides.eq(i).addclass(params.slidevisibleclass);
}
}
slide.progress = rtl ? -slideprogress : slideprogress;
}
swiper.visibleslides = $(swiper.visibleslides);
}
function updateprogress(translate) {
var swiper = this;
if (typeof translate === 'undefined') {
var multiplier = swiper.rtltranslate ? -1 : 1; // eslint-disable-next-line
translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
}
var params = swiper.params;
var translatesdiff = swiper.maxtranslate() - swiper.mintranslate();
var progress = swiper.progress,
isbeginning = swiper.isbeginning,
isend = swiper.isend;
var wasbeginning = isbeginning;
var wasend = isend;
if (translatesdiff === 0) {
progress = 0;
isbeginning = true;
isend = true;
} else {
progress = (translate - swiper.mintranslate()) / translatesdiff;
isbeginning = progress <= 0;
isend = progress >= 1;
}
extend$1(swiper, {
progress: progress,
isbeginning: isbeginning,
isend: isend
});
if (params.watchslidesprogress || params.watchslidesvisibility || params.centeredslides && params.autoheight) swiper.updateslidesprogress(translate);
if (isbeginning && !wasbeginning) {
swiper.emit('reachbeginning toedge');
}
if (isend && !wasend) {
swiper.emit('reachend toedge');
}
if (wasbeginning && !isbeginning || wasend && !isend) {
swiper.emit('fromedge');
}
swiper.emit('progress', progress);
}
function updateslidesclasses() {
var swiper = this;
var slides = swiper.slides,
params = swiper.params,
$wrapperel = swiper.$wrapperel,
activeindex = swiper.activeindex,
realindex = swiper.realindex;
var isvirtual = swiper.virtual && params.virtual.enabled;
slides.removeclass(params.slideactiveclass + " " + params.slidenextclass + " " + params.slideprevclass + " " + params.slideduplicateactiveclass + " " + params.slideduplicatenextclass + " " + params.slideduplicateprevclass);
var activeslide;
if (isvirtual) {
activeslide = swiper.$wrapperel.find("." + params.slideclass + "[data-swiper-slide-index=\"" + activeindex + "\"]");
} else {
activeslide = slides.eq(activeindex);
} // active classes
activeslide.addclass(params.slideactiveclass);
if (params.loop) {
// duplicate to all looped slides
if (activeslide.hasclass(params.slideduplicateclass)) {
$wrapperel.children("." + params.slideclass + ":not(." + params.slideduplicateclass + ")[data-swiper-slide-index=\"" + realindex + "\"]").addclass(params.slideduplicateactiveclass);
} else {
$wrapperel.children("." + params.slideclass + "." + params.slideduplicateclass + "[data-swiper-slide-index=\"" + realindex + "\"]").addclass(params.slideduplicateactiveclass);
}
} // next slide
var nextslide = activeslide.nextall("." + params.slideclass).eq(0).addclass(params.slidenextclass);
if (params.loop && nextslide.length === 0) {
nextslide = slides.eq(0);
nextslide.addclass(params.slidenextclass);
} // prev slide
var prevslide = activeslide.prevall("." + params.slideclass).eq(0).addclass(params.slideprevclass);
if (params.loop && prevslide.length === 0) {
prevslide = slides.eq(-1);
prevslide.addclass(params.slideprevclass);
}
if (params.loop) {
// duplicate to all looped slides
if (nextslide.hasclass(params.slideduplicateclass)) {
$wrapperel.children("." + params.slideclass + ":not(." + params.slideduplicateclass + ")[data-swiper-slide-index=\"" + nextslide.attr('data-swiper-slide-index') + "\"]").addclass(params.slideduplicatenextclass);
} else {
$wrapperel.children("." + params.slideclass + "." + params.slideduplicateclass + "[data-swiper-slide-index=\"" + nextslide.attr('data-swiper-slide-index') + "\"]").addclass(params.slideduplicatenextclass);
}
if (prevslide.hasclass(params.slideduplicateclass)) {
$wrapperel.children("." + params.slideclass + ":not(." + params.slideduplicateclass + ")[data-swiper-slide-index=\"" + prevslide.attr('data-swiper-slide-index') + "\"]").addclass(params.slideduplicateprevclass);
} else {
$wrapperel.children("." + params.slideclass + "." + params.slideduplicateclass + "[data-swiper-slide-index=\"" + prevslide.attr('data-swiper-slide-index') + "\"]").addclass(params.slideduplicateprevclass);
}
}
swiper.emitslidesclasses();
}
function updateactiveindex(newactiveindex) {
var swiper = this;
var translate = swiper.rtltranslate ? swiper.translate : -swiper.translate;
var slidesgrid = swiper.slidesgrid,
snapgrid = swiper.snapgrid,
params = swiper.params,
previousindex = swiper.activeindex,
previousrealindex = swiper.realindex,
previoussnapindex = swiper.snapindex;
var activeindex = newactiveindex;
var snapindex;
if (typeof activeindex === 'undefined') {
for (var i = 0; i < slidesgrid.length; i += 1) {
if (typeof slidesgrid[i + 1] !== 'undefined') {
if (translate >= slidesgrid[i] && translate < slidesgrid[i + 1] - (slidesgrid[i + 1] - slidesgrid[i]) / 2) {
activeindex = i;
} else if (translate >= slidesgrid[i] && translate < slidesgrid[i + 1]) {
activeindex = i + 1;
}
} else if (translate >= slidesgrid[i]) {
activeindex = i;
}
} // normalize slideindex
if (params.normalizeslideindex) {
if (activeindex < 0 || typeof activeindex === 'undefined') activeindex = 0;
}
}
if (snapgrid.indexof(translate) >= 0) {
snapindex = snapgrid.indexof(translate);
} else {
var skip = math.min(params.slidespergroupskip, activeindex);
snapindex = skip + math.floor((activeindex - skip) / params.slidespergroup);
}
if (snapindex >= snapgrid.length) snapindex = snapgrid.length - 1;
if (activeindex === previousindex) {
if (snapindex !== previoussnapindex) {
swiper.snapindex = snapindex;
swiper.emit('snapindexchange');
}
return;
} // get real index
var realindex = parseint(swiper.slides.eq(activeindex).attr('data-swiper-slide-index') || activeindex, 10);
extend$1(swiper, {
snapindex: snapindex,
realindex: realindex,
previousindex: previousindex,
activeindex: activeindex
});
swiper.emit('activeindexchange');
swiper.emit('snapindexchange');
if (previousrealindex !== realindex) {
swiper.emit('realindexchange');
}
if (swiper.initialized || swiper.params.runcallbacksoninit) {
swiper.emit('slidechange');
}
}
function updateclickedslide(e) {
var swiper = this;
var params = swiper.params;
var slide = $(e.target).closest("." + params.slideclass)[0];
var slidefound = false;
if (slide) {
for (var i = 0; i < swiper.slides.length; i += 1) {
if (swiper.slides[i] === slide) slidefound = true;
}
}
if (slide && slidefound) {
swiper.clickedslide = slide;
if (swiper.virtual && swiper.params.virtual.enabled) {
swiper.clickedindex = parseint($(slide).attr('data-swiper-slide-index'), 10);
} else {
swiper.clickedindex = $(slide).index();
}
} else {
swiper.clickedslide = undefined;
swiper.clickedindex = undefined;
return;
}
if (params.slidetoclickedslide && swiper.clickedindex !== undefined && swiper.clickedindex !== swiper.activeindex) {
swiper.slidetoclickedslide();
}
}
var update = {
updatesize: updatesize,
updateslides: updateslides,
updateautoheight: updateautoheight,
updateslidesoffset: updateslidesoffset,
updateslidesprogress: updateslidesprogress,
updateprogress: updateprogress,
updateslidesclasses: updateslidesclasses,
updateactiveindex: updateactiveindex,
updateclickedslide: updateclickedslide
};
function getswipertranslate(axis) {
if (axis === void 0) {
axis = this.ishorizontal() ? 'x' : 'y';
}
var swiper = this;
var params = swiper.params,
rtl = swiper.rtltranslate,
translate = swiper.translate,
$wrapperel = swiper.$wrapperel;
if (params.virtualtranslate) {
return rtl ? -translate : translate;
}
if (params.cssmode) {
return translate;
}
var currenttranslate = gettranslate($wrapperel[0], axis);
if (rtl) currenttranslate = -currenttranslate;
return currenttranslate || 0;
}
function settranslate(translate, bycontroller) {
var swiper = this;
var rtl = swiper.rtltranslate,
params = swiper.params,
$wrapperel = swiper.$wrapperel,
wrapperel = swiper.wrapperel,
progress = swiper.progress;
var x = 0;
var y = 0;
var z = 0;
if (swiper.ishorizontal()) {
x = rtl ? -translate : translate;
} else {
y = translate;
}
if (params.roundlengths) {
x = math.floor(x);
y = math.floor(y);
}
if (params.cssmode) {
wrapperel[swiper.ishorizontal() ? 'scrollleft' : 'scrolltop'] = swiper.ishorizontal() ? -x : -y;
} else if (!params.virtualtranslate) {
$wrapperel.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
}
swiper.previoustranslate = swiper.translate;
swiper.translate = swiper.ishorizontal() ? x : y; // check if we need to update progress
var newprogress;
var translatesdiff = swiper.maxtranslate() - swiper.mintranslate();
if (translatesdiff === 0) {
newprogress = 0;
} else {
newprogress = (translate - swiper.mintranslate()) / translatesdiff;
}
if (newprogress !== progress) {
swiper.updateprogress(translate);
}
swiper.emit('settranslate', swiper.translate, bycontroller);
}
function mintranslate() {
return -this.snapgrid[0];
}
function maxtranslate() {
return -this.snapgrid[this.snapgrid.length - 1];
}
function translateto(translate, speed, runcallbacks, translatebounds, internal) {
if (translate === void 0) {
translate = 0;
}
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
if (translatebounds === void 0) {
translatebounds = true;
}
var swiper = this;
var params = swiper.params,
wrapperel = swiper.wrapperel;
if (swiper.animating && params.preventinteractionontransition) {
return false;
}
var mintranslate = swiper.mintranslate();
var maxtranslate = swiper.maxtranslate();
var newtranslate;
if (translatebounds && translate > mintranslate) newtranslate = mintranslate;else if (translatebounds && translate < maxtranslate) newtranslate = maxtranslate;else newtranslate = translate; // update progress
swiper.updateprogress(newtranslate);
if (params.cssmode) {
var ish = swiper.ishorizontal();
if (speed === 0) {
wrapperel[ish ? 'scrollleft' : 'scrolltop'] = -newtranslate;
} else {
// eslint-disable-next-line
if (wrapperel.scrollto) {
var _wrapperel$scrollto;
wrapperel.scrollto((_wrapperel$scrollto = {}, _wrapperel$scrollto[ish ? 'left' : 'top'] = -newtranslate, _wrapperel$scrollto.behavior = 'smooth', _wrapperel$scrollto));
} else {
wrapperel[ish ? 'scrollleft' : 'scrolltop'] = -newtranslate;
}
}
return true;
}
if (speed === 0) {
swiper.settransition(0);
swiper.settranslate(newtranslate);
if (runcallbacks) {
swiper.emit('beforetransitionstart', speed, internal);
swiper.emit('transitionend');
}
} else {
swiper.settransition(speed);
swiper.settranslate(newtranslate);
if (runcallbacks) {
swiper.emit('beforetransitionstart', speed, internal);
swiper.emit('transitionstart');
}
if (!swiper.animating) {
swiper.animating = true;
if (!swiper.ontranslatetowrappertransitionend) {
swiper.ontranslatetowrappertransitionend = function transitionend(e) {
if (!swiper || swiper.destroyed) return;
if (e.target !== this) return;
swiper.$wrapperel[0].removeeventlistener('transitionend', swiper.ontranslatetowrappertransitionend);
swiper.$wrapperel[0].removeeventlistener('webkittransitionend', swiper.ontranslatetowrappertransitionend);
swiper.ontranslatetowrappertransitionend = null;
delete swiper.ontranslatetowrappertransitionend;
if (runcallbacks) {
swiper.emit('transitionend');
}
};
}
swiper.$wrapperel[0].addeventlistener('transitionend', swiper.ontranslatetowrappertransitionend);
swiper.$wrapperel[0].addeventlistener('webkittransitionend', swiper.ontranslatetowrappertransitionend);
}
}
return true;
}
var translate = {
gettranslate: getswipertranslate,
settranslate: settranslate,
mintranslate: mintranslate,
maxtranslate: maxtranslate,
translateto: translateto
};
function settransition(duration, bycontroller) {
var swiper = this;
if (!swiper.params.cssmode) {
swiper.$wrapperel.transition(duration);
}
swiper.emit('settransition', duration, bycontroller);
}
function transitionstart(runcallbacks, direction) {
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var activeindex = swiper.activeindex,
params = swiper.params,
previousindex = swiper.previousindex;
if (params.cssmode) return;
if (params.autoheight) {
swiper.updateautoheight();
}
var dir = direction;
if (!dir) {
if (activeindex > previousindex) dir = 'next';else if (activeindex < previousindex) dir = 'prev';else dir = 'reset';
}
swiper.emit('transitionstart');
if (runcallbacks && activeindex !== previousindex) {
if (dir === 'reset') {
swiper.emit('slideresettransitionstart');
return;
}
swiper.emit('slidechangetransitionstart');
if (dir === 'next') {
swiper.emit('slidenexttransitionstart');
} else {
swiper.emit('slideprevtransitionstart');
}
}
}
function transitionend$1(runcallbacks, direction) {
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var activeindex = swiper.activeindex,
previousindex = swiper.previousindex,
params = swiper.params;
swiper.animating = false;
if (params.cssmode) return;
swiper.settransition(0);
var dir = direction;
if (!dir) {
if (activeindex > previousindex) dir = 'next';else if (activeindex < previousindex) dir = 'prev';else dir = 'reset';
}
swiper.emit('transitionend');
if (runcallbacks && activeindex !== previousindex) {
if (dir === 'reset') {
swiper.emit('slideresettransitionend');
return;
}
swiper.emit('slidechangetransitionend');
if (dir === 'next') {
swiper.emit('slidenexttransitionend');
} else {
swiper.emit('slideprevtransitionend');
}
}
}
var transition$1 = {
settransition: settransition,
transitionstart: transitionstart,
transitionend: transitionend$1
};
function slideto(index, speed, runcallbacks, internal) {
if (index === void 0) {
index = 0;
}
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var slideindex = index;
if (slideindex < 0) slideindex = 0;
var params = swiper.params,
snapgrid = swiper.snapgrid,
slidesgrid = swiper.slidesgrid,
previousindex = swiper.previousindex,
activeindex = swiper.activeindex,
rtl = swiper.rtltranslate,
wrapperel = swiper.wrapperel;
if (swiper.animating && params.preventinteractionontransition) {
return false;
}
var skip = math.min(swiper.params.slidespergroupskip, slideindex);
var snapindex = skip + math.floor((slideindex - skip) / swiper.params.slidespergroup);
if (snapindex >= snapgrid.length) snapindex = snapgrid.length - 1;
if ((activeindex || params.initialslide || 0) === (previousindex || 0) && runcallbacks) {
swiper.emit('beforeslidechangestart');
}
var translate = -snapgrid[snapindex]; // update progress
swiper.updateprogress(translate); // normalize slideindex
if (params.normalizeslideindex) {
for (var i = 0; i < slidesgrid.length; i += 1) {
if (-math.floor(translate * 100) >= math.floor(slidesgrid[i] * 100)) {
slideindex = i;
}
}
} // directions locks
if (swiper.initialized && slideindex !== activeindex) {
if (!swiper.allowslidenext && translate < swiper.translate && translate < swiper.mintranslate()) {
return false;
}
if (!swiper.allowslideprev && translate > swiper.translate && translate > swiper.maxtranslate()) {
if ((activeindex || 0) !== slideindex) return false;
}
}
var direction;
if (slideindex > activeindex) direction = 'next';else if (slideindex < activeindex) direction = 'prev';else direction = 'reset'; // update index
if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
swiper.updateactiveindex(slideindex); // update height
if (params.autoheight) {
swiper.updateautoheight();
}
swiper.updateslidesclasses();
if (params.effect !== 'slide') {
swiper.settranslate(translate);
}
if (direction !== 'reset') {
swiper.transitionstart(runcallbacks, direction);
swiper.transitionend(runcallbacks, direction);
}
return false;
}
if (params.cssmode) {
var ish = swiper.ishorizontal();
var t = -translate;
if (rtl) {
t = wrapperel.scrollwidth - wrapperel.offsetwidth - t;
}
if (speed === 0) {
wrapperel[ish ? 'scrollleft' : 'scrolltop'] = t;
} else {
// eslint-disable-next-line
if (wrapperel.scrollto) {
var _wrapperel$scrollto;
wrapperel.scrollto((_wrapperel$scrollto = {}, _wrapperel$scrollto[ish ? 'left' : 'top'] = t, _wrapperel$scrollto.behavior = 'smooth', _wrapperel$scrollto));
} else {
wrapperel[ish ? 'scrollleft' : 'scrolltop'] = t;
}
}
return true;
}
if (speed === 0) {
swiper.settransition(0);
swiper.settranslate(translate);
swiper.updateactiveindex(slideindex);
swiper.updateslidesclasses();
swiper.emit('beforetransitionstart', speed, internal);
swiper.transitionstart(runcallbacks, direction);
swiper.transitionend(runcallbacks, direction);
} else {
swiper.settransition(speed);
swiper.settranslate(translate);
swiper.updateactiveindex(slideindex);
swiper.updateslidesclasses();
swiper.emit('beforetransitionstart', speed, internal);
swiper.transitionstart(runcallbacks, direction);
if (!swiper.animating) {
swiper.animating = true;
if (!swiper.onslidetowrappertransitionend) {
swiper.onslidetowrappertransitionend = function transitionend(e) {
if (!swiper || swiper.destroyed) return;
if (e.target !== this) return;
swiper.$wrapperel[0].removeeventlistener('transitionend', swiper.onslidetowrappertransitionend);
swiper.$wrapperel[0].removeeventlistener('webkittransitionend', swiper.onslidetowrappertransitionend);
swiper.onslidetowrappertransitionend = null;
delete swiper.onslidetowrappertransitionend;
swiper.transitionend(runcallbacks, direction);
};
}
swiper.$wrapperel[0].addeventlistener('transitionend', swiper.onslidetowrappertransitionend);
swiper.$wrapperel[0].addeventlistener('webkittransitionend', swiper.onslidetowrappertransitionend);
}
}
return true;
}
function slidetoloop(index, speed, runcallbacks, internal) {
if (index === void 0) {
index = 0;
}
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var newindex = index;
if (swiper.params.loop) {
newindex += swiper.loopedslides;
}
return swiper.slideto(newindex, speed, runcallbacks, internal);
}
/* eslint no-unused-vars: "off" */
function slidenext(speed, runcallbacks, internal) {
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var params = swiper.params,
animating = swiper.animating;
var increment = swiper.activeindex < params.slidespergroupskip ? 1 : params.slidespergroup;
if (params.loop) {
if (animating && params.looppreventsslide) return false;
swiper.loopfix(); // eslint-disable-next-line
swiper._clientleft = swiper.$wrapperel[0].clientleft;
}
return swiper.slideto(swiper.activeindex + increment, speed, runcallbacks, internal);
}
/* eslint no-unused-vars: "off" */
function slideprev(speed, runcallbacks, internal) {
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
var params = swiper.params,
animating = swiper.animating,
snapgrid = swiper.snapgrid,
slidesgrid = swiper.slidesgrid,
rtltranslate = swiper.rtltranslate;
if (params.loop) {
if (animating && params.looppreventsslide) return false;
swiper.loopfix(); // eslint-disable-next-line
swiper._clientleft = swiper.$wrapperel[0].clientleft;
}
var translate = rtltranslate ? swiper.translate : -swiper.translate;
function normalize(val) {
if (val < 0) return -math.floor(math.abs(val));
return math.floor(val);
}
var normalizedtranslate = normalize(translate);
var normalizedsnapgrid = snapgrid.map(function (val) {
return normalize(val);
});
var currentsnap = snapgrid[normalizedsnapgrid.indexof(normalizedtranslate)];
var prevsnap = snapgrid[normalizedsnapgrid.indexof(normalizedtranslate) - 1];
if (typeof prevsnap === 'undefined' && params.cssmode) {
snapgrid.foreach(function (snap) {
if (!prevsnap && normalizedtranslate >= snap) prevsnap = snap;
});
}
var previndex;
if (typeof prevsnap !== 'undefined') {
previndex = slidesgrid.indexof(prevsnap);
if (previndex < 0) previndex = swiper.activeindex - 1;
}
return swiper.slideto(previndex, speed, runcallbacks, internal);
}
/* eslint no-unused-vars: "off" */
function slidereset(speed, runcallbacks, internal) {
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
var swiper = this;
return swiper.slideto(swiper.activeindex, speed, runcallbacks, internal);
}
/* eslint no-unused-vars: "off" */
function slidetoclosest(speed, runcallbacks, internal, threshold) {
if (speed === void 0) {
speed = this.params.speed;
}
if (runcallbacks === void 0) {
runcallbacks = true;
}
if (threshold === void 0) {
threshold = 0.5;
}
var swiper = this;
var index = swiper.activeindex;
var skip = math.min(swiper.params.slidespergroupskip, index);
var snapindex = skip + math.floor((index - skip) / swiper.params.slidespergroup);
var translate = swiper.rtltranslate ? swiper.translate : -swiper.translate;
if (translate >= swiper.snapgrid[snapindex]) {
// the current translate is on or after the current snap index, so the choice
// is between the current index and the one after it.
var currentsnap = swiper.snapgrid[snapindex];
var nextsnap = swiper.snapgrid[snapindex + 1];
if (translate - currentsnap > (nextsnap - currentsnap) * threshold) {
index += swiper.params.slidespergroup;
}
} else {
// the current translate is before the current snap index, so the choice
// is between the current index and the one before it.
var prevsnap = swiper.snapgrid[snapindex - 1];
var _currentsnap = swiper.snapgrid[snapindex];
if (translate - prevsnap <= (_currentsnap - prevsnap) * threshold) {
index -= swiper.params.slidespergroup;
}
}
index = math.max(index, 0);
index = math.min(index, swiper.slidesgrid.length - 1);
return swiper.slideto(index, speed, runcallbacks, internal);
}
function slidetoclickedslide() {
var swiper = this;
var params = swiper.params,
$wrapperel = swiper.$wrapperel;
var slidesperview = params.slidesperview === 'auto' ? swiper.slidesperviewdynamic() : params.slidesperview;
var slidetoindex = swiper.clickedindex;
var realindex;
if (params.loop) {
if (swiper.animating) return;
realindex = parseint($(swiper.clickedslide).attr('data-swiper-slide-index'), 10);
if (params.centeredslides) {
if (slidetoindex < swiper.loopedslides - slidesperview / 2 || slidetoindex > swiper.slides.length - swiper.loopedslides + slidesperview / 2) {
swiper.loopfix();
slidetoindex = $wrapperel.children("." + params.slideclass + "[data-swiper-slide-index=\"" + realindex + "\"]:not(." + params.slideduplicateclass + ")").eq(0).index();
nexttick(function () {
swiper.slideto(slidetoindex);
});
} else {
swiper.slideto(slidetoindex);
}
} else if (slidetoindex > swiper.slides.length - slidesperview) {
swiper.loopfix();
slidetoindex = $wrapperel.children("." + params.slideclass + "[data-swiper-slide-index=\"" + realindex + "\"]:not(." + params.slideduplicateclass + ")").eq(0).index();
nexttick(function () {
swiper.slideto(slidetoindex);
});
} else {
swiper.slideto(slidetoindex);
}
} else {
swiper.slideto(slidetoindex);
}
}
var slide = {
slideto: slideto,
slidetoloop: slidetoloop,
slidenext: slidenext,
slideprev: slideprev,
slidereset: slidereset,
slidetoclosest: slidetoclosest,
slidetoclickedslide: slidetoclickedslide
};
function loopcreate() {
var swiper = this;
var document = getdocument();
var params = swiper.params,
$wrapperel = swiper.$wrapperel; // remove duplicated slides
$wrapperel.children("." + params.slideclass + "." + params.slideduplicateclass).remove();
var slides = $wrapperel.children("." + params.slideclass);
if (params.loopfillgroupwithblank) {
var blankslidesnum = params.slidespergroup - slides.length % params.slidespergroup;
if (blankslidesnum !== params.slidespergroup) {
for (var i = 0; i < blankslidesnum; i += 1) {
var blanknode = $(document.createelement('div')).addclass(params.slideclass + " " + params.slideblankclass);
$wrapperel.append(blanknode);
}
slides = $wrapperel.children("." + params.slideclass);
}
}
if (params.slidesperview === 'auto' && !params.loopedslides) params.loopedslides = slides.length;
swiper.loopedslides = math.ceil(parsefloat(params.loopedslides || params.slidesperview, 10));
swiper.loopedslides += params.loopadditionalslides;
if (swiper.loopedslides > slides.length) {
swiper.loopedslides = slides.length;
}
var prependslides = [];
var appendslides = [];
slides.each(function (el, index) {
var slide = $(el);
if (index < swiper.loopedslides) {
appendslides.push(el);
}
if (index < slides.length && index >= slides.length - swiper.loopedslides) {
prependslides.push(el);
}
slide.attr('data-swiper-slide-index', index);
});
for (var _i = 0; _i < appendslides.length; _i += 1) {
$wrapperel.append($(appendslides[_i].clonenode(true)).addclass(params.slideduplicateclass));
}
for (var _i2 = prependslides.length - 1; _i2 >= 0; _i2 -= 1) {
$wrapperel.prepend($(prependslides[_i2].clonenode(true)).addclass(params.slideduplicateclass));
}
}
function loopfix() {
var swiper = this;
swiper.emit('beforeloopfix');
var activeindex = swiper.activeindex,
slides = swiper.slides,
loopedslides = swiper.loopedslides,
allowslideprev = swiper.allowslideprev,
allowslidenext = swiper.allowslidenext,
snapgrid = swiper.snapgrid,
rtl = swiper.rtltranslate;
var newindex;
swiper.allowslideprev = true;
swiper.allowslidenext = true;
var snaptranslate = -snapgrid[activeindex];
var diff = snaptranslate - swiper.gettranslate(); // fix for negative oversliding
if (activeindex < loopedslides) {
newindex = slides.length - loopedslides * 3 + activeindex;
newindex += loopedslides;
var slidechanged = swiper.slideto(newindex, 0, false, true);
if (slidechanged && diff !== 0) {
swiper.settranslate((rtl ? -swiper.translate : swiper.translate) - diff);
}
} else if (activeindex >= slides.length - loopedslides) {
// fix for positive oversliding
newindex = -slides.length + activeindex + loopedslides;
newindex += loopedslides;
var _slidechanged = swiper.slideto(newindex, 0, false, true);
if (_slidechanged && diff !== 0) {
swiper.settranslate((rtl ? -swiper.translate : swiper.translate) - diff);
}
}
swiper.allowslideprev = allowslideprev;
swiper.allowslidenext = allowslidenext;
swiper.emit('loopfix');
}
function loopdestroy() {
var swiper = this;
var $wrapperel = swiper.$wrapperel,
params = swiper.params,
slides = swiper.slides;
$wrapperel.children("." + params.slideclass + "." + params.slideduplicateclass + ",." + params.slideclass + "." + params.slideblankclass).remove();
slides.removeattr('data-swiper-slide-index');
}
var loop = {
loopcreate: loopcreate,
loopfix: loopfix,
loopdestroy: loopdestroy
};
function setgrabcursor(moving) {
var swiper = this;
if (swiper.support.touch || !swiper.params.simulatetouch || swiper.params.watchoverflow && swiper.islocked || swiper.params.cssmode) return;
var el = swiper.el;
el.style.cursor = 'move';
el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
el.style.cursor = moving ? 'grabbing' : 'grab';
}
function unsetgrabcursor() {
var swiper = this;
if (swiper.support.touch || swiper.params.watchoverflow && swiper.islocked || swiper.params.cssmode) {
return;
}
swiper.el.style.cursor = '';
}
var grabcursor = {
setgrabcursor: setgrabcursor,
unsetgrabcursor: unsetgrabcursor
};
function appendslide(slides) {
var swiper = this;
var $wrapperel = swiper.$wrapperel,
params = swiper.params;
if (params.loop) {
swiper.loopdestroy();
}
if (typeof slides === 'object' && 'length' in slides) {
for (var i = 0; i < slides.length; i += 1) {
if (slides[i]) $wrapperel.append(slides[i]);
}
} else {
$wrapperel.append(slides);
}
if (params.loop) {
swiper.loopcreate();
}
if (!(params.observer && swiper.support.observer)) {
swiper.update();
}
}
function prependslide(slides) {
var swiper = this;
var params = swiper.params,
$wrapperel = swiper.$wrapperel,
activeindex = swiper.activeindex;
if (params.loop) {
swiper.loopdestroy();
}
var newactiveindex = activeindex + 1;
if (typeof slides === 'object' && 'length' in slides) {
for (var i = 0; i < slides.length; i += 1) {
if (slides[i]) $wrapperel.prepend(slides[i]);
}
newactiveindex = activeindex + slides.length;
} else {
$wrapperel.prepend(slides);
}
if (params.loop) {
swiper.loopcreate();
}
if (!(params.observer && swiper.support.observer)) {
swiper.update();
}
swiper.slideto(newactiveindex, 0, false);
}
function addslide(index, slides) {
var swiper = this;
var $wrapperel = swiper.$wrapperel,
params = swiper.params,
activeindex = swiper.activeindex;
var activeindexbuffer = activeindex;
if (params.loop) {
activeindexbuffer -= swiper.loopedslides;
swiper.loopdestroy();
swiper.slides = $wrapperel.children("." + params.slideclass);
}
var baselength = swiper.slides.length;
if (index <= 0) {
swiper.prependslide(slides);
return;
}
if (index >= baselength) {
swiper.appendslide(slides);
return;
}
var newactiveindex = activeindexbuffer > index ? activeindexbuffer + 1 : activeindexbuffer;
var slidesbuffer = [];
for (var i = baselength - 1; i >= index; i -= 1) {
var currentslide = swiper.slides.eq(i);
currentslide.remove();
slidesbuffer.unshift(currentslide);
}
if (typeof slides === 'object' && 'length' in slides) {
for (var _i = 0; _i < slides.length; _i += 1) {
if (slides[_i]) $wrapperel.append(slides[_i]);
}
newactiveindex = activeindexbuffer > index ? activeindexbuffer + slides.length : activeindexbuffer;
} else {
$wrapperel.append(slides);
}
for (var _i2 = 0; _i2 < slidesbuffer.length; _i2 += 1) {
$wrapperel.append(slidesbuffer[_i2]);
}
if (params.loop) {
swiper.loopcreate();
}
if (!(params.observer && swiper.support.observer)) {
swiper.update();
}
if (params.loop) {
swiper.slideto(newactiveindex + swiper.loopedslides, 0, false);
} else {
swiper.slideto(newactiveindex, 0, false);
}
}
function removeslide(slidesindexes) {
var swiper = this;
var params = swiper.params,
$wrapperel = swiper.$wrapperel,
activeindex = swiper.activeindex;
var activeindexbuffer = activeindex;
if (params.loop) {
activeindexbuffer -= swiper.loopedslides;
swiper.loopdestroy();
swiper.slides = $wrapperel.children("." + params.slideclass);
}
var newactiveindex = activeindexbuffer;
var indextoremove;
if (typeof slidesindexes === 'object' && 'length' in slidesindexes) {
for (var i = 0; i < slidesindexes.length; i += 1) {
indextoremove = slidesindexes[i];
if (swiper.slides[indextoremove]) swiper.slides.eq(indextoremove).remove();
if (indextoremove < newactiveindex) newactiveindex -= 1;
}
newactiveindex = math.max(newactiveindex, 0);
} else {
indextoremove = slidesindexes;
if (swiper.slides[indextoremove]) swiper.slides.eq(indextoremove).remove();
if (indextoremove < newactiveindex) newactiveindex -= 1;
newactiveindex = math.max(newactiveindex, 0);
}
if (params.loop) {
swiper.loopcreate();
}
if (!(params.observer && swiper.support.observer)) {
swiper.update();
}
if (params.loop) {
swiper.slideto(newactiveindex + swiper.loopedslides, 0, false);
} else {
swiper.slideto(newactiveindex, 0, false);
}
}
function removeallslides() {
var swiper = this;
var slidesindexes = [];
for (var i = 0; i < swiper.slides.length; i += 1) {
slidesindexes.push(i);
}
swiper.removeslide(slidesindexes);
}
var manipulation = {
appendslide: appendslide,
prependslide: prependslide,
addslide: addslide,
removeslide: removeslide,
removeallslides: removeallslides
};
function ontouchstart(event) {
var swiper = this;
var document = getdocument();
var window = getwindow();
var data = swiper.toucheventsdata;
var params = swiper.params,
touches = swiper.touches;
if (swiper.animating && params.preventinteractionontransition) {
return;
}
var e = event;
if (e.originalevent) e = e.originalevent;
var $targetel = $(e.target);
if (params.toucheventstarget === 'wrapper') {
if (!$targetel.closest(swiper.wrapperel).length) return;
}
data.istouchevent = e.type === 'touchstart';
if (!data.istouchevent && 'which' in e && e.which === 3) return;
if (!data.istouchevent && 'button' in e && e.button > 0) return;
if (data.istouched && data.ismoved) return;
if (params.noswiping && $targetel.closest(params.noswipingselector ? params.noswipingselector : "." + params.noswipingclass)[0]) {
swiper.allowclick = true;
return;
}
if (params.swipehandler) {
if (!$targetel.closest(params.swipehandler)[0]) return;
}
touches.currentx = e.type === 'touchstart' ? e.targettouches[0].pagex : e.pagex;
touches.currenty = e.type === 'touchstart' ? e.targettouches[0].pagey : e.pagey;
var startx = touches.currentx;
var starty = touches.currenty; // do not start if ios edge swipe is detected. otherwise ios app cannot swipe-to-go-back anymore
var edgeswipedetection = params.edgeswipedetection || params.iosedgeswipedetection;
var edgeswipethreshold = params.edgeswipethreshold || params.iosedgeswipethreshold;
if (edgeswipedetection && (startx <= edgeswipethreshold || startx >= window.screen.width - edgeswipethreshold)) {
return;
}
extend$1(data, {
istouched: true,
ismoved: false,
allowtouchcallbacks: true,
isscrolling: undefined,
startmoving: undefined
});
touches.startx = startx;
touches.starty = starty;
data.touchstarttime = now();
swiper.allowclick = true;
swiper.updatesize();
swiper.swipedirection = undefined;
if (params.threshold > 0) data.allowthresholdmove = false;
if (e.type !== 'touchstart') {
var preventdefault = true;
if ($targetel.is(data.formelements)) preventdefault = false;
if (document.activeelement && $(document.activeelement).is(data.formelements) && document.activeelement !== $targetel[0]) {
document.activeelement.blur();
}
var shouldpreventdefault = preventdefault && swiper.allowtouchmove && params.touchstartpreventdefault;
if (params.touchstartforcepreventdefault || shouldpreventdefault) {
e.preventdefault();
}
}
swiper.emit('touchstart', e);
}
function ontouchmove(event) {
var document = getdocument();
var swiper = this;
var data = swiper.toucheventsdata;
var params = swiper.params,
touches = swiper.touches,
rtl = swiper.rtltranslate;
var e = event;
if (e.originalevent) e = e.originalevent;
if (!data.istouched) {
if (data.startmoving && data.isscrolling) {
swiper.emit('touchmoveopposite', e);
}
return;
}
if (data.istouchevent && e.type !== 'touchmove') return;
var targettouch = e.type === 'touchmove' && e.targettouches && (e.targettouches[0] || e.changedtouches[0]);
var pagex = e.type === 'touchmove' ? targettouch.pagex : e.pagex;
var pagey = e.type === 'touchmove' ? targettouch.pagey : e.pagey;
if (e.preventedbynestedswiper) {
touches.startx = pagex;
touches.starty = pagey;
return;
}
if (!swiper.allowtouchmove) {
// ismoved = true;
swiper.allowclick = false;
if (data.istouched) {
extend$1(touches, {
startx: pagex,
starty: pagey,
currentx: pagex,
currenty: pagey
});
data.touchstarttime = now();
}
return;
}
if (data.istouchevent && params.touchreleaseonedges && !params.loop) {
if (swiper.isvertical()) {
// vertical
if (pagey < touches.starty && swiper.translate <= swiper.maxtranslate() || pagey > touches.starty && swiper.translate >= swiper.mintranslate()) {
data.istouched = false;
data.ismoved = false;
return;
}
} else if (pagex < touches.startx && swiper.translate <= swiper.maxtranslate() || pagex > touches.startx && swiper.translate >= swiper.mintranslate()) {
return;
}
}
if (data.istouchevent && document.activeelement) {
if (e.target === document.activeelement && $(e.target).is(data.formelements)) {
data.ismoved = true;
swiper.allowclick = false;
return;
}
}
if (data.allowtouchcallbacks) {
swiper.emit('touchmove', e);
}
if (e.targettouches && e.targettouches.length > 1) return;
touches.currentx = pagex;
touches.currenty = pagey;
var diffx = touches.currentx - touches.startx;
var diffy = touches.currenty - touches.starty;
if (swiper.params.threshold && math.sqrt(math.pow(diffx, 2) + math.pow(diffy, 2)) < swiper.params.threshold) return;
if (typeof data.isscrolling === 'undefined') {
var touchangle;
if (swiper.ishorizontal() && touches.currenty === touches.starty || swiper.isvertical() && touches.currentx === touches.startx) {
data.isscrolling = false;
} else {
// eslint-disable-next-line
if (diffx * diffx + diffy * diffy >= 25) {
touchangle = math.atan2(math.abs(diffy), math.abs(diffx)) * 180 / math.pi;
data.isscrolling = swiper.ishorizontal() ? touchangle > params.touchangle : 90 - touchangle > params.touchangle;
}
}
}
if (data.isscrolling) {
swiper.emit('touchmoveopposite', e);
}
if (typeof data.startmoving === 'undefined') {
if (touches.currentx !== touches.startx || touches.currenty !== touches.starty) {
data.startmoving = true;
}
}
if (data.isscrolling) {
data.istouched = false;
return;
}
if (!data.startmoving) {
return;
}
swiper.allowclick = false;
if (!params.cssmode && e.cancelable) {
e.preventdefault();
}
if (params.touchmovestoppropagation && !params.nested) {
e.stoppropagation();
}
if (!data.ismoved) {
if (params.loop) {
swiper.loopfix();
}
data.starttranslate = swiper.gettranslate();
swiper.settransition(0);
if (swiper.animating) {
swiper.$wrapperel.trigger('webkittransitionend transitionend');
}
data.allowmomentumbounce = false; // grab cursor
if (params.grabcursor && (swiper.allowslidenext === true || swiper.allowslideprev === true)) {
swiper.setgrabcursor(true);
}
swiper.emit('sliderfirstmove', e);
}
swiper.emit('slidermove', e);
data.ismoved = true;
var diff = swiper.ishorizontal() ? diffx : diffy;
touches.diff = diff;
diff *= params.touchratio;
if (rtl) diff = -diff;
swiper.swipedirection = diff > 0 ? 'prev' : 'next';
data.currenttranslate = diff + data.starttranslate;
var disableparentswiper = true;
var resistanceratio = params.resistanceratio;
if (params.touchreleaseonedges) {
resistanceratio = 0;
}
if (diff > 0 && data.currenttranslate > swiper.mintranslate()) {
disableparentswiper = false;
if (params.resistance) data.currenttranslate = swiper.mintranslate() - 1 + math.pow(-swiper.mintranslate() + data.starttranslate + diff, resistanceratio);
} else if (diff < 0 && data.currenttranslate < swiper.maxtranslate()) {
disableparentswiper = false;
if (params.resistance) data.currenttranslate = swiper.maxtranslate() + 1 - math.pow(swiper.maxtranslate() - data.starttranslate - diff, resistanceratio);
}
if (disableparentswiper) {
e.preventedbynestedswiper = true;
} // directions locks
if (!swiper.allowslidenext && swiper.swipedirection === 'next' && data.currenttranslate < data.starttranslate) {
data.currenttranslate = data.starttranslate;
}
if (!swiper.allowslideprev && swiper.swipedirection === 'prev' && data.currenttranslate > data.starttranslate) {
data.currenttranslate = data.starttranslate;
} // threshold
if (params.threshold > 0) {
if (math.abs(diff) > params.threshold || data.allowthresholdmove) {
if (!data.allowthresholdmove) {
data.allowthresholdmove = true;
touches.startx = touches.currentx;
touches.starty = touches.currenty;
data.currenttranslate = data.starttranslate;
touches.diff = swiper.ishorizontal() ? touches.currentx - touches.startx : touches.currenty - touches.starty;
return;
}
} else {
data.currenttranslate = data.starttranslate;
return;
}
}
if (!params.followfinger || params.cssmode) return; // update active index in free mode
if (params.freemode || params.watchslidesprogress || params.watchslidesvisibility) {
swiper.updateactiveindex();
swiper.updateslidesclasses();
}
if (params.freemode) {
// velocity
if (data.velocities.length === 0) {
data.velocities.push({
position: touches[swiper.ishorizontal() ? 'startx' : 'starty'],
time: data.touchstarttime
});
}
data.velocities.push({
position: touches[swiper.ishorizontal() ? 'currentx' : 'currenty'],
time: now()
});
} // update progress
swiper.updateprogress(data.currenttranslate); // update translate
swiper.settranslate(data.currenttranslate);
}
function ontouchend(event) {
var swiper = this;
var data = swiper.toucheventsdata;
var params = swiper.params,
touches = swiper.touches,
rtl = swiper.rtltranslate,
$wrapperel = swiper.$wrapperel,
slidesgrid = swiper.slidesgrid,
snapgrid = swiper.snapgrid;
var e = event;
if (e.originalevent) e = e.originalevent;
if (data.allowtouchcallbacks) {
swiper.emit('touchend', e);
}
data.allowtouchcallbacks = false;
if (!data.istouched) {
if (data.ismoved && params.grabcursor) {
swiper.setgrabcursor(false);
}
data.ismoved = false;
data.startmoving = false;
return;
} // return grab cursor
if (params.grabcursor && data.ismoved && data.istouched && (swiper.allowslidenext === true || swiper.allowslideprev === true)) {
swiper.setgrabcursor(false);
} // time diff
var touchendtime = now();
var timediff = touchendtime - data.touchstarttime; // tap, doubletap, click
if (swiper.allowclick) {
swiper.updateclickedslide(e);
swiper.emit('tap click', e);
if (timediff < 300 && touchendtime - data.lastclicktime < 300) {
swiper.emit('doubletap doubleclick', e);
}
}
data.lastclicktime = now();
nexttick(function () {
if (!swiper.destroyed) swiper.allowclick = true;
});
if (!data.istouched || !data.ismoved || !swiper.swipedirection || touches.diff === 0 || data.currenttranslate === data.starttranslate) {
data.istouched = false;
data.ismoved = false;
data.startmoving = false;
return;
}
data.istouched = false;
data.ismoved = false;
data.startmoving = false;
var currentpos;
if (params.followfinger) {
currentpos = rtl ? swiper.translate : -swiper.translate;
} else {
currentpos = -data.currenttranslate;
}
if (params.cssmode) {
return;
}
if (params.freemode) {
if (currentpos < -swiper.mintranslate()) {
swiper.slideto(swiper.activeindex);
return;
}
if (currentpos > -swiper.maxtranslate()) {
if (swiper.slides.length < snapgrid.length) {
swiper.slideto(snapgrid.length - 1);
} else {
swiper.slideto(swiper.slides.length - 1);
}
return;
}
if (params.freemodemomentum) {
if (data.velocities.length > 1) {
var lastmoveevent = data.velocities.pop();
var velocityevent = data.velocities.pop();
var distance = lastmoveevent.position - velocityevent.position;
var time = lastmoveevent.time - velocityevent.time;
swiper.velocity = distance / time;
swiper.velocity /= 2;
if (math.abs(swiper.velocity) < params.freemodeminimumvelocity) {
swiper.velocity = 0;
} // this implies that the user stopped moving a finger then released.
// there would be no events with distance zero, so the last event is stale.
if (time > 150 || now() - lastmoveevent.time > 300) {
swiper.velocity = 0;
}
} else {
swiper.velocity = 0;
}
swiper.velocity *= params.freemodemomentumvelocityratio;
data.velocities.length = 0;
var momentumduration = 1000 * params.freemodemomentumratio;
var momentumdistance = swiper.velocity * momentumduration;
var newposition = swiper.translate + momentumdistance;
if (rtl) newposition = -newposition;
var dobounce = false;
var afterbounceposition;
var bounceamount = math.abs(swiper.velocity) * 20 * params.freemodemomentumbounceratio;
var needsloopfix;
if (newposition < swiper.maxtranslate()) {
if (params.freemodemomentumbounce) {
if (newposition + swiper.maxtranslate() < -bounceamount) {
newposition = swiper.maxtranslate() - bounceamount;
}
afterbounceposition = swiper.maxtranslate();
dobounce = true;
data.allowmomentumbounce = true;
} else {
newposition = swiper.maxtranslate();
}
if (params.loop && params.centeredslides) needsloopfix = true;
} else if (newposition > swiper.mintranslate()) {
if (params.freemodemomentumbounce) {
if (newposition - swiper.mintranslate() > bounceamount) {
newposition = swiper.mintranslate() + bounceamount;
}
afterbounceposition = swiper.mintranslate();
dobounce = true;
data.allowmomentumbounce = true;
} else {
newposition = swiper.mintranslate();
}
if (params.loop && params.centeredslides) needsloopfix = true;
} else if (params.freemodesticky) {
var nextslide;
for (var j = 0; j < snapgrid.length; j += 1) {
if (snapgrid[j] > -newposition) {
nextslide = j;
break;
}
}
if (math.abs(snapgrid[nextslide] - newposition) < math.abs(snapgrid[nextslide - 1] - newposition) || swiper.swipedirection === 'next') {
newposition = snapgrid[nextslide];
} else {
newposition = snapgrid[nextslide - 1];
}
newposition = -newposition;
}
if (needsloopfix) {
swiper.once('transitionend', function () {
swiper.loopfix();
});
} // fix duration
if (swiper.velocity !== 0) {
if (rtl) {
momentumduration = math.abs((-newposition - swiper.translate) / swiper.velocity);
} else {
momentumduration = math.abs((newposition - swiper.translate) / swiper.velocity);
}
if (params.freemodesticky) {
// if freemodesticky is active and the user ends a swipe with a slow-velocity
// event, then durations can be 20+ seconds to slide one (or zero!) slides.
// it's easy to see this when simulating touch with mouse events. to fix this,
// limit single-slide swipes to the default slide duration. this also has the
// nice side effect of matching slide speed if the user stopped moving before
// lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
// for faster swipes, also apply limits (albeit higher ones).
var movedistance = math.abs((rtl ? -newposition : newposition) - swiper.translate);
var currentslidesize = swiper.slidessizesgrid[swiper.activeindex];
if (movedistance < currentslidesize) {
momentumduration = params.speed;
} else if (movedistance < 2 * currentslidesize) {
momentumduration = params.speed * 1.5;
} else {
momentumduration = params.speed * 2.5;
}
}
} else if (params.freemodesticky) {
swiper.slidetoclosest();
return;
}
if (params.freemodemomentumbounce && dobounce) {
swiper.updateprogress(afterbounceposition);
swiper.settransition(momentumduration);
swiper.settranslate(newposition);
swiper.transitionstart(true, swiper.swipedirection);
swiper.animating = true;
$wrapperel.transitionend(function () {
if (!swiper || swiper.destroyed || !data.allowmomentumbounce) return;
swiper.emit('momentumbounce');
swiper.settransition(params.speed);
settimeout(function () {
swiper.settranslate(afterbounceposition);
$wrapperel.transitionend(function () {
if (!swiper || swiper.destroyed) return;
swiper.transitionend();
});
}, 0);
});
} else if (swiper.velocity) {
swiper.updateprogress(newposition);
swiper.settransition(momentumduration);
swiper.settranslate(newposition);
swiper.transitionstart(true, swiper.swipedirection);
if (!swiper.animating) {
swiper.animating = true;
$wrapperel.transitionend(function () {
if (!swiper || swiper.destroyed) return;
swiper.transitionend();
});
}
} else {
swiper.updateprogress(newposition);
}
swiper.updateactiveindex();
swiper.updateslidesclasses();
} else if (params.freemodesticky) {
swiper.slidetoclosest();
return;
}
if (!params.freemodemomentum || timediff >= params.longswipesms) {
swiper.updateprogress();
swiper.updateactiveindex();
swiper.updateslidesclasses();
}
return;
} // find current slide
var stopindex = 0;
var groupsize = swiper.slidessizesgrid[0];
for (var i = 0; i < slidesgrid.length; i += i < params.slidespergroupskip ? 1 : params.slidespergroup) {
var _increment = i < params.slidespergroupskip - 1 ? 1 : params.slidespergroup;
if (typeof slidesgrid[i + _increment] !== 'undefined') {
if (currentpos >= slidesgrid[i] && currentpos < slidesgrid[i + _increment]) {
stopindex = i;
groupsize = slidesgrid[i + _increment] - slidesgrid[i];
}
} else if (currentpos >= slidesgrid[i]) {
stopindex = i;
groupsize = slidesgrid[slidesgrid.length - 1] - slidesgrid[slidesgrid.length - 2];
}
} // find current slide size
var ratio = (currentpos - slidesgrid[stopindex]) / groupsize;
var increment = stopindex < params.slidespergroupskip - 1 ? 1 : params.slidespergroup;
if (timediff > params.longswipesms) {
// long touches
if (!params.longswipes) {
swiper.slideto(swiper.activeindex);
return;
}
if (swiper.swipedirection === 'next') {
if (ratio >= params.longswipesratio) swiper.slideto(stopindex + increment);else swiper.slideto(stopindex);
}
if (swiper.swipedirection === 'prev') {
if (ratio > 1 - params.longswipesratio) swiper.slideto(stopindex + increment);else swiper.slideto(stopindex);
}
} else {
// short swipes
if (!params.shortswipes) {
swiper.slideto(swiper.activeindex);
return;
}
var isnavbuttontarget = swiper.navigation && (e.target === swiper.navigation.nextel || e.target === swiper.navigation.prevel);
if (!isnavbuttontarget) {
if (swiper.swipedirection === 'next') {
swiper.slideto(stopindex + increment);
}
if (swiper.swipedirection === 'prev') {
swiper.slideto(stopindex);
}
} else if (e.target === swiper.navigation.nextel) {
swiper.slideto(stopindex + increment);
} else {
swiper.slideto(stopindex);
}
}
}
function onresize() {
var swiper = this;
var params = swiper.params,
el = swiper.el;
if (el && el.offsetwidth === 0) return; // breakpoints
if (params.breakpoints) {
swiper.setbreakpoint();
} // save locks
var allowslidenext = swiper.allowslidenext,
allowslideprev = swiper.allowslideprev,
snapgrid = swiper.snapgrid; // disable locks on resize
swiper.allowslidenext = true;
swiper.allowslideprev = true;
swiper.updatesize();
swiper.updateslides();
swiper.updateslidesclasses();
if ((params.slidesperview === 'auto' || params.slidesperview > 1) && swiper.isend && !swiper.isbeginning && !swiper.params.centeredslides) {
swiper.slideto(swiper.slides.length - 1, 0, false, true);
} else {
swiper.slideto(swiper.activeindex, 0, false, true);
}
if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
swiper.autoplay.run();
} // return locks after resize
swiper.allowslideprev = allowslideprev;
swiper.allowslidenext = allowslidenext;
if (swiper.params.watchoverflow && snapgrid !== swiper.snapgrid) {
swiper.checkoverflow();
}
}
function onclick(e) {
var swiper = this;
if (!swiper.allowclick) {
if (swiper.params.preventclicks) e.preventdefault();
if (swiper.params.preventclickspropagation && swiper.animating) {
e.stoppropagation();
e.stopimmediatepropagation();
}
}
}
function onscroll() {
var swiper = this;
var wrapperel = swiper.wrapperel,
rtltranslate = swiper.rtltranslate;
swiper.previoustranslate = swiper.translate;
if (swiper.ishorizontal()) {
if (rtltranslate) {
swiper.translate = wrapperel.scrollwidth - wrapperel.offsetwidth - wrapperel.scrollleft;
} else {
swiper.translate = -wrapperel.scrollleft;
}
} else {
swiper.translate = -wrapperel.scrolltop;
} // eslint-disable-next-line
if (swiper.translate === -0) swiper.translate = 0;
swiper.updateactiveindex();
swiper.updateslidesclasses();
var newprogress;
var translatesdiff = swiper.maxtranslate() - swiper.mintranslate();
if (translatesdiff === 0) {
newprogress = 0;
} else {
newprogress = (swiper.translate - swiper.mintranslate()) / translatesdiff;
}
if (newprogress !== swiper.progress) {
swiper.updateprogress(rtltranslate ? -swiper.translate : swiper.translate);
}
swiper.emit('settranslate', swiper.translate, false);
}
var dummyeventattached = false;
function dummyeventlistener() {}
function attachevents() {
var swiper = this;
var document = getdocument();
var params = swiper.params,
touchevents = swiper.touchevents,
el = swiper.el,
wrapperel = swiper.wrapperel,
device = swiper.device,
support = swiper.support;
swiper.ontouchstart = ontouchstart.bind(swiper);
swiper.ontouchmove = ontouchmove.bind(swiper);
swiper.ontouchend = ontouchend.bind(swiper);
if (params.cssmode) {
swiper.onscroll = onscroll.bind(swiper);
}
swiper.onclick = onclick.bind(swiper);
var capture = !!params.nested; // touch events
if (!support.touch && support.pointerevents) {
el.addeventlistener(touchevents.start, swiper.ontouchstart, false);
document.addeventlistener(touchevents.move, swiper.ontouchmove, capture);
document.addeventlistener(touchevents.end, swiper.ontouchend, false);
} else {
if (support.touch) {
var passivelistener = touchevents.start === 'touchstart' && support.passivelistener && params.passivelisteners ? {
passive: true,
capture: false
} : false;
el.addeventlistener(touchevents.start, swiper.ontouchstart, passivelistener);
el.addeventlistener(touchevents.move, swiper.ontouchmove, support.passivelistener ? {
passive: false,
capture: capture
} : capture);
el.addeventlistener(touchevents.end, swiper.ontouchend, passivelistener);
if (touchevents.cancel) {
el.addeventlistener(touchevents.cancel, swiper.ontouchend, passivelistener);
}
if (!dummyeventattached) {
document.addeventlistener('touchstart', dummyeventlistener);
dummyeventattached = true;
}
}
if (params.simulatetouch && !device.ios && !device.android || params.simulatetouch && !support.touch && device.ios) {
el.addeventlistener('mousedown', swiper.ontouchstart, false);
document.addeventlistener('mousemove', swiper.ontouchmove, capture);
document.addeventlistener('mouseup', swiper.ontouchend, false);
}
} // prevent links clicks
if (params.preventclicks || params.preventclickspropagation) {
el.addeventlistener('click', swiper.onclick, true);
}
if (params.cssmode) {
wrapperel.addeventlistener('scroll', swiper.onscroll);
} // resize handler
if (params.updateonwindowresize) {
swiper.on(device.ios || device.android ? 'resize orientationchange observerupdate' : 'resize observerupdate', onresize, true);
} else {
swiper.on('observerupdate', onresize, true);
}
}
function detachevents() {
var swiper = this;
var document = getdocument();
var params = swiper.params,
touchevents = swiper.touchevents,
el = swiper.el,
wrapperel = swiper.wrapperel,
device = swiper.device,
support = swiper.support;
var capture = !!params.nested; // touch events
if (!support.touch && support.pointerevents) {
el.removeeventlistener(touchevents.start, swiper.ontouchstart, false);
document.removeeventlistener(touchevents.move, swiper.ontouchmove, capture);
document.removeeventlistener(touchevents.end, swiper.ontouchend, false);
} else {
if (support.touch) {
var passivelistener = touchevents.start === 'ontouchstart' && support.passivelistener && params.passivelisteners ? {
passive: true,
capture: false
} : false;
el.removeeventlistener(touchevents.start, swiper.ontouchstart, passivelistener);
el.removeeventlistener(touchevents.move, swiper.ontouchmove, capture);
el.removeeventlistener(touchevents.end, swiper.ontouchend, passivelistener);
if (touchevents.cancel) {
el.removeeventlistener(touchevents.cancel, swiper.ontouchend, passivelistener);
}
}
if (params.simulatetouch && !device.ios && !device.android || params.simulatetouch && !support.touch && device.ios) {
el.removeeventlistener('mousedown', swiper.ontouchstart, false);
document.removeeventlistener('mousemove', swiper.ontouchmove, capture);
document.removeeventlistener('mouseup', swiper.ontouchend, false);
}
} // prevent links clicks
if (params.preventclicks || params.preventclickspropagation) {
el.removeeventlistener('click', swiper.onclick, true);
}
if (params.cssmode) {
wrapperel.removeeventlistener('scroll', swiper.onscroll);
} // resize handler
swiper.off(device.ios || device.android ? 'resize orientationchange observerupdate' : 'resize observerupdate', onresize);
}
var events = {
attachevents: attachevents,
detachevents: detachevents
};
function setbreakpoint() {
var swiper = this;
var activeindex = swiper.activeindex,
initialized = swiper.initialized,
_swiper$loopedslides = swiper.loopedslides,
loopedslides = _swiper$loopedslides === void 0 ? 0 : _swiper$loopedslides,
params = swiper.params,
$el = swiper.$el;
var breakpoints = params.breakpoints;
if (!breakpoints || breakpoints && object.keys(breakpoints).length === 0) return; // get breakpoint for window width and update parameters
var breakpoint = swiper.getbreakpoint(breakpoints);
if (breakpoint && swiper.currentbreakpoint !== breakpoint) {
var breakpointonlyparams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
if (breakpointonlyparams) {
['slidesperview', 'spacebetween', 'slidespergroup', 'slidespergroupskip', 'slidespercolumn'].foreach(function (param) {
var paramvalue = breakpointonlyparams[param];
if (typeof paramvalue === 'undefined') return;
if (param === 'slidesperview' && (paramvalue === 'auto' || paramvalue === 'auto')) {
breakpointonlyparams[param] = 'auto';
} else if (param === 'slidesperview') {
breakpointonlyparams[param] = parsefloat(paramvalue);
} else {
breakpointonlyparams[param] = parseint(paramvalue, 10);
}
});
}
var breakpointparams = breakpointonlyparams || swiper.originalparams;
var wasmultirow = params.slidespercolumn > 1;
var ismultirow = breakpointparams.slidespercolumn > 1;
if (wasmultirow && !ismultirow) {
$el.removeclass(params.containermodifierclass + "multirow " + params.containermodifierclass + "multirow-column");
swiper.emitcontainerclasses();
} else if (!wasmultirow && ismultirow) {
$el.addclass(params.containermodifierclass + "multirow");
if (breakpointparams.slidespercolumnfill === 'column') {
$el.addclass(params.containermodifierclass + "multirow-column");
}
swiper.emitcontainerclasses();
}
var directionchanged = breakpointparams.direction && breakpointparams.direction !== params.direction;
var needsreloop = params.loop && (breakpointparams.slidesperview !== params.slidesperview || directionchanged);
if (directionchanged && initialized) {
swiper.changedirection();
}
extend$1(swiper.params, breakpointparams);
extend$1(swiper, {
allowtouchmove: swiper.params.allowtouchmove,
allowslidenext: swiper.params.allowslidenext,
allowslideprev: swiper.params.allowslideprev
});
swiper.currentbreakpoint = breakpoint;
if (needsreloop && initialized) {
swiper.loopdestroy();
swiper.loopcreate();
swiper.updateslides();
swiper.slideto(activeindex - loopedslides + swiper.loopedslides, 0, false);
}
swiper.emit('breakpoint', breakpointparams);
}
}
function getbreakpoints(breakpoints) {
var window = getwindow(); // get breakpoint for window width
if (!breakpoints) return undefined;
var breakpoint = false;
var points = object.keys(breakpoints).map(function (point) {
if (typeof point === 'string' && point.indexof('@') === 0) {
var minratio = parsefloat(point.substr(1));
var value = window.innerheight * minratio;
return {
value: value,
point: point
};
}
return {
value: point,
point: point
};
});
points.sort(function (a, b) {
return parseint(a.value, 10) - parseint(b.value, 10);
});
for (var i = 0; i < points.length; i += 1) {
var _points$i = points[i],
point = _points$i.point,
value = _points$i.value;
if (value <= window.innerwidth) {
breakpoint = point;
}
}
return breakpoint || 'max';
}
var breakpoints = {
setbreakpoint: setbreakpoint,
getbreakpoint: getbreakpoints
};
function addclasses() {
var swiper = this;
var classnames = swiper.classnames,
params = swiper.params,
rtl = swiper.rtl,
$el = swiper.$el,
device = swiper.device;
var suffixes = [];
suffixes.push('initialized');
suffixes.push(params.direction);
if (params.freemode) {
suffixes.push('free-mode');
}
if (params.autoheight) {
suffixes.push('autoheight');
}
if (rtl) {
suffixes.push('rtl');
}
if (params.slidespercolumn > 1) {
suffixes.push('multirow');
if (params.slidespercolumnfill === 'column') {
suffixes.push('multirow-column');
}
}
if (device.android) {
suffixes.push('android');
}
if (device.ios) {
suffixes.push('ios');
}
if (params.cssmode) {
suffixes.push('css-mode');
}
suffixes.foreach(function (suffix) {
classnames.push(params.containermodifierclass + suffix);
});
$el.addclass(classnames.join(' '));
swiper.emitcontainerclasses();
}
function removeclasses() {
var swiper = this;
var $el = swiper.$el,
classnames = swiper.classnames;
$el.removeclass(classnames.join(' '));
swiper.emitcontainerclasses();
}
var classes = {
addclasses: addclasses,
removeclasses: removeclasses
};
function loadimage(imageel, src, srcset, sizes, checkforcomplete, callback) {
var window = getwindow();
var image;
function onready() {
if (callback) callback();
}
var ispicture = $(imageel).parent('picture')[0];
if (!ispicture && (!imageel.complete || !checkforcomplete)) {
if (src) {
image = new window.image();
image.onload = onready;
image.onerror = onready;
if (sizes) {
image.sizes = sizes;
}
if (srcset) {
image.srcset = srcset;
}
if (src) {
image.src = src;
}
} else {
onready();
}
} else {
// image already loaded...
onready();
}
}
function preloadimages() {
var swiper = this;
swiper.imagestoload = swiper.$el.find('img');
function onready() {
if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
if (swiper.imagesloaded !== undefined) swiper.imagesloaded += 1;
if (swiper.imagesloaded === swiper.imagestoload.length) {
if (swiper.params.updateonimagesready) swiper.update();
swiper.emit('imagesready');
}
}
for (var i = 0; i < swiper.imagestoload.length; i += 1) {
var imageel = swiper.imagestoload[i];
swiper.loadimage(imageel, imageel.currentsrc || imageel.getattribute('src'), imageel.srcset || imageel.getattribute('srcset'), imageel.sizes || imageel.getattribute('sizes'), true, onready);
}
}
var images = {
loadimage: loadimage,
preloadimages: preloadimages
};
function checkoverflow() {
var swiper = this;
var params = swiper.params;
var waslocked = swiper.islocked;
var lastslideposition = swiper.slides.length > 0 && params.slidesoffsetbefore + params.spacebetween * (swiper.slides.length - 1) + swiper.slides[0].offsetwidth * swiper.slides.length;
if (params.slidesoffsetbefore && params.slidesoffsetafter && lastslideposition) {
swiper.islocked = lastslideposition <= swiper.size;
} else {
swiper.islocked = swiper.snapgrid.length === 1;
}
swiper.allowslidenext = !swiper.islocked;
swiper.allowslideprev = !swiper.islocked; // events
if (waslocked !== swiper.islocked) swiper.emit(swiper.islocked ? 'lock' : 'unlock');
if (waslocked && waslocked !== swiper.islocked) {
swiper.isend = false;
if (swiper.navigation) swiper.navigation.update();
}
}
var checkoverflow$1 = {
checkoverflow: checkoverflow
};
var defaults = {
init: true,
direction: 'horizontal',
toucheventstarget: 'container',
initialslide: 0,
speed: 300,
cssmode: false,
updateonwindowresize: true,
// overrides
width: null,
height: null,
//
preventinteractionontransition: false,
// ssr
useragent: null,
url: null,
// to support ios's swipe-to-go-back gesture (when being used in-app).
edgeswipedetection: false,
edgeswipethreshold: 20,
// free mode
freemode: false,
freemodemomentum: true,
freemodemomentumratio: 1,
freemodemomentumbounce: true,
freemodemomentumbounceratio: 1,
freemodemomentumvelocityratio: 1,
freemodesticky: false,
freemodeminimumvelocity: 0.02,
// autoheight
autoheight: false,
// set wrapper width
setwrappersize: false,
// virtual translate
virtualtranslate: false,
// effects
effect: 'slide',
// 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
// breakpoints
breakpoints: undefined,
// slides grid
spacebetween: 0,
slidesperview: 1,
slidespercolumn: 1,
slidespercolumnfill: 'column',
slidespergroup: 1,
slidespergroupskip: 0,
centeredslides: false,
centeredslidesbounds: false,
slidesoffsetbefore: 0,
// in px
slidesoffsetafter: 0,
// in px
normalizeslideindex: true,
centerinsufficientslides: false,
// disable swiper and hide navigation when container not overflow
watchoverflow: false,
// round length
roundlengths: false,
// touches
touchratio: 1,
touchangle: 45,
simulatetouch: true,
shortswipes: true,
longswipes: true,
longswipesratio: 0.5,
longswipesms: 300,
followfinger: true,
allowtouchmove: true,
threshold: 0,
touchmovestoppropagation: false,
touchstartpreventdefault: true,
touchstartforcepreventdefault: false,
touchreleaseonedges: false,
// unique navigation elements
uniquenavelements: true,
// resistance
resistance: true,
resistanceratio: 0.85,
// progress
watchslidesprogress: false,
watchslidesvisibility: false,
// cursor
grabcursor: false,
// clicks
preventclicks: true,
preventclickspropagation: true,
slidetoclickedslide: false,
// images
preloadimages: true,
updateonimagesready: true,
// loop
loop: false,
loopadditionalslides: 0,
loopedslides: null,
loopfillgroupwithblank: false,
looppreventsslide: true,
// swiping/no swiping
allowslideprev: true,
allowslidenext: true,
swipehandler: null,
// '.swipe-handler',
noswiping: true,
noswipingclass: 'swiper-no-swiping',
noswipingselector: null,
// passive listeners
passivelisteners: true,
// ns
containermodifierclass: 'swiper-container-',
// new
slideclass: 'swiper-slide',
slideblankclass: 'swiper-slide-invisible-blank',
slideactiveclass: 'swiper-slide-active',
slideduplicateactiveclass: 'swiper-slide-duplicate-active',
slidevisibleclass: 'swiper-slide-visible',
slideduplicateclass: 'swiper-slide-duplicate',
slidenextclass: 'swiper-slide-next',
slideduplicatenextclass: 'swiper-slide-duplicate-next',
slideprevclass: 'swiper-slide-prev',
slideduplicateprevclass: 'swiper-slide-duplicate-prev',
wrapperclass: 'swiper-wrapper',
// callbacks
runcallbacksoninit: true,
// internals
_emitclasses: false
};
var prototypes = {
modular: modular,
eventsemitter: eventsemitter,
update: update,
translate: translate,
transition: transition$1,
slide: slide,
loop: loop,
grabcursor: grabcursor,
manipulation: manipulation,
events: events,
breakpoints: breakpoints,
checkoverflow: checkoverflow$1,
classes: classes,
images: images
};
var extendeddefaults = {};
var swiper = /*#__pure__*/function () {
function swiper() {
var el;
var params;
for (var _len = arguments.length, args = new array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (args.length === 1 && args[0].constructor && args[0].constructor === object) {
params = args[0];
} else {
el = args[0];
params = args[1];
}
if (!params) params = {};
params = extend$1({}, params);
if (el && !params.el) params.el = el; // swiper instance
var swiper = this;
swiper.support = getsupport();
swiper.device = getdevice({
useragent: params.useragent
});
swiper.browser = getbrowser();
swiper.eventslisteners = {};
swiper.eventsanylisteners = [];
object.keys(prototypes).foreach(function (prototypegroup) {
object.keys(prototypes[prototypegroup]).foreach(function (protomethod) {
if (!swiper.prototype[protomethod]) {
swiper.prototype[protomethod] = prototypes[prototypegroup][protomethod];
}
});
});
if (typeof swiper.modules === 'undefined') {
swiper.modules = {};
}
object.keys(swiper.modules).foreach(function (modulename) {
var module = swiper.modules[modulename];
if (module.params) {
var moduleparamname = object.keys(module.params)[0];
var moduleparams = module.params[moduleparamname];
if (typeof moduleparams !== 'object' || moduleparams === null) return;
if (!(moduleparamname in params && 'enabled' in moduleparams)) return;
if (params[moduleparamname] === true) {
params[moduleparamname] = {
enabled: true
};
}
if (typeof params[moduleparamname] === 'object' && !('enabled' in params[moduleparamname])) {
params[moduleparamname].enabled = true;
}
if (!params[moduleparamname]) params[moduleparamname] = {
enabled: false
};
}
}); // extend defaults with modules params
var swiperparams = extend$1({}, defaults);
swiper.useparams(swiperparams); // extend defaults with passed params
swiper.params = extend$1({}, swiperparams, extendeddefaults, params);
swiper.originalparams = extend$1({}, swiper.params);
swiper.passedparams = extend$1({}, params); // add event listeners
if (swiper.params && swiper.params.on) {
object.keys(swiper.params.on).foreach(function (eventname) {
swiper.on(eventname, swiper.params.on[eventname]);
});
} // save dom lib
swiper.$ = $; // find el
var $el = $(swiper.params.el);
el = $el[0];
if (!el) {
return undefined;
}
if ($el.length > 1) {
var swipers = [];
$el.each(function (containerel) {
var newparams = extend$1({}, params, {
el: containerel
});
swipers.push(new swiper(newparams));
});
return swipers;
}
el.swiper = swiper; // find wrapper
var $wrapperel;
if (el && el.shadowroot && el.shadowroot.queryselector) {
$wrapperel = $(el.shadowroot.queryselector("." + swiper.params.wrapperclass)); // children needs to return slot items
$wrapperel.children = function (options) {
return $el.children(options);
};
} else {
$wrapperel = $el.children("." + swiper.params.wrapperclass);
} // extend swiper
extend$1(swiper, {
$el: $el,
el: el,
$wrapperel: $wrapperel,
wrapperel: $wrapperel[0],
// classes
classnames: [],
// slides
slides: $(),
slidesgrid: [],
snapgrid: [],
slidessizesgrid: [],
// isdirection
ishorizontal: function ishorizontal() {
return swiper.params.direction === 'horizontal';
},
isvertical: function isvertical() {
return swiper.params.direction === 'vertical';
},
// rtl
rtl: el.dir.tolowercase() === 'rtl' || $el.css('direction') === 'rtl',
rtltranslate: swiper.params.direction === 'horizontal' && (el.dir.tolowercase() === 'rtl' || $el.css('direction') === 'rtl'),
wrongrtl: $wrapperel.css('display') === '-webkit-box',
// indexes
activeindex: 0,
realindex: 0,
//
isbeginning: true,
isend: false,
// props
translate: 0,
previoustranslate: 0,
progress: 0,
velocity: 0,
animating: false,
// locks
allowslidenext: swiper.params.allowslidenext,
allowslideprev: swiper.params.allowslideprev,
// touch events
touchevents: function touchevents() {
var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
var desktop = ['mousedown', 'mousemove', 'mouseup'];
if (swiper.support.pointerevents) {
desktop = ['pointerdown', 'pointermove', 'pointerup'];
}
swiper.toucheventstouch = {
start: touch[0],
move: touch[1],
end: touch[2],
cancel: touch[3]
};
swiper.toucheventsdesktop = {
start: desktop[0],
move: desktop[1],
end: desktop[2]
};
return swiper.support.touch || !swiper.params.simulatetouch ? swiper.toucheventstouch : swiper.toucheventsdesktop;
}(),
toucheventsdata: {
istouched: undefined,
ismoved: undefined,
allowtouchcallbacks: undefined,
touchstarttime: undefined,
isscrolling: undefined,
currenttranslate: undefined,
starttranslate: undefined,
allowthresholdmove: undefined,
// form elements to match
formelements: 'input, select, option, textarea, button, video, label',
// last click time
lastclicktime: now(),
clicktimeout: undefined,
// velocities
velocities: [],
allowmomentumbounce: undefined,
istouchevent: undefined,
startmoving: undefined
},
// clicks
allowclick: true,
// touches
allowtouchmove: swiper.params.allowtouchmove,
touches: {
startx: 0,
starty: 0,
currentx: 0,
currenty: 0,
diff: 0
},
// images
imagestoload: [],
imagesloaded: 0
}); // install modules
swiper.usemodules();
swiper.emit('_swiper'); // init
if (swiper.params.init) {
swiper.init();
} // return app instance
return swiper;
}
var _proto = swiper.prototype;
_proto.emitcontainerclasses = function emitcontainerclasses() {
var swiper = this;
if (!swiper.params._emitclasses || !swiper.el) return;
var classes = swiper.el.classname.split(' ').filter(function (classname) {
return classname.indexof('swiper-container') === 0 || classname.indexof(swiper.params.containermodifierclass) === 0;
});
swiper.emit('_containerclasses', classes.join(' '));
};
_proto.emitslidesclasses = function emitslidesclasses() {
var swiper = this;
if (!swiper.params._emitclasses || !swiper.el) return;
swiper.slides.each(function (slideel) {
var classes = slideel.classname.split(' ').filter(function (classname) {
return classname.indexof('swiper-slide') === 0 || classname.indexof(swiper.params.slideclass) === 0;
});
swiper.emit('_slideclass', slideel, classes.join(' '));
});
};
_proto.slidesperviewdynamic = function slidesperviewdynamic() {
var swiper = this;
var params = swiper.params,
slides = swiper.slides,
slidesgrid = swiper.slidesgrid,
swipersize = swiper.size,
activeindex = swiper.activeindex;
var spv = 1;
if (params.centeredslides) {
var slidesize = slides[activeindex].swiperslidesize;
var breakloop;
for (var i = activeindex + 1; i < slides.length; i += 1) {
if (slides[i] && !breakloop) {
slidesize += slides[i].swiperslidesize;
spv += 1;
if (slidesize > swipersize) breakloop = true;
}
}
for (var _i = activeindex - 1; _i >= 0; _i -= 1) {
if (slides[_i] && !breakloop) {
slidesize += slides[_i].swiperslidesize;
spv += 1;
if (slidesize > swipersize) breakloop = true;
}
}
} else {
for (var _i2 = activeindex + 1; _i2 < slides.length; _i2 += 1) {
if (slidesgrid[_i2] - slidesgrid[activeindex] < swipersize) {
spv += 1;
}
}
}
return spv;
};
_proto.update = function update() {
var swiper = this;
if (!swiper || swiper.destroyed) return;
var snapgrid = swiper.snapgrid,
params = swiper.params; // breakpoints
if (params.breakpoints) {
swiper.setbreakpoint();
}
swiper.updatesize();
swiper.updateslides();
swiper.updateprogress();
swiper.updateslidesclasses();
function settranslate() {
var translatevalue = swiper.rtltranslate ? swiper.translate * -1 : swiper.translate;
var newtranslate = math.min(math.max(translatevalue, swiper.maxtranslate()), swiper.mintranslate());
swiper.settranslate(newtranslate);
swiper.updateactiveindex();
swiper.updateslidesclasses();
}
var translated;
if (swiper.params.freemode) {
settranslate();
if (swiper.params.autoheight) {
swiper.updateautoheight();
}
} else {
if ((swiper.params.slidesperview === 'auto' || swiper.params.slidesperview > 1) && swiper.isend && !swiper.params.centeredslides) {
translated = swiper.slideto(swiper.slides.length - 1, 0, false, true);
} else {
translated = swiper.slideto(swiper.activeindex, 0, false, true);
}
if (!translated) {
settranslate();
}
}
if (params.watchoverflow && snapgrid !== swiper.snapgrid) {
swiper.checkoverflow();
}
swiper.emit('update');
};
_proto.changedirection = function changedirection(newdirection, needupdate) {
if (needupdate === void 0) {
needupdate = true;
}
var swiper = this;
var currentdirection = swiper.params.direction;
if (!newdirection) {
// eslint-disable-next-line
newdirection = currentdirection === 'horizontal' ? 'vertical' : 'horizontal';
}
if (newdirection === currentdirection || newdirection !== 'horizontal' && newdirection !== 'vertical') {
return swiper;
}
swiper.$el.removeclass("" + swiper.params.containermodifierclass + currentdirection).addclass("" + swiper.params.containermodifierclass + newdirection);
swiper.emitcontainerclasses();
swiper.params.direction = newdirection;
swiper.slides.each(function (slideel) {
if (newdirection === 'vertical') {
slideel.style.width = '';
} else {
slideel.style.height = '';
}
});
swiper.emit('changedirection');
if (needupdate) swiper.update();
return swiper;
};
_proto.init = function init() {
var swiper = this;
if (swiper.initialized) return;
swiper.emit('beforeinit'); // set breakpoint
if (swiper.params.breakpoints) {
swiper.setbreakpoint();
} // add classes
swiper.addclasses(); // create loop
if (swiper.params.loop) {
swiper.loopcreate();
} // update size
swiper.updatesize(); // update slides
swiper.updateslides();
if (swiper.params.watchoverflow) {
swiper.checkoverflow();
} // set grab cursor
if (swiper.params.grabcursor) {
swiper.setgrabcursor();
}
if (swiper.params.preloadimages) {
swiper.preloadimages();
} // slide to initial slide
if (swiper.params.loop) {
swiper.slideto(swiper.params.initialslide + swiper.loopedslides, 0, swiper.params.runcallbacksoninit);
} else {
swiper.slideto(swiper.params.initialslide, 0, swiper.params.runcallbacksoninit);
} // attach events
swiper.attachevents(); // init flag
swiper.initialized = true; // emit
swiper.emit('init');
};
_proto.destroy = function destroy(deleteinstance, cleanstyles) {
if (deleteinstance === void 0) {
deleteinstance = true;
}
if (cleanstyles === void 0) {
cleanstyles = true;
}
var swiper = this;
var params = swiper.params,
$el = swiper.$el,
$wrapperel = swiper.$wrapperel,
slides = swiper.slides;
if (typeof swiper.params === 'undefined' || swiper.destroyed) {
return null;
}
swiper.emit('beforedestroy'); // init flag
swiper.initialized = false; // detach events
swiper.detachevents(); // destroy loop
if (params.loop) {
swiper.loopdestroy();
} // cleanup styles
if (cleanstyles) {
swiper.removeclasses();
$el.removeattr('style');
$wrapperel.removeattr('style');
if (slides && slides.length) {
slides.removeclass([params.slidevisibleclass, params.slideactiveclass, params.slidenextclass, params.slideprevclass].join(' ')).removeattr('style').removeattr('data-swiper-slide-index');
}
}
swiper.emit('destroy'); // detach emitter events
object.keys(swiper.eventslisteners).foreach(function (eventname) {
swiper.off(eventname);
});
if (deleteinstance !== false) {
swiper.$el[0].swiper = null;
deleteprops(swiper);
}
swiper.destroyed = true;
return null;
};
swiper.extenddefaults = function extenddefaults(newdefaults) {
extend$1(extendeddefaults, newdefaults);
};
swiper.installmodule = function installmodule(module) {
if (!swiper.prototype.modules) swiper.prototype.modules = {};
var name = module.name || object.keys(swiper.prototype.modules).length + "_" + now();
swiper.prototype.modules[name] = module;
};
swiper.use = function use(module) {
if (array.isarray(module)) {
module.foreach(function (m) {
return swiper.installmodule(m);
});
return swiper;
}
swiper.installmodule(module);
return swiper;
};
_createclass(swiper, null, [{
key: "extendeddefaults",
get: function get() {
return extendeddefaults;
}
}, {
key: "defaults",
get: function get() {
return defaults;
}
}]);
return swiper;
}();
swiper.use([resize, observer$1]);
var virtual = {
update: function update(force) {
var swiper = this;
var _swiper$params = swiper.params,
slidesperview = _swiper$params.slidesperview,
slidespergroup = _swiper$params.slidespergroup,
centeredslides = _swiper$params.centeredslides;
var _swiper$params$virtua = swiper.params.virtual,
addslidesbefore = _swiper$params$virtua.addslidesbefore,
addslidesafter = _swiper$params$virtua.addslidesafter;
var _swiper$virtual = swiper.virtual,
previousfrom = _swiper$virtual.from,
previousto = _swiper$virtual.to,
slides = _swiper$virtual.slides,
previousslidesgrid = _swiper$virtual.slidesgrid,
renderslide = _swiper$virtual.renderslide,
previousoffset = _swiper$virtual.offset;
swiper.updateactiveindex();
var activeindex = swiper.activeindex || 0;
var offsetprop;
if (swiper.rtltranslate) offsetprop = 'right';else offsetprop = swiper.ishorizontal() ? 'left' : 'top';
var slidesafter;
var slidesbefore;
if (centeredslides) {
slidesafter = math.floor(slidesperview / 2) + slidespergroup + addslidesafter;
slidesbefore = math.floor(slidesperview / 2) + slidespergroup + addslidesbefore;
} else {
slidesafter = slidesperview + (slidespergroup - 1) + addslidesafter;
slidesbefore = slidespergroup + addslidesbefore;
}
var from = math.max((activeindex || 0) - slidesbefore, 0);
var to = math.min((activeindex || 0) + slidesafter, slides.length - 1);
var offset = (swiper.slidesgrid[from] || 0) - (swiper.slidesgrid[0] || 0);
extend$1(swiper.virtual, {
from: from,
to: to,
offset: offset,
slidesgrid: swiper.slidesgrid
});
function onrendered() {
swiper.updateslides();
swiper.updateprogress();
swiper.updateslidesclasses();
if (swiper.lazy && swiper.params.lazy.enabled) {
swiper.lazy.load();
}
}
if (previousfrom === from && previousto === to && !force) {
if (swiper.slidesgrid !== previousslidesgrid && offset !== previousoffset) {
swiper.slides.css(offsetprop, offset + "px");
}
swiper.updateprogress();
return;
}
if (swiper.params.virtual.renderexternal) {
swiper.params.virtual.renderexternal.call(swiper, {
offset: offset,
from: from,
to: to,
slides: function getslides() {
var slidestorender = [];
for (var i = from; i <= to; i += 1) {
slidestorender.push(slides[i]);
}
return slidestorender;
}()
});
if (swiper.params.virtual.renderexternalupdate) {
onrendered();
}
return;
}
var prependindexes = [];
var appendindexes = [];
if (force) {
swiper.$wrapperel.find("." + swiper.params.slideclass).remove();
} else {
for (var i = previousfrom; i <= previousto; i += 1) {
if (i < from || i > to) {
swiper.$wrapperel.find("." + swiper.params.slideclass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
}
}
}
for (var _i = 0; _i < slides.length; _i += 1) {
if (_i >= from && _i <= to) {
if (typeof previousto === 'undefined' || force) {
appendindexes.push(_i);
} else {
if (_i > previousto) appendindexes.push(_i);
if (_i < previousfrom) prependindexes.push(_i);
}
}
}
appendindexes.foreach(function (index) {
swiper.$wrapperel.append(renderslide(slides[index], index));
});
prependindexes.sort(function (a, b) {
return b - a;
}).foreach(function (index) {
swiper.$wrapperel.prepend(renderslide(slides[index], index));
});
swiper.$wrapperel.children('.swiper-slide').css(offsetprop, offset + "px");
onrendered();
},
renderslide: function renderslide(slide, index) {
var swiper = this;
var params = swiper.params.virtual;
if (params.cache && swiper.virtual.cache[index]) {
return swiper.virtual.cache[index];
}
var $slideel = params.renderslide ? $(params.renderslide.call(swiper, slide, index)) : $("" + slide + "
");
if (!$slideel.attr('data-swiper-slide-index')) $slideel.attr('data-swiper-slide-index', index);
if (params.cache) swiper.virtual.cache[index] = $slideel;
return $slideel;
},
appendslide: function appendslide(slides) {
var swiper = this;
if (typeof slides === 'object' && 'length' in slides) {
for (var i = 0; i < slides.length; i += 1) {
if (slides[i]) swiper.virtual.slides.push(slides[i]);
}
} else {
swiper.virtual.slides.push(slides);
}
swiper.virtual.update(true);
},
prependslide: function prependslide(slides) {
var swiper = this;
var activeindex = swiper.activeindex;
var newactiveindex = activeindex + 1;
var numberofnewslides = 1;
if (array.isarray(slides)) {
for (var i = 0; i < slides.length; i += 1) {
if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
}
newactiveindex = activeindex + slides.length;
numberofnewslides = slides.length;
} else {
swiper.virtual.slides.unshift(slides);
}
if (swiper.params.virtual.cache) {
var cache = swiper.virtual.cache;
var newcache = {};
object.keys(cache).foreach(function (cachedindex) {
var $cachedel = cache[cachedindex];
var cachedelindex = $cachedel.attr('data-swiper-slide-index');
if (cachedelindex) {
$cachedel.attr('data-swiper-slide-index', parseint(cachedelindex, 10) + 1);
}
newcache[parseint(cachedindex, 10) + numberofnewslides] = $cachedel;
});
swiper.virtual.cache = newcache;
}
swiper.virtual.update(true);
swiper.slideto(newactiveindex, 0);
},
removeslide: function removeslide(slidesindexes) {
var swiper = this;
if (typeof slidesindexes === 'undefined' || slidesindexes === null) return;
var activeindex = swiper.activeindex;
if (array.isarray(slidesindexes)) {
for (var i = slidesindexes.length - 1; i >= 0; i -= 1) {
swiper.virtual.slides.splice(slidesindexes[i], 1);
if (swiper.params.virtual.cache) {
delete swiper.virtual.cache[slidesindexes[i]];
}
if (slidesindexes[i] < activeindex) activeindex -= 1;
activeindex = math.max(activeindex, 0);
}
} else {
swiper.virtual.slides.splice(slidesindexes, 1);
if (swiper.params.virtual.cache) {
delete swiper.virtual.cache[slidesindexes];
}
if (slidesindexes < activeindex) activeindex -= 1;
activeindex = math.max(activeindex, 0);
}
swiper.virtual.update(true);
swiper.slideto(activeindex, 0);
},
removeallslides: function removeallslides() {
var swiper = this;
swiper.virtual.slides = [];
if (swiper.params.virtual.cache) {
swiper.virtual.cache = {};
}
swiper.virtual.update(true);
swiper.slideto(0, 0);
}
};
var virtual$1 = {
name: 'virtual',
params: {
virtual: {
enabled: false,
slides: [],
cache: true,
renderslide: null,
renderexternal: null,
renderexternalupdate: true,
addslidesbefore: 0,
addslidesafter: 0
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
virtual: _extends(_extends({}, virtual), {}, {
slides: swiper.params.virtual.slides,
cache: {}
})
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (!swiper.params.virtual.enabled) return;
swiper.classnames.push(swiper.params.containermodifierclass + "virtual");
var overwriteparams = {
watchslidesprogress: true
};
extend$1(swiper.params, overwriteparams);
extend$1(swiper.originalparams, overwriteparams);
if (!swiper.params.initialslide) {
swiper.virtual.update();
}
},
settranslate: function settranslate(swiper) {
if (!swiper.params.virtual.enabled) return;
swiper.virtual.update();
}
}
};
var keyboard = {
handle: function handle(event) {
var swiper = this;
var window = getwindow();
var document = getdocument();
var rtl = swiper.rtltranslate;
var e = event;
if (e.originalevent) e = e.originalevent; // jquery fix
var kc = e.keycode || e.charcode;
var pageupdown = swiper.params.keyboard.pageupdown;
var ispageup = pageupdown && kc === 33;
var ispagedown = pageupdown && kc === 34;
var isarrowleft = kc === 37;
var isarrowright = kc === 39;
var isarrowup = kc === 38;
var isarrowdown = kc === 40; // directions locks
if (!swiper.allowslidenext && (swiper.ishorizontal() && isarrowright || swiper.isvertical() && isarrowdown || ispagedown)) {
return false;
}
if (!swiper.allowslideprev && (swiper.ishorizontal() && isarrowleft || swiper.isvertical() && isarrowup || ispageup)) {
return false;
}
if (e.shiftkey || e.altkey || e.ctrlkey || e.metakey) {
return undefined;
}
if (document.activeelement && document.activeelement.nodename && (document.activeelement.nodename.tolowercase() === 'input' || document.activeelement.nodename.tolowercase() === 'textarea')) {
return undefined;
}
if (swiper.params.keyboard.onlyinviewport && (ispageup || ispagedown || isarrowleft || isarrowright || isarrowup || isarrowdown)) {
var inview = false; // check that swiper should be inside of visible area of window
if (swiper.$el.parents("." + swiper.params.slideclass).length > 0 && swiper.$el.parents("." + swiper.params.slideactiveclass).length === 0) {
return undefined;
}
var windowwidth = window.innerwidth;
var windowheight = window.innerheight;
var swiperoffset = swiper.$el.offset();
if (rtl) swiperoffset.left -= swiper.$el[0].scrollleft;
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]];
for (var i = 0; i < swipercoord.length; i += 1) {
var point = swipercoord[i];
if (point[0] >= 0 && point[0] <= windowwidth && point[1] >= 0 && point[1] <= windowheight) {
inview = true;
}
}
if (!inview) return undefined;
}
if (swiper.ishorizontal()) {
if (ispageup || ispagedown || isarrowleft || isarrowright) {
if (e.preventdefault) e.preventdefault();else e.returnvalue = false;
}
if ((ispagedown || isarrowright) && !rtl || (ispageup || isarrowleft) && rtl) swiper.slidenext();
if ((ispageup || isarrowleft) && !rtl || (ispagedown || isarrowright) && rtl) swiper.slideprev();
} else {
if (ispageup || ispagedown || isarrowup || isarrowdown) {
if (e.preventdefault) e.preventdefault();else e.returnvalue = false;
}
if (ispagedown || isarrowdown) swiper.slidenext();
if (ispageup || isarrowup) swiper.slideprev();
}
swiper.emit('keypress', kc);
return undefined;
},
enable: function enable() {
var swiper = this;
var document = getdocument();
if (swiper.keyboard.enabled) return;
$(document).on('keydown', swiper.keyboard.handle);
swiper.keyboard.enabled = true;
},
disable: function disable() {
var swiper = this;
var document = getdocument();
if (!swiper.keyboard.enabled) return;
$(document).off('keydown', swiper.keyboard.handle);
swiper.keyboard.enabled = false;
}
};
var keyboard$1 = {
name: 'keyboard',
params: {
keyboard: {
enabled: false,
onlyinviewport: true,
pageupdown: true
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
keyboard: _extends({
enabled: false
}, keyboard)
});
},
on: {
init: function init(swiper) {
if (swiper.params.keyboard.enabled) {
swiper.keyboard.enable();
}
},
destroy: function destroy(swiper) {
if (swiper.keyboard.enabled) {
swiper.keyboard.disable();
}
}
}
};
function iseventsupported() {
var document = getdocument();
var eventname = 'onwheel';
var issupported = (eventname in document);
if (!issupported) {
var element = document.createelement('div');
element.setattribute(eventname, 'return;');
issupported = typeof element[eventname] === 'function';
}
if (!issupported && document.implementation && document.implementation.hasfeature && // always returns true in newer browsers as per the standard.
// @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
document.implementation.hasfeature('', '') !== true) {
// this is the only way to test support for the `wheel` event in ie9+.
issupported = document.implementation.hasfeature('events.wheel', '3.0');
}
return issupported;
}
var mousewheel = {
lastscrolltime: now(),
lasteventbeforesnap: undefined,
recentwheelevents: [],
event: function event() {
var window = getwindow();
if (window.navigator.useragent.indexof('firefox') > -1) return 'dommousescroll';
return iseventsupported() ? 'wheel' : 'mousewheel';
},
normalize: function normalize(e) {
// reasonable defaults
var pixel_step = 10;
var line_height = 40;
var page_height = 800;
var sx = 0;
var sy = 0; // spinx, spiny
var px = 0;
var py = 0; // pixelx, pixely
// legacy
if ('detail' in e) {
sy = e.detail;
}
if ('wheeldelta' in e) {
sy = -e.wheeldelta / 120;
}
if ('wheeldeltay' in e) {
sy = -e.wheeldeltay / 120;
}
if ('wheeldeltax' in e) {
sx = -e.wheeldeltax / 120;
} // side scrolling on ff with dommousescroll
if ('axis' in e && e.axis === e.horizontal_axis) {
sx = sy;
sy = 0;
}
px = sx * pixel_step;
py = sy * pixel_step;
if ('deltay' in e) {
py = e.deltay;
}
if ('deltax' in e) {
px = e.deltax;
}
if (e.shiftkey && !px) {
// if user scrolls with shift he wants horizontal scroll
px = py;
py = 0;
}
if ((px || py) && e.deltamode) {
if (e.deltamode === 1) {
// delta in line units
px *= line_height;
py *= line_height;
} else {
// delta in page units
px *= page_height;
py *= page_height;
}
} // fall-back if spin cannot be determined
if (px && !sx) {
sx = px < 1 ? -1 : 1;
}
if (py && !sy) {
sy = py < 1 ? -1 : 1;
}
return {
spinx: sx,
spiny: sy,
pixelx: px,
pixely: py
};
},
handlemouseenter: function handlemouseenter() {
var swiper = this;
swiper.mouseentered = true;
},
handlemouseleave: function handlemouseleave() {
var swiper = this;
swiper.mouseentered = false;
},
handle: function handle(event) {
var e = event;
var swiper = this;
var params = swiper.params.mousewheel;
if (swiper.params.cssmode) {
e.preventdefault();
}
var target = swiper.$el;
if (swiper.params.mousewheel.eventstarget !== 'container') {
target = $(swiper.params.mousewheel.eventstarget);
}
if (!swiper.mouseentered && !target[0].contains(e.target) && !params.releaseonedges) return true;
if (e.originalevent) e = e.originalevent; // jquery fix
var delta = 0;
var rtlfactor = swiper.rtltranslate ? -1 : 1;
var data = mousewheel.normalize(e);
if (params.forcetoaxis) {
if (swiper.ishorizontal()) {
if (math.abs(data.pixelx) > math.abs(data.pixely)) delta = -data.pixelx * rtlfactor;else return true;
} else if (math.abs(data.pixely) > math.abs(data.pixelx)) delta = -data.pixely;else return true;
} else {
delta = math.abs(data.pixelx) > math.abs(data.pixely) ? -data.pixelx * rtlfactor : -data.pixely;
}
if (delta === 0) return true;
if (params.invert) delta = -delta;
if (!swiper.params.freemode) {
// register the new event in a variable which stores the relevant data
var newevent = {
time: now(),
delta: math.abs(delta),
direction: math.sign(delta),
raw: event
}; // keep the most recent events
var recentwheelevents = swiper.mousewheel.recentwheelevents;
if (recentwheelevents.length >= 2) {
recentwheelevents.shift(); // only store the last n events
}
var prevevent = recentwheelevents.length ? recentwheelevents[recentwheelevents.length - 1] : undefined;
recentwheelevents.push(newevent); // if there is at least one previous recorded event:
// if direction has changed or
// if the scroll is quicker than the previous one:
// animate the slider.
// else (this is the first time the wheel is moved):
// animate the slider.
if (prevevent) {
if (newevent.direction !== prevevent.direction || newevent.delta > prevevent.delta || newevent.time > prevevent.time + 150) {
swiper.mousewheel.animateslider(newevent);
}
} else {
swiper.mousewheel.animateslider(newevent);
} // if it's time to release the scroll:
// return now so you don't hit the preventdefault.
if (swiper.mousewheel.releasescroll(newevent)) {
return true;
}
} else {
// freemode or scrollcontainer:
// if we recently snapped after a momentum scroll, then ignore wheel events
// to give time for the deceleration to finish. stop ignoring after 500 msecs
// or if it's a new scroll (larger delta or inverse sign as last event before
// an end-of-momentum snap).
var _newevent = {
time: now(),
delta: math.abs(delta),
direction: math.sign(delta)
};
var lasteventbeforesnap = swiper.mousewheel.lasteventbeforesnap;
var ignorewheelevents = lasteventbeforesnap && _newevent.time < lasteventbeforesnap.time + 500 && _newevent.delta <= lasteventbeforesnap.delta && _newevent.direction === lasteventbeforesnap.direction;
if (!ignorewheelevents) {
swiper.mousewheel.lasteventbeforesnap = undefined;
if (swiper.params.loop) {
swiper.loopfix();
}
var position = swiper.gettranslate() + delta * params.sensitivity;
var wasbeginning = swiper.isbeginning;
var wasend = swiper.isend;
if (position >= swiper.mintranslate()) position = swiper.mintranslate();
if (position <= swiper.maxtranslate()) position = swiper.maxtranslate();
swiper.settransition(0);
swiper.settranslate(position);
swiper.updateprogress();
swiper.updateactiveindex();
swiper.updateslidesclasses();
if (!wasbeginning && swiper.isbeginning || !wasend && swiper.isend) {
swiper.updateslidesclasses();
}
if (swiper.params.freemodesticky) {
// when wheel scrolling starts with sticky (aka snap) enabled, then detect
// the end of a momentum scroll by storing recent (n=15?) wheel events.
// 1. do all n events have decreasing or same (absolute value) delta?
// 2. did all n events arrive in the last m (m=500?) msecs?
// 3. does the earliest event have an (absolute value) delta that's
// at least p (p=1?) larger than the most recent event's delta?
// 4. does the latest event have a delta that's smaller than q (q=6?) pixels?
// if 1-4 are "yes" then we're near the end of a momuntum scroll deceleration.
// snap immediately and ignore remaining wheel events in this scroll.
// see comment above for "remaining wheel events in this scroll" determination.
// if 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
cleartimeout(swiper.mousewheel.timeout);
swiper.mousewheel.timeout = undefined;
var _recentwheelevents = swiper.mousewheel.recentwheelevents;
if (_recentwheelevents.length >= 15) {
_recentwheelevents.shift(); // only store the last n events
}
var _prevevent = _recentwheelevents.length ? _recentwheelevents[_recentwheelevents.length - 1] : undefined;
var firstevent = _recentwheelevents[0];
_recentwheelevents.push(_newevent);
if (_prevevent && (_newevent.delta > _prevevent.delta || _newevent.direction !== _prevevent.direction)) {
// increasing or reverse-sign delta means the user started scrolling again. clear the wheel event log.
_recentwheelevents.splice(0);
} else if (_recentwheelevents.length >= 15 && _newevent.time - firstevent.time < 500 && firstevent.delta - _newevent.delta >= 1 && _newevent.delta <= 6) {
// we're at the end of the deceleration of a momentum scroll, so there's no need
// to wait for more events. snap asap on the next tick.
// also, because there's some remaining momentum we'll bias the snap in the
// direction of the ongoing scroll because it's better ux for the scroll to snap
// in the same direction as the scroll instead of reversing to snap. therefore,
// if it's already scrolled more than 20% in the current direction, keep going.
var snaptothreshold = delta > 0 ? 0.8 : 0.2;
swiper.mousewheel.lasteventbeforesnap = _newevent;
_recentwheelevents.splice(0);
swiper.mousewheel.timeout = nexttick(function () {
swiper.slidetoclosest(swiper.params.speed, true, undefined, snaptothreshold);
}, 0); // no delay; move on next tick
}
if (!swiper.mousewheel.timeout) {
// if we get here, then we haven't detected the end of a momentum scroll, so
// we'll consider a scroll "complete" when there haven't been any wheel events
// for 500ms.
swiper.mousewheel.timeout = nexttick(function () {
var snaptothreshold = 0.5;
swiper.mousewheel.lasteventbeforesnap = _newevent;
_recentwheelevents.splice(0);
swiper.slidetoclosest(swiper.params.speed, true, undefined, snaptothreshold);
}, 500);
}
} // emit event
if (!ignorewheelevents) swiper.emit('scroll', e); // stop autoplay
if (swiper.params.autoplay && swiper.params.autoplaydisableoninteraction) swiper.autoplay.stop(); // return page scroll on edge positions
if (position === swiper.mintranslate() || position === swiper.maxtranslate()) return true;
}
}
if (e.preventdefault) e.preventdefault();else e.returnvalue = false;
return false;
},
animateslider: function animateslider(newevent) {
var swiper = this;
var window = getwindow();
if (this.params.mousewheel.thresholddelta && newevent.delta < this.params.mousewheel.thresholddelta) {
// prevent if delta of wheel scroll delta is below configured threshold
return false;
}
if (this.params.mousewheel.thresholdtime && now() - swiper.mousewheel.lastscrolltime < this.params.mousewheel.thresholdtime) {
// prevent if time between scrolls is below configured threshold
return false;
} // if the movement is not big enough and
// if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
// don't go any further (avoid insignificant scroll movement).
if (newevent.delta >= 6 && now() - swiper.mousewheel.lastscrolltime < 60) {
// return false as a default
return true;
} // if user is scrolling towards the end:
// if the slider hasn't hit the latest slide or
// if the slider is a loop and
// if the slider isn't moving right now:
// go to next slide and
// emit a scroll event.
// else (the user is scrolling towards the beginning) and
// if the slider hasn't hit the first slide or
// if the slider is a loop and
// if the slider isn't moving right now:
// go to prev slide and
// emit a scroll event.
if (newevent.direction < 0) {
if ((!swiper.isend || swiper.params.loop) && !swiper.animating) {
swiper.slidenext();
swiper.emit('scroll', newevent.raw);
}
} else if ((!swiper.isbeginning || swiper.params.loop) && !swiper.animating) {
swiper.slideprev();
swiper.emit('scroll', newevent.raw);
} // if you got here is because an animation has been triggered so store the current time
swiper.mousewheel.lastscrolltime = new window.date().gettime(); // return false as a default
return false;
},
releasescroll: function releasescroll(newevent) {
var swiper = this;
var params = swiper.params.mousewheel;
if (newevent.direction < 0) {
if (swiper.isend && !swiper.params.loop && params.releaseonedges) {
// return true to animate scroll on edges
return true;
}
} else if (swiper.isbeginning && !swiper.params.loop && params.releaseonedges) {
// return true to animate scroll on edges
return true;
}
return false;
},
enable: function enable() {
var swiper = this;
var event = mousewheel.event();
if (swiper.params.cssmode) {
swiper.wrapperel.removeeventlistener(event, swiper.mousewheel.handle);
return true;
}
if (!event) return false;
if (swiper.mousewheel.enabled) return false;
var target = swiper.$el;
if (swiper.params.mousewheel.eventstarget !== 'container') {
target = $(swiper.params.mousewheel.eventstarget);
}
target.on('mouseenter', swiper.mousewheel.handlemouseenter);
target.on('mouseleave', swiper.mousewheel.handlemouseleave);
target.on(event, swiper.mousewheel.handle);
swiper.mousewheel.enabled = true;
return true;
},
disable: function disable() {
var swiper = this;
var event = mousewheel.event();
if (swiper.params.cssmode) {
swiper.wrapperel.addeventlistener(event, swiper.mousewheel.handle);
return true;
}
if (!event) return false;
if (!swiper.mousewheel.enabled) return false;
var target = swiper.$el;
if (swiper.params.mousewheel.eventstarget !== 'container') {
target = $(swiper.params.mousewheel.eventstarget);
}
target.off(event, swiper.mousewheel.handle);
swiper.mousewheel.enabled = false;
return true;
}
};
var mousewheel$1 = {
name: 'mousewheel',
params: {
mousewheel: {
enabled: false,
releaseonedges: false,
invert: false,
forcetoaxis: false,
sensitivity: 1,
eventstarget: 'container',
thresholddelta: null,
thresholdtime: null
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
mousewheel: {
enabled: false,
lastscrolltime: now(),
lasteventbeforesnap: undefined,
recentwheelevents: [],
enable: mousewheel.enable,
disable: mousewheel.disable,
handle: mousewheel.handle,
handlemouseenter: mousewheel.handlemouseenter,
handlemouseleave: mousewheel.handlemouseleave,
animateslider: mousewheel.animateslider,
releasescroll: mousewheel.releasescroll
}
});
},
on: {
init: function init(swiper) {
if (!swiper.params.mousewheel.enabled && swiper.params.cssmode) {
swiper.mousewheel.disable();
}
if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
},
destroy: function destroy(swiper) {
if (swiper.params.cssmode) {
swiper.mousewheel.enable();
}
if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
}
}
};
var navigation = {
update: function update() {
// update navigation buttons
var swiper = this;
var params = swiper.params.navigation;
if (swiper.params.loop) return;
var _swiper$navigation = swiper.navigation,
$nextel = _swiper$navigation.$nextel,
$prevel = _swiper$navigation.$prevel;
if ($prevel && $prevel.length > 0) {
if (swiper.isbeginning) {
$prevel.addclass(params.disabledclass);
} else {
$prevel.removeclass(params.disabledclass);
}
$prevel[swiper.params.watchoverflow && swiper.islocked ? 'addclass' : 'removeclass'](params.lockclass);
}
if ($nextel && $nextel.length > 0) {
if (swiper.isend) {
$nextel.addclass(params.disabledclass);
} else {
$nextel.removeclass(params.disabledclass);
}
$nextel[swiper.params.watchoverflow && swiper.islocked ? 'addclass' : 'removeclass'](params.lockclass);
}
},
onprevclick: function onprevclick(e) {
var swiper = this;
e.preventdefault();
if (swiper.isbeginning && !swiper.params.loop) return;
swiper.slideprev();
},
onnextclick: function onnextclick(e) {
var swiper = this;
e.preventdefault();
if (swiper.isend && !swiper.params.loop) return;
swiper.slidenext();
},
init: function init() {
var swiper = this;
var params = swiper.params.navigation;
if (!(params.nextel || params.prevel)) return;
var $nextel;
var $prevel;
if (params.nextel) {
$nextel = $(params.nextel);
if (swiper.params.uniquenavelements && typeof params.nextel === 'string' && $nextel.length > 1 && swiper.$el.find(params.nextel).length === 1) {
$nextel = swiper.$el.find(params.nextel);
}
}
if (params.prevel) {
$prevel = $(params.prevel);
if (swiper.params.uniquenavelements && typeof params.prevel === 'string' && $prevel.length > 1 && swiper.$el.find(params.prevel).length === 1) {
$prevel = swiper.$el.find(params.prevel);
}
}
if ($nextel && $nextel.length > 0) {
$nextel.on('click', swiper.navigation.onnextclick);
}
if ($prevel && $prevel.length > 0) {
$prevel.on('click', swiper.navigation.onprevclick);
}
extend$1(swiper.navigation, {
$nextel: $nextel,
nextel: $nextel && $nextel[0],
$prevel: $prevel,
prevel: $prevel && $prevel[0]
});
},
destroy: function destroy() {
var swiper = this;
var _swiper$navigation2 = swiper.navigation,
$nextel = _swiper$navigation2.$nextel,
$prevel = _swiper$navigation2.$prevel;
if ($nextel && $nextel.length) {
$nextel.off('click', swiper.navigation.onnextclick);
$nextel.removeclass(swiper.params.navigation.disabledclass);
}
if ($prevel && $prevel.length) {
$prevel.off('click', swiper.navigation.onprevclick);
$prevel.removeclass(swiper.params.navigation.disabledclass);
}
}
};
var navigation$1 = {
name: 'navigation',
params: {
navigation: {
nextel: null,
prevel: null,
hideonclick: false,
disabledclass: 'swiper-button-disabled',
hiddenclass: 'swiper-button-hidden',
lockclass: 'swiper-button-lock'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
navigation: _extends({}, navigation)
});
},
on: {
init: function init(swiper) {
swiper.navigation.init();
swiper.navigation.update();
},
toedge: function toedge(swiper) {
swiper.navigation.update();
},
fromedge: function fromedge(swiper) {
swiper.navigation.update();
},
destroy: function destroy(swiper) {
swiper.navigation.destroy();
},
click: function click(swiper, e) {
var _swiper$navigation3 = swiper.navigation,
$nextel = _swiper$navigation3.$nextel,
$prevel = _swiper$navigation3.$prevel;
if (swiper.params.navigation.hideonclick && !$(e.target).is($prevel) && !$(e.target).is($nextel)) {
var ishidden;
if ($nextel) {
ishidden = $nextel.hasclass(swiper.params.navigation.hiddenclass);
} else if ($prevel) {
ishidden = $prevel.hasclass(swiper.params.navigation.hiddenclass);
}
if (ishidden === true) {
swiper.emit('navigationshow');
} else {
swiper.emit('navigationhide');
}
if ($nextel) {
$nextel.toggleclass(swiper.params.navigation.hiddenclass);
}
if ($prevel) {
$prevel.toggleclass(swiper.params.navigation.hiddenclass);
}
}
}
}
};
var pagination = {
update: function update() {
// render || update pagination bullets/items
var swiper = this;
var rtl = swiper.rtl;
var params = swiper.params.pagination;
if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
var slideslength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
var $el = swiper.pagination.$el; // current/total
var current;
var total = swiper.params.loop ? math.ceil((slideslength - swiper.loopedslides * 2) / swiper.params.slidespergroup) : swiper.snapgrid.length;
if (swiper.params.loop) {
current = math.ceil((swiper.activeindex - swiper.loopedslides) / swiper.params.slidespergroup);
if (current > slideslength - 1 - swiper.loopedslides * 2) {
current -= slideslength - swiper.loopedslides * 2;
}
if (current > total - 1) current -= total;
if (current < 0 && swiper.params.paginationtype !== 'bullets') current = total + current;
} else if (typeof swiper.snapindex !== 'undefined') {
current = swiper.snapindex;
} else {
current = swiper.activeindex || 0;
} // types
if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
var bullets = swiper.pagination.bullets;
var firstindex;
var lastindex;
var midindex;
if (params.dynamicbullets) {
swiper.pagination.bulletsize = bullets.eq(0)[swiper.ishorizontal() ? 'outerwidth' : 'outerheight'](true);
$el.css(swiper.ishorizontal() ? 'width' : 'height', swiper.pagination.bulletsize * (params.dynamicmainbullets + 4) + "px");
if (params.dynamicmainbullets > 1 && swiper.previousindex !== undefined) {
swiper.pagination.dynamicbulletindex += current - swiper.previousindex;
if (swiper.pagination.dynamicbulletindex > params.dynamicmainbullets - 1) {
swiper.pagination.dynamicbulletindex = params.dynamicmainbullets - 1;
} else if (swiper.pagination.dynamicbulletindex < 0) {
swiper.pagination.dynamicbulletindex = 0;
}
}
firstindex = current - swiper.pagination.dynamicbulletindex;
lastindex = firstindex + (math.min(bullets.length, params.dynamicmainbullets) - 1);
midindex = (lastindex + firstindex) / 2;
}
bullets.removeclass(params.bulletactiveclass + " " + params.bulletactiveclass + "-next " + params.bulletactiveclass + "-next-next " + params.bulletactiveclass + "-prev " + params.bulletactiveclass + "-prev-prev " + params.bulletactiveclass + "-main");
if ($el.length > 1) {
bullets.each(function (bullet) {
var $bullet = $(bullet);
var bulletindex = $bullet.index();
if (bulletindex === current) {
$bullet.addclass(params.bulletactiveclass);
}
if (params.dynamicbullets) {
if (bulletindex >= firstindex && bulletindex <= lastindex) {
$bullet.addclass(params.bulletactiveclass + "-main");
}
if (bulletindex === firstindex) {
$bullet.prev().addclass(params.bulletactiveclass + "-prev").prev().addclass(params.bulletactiveclass + "-prev-prev");
}
if (bulletindex === lastindex) {
$bullet.next().addclass(params.bulletactiveclass + "-next").next().addclass(params.bulletactiveclass + "-next-next");
}
}
});
} else {
var $bullet = bullets.eq(current);
var bulletindex = $bullet.index();
$bullet.addclass(params.bulletactiveclass);
if (params.dynamicbullets) {
var $firstdisplayedbullet = bullets.eq(firstindex);
var $lastdisplayedbullet = bullets.eq(lastindex);
for (var i = firstindex; i <= lastindex; i += 1) {
bullets.eq(i).addclass(params.bulletactiveclass + "-main");
}
if (swiper.params.loop) {
if (bulletindex >= bullets.length - params.dynamicmainbullets) {
for (var _i = params.dynamicmainbullets; _i >= 0; _i -= 1) {
bullets.eq(bullets.length - _i).addclass(params.bulletactiveclass + "-main");
}
bullets.eq(bullets.length - params.dynamicmainbullets - 1).addclass(params.bulletactiveclass + "-prev");
} else {
$firstdisplayedbullet.prev().addclass(params.bulletactiveclass + "-prev").prev().addclass(params.bulletactiveclass + "-prev-prev");
$lastdisplayedbullet.next().addclass(params.bulletactiveclass + "-next").next().addclass(params.bulletactiveclass + "-next-next");
}
} else {
$firstdisplayedbullet.prev().addclass(params.bulletactiveclass + "-prev").prev().addclass(params.bulletactiveclass + "-prev-prev");
$lastdisplayedbullet.next().addclass(params.bulletactiveclass + "-next").next().addclass(params.bulletactiveclass + "-next-next");
}
}
}
if (params.dynamicbullets) {
var dynamicbulletslength = math.min(bullets.length, params.dynamicmainbullets + 4);
var bulletsoffset = (swiper.pagination.bulletsize * dynamicbulletslength - swiper.pagination.bulletsize) / 2 - midindex * swiper.pagination.bulletsize;
var offsetprop = rtl ? 'right' : 'left';
bullets.css(swiper.ishorizontal() ? offsetprop : 'top', bulletsoffset + "px");
}
}
if (params.type === 'fraction') {
$el.find("." + params.currentclass).text(params.formatfractioncurrent(current + 1));
$el.find("." + params.totalclass).text(params.formatfractiontotal(total));
}
if (params.type === 'progressbar') {
var progressbardirection;
if (params.progressbaropposite) {
progressbardirection = swiper.ishorizontal() ? 'vertical' : 'horizontal';
} else {
progressbardirection = swiper.ishorizontal() ? 'horizontal' : 'vertical';
}
var scale = (current + 1) / total;
var scalex = 1;
var scaley = 1;
if (progressbardirection === 'horizontal') {
scalex = scale;
} else {
scaley = scale;
}
$el.find("." + params.progressbarfillclass).transform("translate3d(0,0,0) scalex(" + scalex + ") scaley(" + scaley + ")").transition(swiper.params.speed);
}
if (params.type === 'custom' && params.rendercustom) {
$el.html(params.rendercustom(swiper, current + 1, total));
swiper.emit('paginationrender', $el[0]);
} else {
swiper.emit('paginationupdate', $el[0]);
}
$el[swiper.params.watchoverflow && swiper.islocked ? 'addclass' : 'removeclass'](params.lockclass);
},
render: function render() {
// render container
var swiper = this;
var params = swiper.params.pagination;
if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
var slideslength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
var $el = swiper.pagination.$el;
var paginationhtml = '';
if (params.type === 'bullets') {
var numberofbullets = swiper.params.loop ? math.ceil((slideslength - swiper.loopedslides * 2) / swiper.params.slidespergroup) : swiper.snapgrid.length;
for (var i = 0; i < numberofbullets; i += 1) {
if (params.renderbullet) {
paginationhtml += params.renderbullet.call(swiper, i, params.bulletclass);
} else {
paginationhtml += "<" + params.bulletelement + " class=\"" + params.bulletclass + "\">" + params.bulletelement + ">";
}
}
$el.html(paginationhtml);
swiper.pagination.bullets = $el.find("." + params.bulletclass);
}
if (params.type === 'fraction') {
if (params.renderfraction) {
paginationhtml = params.renderfraction.call(swiper, params.currentclass, params.totalclass);
} else {
paginationhtml = "" + ' / ' + ("");
}
$el.html(paginationhtml);
}
if (params.type === 'progressbar') {
if (params.renderprogressbar) {
paginationhtml = params.renderprogressbar.call(swiper, params.progressbarfillclass);
} else {
paginationhtml = "";
}
$el.html(paginationhtml);
}
if (params.type !== 'custom') {
swiper.emit('paginationrender', swiper.pagination.$el[0]);
}
},
init: function init() {
var swiper = this;
var params = swiper.params.pagination;
if (!params.el) return;
var $el = $(params.el);
if ($el.length === 0) return;
if (swiper.params.uniquenavelements && typeof params.el === 'string' && $el.length > 1) {
$el = swiper.$el.find(params.el);
}
if (params.type === 'bullets' && params.clickable) {
$el.addclass(params.clickableclass);
}
$el.addclass(params.modifierclass + params.type);
if (params.type === 'bullets' && params.dynamicbullets) {
$el.addclass("" + params.modifierclass + params.type + "-dynamic");
swiper.pagination.dynamicbulletindex = 0;
if (params.dynamicmainbullets < 1) {
params.dynamicmainbullets = 1;
}
}
if (params.type === 'progressbar' && params.progressbaropposite) {
$el.addclass(params.progressbaroppositeclass);
}
if (params.clickable) {
$el.on('click', "." + params.bulletclass, function onclick(e) {
e.preventdefault();
var index = $(this).index() * swiper.params.slidespergroup;
if (swiper.params.loop) index += swiper.loopedslides;
swiper.slideto(index);
});
}
extend$1(swiper.pagination, {
$el: $el,
el: $el[0]
});
},
destroy: function destroy() {
var swiper = this;
var params = swiper.params.pagination;
if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
var $el = swiper.pagination.$el;
$el.removeclass(params.hiddenclass);
$el.removeclass(params.modifierclass + params.type);
if (swiper.pagination.bullets) swiper.pagination.bullets.removeclass(params.bulletactiveclass);
if (params.clickable) {
$el.off('click', "." + params.bulletclass);
}
}
};
var pagination$1 = {
name: 'pagination',
params: {
pagination: {
el: null,
bulletelement: 'span',
clickable: false,
hideonclick: false,
renderbullet: null,
renderprogressbar: null,
renderfraction: null,
rendercustom: null,
progressbaropposite: false,
type: 'bullets',
// 'bullets' or 'progressbar' or 'fraction' or 'custom'
dynamicbullets: false,
dynamicmainbullets: 1,
formatfractioncurrent: function formatfractioncurrent(number) {
return number;
},
formatfractiontotal: function formatfractiontotal(number) {
return number;
},
bulletclass: 'swiper-pagination-bullet',
bulletactiveclass: 'swiper-pagination-bullet-active',
modifierclass: 'swiper-pagination-',
// new
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',
// new
lockclass: 'swiper-pagination-lock'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
pagination: _extends({
dynamicbulletindex: 0
}, pagination)
});
},
on: {
init: function init(swiper) {
swiper.pagination.init();
swiper.pagination.render();
swiper.pagination.update();
},
activeindexchange: function activeindexchange(swiper) {
if (swiper.params.loop) {
swiper.pagination.update();
} else if (typeof swiper.snapindex === 'undefined') {
swiper.pagination.update();
}
},
snapindexchange: function snapindexchange(swiper) {
if (!swiper.params.loop) {
swiper.pagination.update();
}
},
slideslengthchange: function slideslengthchange(swiper) {
if (swiper.params.loop) {
swiper.pagination.render();
swiper.pagination.update();
}
},
snapgridlengthchange: function snapgridlengthchange(swiper) {
if (!swiper.params.loop) {
swiper.pagination.render();
swiper.pagination.update();
}
},
destroy: function destroy(swiper) {
swiper.pagination.destroy();
},
click: function click(swiper, e) {
if (swiper.params.pagination.el && swiper.params.pagination.hideonclick && swiper.pagination.$el.length > 0 && !$(e.target).hasclass(swiper.params.pagination.bulletclass)) {
var ishidden = swiper.pagination.$el.hasclass(swiper.params.pagination.hiddenclass);
if (ishidden === true) {
swiper.emit('paginationshow');
} else {
swiper.emit('paginationhide');
}
swiper.pagination.$el.toggleclass(swiper.params.pagination.hiddenclass);
}
}
}
};
var scrollbar = {
settranslate: function settranslate() {
var swiper = this;
if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
var scrollbar = swiper.scrollbar,
rtl = swiper.rtltranslate,
progress = swiper.progress;
var dragsize = scrollbar.dragsize,
tracksize = scrollbar.tracksize,
$dragel = scrollbar.$dragel,
$el = scrollbar.$el;
var params = swiper.params.scrollbar;
var newsize = dragsize;
var newpos = (tracksize - dragsize) * progress;
if (rtl) {
newpos = -newpos;
if (newpos > 0) {
newsize = dragsize - newpos;
newpos = 0;
} else if (-newpos + dragsize > tracksize) {
newsize = tracksize + newpos;
}
} else if (newpos < 0) {
newsize = dragsize + newpos;
newpos = 0;
} else if (newpos + dragsize > tracksize) {
newsize = tracksize - newpos;
}
if (swiper.ishorizontal()) {
$dragel.transform("translate3d(" + newpos + "px, 0, 0)");
$dragel[0].style.width = newsize + "px";
} else {
$dragel.transform("translate3d(0px, " + newpos + "px, 0)");
$dragel[0].style.height = newsize + "px";
}
if (params.hide) {
cleartimeout(swiper.scrollbar.timeout);
$el[0].style.opacity = 1;
swiper.scrollbar.timeout = settimeout(function () {
$el[0].style.opacity = 0;
$el.transition(400);
}, 1000);
}
},
settransition: function settransition(duration) {
var swiper = this;
if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
swiper.scrollbar.$dragel.transition(duration);
},
updatesize: function updatesize() {
var swiper = this;
if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
var scrollbar = swiper.scrollbar;
var $dragel = scrollbar.$dragel,
$el = scrollbar.$el;
$dragel[0].style.width = '';
$dragel[0].style.height = '';
var tracksize = swiper.ishorizontal() ? $el[0].offsetwidth : $el[0].offsetheight;
var divider = swiper.size / swiper.virtualsize;
var movedivider = divider * (tracksize / swiper.size);
var dragsize;
if (swiper.params.scrollbar.dragsize === 'auto') {
dragsize = tracksize * divider;
} else {
dragsize = parseint(swiper.params.scrollbar.dragsize, 10);
}
if (swiper.ishorizontal()) {
$dragel[0].style.width = dragsize + "px";
} else {
$dragel[0].style.height = dragsize + "px";
}
if (divider >= 1) {
$el[0].style.display = 'none';
} else {
$el[0].style.display = '';
}
if (swiper.params.scrollbar.hide) {
$el[0].style.opacity = 0;
}
extend$1(scrollbar, {
tracksize: tracksize,
divider: divider,
movedivider: movedivider,
dragsize: dragsize
});
scrollbar.$el[swiper.params.watchoverflow && swiper.islocked ? 'addclass' : 'removeclass'](swiper.params.scrollbar.lockclass);
},
getpointerposition: function getpointerposition(e) {
var swiper = this;
if (swiper.ishorizontal()) {
return e.type === 'touchstart' || e.type === 'touchmove' ? e.targettouches[0].clientx : e.clientx;
}
return e.type === 'touchstart' || e.type === 'touchmove' ? e.targettouches[0].clienty : e.clienty;
},
setdragposition: function setdragposition(e) {
var swiper = this;
var scrollbar = swiper.scrollbar,
rtl = swiper.rtltranslate;
var $el = scrollbar.$el,
dragsize = scrollbar.dragsize,
tracksize = scrollbar.tracksize,
dragstartpos = scrollbar.dragstartpos;
var positionratio;
positionratio = (scrollbar.getpointerposition(e) - $el.offset()[swiper.ishorizontal() ? 'left' : 'top'] - (dragstartpos !== null ? dragstartpos : dragsize / 2)) / (tracksize - dragsize);
positionratio = math.max(math.min(positionratio, 1), 0);
if (rtl) {
positionratio = 1 - positionratio;
}
var position = swiper.mintranslate() + (swiper.maxtranslate() - swiper.mintranslate()) * positionratio;
swiper.updateprogress(position);
swiper.settranslate(position);
swiper.updateactiveindex();
swiper.updateslidesclasses();
},
ondragstart: function ondragstart(e) {
var swiper = this;
var params = swiper.params.scrollbar;
var scrollbar = swiper.scrollbar,
$wrapperel = swiper.$wrapperel;
var $el = scrollbar.$el,
$dragel = scrollbar.$dragel;
swiper.scrollbar.istouched = true;
swiper.scrollbar.dragstartpos = e.target === $dragel[0] || e.target === $dragel ? scrollbar.getpointerposition(e) - e.target.getboundingclientrect()[swiper.ishorizontal() ? 'left' : 'top'] : null;
e.preventdefault();
e.stoppropagation();
$wrapperel.transition(100);
$dragel.transition(100);
scrollbar.setdragposition(e);
cleartimeout(swiper.scrollbar.dragtimeout);
$el.transition(0);
if (params.hide) {
$el.css('opacity', 1);
}
if (swiper.params.cssmode) {
swiper.$wrapperel.css('scroll-snap-type', 'none');
}
swiper.emit('scrollbardragstart', e);
},
ondragmove: function ondragmove(e) {
var swiper = this;
var scrollbar = swiper.scrollbar,
$wrapperel = swiper.$wrapperel;
var $el = scrollbar.$el,
$dragel = scrollbar.$dragel;
if (!swiper.scrollbar.istouched) return;
if (e.preventdefault) e.preventdefault();else e.returnvalue = false;
scrollbar.setdragposition(e);
$wrapperel.transition(0);
$el.transition(0);
$dragel.transition(0);
swiper.emit('scrollbardragmove', e);
},
ondragend: function ondragend(e) {
var swiper = this;
var params = swiper.params.scrollbar;
var scrollbar = swiper.scrollbar,
$wrapperel = swiper.$wrapperel;
var $el = scrollbar.$el;
if (!swiper.scrollbar.istouched) return;
swiper.scrollbar.istouched = false;
if (swiper.params.cssmode) {
swiper.$wrapperel.css('scroll-snap-type', '');
$wrapperel.transition('');
}
if (params.hide) {
cleartimeout(swiper.scrollbar.dragtimeout);
swiper.scrollbar.dragtimeout = nexttick(function () {
$el.css('opacity', 0);
$el.transition(400);
}, 1000);
}
swiper.emit('scrollbardragend', e);
if (params.snaponrelease) {
swiper.slidetoclosest();
}
},
enabledraggable: function enabledraggable() {
var swiper = this;
if (!swiper.params.scrollbar.el) return;
var document = getdocument();
var scrollbar = swiper.scrollbar,
toucheventstouch = swiper.toucheventstouch,
toucheventsdesktop = swiper.toucheventsdesktop,
params = swiper.params,
support = swiper.support;
var $el = scrollbar.$el;
var target = $el[0];
var activelistener = support.passivelistener && params.passivelisteners ? {
passive: false,
capture: false
} : false;
var passivelistener = support.passivelistener && params.passivelisteners ? {
passive: true,
capture: false
} : false;
if (!support.touch) {
target.addeventlistener(toucheventsdesktop.start, swiper.scrollbar.ondragstart, activelistener);
document.addeventlistener(toucheventsdesktop.move, swiper.scrollbar.ondragmove, activelistener);
document.addeventlistener(toucheventsdesktop.end, swiper.scrollbar.ondragend, passivelistener);
} else {
target.addeventlistener(toucheventstouch.start, swiper.scrollbar.ondragstart, activelistener);
target.addeventlistener(toucheventstouch.move, swiper.scrollbar.ondragmove, activelistener);
target.addeventlistener(toucheventstouch.end, swiper.scrollbar.ondragend, passivelistener);
}
},
disabledraggable: function disabledraggable() {
var swiper = this;
if (!swiper.params.scrollbar.el) return;
var document = getdocument();
var scrollbar = swiper.scrollbar,
toucheventstouch = swiper.toucheventstouch,
toucheventsdesktop = swiper.toucheventsdesktop,
params = swiper.params,
support = swiper.support;
var $el = scrollbar.$el;
var target = $el[0];
var activelistener = support.passivelistener && params.passivelisteners ? {
passive: false,
capture: false
} : false;
var passivelistener = support.passivelistener && params.passivelisteners ? {
passive: true,
capture: false
} : false;
if (!support.touch) {
target.removeeventlistener(toucheventsdesktop.start, swiper.scrollbar.ondragstart, activelistener);
document.removeeventlistener(toucheventsdesktop.move, swiper.scrollbar.ondragmove, activelistener);
document.removeeventlistener(toucheventsdesktop.end, swiper.scrollbar.ondragend, passivelistener);
} else {
target.removeeventlistener(toucheventstouch.start, swiper.scrollbar.ondragstart, activelistener);
target.removeeventlistener(toucheventstouch.move, swiper.scrollbar.ondragmove, activelistener);
target.removeeventlistener(toucheventstouch.end, swiper.scrollbar.ondragend, passivelistener);
}
},
init: function init() {
var swiper = this;
if (!swiper.params.scrollbar.el) return;
var scrollbar = swiper.scrollbar,
$swiperel = swiper.$el;
var params = swiper.params.scrollbar;
var $el = $(params.el);
if (swiper.params.uniquenavelements && typeof params.el === 'string' && $el.length > 1 && $swiperel.find(params.el).length === 1) {
$el = $swiperel.find(params.el);
}
var $dragel = $el.find("." + swiper.params.scrollbar.dragclass);
if ($dragel.length === 0) {
$dragel = $("");
$el.append($dragel);
}
extend$1(scrollbar, {
$el: $el,
el: $el[0],
$dragel: $dragel,
dragel: $dragel[0]
});
if (params.draggable) {
scrollbar.enabledraggable();
}
},
destroy: function destroy() {
var swiper = this;
swiper.scrollbar.disabledraggable();
}
};
var scrollbar$1 = {
name: 'scrollbar',
params: {
scrollbar: {
el: null,
dragsize: 'auto',
hide: false,
draggable: false,
snaponrelease: true,
lockclass: 'swiper-scrollbar-lock',
dragclass: 'swiper-scrollbar-drag'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
scrollbar: _extends({
istouched: false,
timeout: null,
dragtimeout: null
}, scrollbar)
});
},
on: {
init: function init(swiper) {
swiper.scrollbar.init();
swiper.scrollbar.updatesize();
swiper.scrollbar.settranslate();
},
update: function update(swiper) {
swiper.scrollbar.updatesize();
},
resize: function resize(swiper) {
swiper.scrollbar.updatesize();
},
observerupdate: function observerupdate(swiper) {
swiper.scrollbar.updatesize();
},
settranslate: function settranslate(swiper) {
swiper.scrollbar.settranslate();
},
settransition: function settransition(swiper, duration) {
swiper.scrollbar.settransition(duration);
},
destroy: function destroy(swiper) {
swiper.scrollbar.destroy();
}
}
};
var parallax = {
settransform: function settransform(el, progress) {
var swiper = this;
var rtl = swiper.rtl;
var $el = $(el);
var rtlfactor = rtl ? -1 : 1;
var p = $el.attr('data-swiper-parallax') || '0';
var x = $el.attr('data-swiper-parallax-x');
var y = $el.attr('data-swiper-parallax-y');
var scale = $el.attr('data-swiper-parallax-scale');
var opacity = $el.attr('data-swiper-parallax-opacity');
if (x || y) {
x = x || '0';
y = y || '0';
} else if (swiper.ishorizontal()) {
x = p;
y = '0';
} else {
y = p;
x = '0';
}
if (x.indexof('%') >= 0) {
x = parseint(x, 10) * progress * rtlfactor + "%";
} else {
x = x * progress * rtlfactor + "px";
}
if (y.indexof('%') >= 0) {
y = parseint(y, 10) * progress + "%";
} else {
y = y * progress + "px";
}
if (typeof opacity !== 'undefined' && opacity !== null) {
var currentopacity = opacity - (opacity - 1) * (1 - math.abs(progress));
$el[0].style.opacity = currentopacity;
}
if (typeof scale === 'undefined' || scale === null) {
$el.transform("translate3d(" + x + ", " + y + ", 0px)");
} else {
var currentscale = scale - (scale - 1) * (1 - math.abs(progress));
$el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentscale + ")");
}
},
settranslate: function settranslate() {
var swiper = this;
var $el = swiper.$el,
slides = swiper.slides,
progress = swiper.progress,
snapgrid = swiper.snapgrid;
$el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
swiper.parallax.settransform(el, progress);
});
slides.each(function (slideel, slideindex) {
var slideprogress = slideel.progress;
if (swiper.params.slidespergroup > 1 && swiper.params.slidesperview !== 'auto') {
slideprogress += math.ceil(slideindex / 2) - progress * (snapgrid.length - 1);
}
slideprogress = math.min(math.max(slideprogress, -1), 1);
$(slideel).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
swiper.parallax.settransform(el, slideprogress);
});
});
},
settransition: function settransition(duration) {
if (duration === void 0) {
duration = this.params.speed;
}
var swiper = this;
var $el = swiper.$el;
$el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxel) {
var $parallaxel = $(parallaxel);
var parallaxduration = parseint($parallaxel.attr('data-swiper-parallax-duration'), 10) || duration;
if (duration === 0) parallaxduration = 0;
$parallaxel.transition(parallaxduration);
});
}
};
var parallax$1 = {
name: 'parallax',
params: {
parallax: {
enabled: false
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
parallax: _extends({}, parallax)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (!swiper.params.parallax.enabled) return;
swiper.params.watchslidesprogress = true;
swiper.originalparams.watchslidesprogress = true;
},
init: function init(swiper) {
if (!swiper.params.parallax.enabled) return;
swiper.parallax.settranslate();
},
settranslate: function settranslate(swiper) {
if (!swiper.params.parallax.enabled) return;
swiper.parallax.settranslate();
},
settransition: function settransition(swiper, duration) {
if (!swiper.params.parallax.enabled) return;
swiper.parallax.settransition(duration);
}
}
};
var zoom = {
// calc scale from multi-touches
getdistancebetweentouches: function getdistancebetweentouches(e) {
if (e.targettouches.length < 2) return 1;
var x1 = e.targettouches[0].pagex;
var y1 = e.targettouches[0].pagey;
var x2 = e.targettouches[1].pagex;
var y2 = e.targettouches[1].pagey;
var distance = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2));
return distance;
},
// events
ongesturestart: function ongesturestart(e) {
var swiper = this;
var support = swiper.support;
var params = swiper.params.zoom;
var zoom = swiper.zoom;
var gesture = zoom.gesture;
zoom.fakegesturetouched = false;
zoom.fakegesturemoved = false;
if (!support.gestures) {
if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targettouches.length < 2) {
return;
}
zoom.fakegesturetouched = true;
gesture.scalestart = zoom.getdistancebetweentouches(e);
}
if (!gesture.$slideel || !gesture.$slideel.length) {
gesture.$slideel = $(e.target).closest("." + swiper.params.slideclass);
if (gesture.$slideel.length === 0) gesture.$slideel = swiper.slides.eq(swiper.activeindex);
gesture.$imageel = gesture.$slideel.find('img, svg, canvas, picture, .swiper-zoom-target');
gesture.$imagewrapel = gesture.$imageel.parent("." + params.containerclass);
gesture.maxratio = gesture.$imagewrapel.attr('data-swiper-zoom') || params.maxratio;
if (gesture.$imagewrapel.length === 0) {
gesture.$imageel = undefined;
return;
}
}
if (gesture.$imageel) {
gesture.$imageel.transition(0);
}
swiper.zoom.isscaling = true;
},
ongesturechange: function ongesturechange(e) {
var swiper = this;
var support = swiper.support;
var params = swiper.params.zoom;
var zoom = swiper.zoom;
var gesture = zoom.gesture;
if (!support.gestures) {
if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targettouches.length < 2) {
return;
}
zoom.fakegesturemoved = true;
gesture.scalemove = zoom.getdistancebetweentouches(e);
}
if (!gesture.$imageel || gesture.$imageel.length === 0) {
if (e.type === 'gesturechange') zoom.ongesturestart(e);
return;
}
if (support.gestures) {
zoom.scale = e.scale * zoom.currentscale;
} else {
zoom.scale = gesture.scalemove / gesture.scalestart * zoom.currentscale;
}
if (zoom.scale > gesture.maxratio) {
zoom.scale = gesture.maxratio - 1 + math.pow(zoom.scale - gesture.maxratio + 1, 0.5);
}
if (zoom.scale < params.minratio) {
zoom.scale = params.minratio + 1 - math.pow(params.minratio - zoom.scale + 1, 0.5);
}
gesture.$imageel.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
},
ongestureend: function ongestureend(e) {
var swiper = this;
var device = swiper.device;
var support = swiper.support;
var params = swiper.params.zoom;
var zoom = swiper.zoom;
var gesture = zoom.gesture;
if (!support.gestures) {
if (!zoom.fakegesturetouched || !zoom.fakegesturemoved) {
return;
}
if (e.type !== 'touchend' || e.type === 'touchend' && e.changedtouches.length < 2 && !device.android) {
return;
}
zoom.fakegesturetouched = false;
zoom.fakegesturemoved = false;
}
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
zoom.scale = math.max(math.min(zoom.scale, gesture.maxratio), params.minratio);
gesture.$imageel.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
zoom.currentscale = zoom.scale;
zoom.isscaling = false;
if (zoom.scale === 1) gesture.$slideel = undefined;
},
ontouchstart: function ontouchstart(e) {
var swiper = this;
var device = swiper.device;
var zoom = swiper.zoom;
var gesture = zoom.gesture,
image = zoom.image;
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
if (image.istouched) return;
if (device.android && e.cancelable) e.preventdefault();
image.istouched = true;
image.touchesstart.x = e.type === 'touchstart' ? e.targettouches[0].pagex : e.pagex;
image.touchesstart.y = e.type === 'touchstart' ? e.targettouches[0].pagey : e.pagey;
},
ontouchmove: function ontouchmove(e) {
var swiper = this;
var zoom = swiper.zoom;
var gesture = zoom.gesture,
image = zoom.image,
velocity = zoom.velocity;
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
swiper.allowclick = false;
if (!image.istouched || !gesture.$slideel) return;
if (!image.ismoved) {
image.width = gesture.$imageel[0].offsetwidth;
image.height = gesture.$imageel[0].offsetheight;
image.startx = gettranslate(gesture.$imagewrapel[0], 'x') || 0;
image.starty = gettranslate(gesture.$imagewrapel[0], 'y') || 0;
gesture.slidewidth = gesture.$slideel[0].offsetwidth;
gesture.slideheight = gesture.$slideel[0].offsetheight;
gesture.$imagewrapel.transition(0);
if (swiper.rtl) {
image.startx = -image.startx;
image.starty = -image.starty;
}
} // define if we need image drag
var scaledwidth = image.width * zoom.scale;
var scaledheight = image.height * zoom.scale;
if (scaledwidth < gesture.slidewidth && scaledheight < gesture.slideheight) return;
image.minx = math.min(gesture.slidewidth / 2 - scaledwidth / 2, 0);
image.maxx = -image.minx;
image.miny = math.min(gesture.slideheight / 2 - scaledheight / 2, 0);
image.maxy = -image.miny;
image.touchescurrent.x = e.type === 'touchmove' ? e.targettouches[0].pagex : e.pagex;
image.touchescurrent.y = e.type === 'touchmove' ? e.targettouches[0].pagey : e.pagey;
if (!image.ismoved && !zoom.isscaling) {
if (swiper.ishorizontal() && (math.floor(image.minx) === math.floor(image.startx) && image.touchescurrent.x < image.touchesstart.x || math.floor(image.maxx) === math.floor(image.startx) && image.touchescurrent.x > image.touchesstart.x)) {
image.istouched = false;
return;
}
if (!swiper.ishorizontal() && (math.floor(image.miny) === math.floor(image.starty) && image.touchescurrent.y < image.touchesstart.y || math.floor(image.maxy) === math.floor(image.starty) && image.touchescurrent.y > image.touchesstart.y)) {
image.istouched = false;
return;
}
}
if (e.cancelable) {
e.preventdefault();
}
e.stoppropagation();
image.ismoved = true;
image.currentx = image.touchescurrent.x - image.touchesstart.x + image.startx;
image.currenty = image.touchescurrent.y - image.touchesstart.y + image.starty;
if (image.currentx < image.minx) {
image.currentx = image.minx + 1 - math.pow(image.minx - image.currentx + 1, 0.8);
}
if (image.currentx > image.maxx) {
image.currentx = image.maxx - 1 + math.pow(image.currentx - image.maxx + 1, 0.8);
}
if (image.currenty < image.miny) {
image.currenty = image.miny + 1 - math.pow(image.miny - image.currenty + 1, 0.8);
}
if (image.currenty > image.maxy) {
image.currenty = image.maxy - 1 + math.pow(image.currenty - image.maxy + 1, 0.8);
} // velocity
if (!velocity.prevpositionx) velocity.prevpositionx = image.touchescurrent.x;
if (!velocity.prevpositiony) velocity.prevpositiony = image.touchescurrent.y;
if (!velocity.prevtime) velocity.prevtime = date.now();
velocity.x = (image.touchescurrent.x - velocity.prevpositionx) / (date.now() - velocity.prevtime) / 2;
velocity.y = (image.touchescurrent.y - velocity.prevpositiony) / (date.now() - velocity.prevtime) / 2;
if (math.abs(image.touchescurrent.x - velocity.prevpositionx) < 2) velocity.x = 0;
if (math.abs(image.touchescurrent.y - velocity.prevpositiony) < 2) velocity.y = 0;
velocity.prevpositionx = image.touchescurrent.x;
velocity.prevpositiony = image.touchescurrent.y;
velocity.prevtime = date.now();
gesture.$imagewrapel.transform("translate3d(" + image.currentx + "px, " + image.currenty + "px,0)");
},
ontouchend: function ontouchend() {
var swiper = this;
var zoom = swiper.zoom;
var gesture = zoom.gesture,
image = zoom.image,
velocity = zoom.velocity;
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
if (!image.istouched || !image.ismoved) {
image.istouched = false;
image.ismoved = false;
return;
}
image.istouched = false;
image.ismoved = false;
var momentumdurationx = 300;
var momentumdurationy = 300;
var momentumdistancex = velocity.x * momentumdurationx;
var newpositionx = image.currentx + momentumdistancex;
var momentumdistancey = velocity.y * momentumdurationy;
var newpositiony = image.currenty + momentumdistancey; // fix duration
if (velocity.x !== 0) momentumdurationx = math.abs((newpositionx - image.currentx) / velocity.x);
if (velocity.y !== 0) momentumdurationy = math.abs((newpositiony - image.currenty) / velocity.y);
var momentumduration = math.max(momentumdurationx, momentumdurationy);
image.currentx = newpositionx;
image.currenty = newpositiony; // define if we need image drag
var scaledwidth = image.width * zoom.scale;
var scaledheight = image.height * zoom.scale;
image.minx = math.min(gesture.slidewidth / 2 - scaledwidth / 2, 0);
image.maxx = -image.minx;
image.miny = math.min(gesture.slideheight / 2 - scaledheight / 2, 0);
image.maxy = -image.miny;
image.currentx = math.max(math.min(image.currentx, image.maxx), image.minx);
image.currenty = math.max(math.min(image.currenty, image.maxy), image.miny);
gesture.$imagewrapel.transition(momentumduration).transform("translate3d(" + image.currentx + "px, " + image.currenty + "px,0)");
},
ontransitionend: function ontransitionend() {
var swiper = this;
var zoom = swiper.zoom;
var gesture = zoom.gesture;
if (gesture.$slideel && swiper.previousindex !== swiper.activeindex) {
if (gesture.$imageel) {
gesture.$imageel.transform('translate3d(0,0,0) scale(1)');
}
if (gesture.$imagewrapel) {
gesture.$imagewrapel.transform('translate3d(0,0,0)');
}
zoom.scale = 1;
zoom.currentscale = 1;
gesture.$slideel = undefined;
gesture.$imageel = undefined;
gesture.$imagewrapel = undefined;
}
},
// toggle zoom
toggle: function toggle(e) {
var swiper = this;
var zoom = swiper.zoom;
if (zoom.scale && zoom.scale !== 1) {
// zoom out
zoom.out();
} else {
// zoom in
zoom.in(e);
}
},
in: function _in(e) {
var swiper = this;
var zoom = swiper.zoom;
var params = swiper.params.zoom;
var gesture = zoom.gesture,
image = zoom.image;
if (!gesture.$slideel) {
if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
gesture.$slideel = swiper.$wrapperel.children("." + swiper.params.slideactiveclass);
} else {
gesture.$slideel = swiper.slides.eq(swiper.activeindex);
}
gesture.$imageel = gesture.$slideel.find('img, svg, canvas, picture, .swiper-zoom-target');
gesture.$imagewrapel = gesture.$imageel.parent("." + params.containerclass);
}
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
gesture.$slideel.addclass("" + params.zoomedslideclass);
var touchx;
var touchy;
var offsetx;
var offsety;
var diffx;
var diffy;
var translatex;
var translatey;
var imagewidth;
var imageheight;
var scaledwidth;
var scaledheight;
var translateminx;
var translateminy;
var translatemaxx;
var translatemaxy;
var slidewidth;
var slideheight;
if (typeof image.touchesstart.x === 'undefined' && e) {
touchx = e.type === 'touchend' ? e.changedtouches[0].pagex : e.pagex;
touchy = e.type === 'touchend' ? e.changedtouches[0].pagey : e.pagey;
} else {
touchx = image.touchesstart.x;
touchy = image.touchesstart.y;
}
zoom.scale = gesture.$imagewrapel.attr('data-swiper-zoom') || params.maxratio;
zoom.currentscale = gesture.$imagewrapel.attr('data-swiper-zoom') || params.maxratio;
if (e) {
slidewidth = gesture.$slideel[0].offsetwidth;
slideheight = gesture.$slideel[0].offsetheight;
offsetx = gesture.$slideel.offset().left;
offsety = gesture.$slideel.offset().top;
diffx = offsetx + slidewidth / 2 - touchx;
diffy = offsety + slideheight / 2 - touchy;
imagewidth = gesture.$imageel[0].offsetwidth;
imageheight = gesture.$imageel[0].offsetheight;
scaledwidth = imagewidth * zoom.scale;
scaledheight = imageheight * zoom.scale;
translateminx = math.min(slidewidth / 2 - scaledwidth / 2, 0);
translateminy = math.min(slideheight / 2 - scaledheight / 2, 0);
translatemaxx = -translateminx;
translatemaxy = -translateminy;
translatex = diffx * zoom.scale;
translatey = diffy * zoom.scale;
if (translatex < translateminx) {
translatex = translateminx;
}
if (translatex > translatemaxx) {
translatex = translatemaxx;
}
if (translatey < translateminy) {
translatey = translateminy;
}
if (translatey > translatemaxy) {
translatey = translatemaxy;
}
} else {
translatex = 0;
translatey = 0;
}
gesture.$imagewrapel.transition(300).transform("translate3d(" + translatex + "px, " + translatey + "px,0)");
gesture.$imageel.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
},
out: function out() {
var swiper = this;
var zoom = swiper.zoom;
var params = swiper.params.zoom;
var gesture = zoom.gesture;
if (!gesture.$slideel) {
if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
gesture.$slideel = swiper.$wrapperel.children("." + swiper.params.slideactiveclass);
} else {
gesture.$slideel = swiper.slides.eq(swiper.activeindex);
}
gesture.$imageel = gesture.$slideel.find('img, svg, canvas, picture, .swiper-zoom-target');
gesture.$imagewrapel = gesture.$imageel.parent("." + params.containerclass);
}
if (!gesture.$imageel || gesture.$imageel.length === 0) return;
zoom.scale = 1;
zoom.currentscale = 1;
gesture.$imagewrapel.transition(300).transform('translate3d(0,0,0)');
gesture.$imageel.transition(300).transform('translate3d(0,0,0) scale(1)');
gesture.$slideel.removeclass("" + params.zoomedslideclass);
gesture.$slideel = undefined;
},
togglegestures: function togglegestures(method) {
var swiper = this;
var zoom = swiper.zoom;
var selector = zoom.slideselector,
passive = zoom.passivelistener;
swiper.$wrapperel[method]('gesturestart', selector, zoom.ongesturestart, passive);
swiper.$wrapperel[method]('gesturechange', selector, zoom.ongesturechange, passive);
swiper.$wrapperel[method]('gestureend', selector, zoom.ongestureend, passive);
},
enablegestures: function enablegestures() {
if (this.zoom.gesturesenabled) return;
this.zoom.gesturesenabled = true;
this.zoom.togglegestures('on');
},
disablegestures: function disablegestures() {
if (!this.zoom.gesturesenabled) return;
this.zoom.gesturesenabled = false;
this.zoom.togglegestures('off');
},
// attach/detach events
enable: function enable() {
var swiper = this;
var support = swiper.support;
var zoom = swiper.zoom;
if (zoom.enabled) return;
zoom.enabled = true;
var passivelistener = swiper.touchevents.start === 'touchstart' && support.passivelistener && swiper.params.passivelisteners ? {
passive: true,
capture: false
} : false;
var activelistenerwithcapture = support.passivelistener ? {
passive: false,
capture: true
} : true;
var slideselector = "." + swiper.params.slideclass;
swiper.zoom.passivelistener = passivelistener;
swiper.zoom.slideselector = slideselector; // scale image
if (support.gestures) {
swiper.$wrapperel.on(swiper.touchevents.start, swiper.zoom.enablegestures, passivelistener);
swiper.$wrapperel.on(swiper.touchevents.end, swiper.zoom.disablegestures, passivelistener);
} else if (swiper.touchevents.start === 'touchstart') {
swiper.$wrapperel.on(swiper.touchevents.start, slideselector, zoom.ongesturestart, passivelistener);
swiper.$wrapperel.on(swiper.touchevents.move, slideselector, zoom.ongesturechange, activelistenerwithcapture);
swiper.$wrapperel.on(swiper.touchevents.end, slideselector, zoom.ongestureend, passivelistener);
if (swiper.touchevents.cancel) {
swiper.$wrapperel.on(swiper.touchevents.cancel, slideselector, zoom.ongestureend, passivelistener);
}
} // move image
swiper.$wrapperel.on(swiper.touchevents.move, "." + swiper.params.zoom.containerclass, zoom.ontouchmove, activelistenerwithcapture);
},
disable: function disable() {
var swiper = this;
var zoom = swiper.zoom;
if (!zoom.enabled) return;
var support = swiper.support;
swiper.zoom.enabled = false;
var passivelistener = swiper.touchevents.start === 'touchstart' && support.passivelistener && swiper.params.passivelisteners ? {
passive: true,
capture: false
} : false;
var activelistenerwithcapture = support.passivelistener ? {
passive: false,
capture: true
} : true;
var slideselector = "." + swiper.params.slideclass; // scale image
if (support.gestures) {
swiper.$wrapperel.off(swiper.touchevents.start, swiper.zoom.enablegestures, passivelistener);
swiper.$wrapperel.off(swiper.touchevents.end, swiper.zoom.disablegestures, passivelistener);
} else if (swiper.touchevents.start === 'touchstart') {
swiper.$wrapperel.off(swiper.touchevents.start, slideselector, zoom.ongesturestart, passivelistener);
swiper.$wrapperel.off(swiper.touchevents.move, slideselector, zoom.ongesturechange, activelistenerwithcapture);
swiper.$wrapperel.off(swiper.touchevents.end, slideselector, zoom.ongestureend, passivelistener);
if (swiper.touchevents.cancel) {
swiper.$wrapperel.off(swiper.touchevents.cancel, slideselector, zoom.ongestureend, passivelistener);
}
} // move image
swiper.$wrapperel.off(swiper.touchevents.move, "." + swiper.params.zoom.containerclass, zoom.ontouchmove, activelistenerwithcapture);
}
};
var zoom$1 = {
name: 'zoom',
params: {
zoom: {
enabled: false,
maxratio: 3,
minratio: 1,
toggle: true,
containerclass: 'swiper-zoom-container',
zoomedslideclass: 'swiper-slide-zoomed'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
zoom: _extends({
enabled: false,
scale: 1,
currentscale: 1,
isscaling: false,
gesture: {
$slideel: undefined,
slidewidth: undefined,
slideheight: undefined,
$imageel: undefined,
$imagewrapel: undefined,
maxratio: 3
},
image: {
istouched: undefined,
ismoved: undefined,
currentx: undefined,
currenty: undefined,
minx: undefined,
miny: undefined,
maxx: undefined,
maxy: undefined,
width: undefined,
height: undefined,
startx: undefined,
starty: undefined,
touchesstart: {},
touchescurrent: {}
},
velocity: {
x: undefined,
y: undefined,
prevpositionx: undefined,
prevpositiony: undefined,
prevtime: undefined
}
}, zoom)
});
var scale = 1;
object.defineproperty(swiper.zoom, 'scale', {
get: function get() {
return scale;
},
set: function set(value) {
if (scale !== value) {
var imageel = swiper.zoom.gesture.$imageel ? swiper.zoom.gesture.$imageel[0] : undefined;
var slideel = swiper.zoom.gesture.$slideel ? swiper.zoom.gesture.$slideel[0] : undefined;
swiper.emit('zoomchange', value, imageel, slideel);
}
scale = value;
}
});
},
on: {
init: function init(swiper) {
if (swiper.params.zoom.enabled) {
swiper.zoom.enable();
}
},
destroy: function destroy(swiper) {
swiper.zoom.disable();
},
touchstart: function touchstart(swiper, e) {
if (!swiper.zoom.enabled) return;
swiper.zoom.ontouchstart(e);
},
touchend: function touchend(swiper, e) {
if (!swiper.zoom.enabled) return;
swiper.zoom.ontouchend(e);
},
doubletap: function doubletap(swiper, e) {
if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
swiper.zoom.toggle(e);
}
},
transitionend: function transitionend(swiper) {
if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
swiper.zoom.ontransitionend();
}
},
slidechange: function slidechange(swiper) {
if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssmode) {
swiper.zoom.ontransitionend();
}
}
}
};
var lazy = {
loadinslide: function loadinslide(index, loadinduplicate) {
if (loadinduplicate === void 0) {
loadinduplicate = true;
}
var swiper = this;
var params = swiper.params.lazy;
if (typeof index === 'undefined') return;
if (swiper.slides.length === 0) return;
var isvirtual = swiper.virtual && swiper.params.virtual.enabled;
var $slideel = isvirtual ? swiper.$wrapperel.children("." + swiper.params.slideclass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
var $images = $slideel.find("." + params.elementclass + ":not(." + params.loadedclass + "):not(." + params.loadingclass + ")");
if ($slideel.hasclass(params.elementclass) && !$slideel.hasclass(params.loadedclass) && !$slideel.hasclass(params.loadingclass)) {
$images.push($slideel[0]);
}
if ($images.length === 0) return;
$images.each(function (imageel) {
var $imageel = $(imageel);
$imageel.addclass(params.loadingclass);
var background = $imageel.attr('data-background');
var src = $imageel.attr('data-src');
var srcset = $imageel.attr('data-srcset');
var sizes = $imageel.attr('data-sizes');
var $pictureel = $imageel.parent('picture');
swiper.loadimage($imageel[0], src || background, srcset, sizes, false, function () {
if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
if (background) {
$imageel.css('background-image', "url(\"" + background + "\")");
$imageel.removeattr('data-background');
} else {
if (srcset) {
$imageel.attr('srcset', srcset);
$imageel.removeattr('data-srcset');
}
if (sizes) {
$imageel.attr('sizes', sizes);
$imageel.removeattr('data-sizes');
}
if ($pictureel.length) {
$pictureel.children('source').each(function (sourceel) {
var $source = $(sourceel);
if ($source.attr('data-srcset')) {
$source.attr('srcset', $source.attr('data-srcset'));
$source.removeattr('data-srcset');
}
});
}
if (src) {
$imageel.attr('src', src);
$imageel.removeattr('data-src');
}
}
$imageel.addclass(params.loadedclass).removeclass(params.loadingclass);
$slideel.find("." + params.preloaderclass).remove();
if (swiper.params.loop && loadinduplicate) {
var slideoriginalindex = $slideel.attr('data-swiper-slide-index');
if ($slideel.hasclass(swiper.params.slideduplicateclass)) {
var originalslide = swiper.$wrapperel.children("[data-swiper-slide-index=\"" + slideoriginalindex + "\"]:not(." + swiper.params.slideduplicateclass + ")");
swiper.lazy.loadinslide(originalslide.index(), false);
} else {
var duplicatedslide = swiper.$wrapperel.children("." + swiper.params.slideduplicateclass + "[data-swiper-slide-index=\"" + slideoriginalindex + "\"]");
swiper.lazy.loadinslide(duplicatedslide.index(), false);
}
}
swiper.emit('lazyimageready', $slideel[0], $imageel[0]);
if (swiper.params.autoheight) {
swiper.updateautoheight();
}
});
swiper.emit('lazyimageload', $slideel[0], $imageel[0]);
});
},
load: function load() {
var swiper = this;
var $wrapperel = swiper.$wrapperel,
swiperparams = swiper.params,
slides = swiper.slides,
activeindex = swiper.activeindex;
var isvirtual = swiper.virtual && swiperparams.virtual.enabled;
var params = swiperparams.lazy;
var slidesperview = swiperparams.slidesperview;
if (slidesperview === 'auto') {
slidesperview = 0;
}
function slideexist(index) {
if (isvirtual) {
if ($wrapperel.children("." + swiperparams.slideclass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
return true;
}
} else if (slides[index]) return true;
return false;
}
function slideindex(slideel) {
if (isvirtual) {
return $(slideel).attr('data-swiper-slide-index');
}
return $(slideel).index();
}
if (!swiper.lazy.initialimageloaded) swiper.lazy.initialimageloaded = true;
if (swiper.params.watchslidesvisibility) {
$wrapperel.children("." + swiperparams.slidevisibleclass).each(function (slideel) {
var index = isvirtual ? $(slideel).attr('data-swiper-slide-index') : $(slideel).index();
swiper.lazy.loadinslide(index);
});
} else if (slidesperview > 1) {
for (var i = activeindex; i < activeindex + slidesperview; i += 1) {
if (slideexist(i)) swiper.lazy.loadinslide(i);
}
} else {
swiper.lazy.loadinslide(activeindex);
}
if (params.loadprevnext) {
if (slidesperview > 1 || params.loadprevnextamount && params.loadprevnextamount > 1) {
var amount = params.loadprevnextamount;
var spv = slidesperview;
var maxindex = math.min(activeindex + spv + math.max(amount, spv), slides.length);
var minindex = math.max(activeindex - math.max(spv, amount), 0); // next slides
for (var _i = activeindex + slidesperview; _i < maxindex; _i += 1) {
if (slideexist(_i)) swiper.lazy.loadinslide(_i);
} // prev slides
for (var _i2 = minindex; _i2 < activeindex; _i2 += 1) {
if (slideexist(_i2)) swiper.lazy.loadinslide(_i2);
}
} else {
var nextslide = $wrapperel.children("." + swiperparams.slidenextclass);
if (nextslide.length > 0) swiper.lazy.loadinslide(slideindex(nextslide));
var prevslide = $wrapperel.children("." + swiperparams.slideprevclass);
if (prevslide.length > 0) swiper.lazy.loadinslide(slideindex(prevslide));
}
}
}
};
var lazy$1 = {
name: 'lazy',
params: {
lazy: {
enabled: false,
loadprevnext: false,
loadprevnextamount: 1,
loadontransitionstart: false,
elementclass: 'swiper-lazy',
loadingclass: 'swiper-lazy-loading',
loadedclass: 'swiper-lazy-loaded',
preloaderclass: 'swiper-lazy-preloader'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
lazy: _extends({
initialimageloaded: false
}, lazy)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (swiper.params.lazy.enabled && swiper.params.preloadimages) {
swiper.params.preloadimages = false;
}
},
init: function init(swiper) {
if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialslide === 0) {
swiper.lazy.load();
}
},
scroll: function scroll(swiper) {
if (swiper.params.freemode && !swiper.params.freemodesticky) {
swiper.lazy.load();
}
},
resize: function resize(swiper) {
if (swiper.params.lazy.enabled) {
swiper.lazy.load();
}
},
scrollbardragmove: function scrollbardragmove(swiper) {
if (swiper.params.lazy.enabled) {
swiper.lazy.load();
}
},
transitionstart: function transitionstart(swiper) {
if (swiper.params.lazy.enabled) {
if (swiper.params.lazy.loadontransitionstart || !swiper.params.lazy.loadontransitionstart && !swiper.lazy.initialimageloaded) {
swiper.lazy.load();
}
}
},
transitionend: function transitionend(swiper) {
if (swiper.params.lazy.enabled && !swiper.params.lazy.loadontransitionstart) {
swiper.lazy.load();
}
},
slidechange: function slidechange(swiper) {
if (swiper.params.lazy.enabled && swiper.params.cssmode) {
swiper.lazy.load();
}
}
}
};
var controller = {
linearspline: function linearspline(x, y) {
var binarysearch = function search() {
var maxindex;
var minindex;
var guess;
return function (array, val) {
minindex = -1;
maxindex = array.length;
while (maxindex - minindex > 1) {
guess = maxindex + minindex >> 1;
if (array[guess] <= val) {
minindex = guess;
} else {
maxindex = guess;
}
}
return maxindex;
};
}();
this.x = x;
this.y = y;
this.lastindex = x.length - 1; // given an x value (x2), return the expected y2 value:
// (x1,y1) is the known point before given value,
// (x3,y3) is the known point after given value.
var i1;
var i3;
this.interpolate = function interpolate(x2) {
if (!x2) return 0; // get the indexes of x1 and x3 (the array indexes before and after given x2):
i3 = binarysearch(this.x, x2);
i1 = i3 - 1; // we have our indexes i1 & i3, so we can calculate already:
// y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
};
return this;
},
// xxx: for now i will just save one spline function to to
getinterpolatefunction: function getinterpolatefunction(c) {
var swiper = this;
if (!swiper.controller.spline) {
swiper.controller.spline = swiper.params.loop ? new controller.linearspline(swiper.slidesgrid, c.slidesgrid) : new controller.linearspline(swiper.snapgrid, c.snapgrid);
}
},
settranslate: function settranslate(_settranslate, bycontroller) {
var swiper = this;
var controlled = swiper.controller.control;
var multiplier;
var controlledtranslate;
var swiper = swiper.constructor;
function setcontrolledtranslate(c) {
// this will create an interpolate function based on the snapgrids
// x is the grid of the scrolled scroller and y will be the controlled scroller
// it makes sense to create this only once and recall it for the interpolation
// the function does a lot of value caching for performance
var translate = swiper.rtltranslate ? -swiper.translate : swiper.translate;
if (swiper.params.controller.by === 'slide') {
swiper.controller.getinterpolatefunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapgrid
// but it did not work out
controlledtranslate = -swiper.controller.spline.interpolate(-translate);
}
if (!controlledtranslate || swiper.params.controller.by === 'container') {
multiplier = (c.maxtranslate() - c.mintranslate()) / (swiper.maxtranslate() - swiper.mintranslate());
controlledtranslate = (translate - swiper.mintranslate()) * multiplier + c.mintranslate();
}
if (swiper.params.controller.inverse) {
controlledtranslate = c.maxtranslate() - controlledtranslate;
}
c.updateprogress(controlledtranslate);
c.settranslate(controlledtranslate, swiper);
c.updateactiveindex();
c.updateslidesclasses();
}
if (array.isarray(controlled)) {
for (var i = 0; i < controlled.length; i += 1) {
if (controlled[i] !== bycontroller && controlled[i] instanceof swiper) {
setcontrolledtranslate(controlled[i]);
}
}
} else if (controlled instanceof swiper && bycontroller !== controlled) {
setcontrolledtranslate(controlled);
}
},
settransition: function settransition(duration, bycontroller) {
var swiper = this;
var swiper = swiper.constructor;
var controlled = swiper.controller.control;
var i;
function setcontrolledtransition(c) {
c.settransition(duration, swiper);
if (duration !== 0) {
c.transitionstart();
if (c.params.autoheight) {
nexttick(function () {
c.updateautoheight();
});
}
c.$wrapperel.transitionend(function () {
if (!controlled) return;
if (c.params.loop && swiper.params.controller.by === 'slide') {
c.loopfix();
}
c.transitionend();
});
}
}
if (array.isarray(controlled)) {
for (i = 0; i < controlled.length; i += 1) {
if (controlled[i] !== bycontroller && controlled[i] instanceof swiper) {
setcontrolledtransition(controlled[i]);
}
}
} else if (controlled instanceof swiper && bycontroller !== controlled) {
setcontrolledtransition(controlled);
}
}
};
var controller$1 = {
name: 'controller',
params: {
controller: {
control: undefined,
inverse: false,
by: 'slide' // or 'container'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
controller: _extends({
control: swiper.params.controller.control
}, controller)
});
},
on: {
update: function update(swiper) {
if (!swiper.controller.control) return;
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
resize: function resize(swiper) {
if (!swiper.controller.control) return;
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
observerupdate: function observerupdate(swiper) {
if (!swiper.controller.control) return;
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
settranslate: function settranslate(swiper, translate, bycontroller) {
if (!swiper.controller.control) return;
swiper.controller.settranslate(translate, bycontroller);
},
settransition: function settransition(swiper, duration, bycontroller) {
if (!swiper.controller.control) return;
swiper.controller.settransition(duration, bycontroller);
}
}
};
var a11y = {
makeelfocusable: function makeelfocusable($el) {
$el.attr('tabindex', '0');
return $el;
},
makeelnotfocusable: function makeelnotfocusable($el) {
$el.attr('tabindex', '-1');
return $el;
},
addelrole: function addelrole($el, role) {
$el.attr('role', role);
return $el;
},
addellabel: function addellabel($el, label) {
$el.attr('aria-label', label);
return $el;
},
disableel: function disableel($el) {
$el.attr('aria-disabled', true);
return $el;
},
enableel: function enableel($el) {
$el.attr('aria-disabled', false);
return $el;
},
onenterkey: function onenterkey(e) {
var swiper = this;
var params = swiper.params.a11y;
if (e.keycode !== 13) return;
var $targetel = $(e.target);
if (swiper.navigation && swiper.navigation.$nextel && $targetel.is(swiper.navigation.$nextel)) {
if (!(swiper.isend && !swiper.params.loop)) {
swiper.slidenext();
}
if (swiper.isend) {
swiper.a11y.notify(params.lastslidemessage);
} else {
swiper.a11y.notify(params.nextslidemessage);
}
}
if (swiper.navigation && swiper.navigation.$prevel && $targetel.is(swiper.navigation.$prevel)) {
if (!(swiper.isbeginning && !swiper.params.loop)) {
swiper.slideprev();
}
if (swiper.isbeginning) {
swiper.a11y.notify(params.firstslidemessage);
} else {
swiper.a11y.notify(params.prevslidemessage);
}
}
if (swiper.pagination && $targetel.is("." + swiper.params.pagination.bulletclass)) {
$targetel[0].click();
}
},
notify: function notify(message) {
var swiper = this;
var notification = swiper.a11y.liveregion;
if (notification.length === 0) return;
notification.html('');
notification.html(message);
},
updatenavigation: function updatenavigation() {
var swiper = this;
if (swiper.params.loop || !swiper.navigation) return;
var _swiper$navigation = swiper.navigation,
$nextel = _swiper$navigation.$nextel,
$prevel = _swiper$navigation.$prevel;
if ($prevel && $prevel.length > 0) {
if (swiper.isbeginning) {
swiper.a11y.disableel($prevel);
swiper.a11y.makeelnotfocusable($prevel);
} else {
swiper.a11y.enableel($prevel);
swiper.a11y.makeelfocusable($prevel);
}
}
if ($nextel && $nextel.length > 0) {
if (swiper.isend) {
swiper.a11y.disableel($nextel);
swiper.a11y.makeelnotfocusable($nextel);
} else {
swiper.a11y.enableel($nextel);
swiper.a11y.makeelfocusable($nextel);
}
}
},
updatepagination: function updatepagination() {
var swiper = this;
var params = swiper.params.a11y;
if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
swiper.pagination.bullets.each(function (bulletel) {
var $bulletel = $(bulletel);
swiper.a11y.makeelfocusable($bulletel);
swiper.a11y.addelrole($bulletel, 'button');
swiper.a11y.addellabel($bulletel, params.paginationbulletmessage.replace(/\{\{index\}\}/, $bulletel.index() + 1));
});
}
},
init: function init() {
var swiper = this;
swiper.$el.append(swiper.a11y.liveregion); // navigation
var params = swiper.params.a11y;
var $nextel;
var $prevel;
if (swiper.navigation && swiper.navigation.$nextel) {
$nextel = swiper.navigation.$nextel;
}
if (swiper.navigation && swiper.navigation.$prevel) {
$prevel = swiper.navigation.$prevel;
}
if ($nextel) {
swiper.a11y.makeelfocusable($nextel);
swiper.a11y.addelrole($nextel, 'button');
swiper.a11y.addellabel($nextel, params.nextslidemessage);
$nextel.on('keydown', swiper.a11y.onenterkey);
}
if ($prevel) {
swiper.a11y.makeelfocusable($prevel);
swiper.a11y.addelrole($prevel, 'button');
swiper.a11y.addellabel($prevel, params.prevslidemessage);
$prevel.on('keydown', swiper.a11y.onenterkey);
} // pagination
if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
swiper.pagination.$el.on('keydown', "." + swiper.params.pagination.bulletclass, swiper.a11y.onenterkey);
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.a11y.liveregion && swiper.a11y.liveregion.length > 0) swiper.a11y.liveregion.remove();
var $nextel;
var $prevel;
if (swiper.navigation && swiper.navigation.$nextel) {
$nextel = swiper.navigation.$nextel;
}
if (swiper.navigation && swiper.navigation.$prevel) {
$prevel = swiper.navigation.$prevel;
}
if ($nextel) {
$nextel.off('keydown', swiper.a11y.onenterkey);
}
if ($prevel) {
$prevel.off('keydown', swiper.a11y.onenterkey);
} // pagination
if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
swiper.pagination.$el.off('keydown', "." + swiper.params.pagination.bulletclass, swiper.a11y.onenterkey);
}
}
};
var a11y$1 = {
name: 'a11y',
params: {
a11y: {
enabled: true,
notificationclass: 'swiper-notification',
prevslidemessage: 'previous slide',
nextslidemessage: 'next slide',
firstslidemessage: 'this is the first slide',
lastslidemessage: 'this is the last slide',
paginationbulletmessage: 'go to slide {{index}}'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
a11y: _extends(_extends({}, a11y), {}, {
liveregion: $("")
})
});
},
on: {
init: function init(swiper) {
if (!swiper.params.a11y.enabled) return;
swiper.a11y.init();
swiper.a11y.updatenavigation();
},
toedge: function toedge(swiper) {
if (!swiper.params.a11y.enabled) return;
swiper.a11y.updatenavigation();
},
fromedge: function fromedge(swiper) {
if (!swiper.params.a11y.enabled) return;
swiper.a11y.updatenavigation();
},
paginationupdate: function paginationupdate(swiper) {
if (!swiper.params.a11y.enabled) return;
swiper.a11y.updatepagination();
},
destroy: function destroy(swiper) {
if (!swiper.params.a11y.enabled) return;
swiper.a11y.destroy();
}
}
};
var history = {
init: function init() {
var swiper = this;
var window = getwindow();
if (!swiper.params.history) return;
if (!window.history || !window.history.pushstate) {
swiper.params.history.enabled = false;
swiper.params.hashnavigation.enabled = true;
return;
}
var history = swiper.history;
history.initialized = true;
history.paths = history.getpathvalues(swiper.params.url);
if (!history.paths.key && !history.paths.value) return;
history.scrolltoslide(0, history.paths.value, swiper.params.runcallbacksoninit);
if (!swiper.params.history.replacestate) {
window.addeventlistener('popstate', swiper.history.sethistorypopstate);
}
},
destroy: function destroy() {
var swiper = this;
var window = getwindow();
if (!swiper.params.history.replacestate) {
window.removeeventlistener('popstate', swiper.history.sethistorypopstate);
}
},
sethistorypopstate: function sethistorypopstate() {
var swiper = this;
swiper.history.paths = history.getpathvalues(swiper.params.url);
swiper.history.scrolltoslide(swiper.params.speed, swiper.history.paths.value, false);
},
getpathvalues: function getpathvalues(urloverride) {
var window = getwindow();
var location;
if (urloverride) {
location = new url(urloverride);
} else {
location = window.location;
}
var patharray = location.pathname.slice(1).split('/').filter(function (part) {
return part !== '';
});
var total = patharray.length;
var key = patharray[total - 2];
var value = patharray[total - 1];
return {
key: key,
value: value
};
},
sethistory: function sethistory(key, index) {
var swiper = this;
var window = getwindow();
if (!swiper.history.initialized || !swiper.params.history.enabled) return;
var location;
if (swiper.params.url) {
location = new url(swiper.params.url);
} else {
location = window.location;
}
var slide = swiper.slides.eq(index);
var value = history.slugify(slide.attr('data-history'));
if (!location.pathname.includes(key)) {
value = key + "/" + value;
}
var currentstate = window.history.state;
if (currentstate && currentstate.value === value) {
return;
}
if (swiper.params.history.replacestate) {
window.history.replacestate({
value: value
}, null, value);
} else {
window.history.pushstate({
value: value
}, null, value);
}
},
slugify: function slugify(text) {
return text.tostring().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
},
scrolltoslide: function scrolltoslide(speed, value, runcallbacks) {
var swiper = this;
if (value) {
for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
var slide = swiper.slides.eq(i);
var slidehistory = history.slugify(slide.attr('data-history'));
if (slidehistory === value && !slide.hasclass(swiper.params.slideduplicateclass)) {
var index = slide.index();
swiper.slideto(index, speed, runcallbacks);
}
}
} else {
swiper.slideto(0, speed, runcallbacks);
}
}
};
var history$1 = {
name: 'history',
params: {
history: {
enabled: false,
replacestate: false,
key: 'slides'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
history: _extends({}, history)
});
},
on: {
init: function init(swiper) {
if (swiper.params.history.enabled) {
swiper.history.init();
}
},
destroy: function destroy(swiper) {
if (swiper.params.history.enabled) {
swiper.history.destroy();
}
},
transitionend: function transitionend(swiper) {
if (swiper.history.initialized) {
swiper.history.sethistory(swiper.params.history.key, swiper.activeindex);
}
},
slidechange: function slidechange(swiper) {
if (swiper.history.initialized && swiper.params.cssmode) {
swiper.history.sethistory(swiper.params.history.key, swiper.activeindex);
}
}
}
};
var hashnavigation = {
onhashcange: function onhashcange() {
var swiper = this;
var document = getdocument();
swiper.emit('hashchange');
var newhash = document.location.hash.replace('#', '');
var activeslidehash = swiper.slides.eq(swiper.activeindex).attr('data-hash');
if (newhash !== activeslidehash) {
var newindex = swiper.$wrapperel.children("." + swiper.params.slideclass + "[data-hash=\"" + newhash + "\"]").index();
if (typeof newindex === 'undefined') return;
swiper.slideto(newindex);
}
},
sethash: function sethash() {
var swiper = this;
var window = getwindow();
var document = getdocument();
if (!swiper.hashnavigation.initialized || !swiper.params.hashnavigation.enabled) return;
if (swiper.params.hashnavigation.replacestate && window.history && window.history.replacestate) {
window.history.replacestate(null, null, "#" + swiper.slides.eq(swiper.activeindex).attr('data-hash') || '');
swiper.emit('hashset');
} else {
var slide = swiper.slides.eq(swiper.activeindex);
var hash = slide.attr('data-hash') || slide.attr('data-history');
document.location.hash = hash || '';
swiper.emit('hashset');
}
},
init: function init() {
var swiper = this;
var document = getdocument();
var window = getwindow();
if (!swiper.params.hashnavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
swiper.hashnavigation.initialized = true;
var hash = document.location.hash.replace('#', '');
if (hash) {
var speed = 0;
for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
var slide = swiper.slides.eq(i);
var slidehash = slide.attr('data-hash') || slide.attr('data-history');
if (slidehash === hash && !slide.hasclass(swiper.params.slideduplicateclass)) {
var index = slide.index();
swiper.slideto(index, speed, swiper.params.runcallbacksoninit, true);
}
}
}
if (swiper.params.hashnavigation.watchstate) {
$(window).on('hashchange', swiper.hashnavigation.onhashcange);
}
},
destroy: function destroy() {
var swiper = this;
var window = getwindow();
if (swiper.params.hashnavigation.watchstate) {
$(window).off('hashchange', swiper.hashnavigation.onhashcange);
}
}
};
var hashnavigation$1 = {
name: 'hash-navigation',
params: {
hashnavigation: {
enabled: false,
replacestate: false,
watchstate: false
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
hashnavigation: _extends({
initialized: false
}, hashnavigation)
});
},
on: {
init: function init(swiper) {
if (swiper.params.hashnavigation.enabled) {
swiper.hashnavigation.init();
}
},
destroy: function destroy(swiper) {
if (swiper.params.hashnavigation.enabled) {
swiper.hashnavigation.destroy();
}
},
transitionend: function transitionend(swiper) {
if (swiper.hashnavigation.initialized) {
swiper.hashnavigation.sethash();
}
},
slidechange: function slidechange(swiper) {
if (swiper.hashnavigation.initialized && swiper.params.cssmode) {
swiper.hashnavigation.sethash();
}
}
}
};
var autoplay = {
run: function run() {
var swiper = this;
var $activeslideel = swiper.slides.eq(swiper.activeindex);
var delay = swiper.params.autoplay.delay;
if ($activeslideel.attr('data-swiper-autoplay')) {
delay = $activeslideel.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
}
cleartimeout(swiper.autoplay.timeout);
swiper.autoplay.timeout = nexttick(function () {
if (swiper.params.autoplay.reversedirection) {
if (swiper.params.loop) {
swiper.loopfix();
swiper.slideprev(swiper.params.speed, true, true);
swiper.emit('autoplay');
} else if (!swiper.isbeginning) {
swiper.slideprev(swiper.params.speed, true, true);
swiper.emit('autoplay');
} else if (!swiper.params.autoplay.stoponlastslide) {
swiper.slideto(swiper.slides.length - 1, swiper.params.speed, true, true);
swiper.emit('autoplay');
} else {
swiper.autoplay.stop();
}
} else if (swiper.params.loop) {
swiper.loopfix();
swiper.slidenext(swiper.params.speed, true, true);
swiper.emit('autoplay');
} else if (!swiper.isend) {
swiper.slidenext(swiper.params.speed, true, true);
swiper.emit('autoplay');
} else if (!swiper.params.autoplay.stoponlastslide) {
swiper.slideto(0, swiper.params.speed, true, true);
swiper.emit('autoplay');
} else {
swiper.autoplay.stop();
}
if (swiper.params.cssmode && swiper.autoplay.running) swiper.autoplay.run();
}, delay);
},
start: function start() {
var swiper = this;
if (typeof swiper.autoplay.timeout !== 'undefined') return false;
if (swiper.autoplay.running) return false;
swiper.autoplay.running = true;
swiper.emit('autoplaystart');
swiper.autoplay.run();
return true;
},
stop: function stop() {
var swiper = this;
if (!swiper.autoplay.running) return false;
if (typeof swiper.autoplay.timeout === 'undefined') return false;
if (swiper.autoplay.timeout) {
cleartimeout(swiper.autoplay.timeout);
swiper.autoplay.timeout = undefined;
}
swiper.autoplay.running = false;
swiper.emit('autoplaystop');
return true;
},
pause: function pause(speed) {
var swiper = this;
if (!swiper.autoplay.running) return;
if (swiper.autoplay.paused) return;
if (swiper.autoplay.timeout) cleartimeout(swiper.autoplay.timeout);
swiper.autoplay.paused = true;
if (speed === 0 || !swiper.params.autoplay.waitfortransition) {
swiper.autoplay.paused = false;
swiper.autoplay.run();
} else {
swiper.$wrapperel[0].addeventlistener('transitionend', swiper.autoplay.ontransitionend);
swiper.$wrapperel[0].addeventlistener('webkittransitionend', swiper.autoplay.ontransitionend);
}
},
onvisibilitychange: function onvisibilitychange() {
var swiper = this;
var document = getdocument();
if (document.visibilitystate === 'hidden' && swiper.autoplay.running) {
swiper.autoplay.pause();
}
if (document.visibilitystate === 'visible' && swiper.autoplay.paused) {
swiper.autoplay.run();
swiper.autoplay.paused = false;
}
},
ontransitionend: function ontransitionend(e) {
var swiper = this;
if (!swiper || swiper.destroyed || !swiper.$wrapperel) return;
if (e.target !== swiper.$wrapperel[0]) return;
swiper.$wrapperel[0].removeeventlistener('transitionend', swiper.autoplay.ontransitionend);
swiper.$wrapperel[0].removeeventlistener('webkittransitionend', swiper.autoplay.ontransitionend);
swiper.autoplay.paused = false;
if (!swiper.autoplay.running) {
swiper.autoplay.stop();
} else {
swiper.autoplay.run();
}
}
};
var autoplay$1 = {
name: 'autoplay',
params: {
autoplay: {
enabled: false,
delay: 3000,
waitfortransition: true,
disableoninteraction: true,
stoponlastslide: false,
reversedirection: false
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
autoplay: _extends(_extends({}, autoplay), {}, {
running: false,
paused: false
})
});
},
on: {
init: function init(swiper) {
if (swiper.params.autoplay.enabled) {
swiper.autoplay.start();
var document = getdocument();
document.addeventlistener('visibilitychange', swiper.autoplay.onvisibilitychange);
}
},
beforetransitionstart: function beforetransitionstart(swiper, speed, internal) {
if (swiper.autoplay.running) {
if (internal || !swiper.params.autoplay.disableoninteraction) {
swiper.autoplay.pause(speed);
} else {
swiper.autoplay.stop();
}
}
},
sliderfirstmove: function sliderfirstmove(swiper) {
if (swiper.autoplay.running) {
if (swiper.params.autoplay.disableoninteraction) {
swiper.autoplay.stop();
} else {
swiper.autoplay.pause();
}
}
},
touchend: function touchend(swiper) {
if (swiper.params.cssmode && swiper.autoplay.paused && !swiper.params.autoplay.disableoninteraction) {
swiper.autoplay.run();
}
},
destroy: function destroy(swiper) {
if (swiper.autoplay.running) {
swiper.autoplay.stop();
}
var document = getdocument();
document.removeeventlistener('visibilitychange', swiper.autoplay.onvisibilitychange);
}
}
};
var fade = {
settranslate: function settranslate() {
var swiper = this;
var slides = swiper.slides;
for (var i = 0; i < slides.length; i += 1) {
var $slideel = swiper.slides.eq(i);
var offset = $slideel[0].swiperslideoffset;
var tx = -offset;
if (!swiper.params.virtualtranslate) tx -= swiper.translate;
var ty = 0;
if (!swiper.ishorizontal()) {
ty = tx;
tx = 0;
}
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);
$slideel.css({
opacity: slideopacity
}).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
}
},
settransition: function settransition(duration) {
var swiper = this;
var slides = swiper.slides,
$wrapperel = swiper.$wrapperel;
slides.transition(duration);
if (swiper.params.virtualtranslate && duration !== 0) {
var eventtriggered = false;
slides.transitionend(function () {
if (eventtriggered) return;
if (!swiper || swiper.destroyed) return;
eventtriggered = true;
swiper.animating = false;
var triggerevents = ['webkittransitionend', 'transitionend'];
for (var i = 0; i < triggerevents.length; i += 1) {
$wrapperel.trigger(triggerevents[i]);
}
});
}
}
};
var effectfade = {
name: 'effect-fade',
params: {
fadeeffect: {
crossfade: false
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
fadeeffect: _extends({}, fade)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (swiper.params.effect !== 'fade') return;
swiper.classnames.push(swiper.params.containermodifierclass + "fade");
var overwriteparams = {
slidesperview: 1,
slidespercolumn: 1,
slidespergroup: 1,
watchslidesprogress: true,
spacebetween: 0,
virtualtranslate: true
};
extend$1(swiper.params, overwriteparams);
extend$1(swiper.originalparams, overwriteparams);
},
settranslate: function settranslate(swiper) {
if (swiper.params.effect !== 'fade') return;
swiper.fadeeffect.settranslate();
},
settransition: function settransition(swiper, duration) {
if (swiper.params.effect !== 'fade') return;
swiper.fadeeffect.settransition(duration);
}
}
};
var cube = {
settranslate: function settranslate() {
var swiper = this;
var $el = swiper.$el,
$wrapperel = swiper.$wrapperel,
slides = swiper.slides,
swiperwidth = swiper.width,
swiperheight = swiper.height,
rtl = swiper.rtltranslate,
swipersize = swiper.size,
browser = swiper.browser;
var params = swiper.params.cubeeffect;
var ishorizontal = swiper.ishorizontal();
var isvirtual = swiper.virtual && swiper.params.virtual.enabled;
var wrapperrotate = 0;
var $cubeshadowel;
if (params.shadow) {
if (ishorizontal) {
$cubeshadowel = $wrapperel.find('.swiper-cube-shadow');
if ($cubeshadowel.length === 0) {
$cubeshadowel = $('');
$wrapperel.append($cubeshadowel);
}
$cubeshadowel.css({
height: swiperwidth + "px"
});
} else {
$cubeshadowel = $el.find('.swiper-cube-shadow');
if ($cubeshadowel.length === 0) {
$cubeshadowel = $('');
$el.append($cubeshadowel);
}
}
}
for (var i = 0; i < slides.length; i += 1) {
var $slideel = slides.eq(i);
var slideindex = i;
if (isvirtual) {
slideindex = parseint($slideel.attr('data-swiper-slide-index'), 10);
}
var slideangle = slideindex * 90;
var round = math.floor(slideangle / 360);
if (rtl) {
slideangle = -slideangle;
round = math.floor(-slideangle / 360);
}
var progress = math.max(math.min($slideel[0].progress, 1), -1);
var tx = 0;
var ty = 0;
var tz = 0;
if (slideindex % 4 === 0) {
tx = -round * 4 * swipersize;
tz = 0;
} else if ((slideindex - 1) % 4 === 0) {
tx = 0;
tz = -round * 4 * swipersize;
} else if ((slideindex - 2) % 4 === 0) {
tx = swipersize + round * 4 * swipersize;
tz = swipersize;
} else if ((slideindex - 3) % 4 === 0) {
tx = -swipersize;
tz = 3 * swipersize + swipersize * 4 * round;
}
if (rtl) {
tx = -tx;
}
if (!ishorizontal) {
ty = tx;
tx = 0;
}
var transform = "rotatex(" + (ishorizontal ? 0 : -slideangle) + "deg) rotatey(" + (ishorizontal ? slideangle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
if (progress <= 1 && progress > -1) {
wrapperrotate = slideindex * 90 + progress * 90;
if (rtl) wrapperrotate = -slideindex * 90 - progress * 90;
}
$slideel.transform(transform);
if (params.slideshadows) {
// set shadows
var shadowbefore = ishorizontal ? $slideel.find('.swiper-slide-shadow-left') : $slideel.find('.swiper-slide-shadow-top');
var shadowafter = ishorizontal ? $slideel.find('.swiper-slide-shadow-right') : $slideel.find('.swiper-slide-shadow-bottom');
if (shadowbefore.length === 0) {
shadowbefore = $("");
$slideel.append(shadowbefore);
}
if (shadowafter.length === 0) {
shadowafter = $("");
$slideel.append(shadowafter);
}
if (shadowbefore.length) shadowbefore[0].style.opacity = math.max(-progress, 0);
if (shadowafter.length) shadowafter[0].style.opacity = math.max(progress, 0);
}
}
$wrapperel.css({
'-webkit-transform-origin': "50% 50% -" + swipersize / 2 + "px",
'-moz-transform-origin': "50% 50% -" + swipersize / 2 + "px",
'-ms-transform-origin': "50% 50% -" + swipersize / 2 + "px",
'transform-origin': "50% 50% -" + swipersize / 2 + "px"
});
if (params.shadow) {
if (ishorizontal) {
$cubeshadowel.transform("translate3d(0px, " + (swiperwidth / 2 + params.shadowoffset) + "px, " + -swiperwidth / 2 + "px) rotatex(90deg) rotatez(0deg) scale(" + params.shadowscale + ")");
} else {
var shadowangle = math.abs(wrapperrotate) - math.floor(math.abs(wrapperrotate) / 90) * 90;
var multiplier = 1.5 - (math.sin(shadowangle * 2 * math.pi / 360) / 2 + math.cos(shadowangle * 2 * math.pi / 360) / 2);
var scale1 = params.shadowscale;
var scale2 = params.shadowscale / multiplier;
var offset = params.shadowoffset;
$cubeshadowel.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperheight / 2 + offset) + "px, " + -swiperheight / 2 / scale2 + "px) rotatex(-90deg)");
}
}
var zfactor = browser.issafari || browser.iswebview ? -swipersize / 2 : 0;
$wrapperel.transform("translate3d(0px,0," + zfactor + "px) rotatex(" + (swiper.ishorizontal() ? 0 : wrapperrotate) + "deg) rotatey(" + (swiper.ishorizontal() ? -wrapperrotate : 0) + "deg)");
},
settransition: function settransition(duration) {
var swiper = this;
var $el = swiper.$el,
slides = swiper.slides;
slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
if (swiper.params.cubeeffect.shadow && !swiper.ishorizontal()) {
$el.find('.swiper-cube-shadow').transition(duration);
}
}
};
var effectcube = {
name: 'effect-cube',
params: {
cubeeffect: {
slideshadows: true,
shadow: true,
shadowoffset: 20,
shadowscale: 0.94
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
cubeeffect: _extends({}, cube)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (swiper.params.effect !== 'cube') return;
swiper.classnames.push(swiper.params.containermodifierclass + "cube");
swiper.classnames.push(swiper.params.containermodifierclass + "3d");
var overwriteparams = {
slidesperview: 1,
slidespercolumn: 1,
slidespergroup: 1,
watchslidesprogress: true,
resistanceratio: 0,
spacebetween: 0,
centeredslides: false,
virtualtranslate: true
};
extend$1(swiper.params, overwriteparams);
extend$1(swiper.originalparams, overwriteparams);
},
settranslate: function settranslate(swiper) {
if (swiper.params.effect !== 'cube') return;
swiper.cubeeffect.settranslate();
},
settransition: function settransition(swiper, duration) {
if (swiper.params.effect !== 'cube') return;
swiper.cubeeffect.settransition(duration);
}
}
};
var flip = {
settranslate: function settranslate() {
var swiper = this;
var slides = swiper.slides,
rtl = swiper.rtltranslate;
for (var i = 0; i < slides.length; i += 1) {
var $slideel = slides.eq(i);
var progress = $slideel[0].progress;
if (swiper.params.flipeffect.limitrotation) {
progress = math.max(math.min($slideel[0].progress, 1), -1);
}
var offset = $slideel[0].swiperslideoffset;
var rotate = -180 * progress;
var rotatey = rotate;
var rotatex = 0;
var tx = -offset;
var ty = 0;
if (!swiper.ishorizontal()) {
ty = tx;
tx = 0;
rotatex = -rotatey;
rotatey = 0;
} else if (rtl) {
rotatey = -rotatey;
}
$slideel[0].style.zindex = -math.abs(math.round(progress)) + slides.length;
if (swiper.params.flipeffect.slideshadows) {
// set shadows
var shadowbefore = swiper.ishorizontal() ? $slideel.find('.swiper-slide-shadow-left') : $slideel.find('.swiper-slide-shadow-top');
var shadowafter = swiper.ishorizontal() ? $slideel.find('.swiper-slide-shadow-right') : $slideel.find('.swiper-slide-shadow-bottom');
if (shadowbefore.length === 0) {
shadowbefore = $("");
$slideel.append(shadowbefore);
}
if (shadowafter.length === 0) {
shadowafter = $("");
$slideel.append(shadowafter);
}
if (shadowbefore.length) shadowbefore[0].style.opacity = math.max(-progress, 0);
if (shadowafter.length) shadowafter[0].style.opacity = math.max(progress, 0);
}
$slideel.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotatex(" + rotatex + "deg) rotatey(" + rotatey + "deg)");
}
},
settransition: function settransition(duration) {
var swiper = this;
var slides = swiper.slides,
activeindex = swiper.activeindex,
$wrapperel = swiper.$wrapperel;
slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
if (swiper.params.virtualtranslate && duration !== 0) {
var eventtriggered = false; // eslint-disable-next-line
slides.eq(activeindex).transitionend(function ontransitionend() {
if (eventtriggered) return;
if (!swiper || swiper.destroyed) return; // if (!$(this).hasclass(swiper.params.slideactiveclass)) return;
eventtriggered = true;
swiper.animating = false;
var triggerevents = ['webkittransitionend', 'transitionend'];
for (var i = 0; i < triggerevents.length; i += 1) {
$wrapperel.trigger(triggerevents[i]);
}
});
}
}
};
var effectflip = {
name: 'effect-flip',
params: {
flipeffect: {
slideshadows: true,
limitrotation: true
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
flipeffect: _extends({}, flip)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (swiper.params.effect !== 'flip') return;
swiper.classnames.push(swiper.params.containermodifierclass + "flip");
swiper.classnames.push(swiper.params.containermodifierclass + "3d");
var overwriteparams = {
slidesperview: 1,
slidespercolumn: 1,
slidespergroup: 1,
watchslidesprogress: true,
spacebetween: 0,
virtualtranslate: true
};
extend$1(swiper.params, overwriteparams);
extend$1(swiper.originalparams, overwriteparams);
},
settranslate: function settranslate(swiper) {
if (swiper.params.effect !== 'flip') return;
swiper.flipeffect.settranslate();
},
settransition: function settransition(swiper, duration) {
if (swiper.params.effect !== 'flip') return;
swiper.flipeffect.settransition(duration);
}
}
};
var coverflow = {
settranslate: function settranslate() {
var swiper = this;
var swiperwidth = swiper.width,
swiperheight = swiper.height,
slides = swiper.slides,
slidessizesgrid = swiper.slidessizesgrid;
var params = swiper.params.coverfloweffect;
var ishorizontal = swiper.ishorizontal();
var transform = swiper.translate;
var center = ishorizontal ? -transform + swiperwidth / 2 : -transform + swiperheight / 2;
var rotate = ishorizontal ? params.rotate : -params.rotate;
var translate = params.depth; // each slide offset from center
for (var i = 0, length = slides.length; i < length; i += 1) {
var $slideel = slides.eq(i);
var slidesize = slidessizesgrid[i];
var slideoffset = $slideel[0].swiperslideoffset;
var offsetmultiplier = (center - slideoffset - slidesize / 2) / slidesize * params.modifier;
var rotatey = ishorizontal ? rotate * offsetmultiplier : 0;
var rotatex = ishorizontal ? 0 : rotate * offsetmultiplier; // var rotatez = 0
var translatez = -translate * math.abs(offsetmultiplier);
var stretch = params.stretch; // allow percentage to make a relative stretch for responsive sliders
if (typeof stretch === 'string' && stretch.indexof('%') !== -1) {
stretch = parsefloat(params.stretch) / 100 * slidesize;
}
var translatey = ishorizontal ? 0 : stretch * offsetmultiplier;
var translatex = ishorizontal ? stretch * offsetmultiplier : 0;
var scale = 1 - (1 - params.scale) * math.abs(offsetmultiplier); // fix for ultra small values
if (math.abs(translatex) < 0.001) translatex = 0;
if (math.abs(translatey) < 0.001) translatey = 0;
if (math.abs(translatez) < 0.001) translatez = 0;
if (math.abs(rotatey) < 0.001) rotatey = 0;
if (math.abs(rotatex) < 0.001) rotatex = 0;
if (math.abs(scale) < 0.001) scale = 0;
var slidetransform = "translate3d(" + translatex + "px," + translatey + "px," + translatez + "px) rotatex(" + rotatex + "deg) rotatey(" + rotatey + "deg) scale(" + scale + ")";
$slideel.transform(slidetransform);
$slideel[0].style.zindex = -math.abs(math.round(offsetmultiplier)) + 1;
if (params.slideshadows) {
// set shadows
var $shadowbeforeel = ishorizontal ? $slideel.find('.swiper-slide-shadow-left') : $slideel.find('.swiper-slide-shadow-top');
var $shadowafterel = ishorizontal ? $slideel.find('.swiper-slide-shadow-right') : $slideel.find('.swiper-slide-shadow-bottom');
if ($shadowbeforeel.length === 0) {
$shadowbeforeel = $("");
$slideel.append($shadowbeforeel);
}
if ($shadowafterel.length === 0) {
$shadowafterel = $("");
$slideel.append($shadowafterel);
}
if ($shadowbeforeel.length) $shadowbeforeel[0].style.opacity = offsetmultiplier > 0 ? offsetmultiplier : 0;
if ($shadowafterel.length) $shadowafterel[0].style.opacity = -offsetmultiplier > 0 ? -offsetmultiplier : 0;
}
}
},
settransition: function settransition(duration) {
var swiper = this;
swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
}
};
var effectcoverflow = {
name: 'effect-coverflow',
params: {
coverfloweffect: {
rotate: 50,
stretch: 0,
depth: 100,
scale: 1,
modifier: 1,
slideshadows: true
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
coverfloweffect: _extends({}, coverflow)
});
},
on: {
beforeinit: function beforeinit(swiper) {
if (swiper.params.effect !== 'coverflow') return;
swiper.classnames.push(swiper.params.containermodifierclass + "coverflow");
swiper.classnames.push(swiper.params.containermodifierclass + "3d");
swiper.params.watchslidesprogress = true;
swiper.originalparams.watchslidesprogress = true;
},
settranslate: function settranslate(swiper) {
if (swiper.params.effect !== 'coverflow') return;
swiper.coverfloweffect.settranslate();
},
settransition: function settransition(swiper, duration) {
if (swiper.params.effect !== 'coverflow') return;
swiper.coverfloweffect.settransition(duration);
}
}
};
var thumbs = {
init: function init() {
var swiper = this;
var thumbsparams = swiper.params.thumbs;
if (swiper.thumbs.initialized) return false;
swiper.thumbs.initialized = true;
var swiperclass = swiper.constructor;
if (thumbsparams.swiper instanceof swiperclass) {
swiper.thumbs.swiper = thumbsparams.swiper;
extend$1(swiper.thumbs.swiper.originalparams, {
watchslidesprogress: true,
slidetoclickedslide: false
});
extend$1(swiper.thumbs.swiper.params, {
watchslidesprogress: true,
slidetoclickedslide: false
});
} else if (isobject$1(thumbsparams.swiper)) {
swiper.thumbs.swiper = new swiperclass(extend$1({}, thumbsparams.swiper, {
watchslidesvisibility: true,
watchslidesprogress: true,
slidetoclickedslide: false
}));
swiper.thumbs.swipercreated = true;
}
swiper.thumbs.swiper.$el.addclass(swiper.params.thumbs.thumbscontainerclass);
swiper.thumbs.swiper.on('tap', swiper.thumbs.onthumbclick);
return true;
},
onthumbclick: function onthumbclick() {
var swiper = this;
var thumbsswiper = swiper.thumbs.swiper;
if (!thumbsswiper) return;
var clickedindex = thumbsswiper.clickedindex;
var clickedslide = thumbsswiper.clickedslide;
if (clickedslide && $(clickedslide).hasclass(swiper.params.thumbs.slidethumbactiveclass)) return;
if (typeof clickedindex === 'undefined' || clickedindex === null) return;
var slidetoindex;
if (thumbsswiper.params.loop) {
slidetoindex = parseint($(thumbsswiper.clickedslide).attr('data-swiper-slide-index'), 10);
} else {
slidetoindex = clickedindex;
}
if (swiper.params.loop) {
var currentindex = swiper.activeindex;
if (swiper.slides.eq(currentindex).hasclass(swiper.params.slideduplicateclass)) {
swiper.loopfix(); // eslint-disable-next-line
swiper._clientleft = swiper.$wrapperel[0].clientleft;
currentindex = swiper.activeindex;
}
var previndex = swiper.slides.eq(currentindex).prevall("[data-swiper-slide-index=\"" + slidetoindex + "\"]").eq(0).index();
var nextindex = swiper.slides.eq(currentindex).nextall("[data-swiper-slide-index=\"" + slidetoindex + "\"]").eq(0).index();
if (typeof previndex === 'undefined') slidetoindex = nextindex;else if (typeof nextindex === 'undefined') slidetoindex = previndex;else if (nextindex - currentindex < currentindex - previndex) slidetoindex = nextindex;else slidetoindex = previndex;
}
swiper.slideto(slidetoindex);
},
update: function update(initial) {
var swiper = this;
var thumbsswiper = swiper.thumbs.swiper;
if (!thumbsswiper) return;
var slidesperview = thumbsswiper.params.slidesperview === 'auto' ? thumbsswiper.slidesperviewdynamic() : thumbsswiper.params.slidesperview;
var autoscrolloffset = swiper.params.thumbs.autoscrolloffset;
var useoffset = autoscrolloffset && !thumbsswiper.params.loop;
if (swiper.realindex !== thumbsswiper.realindex || useoffset) {
var currentthumbsindex = thumbsswiper.activeindex;
var newthumbsindex;
var direction;
if (thumbsswiper.params.loop) {
if (thumbsswiper.slides.eq(currentthumbsindex).hasclass(thumbsswiper.params.slideduplicateclass)) {
thumbsswiper.loopfix(); // eslint-disable-next-line
thumbsswiper._clientleft = thumbsswiper.$wrapperel[0].clientleft;
currentthumbsindex = thumbsswiper.activeindex;
} // find actual thumbs index to slide to
var prevthumbsindex = thumbsswiper.slides.eq(currentthumbsindex).prevall("[data-swiper-slide-index=\"" + swiper.realindex + "\"]").eq(0).index();
var nextthumbsindex = thumbsswiper.slides.eq(currentthumbsindex).nextall("[data-swiper-slide-index=\"" + swiper.realindex + "\"]").eq(0).index();
if (typeof prevthumbsindex === 'undefined') newthumbsindex = nextthumbsindex;else if (typeof nextthumbsindex === 'undefined') newthumbsindex = prevthumbsindex;else if (nextthumbsindex - currentthumbsindex === currentthumbsindex - prevthumbsindex) newthumbsindex = currentthumbsindex;else if (nextthumbsindex - currentthumbsindex < currentthumbsindex - prevthumbsindex) newthumbsindex = nextthumbsindex;else newthumbsindex = prevthumbsindex;
direction = swiper.activeindex > swiper.previousindex ? 'next' : 'prev';
} else {
newthumbsindex = swiper.realindex;
direction = newthumbsindex > swiper.previousindex ? 'next' : 'prev';
}
if (useoffset) {
newthumbsindex += direction === 'next' ? autoscrolloffset : -1 * autoscrolloffset;
}
if (thumbsswiper.visibleslidesindexes && thumbsswiper.visibleslidesindexes.indexof(newthumbsindex) < 0) {
if (thumbsswiper.params.centeredslides) {
if (newthumbsindex > currentthumbsindex) {
newthumbsindex = newthumbsindex - math.floor(slidesperview / 2) + 1;
} else {
newthumbsindex = newthumbsindex + math.floor(slidesperview / 2) - 1;
}
} else if (newthumbsindex > currentthumbsindex) {
newthumbsindex = newthumbsindex - slidesperview + 1;
}
thumbsswiper.slideto(newthumbsindex, initial ? 0 : undefined);
}
} // activate thumbs
var thumbstoactivate = 1;
var thumbactiveclass = swiper.params.thumbs.slidethumbactiveclass;
if (swiper.params.slidesperview > 1 && !swiper.params.centeredslides) {
thumbstoactivate = swiper.params.slidesperview;
}
if (!swiper.params.thumbs.multipleactivethumbs) {
thumbstoactivate = 1;
}
thumbstoactivate = math.floor(thumbstoactivate);
thumbsswiper.slides.removeclass(thumbactiveclass);
if (thumbsswiper.params.loop || thumbsswiper.params.virtual && thumbsswiper.params.virtual.enabled) {
for (var i = 0; i < thumbstoactivate; i += 1) {
thumbsswiper.$wrapperel.children("[data-swiper-slide-index=\"" + (swiper.realindex + i) + "\"]").addclass(thumbactiveclass);
}
} else {
for (var _i = 0; _i < thumbstoactivate; _i += 1) {
thumbsswiper.slides.eq(swiper.realindex + _i).addclass(thumbactiveclass);
}
}
}
};
var thumbs$1 = {
name: 'thumbs',
params: {
thumbs: {
swiper: null,
multipleactivethumbs: true,
autoscrolloffset: 0,
slidethumbactiveclass: 'swiper-slide-thumb-active',
thumbscontainerclass: 'swiper-container-thumbs'
}
},
create: function create() {
var swiper = this;
bindmodulemethods(swiper, {
thumbs: _extends({
swiper: null,
initialized: false
}, thumbs)
});
},
on: {
beforeinit: function beforeinit(swiper) {
var thumbs = swiper.params.thumbs;
if (!thumbs || !thumbs.swiper) return;
swiper.thumbs.init();
swiper.thumbs.update(true);
},
slidechange: function slidechange(swiper) {
if (!swiper.thumbs.swiper) return;
swiper.thumbs.update();
},
update: function update(swiper) {
if (!swiper.thumbs.swiper) return;
swiper.thumbs.update();
},
resize: function resize(swiper) {
if (!swiper.thumbs.swiper) return;
swiper.thumbs.update();
},
observerupdate: function observerupdate(swiper) {
if (!swiper.thumbs.swiper) return;
swiper.thumbs.update();
},
settransition: function settransition(swiper, duration) {
var thumbsswiper = swiper.thumbs.swiper;
if (!thumbsswiper) return;
thumbsswiper.settransition(duration);
},
beforedestroy: function beforedestroy(swiper) {
var thumbsswiper = swiper.thumbs.swiper;
if (!thumbsswiper) return;
if (swiper.thumbs.swipercreated && thumbsswiper) {
thumbsswiper.destroy();
}
}
}
};
// swiper class
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];
swiper.use(components);
return swiper;
})));
//# sourcemappingurl=swiper-bundle.js.map