UNPKG

hdjs

Version:
1,634 lines (1,507 loc) 231 kB
/** * Swiper 4.0.6 * Most modern mobile touch slider and framework with hardware accelerated transitions * http://www.idangero.us/swiper/ * * Copyright 2014-2017 Vladimir Kharlampidi * * Released under the MIT License * * Released on: November 13, 2017 */ (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'; var w; if (typeof window === 'undefined') { w = { navigator: { userAgent: '', }, location: {}, history: {}, addEventListener: function addEventListener() {}, removeEventListener: function removeEventListener() {}, getComputedStyle: function getComputedStyle() { return {}; }, Image: function Image() {}, Date: function Date() {}, screen: {}, }; } else { w = window; } var win = w; /** * Dom7 2.0.1 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API * http://framework7.io/docs/dom.html * * Copyright 2017, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under MIT * * Released on: October 2, 2017 */ 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 $$1(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 = document.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 = [document.getElementById(selector.trim().split('#')[1])]; } else { // Other selectors els = (context || document).querySelectorAll(selector.trim()); } for (i = 0; i < els.length; i += 1) { if (els[i]) { arr.push(els[i]); } } } } else if (selector.nodeType || selector === window || selector === document) { // 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); } $$1.fn = Dom7.prototype; $$1.Class = Dom7; $$1.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 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') { var assign; (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 || []; eventData.unshift(e); if ($$1(target).is(targetSelector)) { listener.apply(target, eventData); } else { var parents = $$1(target).parents(); // eslint-disable-line for (var k = 0; k < parents.length; k += 1) { if ($$1(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); } } } } function handleEvent(e) { var eventData = e && e.target ? e.target.dom7EventData || [] : []; 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) { if (!el.dom7Listeners) { el.dom7Listeners = []; } el.dom7Listeners.push({ type: eventType, listener: listener, proxyListener: handleEvent, }); el.addEventListener(events[j], handleEvent, capture); } } else { // Live events for (j = 0; j < events.length; j += 1) { if (!el.dom7LiveListeners) { el.dom7LiveListeners = []; } el.dom7LiveListeners.push({ type: eventType, listener: listener, proxyListener: handleLiveEvent, }); el.addEventListener(events[j], handleLiveEvent, capture); } } } return this; } function off() { var this$1 = this; 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') { var assign; (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) { for (var j = 0; j < this.length; j += 1) { var el = this$1[j]; if (!targetSelector) { if (el.dom7Listeners) { for (var k = 0; k < el.dom7Listeners.length; k += 1) { if (listener) { if (el.dom7Listeners[k].listener === listener) { el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture); } } else if (el.dom7Listeners[k].type === events[i]) { el.removeEventListener(events[i], el.dom7Listeners[k].proxyListener, capture); } } } } else if (el.dom7LiveListeners) { for (var k$1 = 0; k$1 < el.dom7LiveListeners.length; k$1 += 1) { if (listener) { if (el.dom7LiveListeners[k$1].listener === listener) { el.removeEventListener(events[i], el.dom7LiveListeners[k$1].proxyListener, capture); } } else if (el.dom7LiveListeners[k$1].type === events[i]) { el.removeEventListener(events[i], el.dom7LiveListeners[k$1].proxyListener, capture); } } } } } 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) { for (var j = 0; j < this.length; j += 1) { var evt = (void 0); try { evt = new window.CustomEvent(events[i], { detail: eventData, bubbles: true, cancelable: true, }); } catch (e) { evt = document.createEvent('Event'); evt.initEvent(events[i], true, true); evt.detail = eventData; } // eslint-disable-next-line this$1[j].dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; }); this$1[j].dispatchEvent(evt); this$1[j].dom7EventData = []; delete this$1[j].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 = document.body; var clientTop = el.clientTop || body.clientTop || 0; var clientLeft = el.clientLeft || body.clientLeft || 0; var scrollTop = el === window ? window.scrollY : el.scrollTop; var scrollLeft = el === window ? window.scrollX : el.scrollLeft; return { top: (box.top + scrollTop) - clientTop, left: (box.left + scrollLeft) - clientLeft, }; } return null; } function styles() { if (this[0]) { return window.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 window.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 = $$1(selector); for (i = 0; i < compareWith.length; i += 1) { if (compareWith[i] === el) { return true; } } return false; } else if (selector === document) { return el === document; } else if (selector === window) { return el === window; } if (selector.nodeType || selector instanceof Dom7) { compareWith = selector.nodeType ? [selector] : selector; for (i = 0; i < compareWith.length; i += 1) { if (compareWith[i] === el) { return true; } } return false; } return false; } function index() { var child = this[0]; var i; if (child) { i = 0; // eslint-disable-next-line while ((child = child.previousSibling) !== null) { if (child.nodeType === 1) { i += 1; } } return i; } return undefined; } // 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 = document.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 = document.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 && $$1(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 ($$1(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 && $$1(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 ($$1(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 ($$1(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); } } else { parents.push(this$1[i].parentNode); } } } return $$1(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 ($$1(parent).is(selector)) { parents.push(parent); } } else { parents.push(parent); } parent = parent.parentNode; } } return $$1(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 && $$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 = $$1(args[i]); for (j = 0; j < toAdd.length; j += 1) { dom[dom.length] = toAdd[j]; dom.length += 1; } } return dom; } var noTrigger = ('resize scroll').split(' '); 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) { $$1.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 d; if (typeof document === 'undefined') { d = { addEventListener: function addEventListener() {}, removeEventListener: function removeEventListener() {}, activeElement: { blur: function blur() {}, nodeName: '', }, querySelector: function querySelector() { return {}; }, querySelectorAll: function querySelectorAll() { return []; }, createElement: function createElement() { return { style: {}, setAttribute: function setAttribute() {}, getElementsByTagName: function getElementsByTagName() { return []; }, }; }, location: { hash: '' }, }; } else { d = document; } var doc = d; var Support = (function Support() { return { touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { return !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); }()), transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() { var div = doc.createElement('div').style; return ('webkitPerspective' in div || 'MozPerspective' in div || 'OPerspective' in div || 'MsPerspective' in div || 'perspective' in div); }()), flexbox: (function checkFlexbox() { var div = doc.createElement('div').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 div) { 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', { 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: {} }; SwiperClass.prototype.on = function on (events, handler) { var self = this; if (typeof handler !== 'function') { return self; } events.split(' ').forEach(function (event) { if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; } self.eventsListeners[event].push(handler); }); return self; }; SwiperClass.prototype.once = function once (events, handler) { 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); }; SwiperClass.prototype.off = function off (events, handler) { var self = this; 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[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 ); var updateSize = function () { 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, }); }; var updateSlides = function () { var swiper = this; var params = swiper.params; var $wrapperEl = swiper.$wrapperEl; var swiperSize = swiper.size; var rtl = swiper.rtl; var wrongRTL = swiper.wrongRTL; var slides = $wrapperEl.children(("." + (swiper.params.slideClass))); var isVirtual = swiper.virtual && params.virtual.enabled; 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 previousSlidesLength = slidesLength; 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') { slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); 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 ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } slidesGrid.push(slidePosition); } else { 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) { if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(snapGrid[i$1]); } } 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) { if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) { newSlidesGrid.push(snapGrid[i$2]); } } 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) { swiper.emit('snapGridLengthChange'); } if (slidesGrid.length !== previousSlidesGridLength) { swiper.emit('slidesGridLengthChange'); } if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesOffset(); } }; var updateAutoHeight = function () { var swiper = this; var activeSlides = []; var newHeight = 0; var i; // 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")); } }; var updateSlidesOffset = function () { 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; } }; var updateSlidesProgress = function (translate) { if ( translate === void 0 ) translate = this.translate || 0; var swiper = this; var params = swiper.params; var slides = swiper.slides; var rtl = swiper.rtl; 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; } }; var updateProgress = function (translate) { if ( translate === void 0 ) translate = 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); }; var updateSlidesClasses = function () { 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); } } }; var updateActiveIndex = function (newActiveIndex) { var swiper = this; var translate = swiper.rtl ? swiper.translate : -swiper.translate; var slidesGrid = swiper.slidesGrid; var snapGrid = swiper.snapGrid; var params = swi