react-id-swiper
Version:
ReactJs component for iDangerous Swiper
1,712 lines (1,604 loc) • 185 kB
JavaScript
'use strict';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
/*
NOTE: Custom version won't support those features
- Virtual
- Keyboard
- Mouse wheel
- Zoom
- Lazy load image
- A11y
- History
- Parallax
- Hash-navigation
- Effect-cube
- Effect-flip
- Effect-coverflow
*/
/**
* 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: September 2, 2018
*/
(function (global, factory) {
(typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.Swiper = factory();
})(undefined, function () {
'use strict';
/**
* SSR Window 1.0.0
* Better handling for window object in SSR environment
* https://github.com/nolimits4web/ssr-window
*
* Copyright 2018, Vladimir Kharlampidi
*
* Licensed under MIT
*
* Released on: February 10, 2018
*/
var d;
if (typeof document === 'undefined') {
d = {
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: '' }
};
} else {
// eslint-disable-next-line
d = document;
}
var doc = d;
var w;
if (typeof window === 'undefined') {
w = {
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() {}
};
} else {
// eslint-disable-next-line
w = window;
}
var win = w;
/**
* Dom7 2.0.5
* 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: April 20, 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].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].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].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];
}
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 === 'undefined' ? 'undefined' : _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)