vendor: 4,491 bytes, lines 1-2
1/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ 2!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*ne
vendor: 3,069 bytes, line 2
2w Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}
vendor: 9,959 bytes, line 2
2function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)}
vendor: 46,637 bytes, lines 2-3
2,input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; 3}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
4
vendor: 32,004 bytes, line 4
4marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
5 padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); 6/*! 7 * jQuery Cookie Plugin v1.4.1 8 * https://github.com/carhartl/jquery-cookie 9 * 10 * Copyright 2013 Klaus Hartl 11 * Released under the MIT license 12 */ 13(function (factory) { 14 if (typeof define === 'function' && define.amd) { 15 // AMD 16 define(['jquery'], factory); 17 } else if (typeof exports === 'object') { 18 // CommonJS 19 factory(require('jquery')); 20 } else { 21 // Browser globals 22 factory(jQuery); 23 } 24}(function ($) { 25 26 var pluses = /\+/g; 27 28 function encode(s) { 29 return config.raw ? s : encodeURIComponent(s); 30 } 31 32 function decode(s) { 33 return config.raw ? s : decodeURIComponent(s); 34 } 35 36 function stringifyCookieValue(value) { 37 return encode(config.json ? JSON.stringify(value) : String(value)); 38 } 39 40 function parseCookieValue(s) { 41 if (s.indexOf('"') === 0) { 42 // This is a quoted cookie as according to RFC2068, unescape... 43 s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 44 } 45 46 try { 47 // Replace server-side written pluses with spaces. 48 // If we can't decode the cookie, ignore it, it's unusable. 49 // If we can't parse the cookie, ignore it, it's unusable. 50 s = decodeURIComponent(s.replace(pluses, ' ')); 51 return config.json ? JSON.parse(s) : s; 52 } catch (e) {} 53 } 54 55 function read(s, converter) { 56 var value = config.raw ? s : parseCookieValue(s); 57 return $.isFunction(converter) ? converter(value) : value; 58 } 59 60 var config = $.cookie = function (key, value, options) { 61 62 // Write 63 64 if (value !== undefined && !$.isFunction(value)) { 65 options = $.extend({}, config.defaults, options); 66 67 if (typeof options.expires === 'number') { 68 var days = options.expires, 69 t = options.expires = new Date(); 70 t.setTime(+t + days * 864e+5); 71 } 72 73 return (document.cookie = [ 74 encode(key), '=', stringifyCookieValue(value), 75 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 76 options.path ? '; path=' + options.path : '', 77 options.domain ? '; domain=' + options.domain : '', 78 options.secure ? '; secure' : '' 79 ].join('')); 80 } 81 82 // Read 83 84 var result = key ? undefined : {}; 85 86 // To prevent the for loop in the first place assign an empty array 87 // in case there are no cookies at all. Also prevents odd result when 88 // calling $.cookie(). 89 var cookies = document.cookie ? document.cookie.split('; ') : []; 90 91 for (var i = 0, l = cookies.length; i < l; i++) { 92 var parts = cookies[i].split('='); 93 var name = decode(parts.shift()); 94 var cookie = parts.join('='); 95 96 if (key && key === name) { 97 // If second argument (value) is a function it's a converter... 98 result = read(cookie, value); 99 break; 100 } 101 102 // Prevent storing a cookie that we couldn't decode. 103 if (!key && (cookie = read(cookie)) !== undefined) { 104 result[name] = cookie; 105 } 106 } 107 108 return result; 109 }; 110 111 config.defaults = {}; 112 113 $.removeCookie = function (key, options) { 114 if ($.cookie(key) === undefined) { 115 return false;
116 } 117 118 // Must not alter options, thus extending a fresh object... 119 $.cookie(key, '', $.extend({}, options, { 120 expires: -1 121 })); 122 return !$.cookie(key); 123 }; 124 125})); 126!function t(e,n,o){function r(i,c){if(!n[i]){if(!e[i]){var s="function"==typeof require&&require;if(!c&&s)return s(i,!0);if(a)return a(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[i]={exports:{}};e[i][0].call(l.exports,function(t){var n=e[i][1][t];return r(n?n:t)},l,l.exports,t,e,n,o)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<o.length;i++)r(o[i]);return r}({1:[function(t,e){function n(t,e){return null==e?t:o(e,r(e),t)}var o=t("lodash._basecopy"),r=t("lodash.keys");e.exports=n},{"lodash._basecopy":2,"lodash.keys":11}],2:[function(t,e){function n(t,e,n){n||(n={});for(var o=-1,r=e.length;++o<r;){var a=e[o];n[a]=t[a]}return n}e.exports=n},{}],3:[function(t,e){function n(t,e,n){if("function"!=typeof t)return o;if(void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,o,r){return t.call(e,n,o,r)};case 4:return function(n,o,r,a){return t.call(e,n,o,r,a)};case 5:return function(n,o,r,a,i){return t.call(e,n,o,r,a,i)}}return function(){return t.apply(e,arguments)}}function o(t){return t}e.exports=n},{}],4:[function(t,e){function n(t){return a(function(e,n){var a=-1,i=null==e?0:n.length,c=i>2?n[i-2]:void 0,s=i>2?n[2]:void 0,u=i>1?n[i-1]:void 0;for("function"==typeof c?(c=o(c,u,5),i-=2):(c="function"==typeof u?u:void 0,i-=c?1:0),s&&r(n[0],n[1],s)&&(c=3>i?void 0:c,i=1);++a<i;){var l=n[a];l&&t(e,l,c)}return e})}var o=t("lodash._bindcallback"),r=t("lodash._isiterateecall"),a=t("lodash.restparam");e.exports=n},{"lodash._bindcallback":3,"lodash._isiterateecall":6,"lodash.restparam":12}],5:[function(t,e){function n(t){return!!t&&"object"==typeof t}function o(t,e){var n=null==t?void 0:t[e];return i(n)?n:void 0}function r(t){return a(t)&&p.call(t)==c}function a(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function i(t){return null==t?!1:r(t)?d.test(l.call(t)):n(t)&&s.test(t)}var c="[object Function]",s=/^\[object .+?Constructor\]$/,u=Object.prototype,l=Function.prototype.toString,f=u.hasOwnProperty,p=u.toString,d=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=o},{}],6:[function(t,e){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return null!=t&&i(l(t))}function r(t,e){return t="number"==typeof t||s.test(t)?+t:-1,e=null==e?u:e,t>-1&&t%1==0&&e>t}function a(t,e,n){if(!c(n))return!1;var a=typeof e;if("number"==a?o(n)&&r(e,n.length):"string"==a&&e in n){var i=n[e];return t===t?t===i:i!==i}return!1}function i(t){return"number"==typeof t&&t>-1&&t%1==0&&u>=t}function c(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var s=/^\d+$/,u=9007199254740991,l=n("length");e.exports=a},{}],7:[function(t,e){function n(t,e,n){for(var o=-1,r=a(e),i=r.length;++o<i;){var c=r[o],s=t[c],u=n(s,e[c],c,t,e);(u===u?u===s:s!==s)&&(void 0!==s||c in t)||(t[c]=u)}return t}var o=t("lodash._baseassign"),r=t("lodash._createassigner"),a=t("lodash.keys"),i=r(function(t,e,r){return r?n(t,e,r):o(t,e)});e.exports=i},{"lodash._baseassign":1,"lodash._createassigner":4,"lodash.keys":11}],8:[function(t,e){function n(t,e,n){function r(){v&&clearTimeout(v),d&&clearTimeout(d),y=0,d=v=g=void 0}function c(e,n){n&&clearTimeout(n),d=v=g=void 0,e&&(y=s(),m=t.apply(h,p),v||d||(p=h=void 0))}function u(){var t=e-(s()-b);0>=t||t>e?c(g,d):v=setTimeout(u,t)}function l(){c(k,v)}function f(){if(p=arguments,b=s(),h=this,g=k&&(v||!x),w===!1)var n=x&&!v;else{d||x||(y=b);var o=w-(b-y),r=0>=o||o>w;r?(d&&(d=clearTimeout(d)),y=b,m=t.apply(h,p)):d||(d=setTimeout(l,o))}return r&&v?v=clearTimeout(v):v||e===w||(v=setTimeout(u,e)),n&&(r=!0,m=t.apply(h,p)),!r||v||d||(p=h=void 0),m}var p,d,m,b,h,v,g,y=0,w=!1,k=!0;if("function"!=typeof t)throw new TypeError(a);if(e=0>e?0:+e||0,n===!0){var x=!0;k=!1}else o(n)&&(x=!!n.leading,w="maxWait"in n&&i(+n.maxWait||0,e),k="trailing"in n?!!n.trailing:k);return f.cancel=r,f}function o(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var r=t("lodash._getnative"),a="Expected a function",i=Math.max,c=r(Date,"now"),s=c||function(){return(new Date).getTime()};e.exports=n},{"lodash._getnative":5}],9:[function(t,e){(function(t){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return a(t)&&b.call(t,"callee")&&(!v.call(t,"callee")||h.call(t)==f)}function r(t){return null!=t&&!("function"==typeof t&&i(t))&&c(g(t))}function a(t){return u(t)&&r(t)}function i(t){var e=s(t)?h.call(t):"";return e==p||e==d}function c(t){return"number"==typeof t&&t>-1&&t%1==0&&l>=t}function s(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function u(t){return!!t&&"object"==typeof t}var l=9007199254740991,f="[object Arguments]",p="[object Function]",d="[object GeneratorFunction]",m=t.Object.prototype,b=m.hasOwnProperty,h=m.toString,v=m.propertyIsEnumerable,g=n("length");e.exports=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],10:[function(t,e){function n(t){return!!t&&"object"==typeof t}function o(t,e){var n=null==t?void 0:t[e];return c(n)?n:void 0}function r(t){return"number"==typeof t&&t>-1&&t%1==0&&v>=t}function a(t){return i(t)&&m.call(t)==u}function i(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function c(t){return null==t?!1:a(t)?b.test(p.call(t)):n(t)&&l.test(t)}var s="[object Array]",u="[object Function]",l=/^\[object .+?Constructor\]$/,f=Object.prototype,p=Function.prototype.toString,d=f.hasOwnProperty,m=f.toString,b=RegExp("^"+p.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),h=o(Array,"isArray"),v=9007199254740991,g=h||function(t){return n(t)&&r(t.length)&&m.call(t)==s};e.exports=g},{}],11:[function(t,e){function n(t){return function(e){return null==e?void 0:e[t]}}function o(t){return null!=t&&a(v(t))}function r(t,e){return t="number"==typeof t||p.test(t)?+t:-1,e=null==e?h:e,t>-1&&t%1==0&&e>t}function a(t){return"number"==typeof t&&t>-1&&t%1==0&&h>=t}function i(t){for(var e=s(t),n=e.length,o=n&&t.length,i=!!o&&a(o)&&(f(t)||l(t)),c=-1,u=[];++c<n;){var p=e[c];(i&&r(p,o)||m.call(t,p))&&u.push(p)}return u}function c(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function s(t){if(null==t)return[];c(t)||(t=Object(t));var e=t.length;e=e&&a(e)&&(f(t)||l(t))&&e||0;for(var n=t.constructor,o=-1,i="function"==typeof n&&n.prototype===t,s=Array(e),u=e>0;++o<e;)s[o]=o+"";for(var p in t)u&&r(p,e)||"constructor"==p&&(i||!m.call(t,p))||s.push(p);return s}var u=t("lodash._getnative"),l=t("lodash.isarguments"),f=t("lodash.isarray"),p=/^\d+$/,d=Object.prototype,m=d.hasOwnProperty,b=u(Object,"keys"),h=9007199254740991,v=n("length"),g=b?function(t){var e=null==t?void 0:t.constructor;return"function"==typeof e&&e.prototype===t||"function"!=typeof t&&o(t)?i(t):c(t)?b(t):[]}:i;e.exports=g},{"lodash._getnative":5,"lodash.isarguments":9,"lodash.isarray":10}],12:[function(t,e){function n(t,e){if("function"!=typeof t)throw new TypeError(o);return e=r(void 0===e?t.length-1:+e||0,0),function(){for(var n=arguments,o=-1,a=r(n.length-e,0),i=Array(a);++o<a;)i[o]=n[e+o];switch(e){case 0:return t.call(this,i);case 1:return t.call(this,n[0],i);case 2:return t.call(this,n[0],n[1],i)}var c=Array(e+1);for(o=-1;++o<e;)c[o]=n[o];return c[e]=i,t.apply(this,c)}}var o="Expected a function",r=Math.max;e.exports=n},{}],13:[function(t,e){function n(t,e,n){var i=!0,c=!0;if("function"!=typeof t)throw new TypeError(a);return n===!1?i=!1:o(n)&&(i="leading"in n?!!n.leading:i,c="trailing"in n?!!n.trailing:c),r(t,e,{leading:i,maxWait:+e,trailing:c})}function o(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}var r=t("lodash.debounce"),a="Expected a function";e.exports=n},{"lodash.debounce":8}],14:[function(t){var e=t("lodash.throttle"),n=t("lodash.debounce"),o=t("lodash.assign"),r=t("./libs/observer"),a=(t("./libs/classList-shim"),t("./helpers/
126detector")),i=t("./helpers/handleScroll"),c=t("./helpers/prepare"),s=t("./helpers/elements"),u=t("./helpers/replaceDataAttr");!function(t,l){var f=[],p=!1,d={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,startEvent:"DOMContentLoaded"},m=function(t){return t&&t===!0&&(p=!0),p?(f=c(f,d),i(f,d.once),f):void 0},b=function(c){return d=o(d,c),u(),f=s(),d.disable&&(d.disable===!0||"mobile"===d.disable&&a.mobile()||"phone"===d.disable&&a.phone()||"tablet"===d.disable&&a.tablet()||"function"==typeof d.disable&&d.disable()===!0)?([].forEach.call(f,function(t){t.node.removeAttribute("aos"),t.node.removeAttribute("aos-easing"),t.node.removeAttribute("aos-duration"),t.node.removeAttribute("aos-delay")}),!1):(l.querySelector("body").setAttribute("aos-easing",d.easing),l.querySelector("body").setAttribute("aos-duration",d.duration),l.querySelector("body").setAttribute("aos-delay",d.delay),l.addEventListener(d.startEvent,function(){m(!0)}),t.addEventListener("resize orientationchange",n(m,50,!0)),t.addEventListener("scroll",e(function(){i(f,d.once)},99)),l.addEventListener("DOMNodeRemoved",function(t){var e=t.target;e&&1===e.nodeType&&e.hasAttribute&&t.target.hasAttribute("aos")&&n(m,50,!0)}),r("[aos]",m),f)},h={init:b,refresh:m};t.AOS=h}(window,document)},{"./helpers/detector":16,"./helpers/elements":17,"./helpers/handleScroll":18,"./helpers/prepare":19,"./helpers/replaceDataAttr":20,"./libs/classList-shim":21,"./libs/observer":22,"lodash.assign":7,"lodash.debounce":8,"lodash.throttle":13}],15:[function(t,e){var n=t("./../libs/offset"),o=function(t,e){var o=0,r=0,a=window.innerHeight,i={offset:t.getAttribute("aos-offset"),anchor:t.getAttribute("aos-anchor"),anchorPlacement:t.getAttribute("aos-anchor-placement")};switch(i.offset&&!isNaN(i.offset)&&(r=parseInt(i.offset)),i.anchor&&document.querySelectorAll(i.anchor)&&(t=document.querySelectorAll(i.anchor)[0]),o=n(t).top,i.anchorPlacement){case"top-bottom":break;case"center-bottom":o+=t.offsetHeight/2;break;case"bottom-bottom":o+=t.offsetHeight;break;case"top-center":o+=a/2;break;case"bottom-center":o+=a/2+t.offsetHeight;break;case"center-center":o+=a/2+t.offsetHeight/2;break;case"top-top":o+=a;break;case"bottom-top":o+=t.offsetHeight+a;break;case"center-top":o+=t.offsetHeight/2+a}return i.anchorPlacement||i.offset||isNaN(e)||(r=e),o+r};e.exports=o},{"./../libs/offset":23}],16:[function(t,e){var n={phone:function(){var t=!1;return function(e){(/(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.test(e)||/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.test(e.substr(0,4)))&&(t=!0)}(navigator.userAgent||navigator.vendor||window.opera),t},mobile:function(){var t=!1;return function(e){(/(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|android|ipad|playbook|silk/i.test(e)||/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 )|
vendor: 54,458 bytes, lines 126-1725
126sy(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.test(e.substr(0,4)))&&(t=!0)}(navigator.userAgent||navigator.vendor||window.opera),t},tablet:function(){return _detect.mobile()&&!_detect.phone()}};e.exports=n},{}],17:[function(t,e){var n=function(t){var t=t||document.querySelectorAll("[aos]"),e=[];return[].forEach.call(t,function(t){e.push({node:t})}),e};e.exports=n},{}],18:[function(t,e){var n=function(t,e,n){var o=t.node.getAttribute("aos-once");e>t.position?t.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&t.node.classList.remove("aos-animate")},o=function(t,e){var o=window.pageYOffset,r=window.innerHeight;[].forEach.call(t,function(t){n(t,r+o,e)})};e.exports=o},{}],19:[function(t,e){var n=t("./calculateOffset"),o=function(t,e){return[].forEach.call(t,function(t){t.node.classList.add("aos-init"),t.position=n(t.node,e.offset)}),t};e.exports=o},{"./calculateOffset":15}],20:[function(t,e){var n=function(){var t=["[data-aos]","[data-aos-offset]","[data-aos-easing]","[data-aos-delay]","[data-aos-anchor]","[data-aos-anchor-placement]","[data-aos-once]"],e=t.join(", "),n=document.querySelectorAll(e);[].forEach.call(n,function(e){var n=/^data\-(.+)$/,o=[];[].forEach.call(e.attributes,function(r){if(n.test(r.nodeName)){var a=r.nodeName.match(n)[0],i="["+a+"]",c=r.nodeName.match(n)[1];e.getAttribute(a).length&&-1!==t.indexOf(i)&&(e.setAttribute(c,r.nodeValue),o.push(a))}});for(var r=0;r<o.length;r++)e.removeAttribute(o[r])})};e.exports=n},{}],21:[function(){"classList"in document.documentElement||!Object.defineProperty||"undefined"==typeof HTMLElement||Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){function t(t){return function(n){var o=e.className.split(/\s+/),r=o.indexOf(n);t(o,r,n),e.className=o.join(" ")}}var e=this,n={add:t(function(t,e,n){~e||t.push(n)}),remove:t(function(t,e){~e&&t.splice(e,1)}),toggle:t(function(t,e,n){~e?t.splice(e,1):t.push(n)}),contains:function(t){return!!~e.className.split(/\s+/).indexOf(t)},item:function(t){return e.className.split(/\s+/)[t]||null}};return Object.defineProperty(n,"length",{get:function(){return e.className.split(/\s+/).length}}),n}})},{}],22:[function(t,e){function n(t,e){a.push({selector:t,fn:e}),!r&&c&&(r=new c(o),r.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})),o()}function o(){for(var t,e,n=0,o=a.length;o>n;n++){t=a[n],e=i.querySelectorAll(t.selector);for(var r,c=0,s=e.length;s>c;c++)r=e[c],r.ready||(r.ready=!0,t.fn.call(r,r))}}var r,a=[],i=window.document,c=window.MutationObserver||window.WebKitMutationObserver;e.exports=n},{}],23:[function(t,e){var n=function(t){for(var e=0,n=0;t&&!isNaN(t.offsetLeft)&&!isNaN(t.offsetTop);)e+=t.offsetLeft-("BODY"!=t.tagName?t.scrollLeft:0),n+=t.offsetTop-("BODY"!=t.tagName?t.scrollTop:0),t=t.offsetParent;return{top:n,left:e}};e.exports=n},{}]},{},[14]); 127//# sourceMappingURL=aos.js.map 128 129/** 130 * Swiper 4.3.5 131 * Most modern mobile touch slider and framework with hardware accelerated transitions 132 * http://www.idangero.us/swiper/ 133 * 134 * Copyright 2014-2018 Vladimir Kharlampidi 135 * 136 * Released under the MIT License 137 * 138 * Released on: July 31, 2018 139 */ 140 141(function (global, factory) { 142 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 143 typeof define === 'function' && define.amd ? define(factory) : 144 (global.Swiper = factory()); 145}(this, (function () { 'use strict'; 146 147 /** 148 * SSR Window 1.0.1 149 * Better handling for window object in SSR environment 150 * https://github.com/nolimits4web/ssr-window 151 * 152 * Copyright 2018, Vladimir Kharlampidi 153 * 154 * Licensed under MIT 155 * 156 * Released on: July 18, 2018 157 */ 158 var doc = (typeof document === 'undefined') ? { 159 body: {}, 160 addEventListener: function addEventListener() {}, 161 removeEventListener: function removeEventListener() {}, 162 activeElement: { 163 blur: function blur() {}, 164 nodeName: '', 165 }, 166 querySelector: function querySelector() { 167 return null; 168 }, 169 querySelectorAll: function querySelectorAll() { 170 return []; 171 }, 172 getElementById: function getElementById() { 173 return null; 174 }, 175 createEvent: function createEvent() { 176 return { 177 initEvent: function initEvent() {}, 178 }; 179 }, 180 createElement: function createElement() { 181 return { 182 children: [], 183 childNodes: [], 184 style: {}, 185 setAttribute: function setAttribute() {}, 186 getElementsByTagName: function getElementsByTagName() { 187 return []; 188 }, 189 }; 190 }, 191 location: { hash: '' }, 192 } : document; // eslint-disable-line 193 194 var win = (typeof window === 'undefined') ? { 195 document: doc, 196 navigator: { 197 userAgent: '', 198 }, 199 location: {}, 200 history: {}, 201 CustomEvent: function CustomEvent() { 202 return this; 203 }, 204 addEventListener: function addEventListener() {}, 205 removeEventListener: function removeEventListener() {}, 206 getComputedStyle: function getComputedStyle() { 207 return { 208 getPropertyValue: function getPropertyValue() { 209 return ''; 210 }, 211 }; 212 }, 213 Image: function Image() {}, 214 Date: function Date() {}, 215 screen: {}, 216 setTimeout: function setTimeout() {}, 217 clearTimeout: function clearTimeout() {}, 218 } : window; // eslint-disable-line 219 220 /** 221 * Dom7 2.0.7 222 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API 223 * http://framework7.io/docs/dom.html 224 * 225 * Copyright 2018, Vladimir Kharlampidi 226 * The iDangero.us 227 * http://www.idangero.us/ 228 * 229 * Licensed under MIT 230 * 231 * Released on: June 14, 2018 232 */ 233 234 var Dom7 = function Dom7(arr) { 235 var self = this; 236 // Create array-like object 237 for (var i = 0; i < arr.length; i += 1) { 238 self[i] = arr[i]; 239 } 240 self.length = arr.length; 241 // Return collection with methods 242 return this; 243 }; 244 245 function $(selector, context) { 246 var arr = []; 247 var i = 0; 248 if (selector && !context) { 249 if (selector instanceof Dom7) { 250 return selector; 251 } 252 } 253 if (selector) { 254 // String 255 if (typeof selector === 'string') { 256 var els; 257 var tempParent; 258 var html = selector.trim(); 259 if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { 260 var toCreate = 'div'; 261 if (html.indexOf('<li') === 0) { toCreate = 'ul'; } 262 if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; } 263 if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; } 264 if (html.indexOf('<tbody') === 0) { toCreate = 'table'; } 265 if (html.indexOf('<option') === 0) { toCreate = 'select'; } 266 tempParent = doc.createElement(toCreate); 267 tempParent.innerHTML = html; 268 for (i = 0; i < tempParent.childNodes.length; i += 1) { 269 arr.push(tempParent.childNodes[i]); 270 } 271 } else { 272 if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) { 273 // Pure ID selector 274 els = [doc.getElementById(selector.trim().split('#')[1])]; 275 } else { 276 // Other selectors 277 els = (context || doc).querySelectorAll(selector.trim()); 278 } 279 for (i = 0; i < els.length; i += 1) { 280 if (els[i]) { arr.push(els[i]); } 281 } 282 } 283 } else if (selector.nodeType || selector === win || selector === doc) { 284 // Node/element 285 arr.push(selector); 286 } else if (selector.length > 0 && selector[0].nodeType) { 287 // Array of elements or instance of Dom 288 for (i = 0; i < selector.length; i += 1) { 289 arr.push(selector[i]); 290 } 291 } 292 } 293 return new Dom7(arr); 294 } 295 296 $.fn = Dom7.prototype; 297 $.Class = Dom7; 298 $.Dom7 = Dom7; 299 300 function unique(arr) { 301 var uniqueArray = []; 302 for (var i = 0; i < arr.length; i += 1) { 303 if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); } 304 } 305 return uniqueArray; 306 } 307 308 // Classes and attributes 309 function addClass(className) { 310 var this$1 = this; 311 312 if (typeof className === 'undefined') { 313 return this; 314 } 315 var classes = className.split(' '); 316 for (var i = 0; i < classes.length; i += 1) { 317 for (var j = 0; j < this.length; j += 1) { 318 if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.add(classes[i]); } 319 } 320 } 321 return this; 322 } 323 function removeClass(className) { 324 var this$1 = this; 325 326 var classes = className.split(' '); 327 for (var i = 0; i < classes.length; i += 1) { 328 for (var j = 0; j < this.length; j += 1) { 329 if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.remove(classes[i]); } 330 } 331 } 332 return this; 333 } 334 function hasClass(className) { 335 if (!this[0]) { return false; } 336 return this[0].classList.contains(className); 337 } 338 function toggleClass(className) { 339 var this$1 = this; 340 341 var classes = className.split(' '); 342 for (var i = 0; i < classes.length; i += 1) { 343 for (var j = 0; j < this.length; j += 1) { 344 if (typeof this$1[j] !== 'undefined' && typeof this$1[j].classList !== 'undefined') { this$1[j].classList.toggle(classes[i]); } 345 } 346 } 347 return this; 348 } 349 function attr(attrs, value) { 350 var arguments$1 = arguments; 351 var this$1 = this; 352 353 if (arguments.length === 1 && typeof attrs === 'string') { 354 // Get attr 355 if (this[0]) { return this[0].getAttribute(attrs); } 356 return undefined; 357 } 358 359 // Set attrs 360 for (var i = 0; i < this.length; i += 1) { 361 if (arguments$1.length === 2) { 362 // String 363 this$1[i].setAttribute(attrs, value); 364 } else { 365 // Object 366 // eslint-disable-next-line 367 for (var attrName in attrs) { 368 this$1[i][attrName] = attrs[attrName]; 369 this$1[i].setAttribute(attrName, attrs[attrName]); 370 } 371 } 372 } 373 return this; 374 } 375 // eslint-disable-next-line 376 function removeAttr(attr) { 377 var this$1 = this; 378 379 for (var i = 0; i < this.length; i += 1) { 380 this$1[i].removeAttribute(attr); 381 } 382 return this; 383 } 384 function data(key, value) { 385 var this$1 = this; 386 387 var el; 388 if (typeof value === 'undefined') { 389 el = this[0]; 390 // Get value 391 if (el) { 392 if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) { 393 return el.dom7ElementDataStorage[key]; 394 } 395 396 var dataKey = el.getAttribute(("data-" + key)); 397 if (dataKey) { 398 return dataKey; 399 } 400 return undefined; 401 } 402 return undefined; 403 } 404 405 // Set value 406 for (var i = 0; i < this.length; i += 1) { 407 el = this$1[i]; 408 if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; } 409 el.dom7ElementDataStorage[key] = value; 410 } 411 return this; 412 } 413 // Transforms 414 // eslint-disable-next-line 415 function transform(transform) { 416 var this$1 = this; 417 418 for (var i = 0; i < this.length; i += 1) { 419 var elStyle = this$1[i].style; 420 elStyle.webkitTransform = transform; 421 elStyle.transform = transform; 422 } 423 return this; 424 } 425 function transition(duration) { 426 var this$1 = this; 427 428 if (typeof duration !== 'string') { 429 duration = duration + "ms"; // eslint-disable-line 430 } 431 for (var i = 0; i < this.length; i += 1) { 432 var elStyle = this$1[i].style; 433 elStyle.webkitTransitionDuration = duration; 434 elStyle.transitionDuration = duration; 435 } 436 return this; 437 } 438 // Events 439 function on() { 440 var this$1 = this; 441 var assign; 442 443 var args = [], len = arguments.length; 444 while ( len-- ) args[ len ] = arguments[ len ]; 445 var eventType = args[0]; 446 var targetSelector = args[1]; 447 var listener = args[2]; 448 var capture = args[3]; 449 if (typeof args[1] === 'function') { 450 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 451 targetSelector = undefined; 452 } 453 if (!capture) { capture = false; } 454 455 function handleLiveEvent(e) { 456 var target = e.target; 457 if (!target) { return; } 458 var eventData = e.target.dom7EventData || []; 459 if (eventData.indexOf(e) < 0) { 460 eventData.unshift(e); 461 } 462 if ($(target).is(targetSelector)) { listener.apply(target, eventData); } 463 else { 464 var parents = $(target).parents(); // eslint-disable-line 465 for (var k = 0; k < parents.length; k += 1) { 466 if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); } 467 } 468 } 469 } 470 function handleEvent(e) { 471 var eventData = e && e.target ? e.target.dom7EventData || [] : []; 472 if (eventData.indexOf(e) < 0) { 473 eventData.unshift(e); 474 } 475 listener.apply(this, eventData); 476 } 477 var events = eventType.split(' '); 478 var j; 479 for (var i = 0; i < this.length; i += 1) { 480 var el = this$1[i]; 481 if (!targetSelector) { 482 for (j = 0; j < events.length; j += 1) { 483 var event = events[j]; 484 if (!el.dom7Listeners) { el.dom7Listeners = {}; } 485 if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; } 486 el.dom7Listeners[event].push({ 487 listener: listener, 488 proxyListener: handleEvent, 489 }); 490 el.addEventListener(event, handleEvent, capture); 491 } 492 } else { 493 // Live events 494 for (j = 0; j < events.length; j += 1) { 495 var event$1 = events[j]; 496 if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; } 497 if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; } 498 el.dom7LiveListeners[event$1].push({ 499 listener: listener, 500 proxyListener: handleLiveEvent, 501 }); 502 el.addEventListener(event$1, handleLiveEvent, capture); 503 } 504 } 505 } 506 return this; 507 } 508 function off() { 509 var this$1 = this; 510 var assign; 511 512 var args = [], len = arguments.length; 513 while ( len-- ) args[ len ] = arguments[ len ]; 514 var eventType = args[0]; 515 var targetSelector = args[1]; 516 var listener = args[2]; 517 var capture = args[3]; 518 if (typeof args[1] === 'function') { 519 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 520 targetSelector = undefined; 521 } 522 if (!capture) { capture = false; } 523 524 var events = eventType.split(' '); 525 for (var i = 0; i < events.length; i += 1) { 526 var event = events[i]; 527 for (var j = 0; j < this.length; j += 1) { 528 var el = this$1[j]; 529 var handlers = (void 0); 530 if (!targetSelector && el.dom7Listeners) { 531 handlers = el.dom7Listeners[event]; 532 } else if (targetSelector && el.dom7LiveListeners) { 533 handlers = el.dom7LiveListeners[event]; 534 } 535 if (handlers && handlers.length) { 536 for (var k = handlers.length - 1; k >= 0; k -= 1) { 537 var handler = handlers[k]; 538 if (listener && handler.listener === listener) { 539 el.removeEventListener(event, handler.proxyListener, capture); 540 handlers.splice(k, 1); 541 } else if (!listener) { 542 el.removeEventListener(event, handler.proxyListener, capture); 543 handlers.splice(k, 1); 544 } 545 } 546 } 547 } 548 } 549 return this; 550 } 551 function trigger() { 552 var this$1 = this; 553 var args = [], len = arguments.length; 554 while ( len-- ) args[ len ] = arguments[ len ]; 555 556 var events = args[0].split(' '); 557 var eventData = args[1]; 558 for (var i = 0; i < events.length; i += 1) { 559 var event = events[i]; 560 for (var j = 0; j < this.length; j += 1) { 561 var el = this$1[j]; 562 var evt = (void 0); 563 try { 564 evt = new win.CustomEvent(event, { 565 detail: eventData, 566 bubbles: true, 567 cancelable: true, 568 }); 569 } catch (e) { 570 evt = doc.createEvent('Event'); 571 evt.initEvent(event, true, true); 572 evt.detail = eventData; 573 } 574 // eslint-disable-next-line 575 el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; }); 576 el.dispatchEvent(evt); 577 el.dom7EventData = []; 578 delete el.dom7EventData; 579 } 580 } 581 return this; 582 } 583 function transitionEnd(callback) { 584 var events = ['webkitTransitionEnd', 'transitionend']; 585 var dom = this; 586 var i; 587 function fireCallBack(e) { 588 /* jshint validthis:true */ 589 if (e.target !== this) { return; } 590 callback.call(this, e); 591 for (i = 0; i < events.length; i += 1) { 592 dom.off(events[i], fireCallBack); 593 } 594 } 595 if (callback) { 596 for (i = 0; i < events.length; i += 1) { 597 dom.on(events[i], fireCallBack); 598 } 599 } 600 return this; 601 } 602 function outerWidth(includeMargins) { 603 if (this.length > 0) { 604 if (includeMargins) { 605 // eslint-disable-next-line 606 var styles = this.styles(); 607 return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); 608 } 609 return this[0].offsetWidth; 610 } 611 return null; 612 } 613 function outerHeight(includeMargins) { 614 if (this.length > 0) { 615 if (includeMargins) { 616 // eslint-disable-next-line 617 var styles = this.styles(); 618 return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); 619 } 620 return this[0].offsetHeight; 621 } 622 return null; 623 } 624 function offset() { 625 if (this.length > 0) { 626 var el = this[0]; 627 var box = el.getBoundingClientRect(); 628 var body = doc.body; 629 var clientTop = el.clientTop || body.clientTop || 0; 630 var clientLeft = el.clientLeft || body.clientLeft || 0; 631 var scrollTop = el === win ? win.scrollY : el.scrollTop; 632 var scrollLeft = el === win ? win.scrollX : el.scrollLeft; 633 return { 634 top: (box.top + scrollTop) - clientTop, 635 left: (box.left + scrollLeft) - clientLeft, 636 }; 637 } 638 639 return null; 640 } 641 function styles() { 642 if (this[0]) { return win.getComputedStyle(this[0], null); } 643 return {}; 644 } 645 function css(props, value) { 646 var this$1 = this; 647 648 var i; 649 if (arguments.length === 1) { 650 if (typeof props === 'string') { 651 if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); } 652 } else { 653 for (i = 0; i < this.length; i += 1) { 654 // eslint-disable-next-line 655 for (var prop in props) { 656 this$1[i].style[prop] = props[prop]; 657 } 658 } 659 return this; 660 } 661 } 662 if (arguments.length === 2 && typeof props === 'string') { 663 for (i = 0; i < this.length; i += 1) { 664 this$1[i].style[props] = value; 665 } 666 return this; 667 } 668 return this; 669 } 670 // Iterate over the collection passing elements to `callback` 671 function each(callback) { 672 var this$1 = this; 673 674 // Don't bother continuing without a callback 675 if (!callback) { return this; } 676 // Iterate over the current collection 677 for (var i = 0; i < this.length; i += 1) { 678 // If the callback returns false 679 if (callback.call(this$1[i], i, this$1[i]) === false) { 680 // End the loop early 681 return this$1; 682 } 683 } 684 // Return `this` to allow chained DOM operations 685 return this; 686 } 687 // eslint-disable-next-line 688 function html(html) { 689 var this$1 = this; 690 691 if (typeof html === 'undefined') { 692 return this[0] ? this[0].innerHTML : undefined; 693 } 694 695 for (var i = 0; i < this.length; i += 1) { 696 this$1[i].innerHTML = html; 697 } 698 return this; 699 } 700 // eslint-disable-next-line 701 function text(text) { 702 var this$1 = this; 703 704 if (typeof text === 'undefined') { 705 if (this[0]) { 706 return this[0].textContent.trim(); 707 } 708 return null; 709 } 710 711 for (var i = 0; i < this.length; i += 1) { 712 this$1[i].textContent = text; 713 } 714 return this; 715 } 716 function is(selector) { 717 var el = this[0]; 718 var compareWith; 719 var i; 720 if (!el || typeof selector === 'undefined') { return false; } 721 if (typeof selector === 'string') { 722 if (el.matches) { return el.matches(selector); } 723 else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); } 724 else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); } 725 726 compareWith = $(selector); 727 for (i = 0; i < compareWith.length; i += 1) { 728 if (compareWith[i] === el) { return true; } 729 } 730 return false; 731 } else if (selector === doc) { return el === doc; } 732 else if (selector === win) { return el === win; } 733 734 if (selector.nodeType || selector instanceof Dom7) { 735 compareWith = selector.nodeType ? [selector] : selector; 736 for (i = 0; i < compareWith.length; i += 1) { 737 if (compareWith[i] === el) { return true; } 738 } 739 return false; 740 } 741 return false; 742 } 743 function index() { 744 var child = this[0]; 745 var i; 746 if (child) { 747 i = 0; 748 // eslint-disable-next-line 749 while ((child = child.previousSibling) !== null) { 750 if (child.nodeType === 1) { i += 1; } 751 } 752 return i; 753 } 754 return undefined; 755 } 756 // eslint-disable-next-line 757 function eq(index) { 758 if (typeof index === 'undefined') { return this; } 759 var length = this.length; 760 var returnIndex; 761 if (index > length - 1) { 762 return new Dom7([]); 763 } 764 if (index < 0) { 765 returnIndex = length + index; 766 if (returnIndex < 0) { return new Dom7([]); } 767 return new Dom7([this[returnIndex]]); 768 } 769 return new Dom7([this[index]]); 770 } 771 function append() { 772 var this$1 = this; 773 var args = [], len = arguments.length; 774 while ( len-- ) args[ len ] = arguments[ len ]; 775 776 var newChild; 777 778 for (var k = 0; k < args.length; k += 1) { 779 newChild = args[k]; 780 for (var i = 0; i < this.length; i += 1) { 781 if (typeof newChild === 'string') { 782 var tempDiv = doc.createElement('div'); 783 tempDiv.innerHTML = newChild; 784 while (tempDiv.firstChild) { 785 this$1[i].appendChild(tempDiv.firstChild); 786 } 787 } else if (newChild instanceof Dom7) { 788 for (var j = 0; j < newChild.length; j += 1) { 789 this$1[i].appendChild(newChild[j]); 790 } 791 } else { 792 this$1[i].appendChild(newChild); 793 } 794 } 795 } 796 797 return this; 798 } 799 function prepend(newChild) { 800 var this$1 = this; 801 802 var i; 803 var j; 804 for (i = 0; i < this.length; i += 1) { 805 if (typeof newChild === 'string') { 806 var tempDiv = doc.createElement('div'); 807 tempDiv.innerHTML = newChild; 808 for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { 809 this$1[i].insertBefore(tempDiv.childNodes[j], this$1[i].childNodes[0]); 810 } 811 } else if (newChild instanceof Dom7) { 812 for (j = 0; j < newChild.length; j += 1) { 813 this$1[i].insertBefore(newChild[j], this$1[i].childNodes[0]); 814 } 815 } else { 816 this$1[i].insertBefore(newChild, this$1[i].childNodes[0]); 817 } 818 } 819 return this; 820 } 821 function next(selector) { 822 if (this.length > 0) { 823 if (selector) { 824 if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { 825 return new Dom7([this[0].nextElementSibling]); 826 } 827 return new Dom7([]); 828 } 829 830 if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); } 831 return new Dom7([]); 832 } 833 return new Dom7([]); 834 } 835 function nextAll(selector) { 836 var nextEls = []; 837 var el = this[0]; 838 if (!el) { return new Dom7([]); } 839 while (el.nextElementSibling) { 840 var next = el.nextElementSibling; // eslint-disable-line 841 if (selector) { 842 if ($(next).is(selector)) { nextEls.push(next); } 843 } else { nextEls.push(next); } 844 el = next; 845 } 846 return new Dom7(nextEls); 847 } 848 function prev(selector) { 849 if (this.length > 0) { 850 var el = this[0]; 851 if (selector) { 852 if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { 853 return new Dom7([el.previousElementSibling]); 854 } 855 return new Dom7([]); 856 } 857 858 if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); } 859 return new Dom7([]); 860 } 861 return new Dom7([]); 862 } 863 function prevAll(selector) { 864 var prevEls = []; 865 var el = this[0]; 866 if (!el) { return new Dom7([]); } 867 while (el.previousElementSibling) { 868 var prev = el.previousElementSibling; // eslint-disable-line 869 if (selector) { 870 if ($(prev).is(selector)) { prevEls.push(prev); } 871 } else { prevEls.push(prev); } 872 el = prev; 873 } 874 return new Dom7(prevEls); 875 } 876 function parent(selector) { 877 var this$1 = this; 878 879 var parents = []; // eslint-disable-line 880 for (var i = 0; i < this.length; i += 1) { 881 if (this$1[i].parentNode !== null) { 882 if (selector) { 883 if ($(this$1[i].parentNode).is(selector)) { parents.push(this$1[i].parentNode); } 884 } else { 885 parents.push(this$1[i].parentNode); 886 } 887 } 888 } 889 return $(unique(parents)); 890 } 891 function parents(selector) { 892 var this$1 = this; 893 894 var parents = []; // eslint-disable-line 895 for (var i = 0; i < this.length; i += 1) { 896 var parent = this$1[i].parentNode; // eslint-disable-line 897 while (parent) { 898 if (selector) { 899 if ($(parent).is(selector)) { parents.push(parent); } 900 } else { 901 parents.push(parent); 902 } 903 parent = parent.parentNode; 904 } 905 } 906 return $(unique(parents)); 907 } 908 function closest(selector) { 909 var closest = this; // eslint-disable-line 910 if (typeof selector === 'undefined') { 911 return new Dom7([]); 912 } 913 if (!closest.is(selector)) { 914 closest = closest.parents(selector).eq(0); 915 } 916 return closest; 917 } 918 function find(selector) { 919 var this$1 = this; 920 921 var foundElements = []; 922 for (var i = 0; i < this.length; i += 1) { 923 var found = this$1[i].querySelectorAll(selector); 924 for (var j = 0; j < found.length; j += 1) { 925 foundElements.push(found[j]); 926 } 927 } 928 return new Dom7(foundElements); 929 } 930 function children(selector) { 931 var this$1 = this; 932 933 var children = []; // eslint-disable-line 934 for (var i = 0; i < this.length; i += 1) { 935 var childNodes = this$1[i].childNodes; 936 937 for (var j = 0; j < childNodes.length; j += 1) { 938 if (!selector) { 939 if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); } 940 } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) { 941 children.push(childNodes[j]); 942 } 943 } 944 } 945 return new Dom7(unique(children)); 946 } 947 function remove() { 948 var this$1 = this; 949 950 for (var i = 0; i < this.length; i += 1) { 951 if (this$1[i].parentNode) { this$1[i].parentNode.removeChild(this$1[i]); } 952 } 953 return this; 954 } 955 function add() { 956 var args = [], len = arguments.length; 957 while ( len-- ) args[ len ] = arguments[ len ]; 958 959 var dom = this; 960 var i; 961 var j; 962 for (i = 0; i < args.length; i += 1) { 963 var toAdd = $(args[i]); 964 for (j = 0; j < toAdd.length; j += 1) { 965 dom[dom.length] = toAdd[j]; 966 dom.length += 1; 967 } 968 } 969 return dom; 970 } 971 972 var Methods = { 973 addClass: addClass, 974 removeClass: removeClass, 975 hasClass: hasClass, 976 toggleClass: toggleClass, 977 attr: attr, 978 removeAttr: removeAttr, 979 data: data, 980 transform: transform, 981 transition: transition, 982 on: on, 983 off: off, 984 trigger: trigger, 985 transitionEnd: transitionEnd, 986 outerWidth: outerWidth, 987 outerHeight: outerHeight, 988 offset: offset, 989 css: css, 990 each: each, 991 html: html, 992 text: text, 993 is: is, 994 index: index, 995 eq: eq, 996 append: append, 997 prepend: prepend, 998 next: next, 999 nextAll: nextAll, 1000 prev: prev, 1001 prevAll: prevAll, 1002 parent: parent, 1003 parents: parents, 1004 closest: closest, 1005 find: find, 1006 children: children, 1007 remove: remove, 1008 add: add, 1009 styles: styles, 1010 }; 1011 1012 Object.keys(Methods).forEach(function (methodName) { 1013 $.fn[methodName] = Methods[methodName]; 1014 }); 1015 1016 var Utils = { 1017 deleteProps: function deleteProps(obj) { 1018 var object = obj; 1019 Object.keys(object).forEach(function (key) { 1020 try { 1021 object[key] = null; 1022 } catch (e) { 1023 // no getter for object 1024 } 1025 try { 1026 delete object[key]; 1027 } catch (e) { 1028 // something got wrong 1029 } 1030 }); 1031 }, 1032 nextTick: function nextTick(callback, delay) { 1033 if ( delay === void 0 ) delay = 0; 1034 1035 return setTimeout(callback, delay); 1036 }, 1037 now: function now() { 1038 return Date.now(); 1039 }, 1040 getTranslate: function getTranslate(el, axis) { 1041 if ( axis === void 0 ) axis = 'x'; 1042 1043 var matrix; 1044 var curTransform; 1045 var transformMatrix; 1046 1047 var curStyle = win.getComputedStyle(el, null); 1048 1049 if (win.WebKitCSSMatrix) { 1050 curTransform = curStyle.transform || curStyle.webkitTransform; 1051 if (curTransform.split(',').length > 6) { 1052 curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', '); 1053 } 1054 // Some old versions of Webkit choke when 'none' is passed; pass 1055 // empty string instead in this case 1056 transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 1057 } else { 1058 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 1059 matrix = transformMatrix.toString().split(','); 1060 } 1061 1062 if (axis === 'x') { 1063 // Latest Chrome and webkits Fix 1064 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; } 1065 // Crazy IE10 Matrix 1066 else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); } 1067 // Normal Browsers 1068 else { curTransform = parseFloat(matrix[4]); } 1069 } 1070 if (axis === 'y') { 1071 // Latest Chrome and webkits Fix 1072 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; } 1073 // Crazy IE10 Matrix 1074 else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); } 1075 // Normal Browsers 1076 else { curTransform = parseFloat(matrix[5]); } 1077 } 1078 return curTransform || 0; 1079 }, 1080 parseUrlQuery: function parseUrlQuery(url) { 1081 var query = {}; 1082 var urlToParse = url || win.location.href; 1083 var i; 1084 var params; 1085 var param; 1086 var length; 1087 if (typeof urlToParse === 'string' && urlToParse.length) { 1088 urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; 1089 params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; }); 1090 length = params.length; 1091 1092 for (i = 0; i < length; i += 1) { 1093 param = params[i].replace(/#\S+/g, '').split('='); 1094 query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; 1095 } 1096 } 1097 return query; 1098 }, 1099 isObject: function isObject(o) { 1100 return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; 1101 }, 1102 extend: function extend() { 1103 var args = [], len$1 = arguments.length; 1104 while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ]; 1105 1106 var to = Object(args[0]); 1107 for (var i = 1; i < args.length; i += 1) { 1108 var nextSource = args[i]; 1109 if (nextSource !== undefined && nextSource !== null) { 1110 var keysArray = Object.keys(Object(nextSource)); 1111 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 1112 var nextKey = keysArray[nextIndex]; 1113 var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 1114 if (desc !== undefined && desc.enumerable) { 1115 if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 1116 Utils.extend(to[nextKey], nextSource[nextKey]); 1117 } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 1118 to[nextKey] = {}; 1119 Utils.extend(to[nextKey], nextSource[nextKey]); 1120 } else { 1121 to[nextKey] = nextSource[nextKey]; 1122 } 1123 } 1124 } 1125 } 1126 } 1127 return to; 1128 }, 1129 }; 1130 1131 var Support = (function Support() { 1132 var testDiv = doc.createElement('div'); 1133 return { 1134 touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { 1135 return !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); 1136 }()), 1137 1138 pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent), 1139 prefixedPointerEvents: !!win.navigator.msPointerEnabled, 1140 1141 transition: (function checkTransition() { 1142 var style = testDiv.style; 1143 return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style); 1144 }()), 1145 transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() { 1146 var style = testDiv.style; 1147 return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style); 1148 }()), 1149 1150 flexbox: (function checkFlexbox() { 1151 var style = testDiv.style; 1152 var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); 1153 for (var i = 0; i < styles.length; i += 1) { 1154 if (styles[i] in style) { return true; } 1155 } 1156 return false; 1157 }()), 1158 1159 observer: (function checkObserver() { 1160 return ('MutationObserver' in win || 'WebkitMutationObserver' in win); 1161 }()), 1162 1163 passiveListener: (function checkPassiveListener() { 1164 var supportsPassive = false; 1165 try { 1166 var opts = Object.defineProperty({}, 'passive', { 1167 // eslint-disable-next-line 1168 get: function get() { 1169 supportsPassive = true; 1170 }, 1171 }); 1172 win.addEventListener('testPassiveListener', null, opts); 1173 } catch (e) { 1174 // No support 1175 } 1176 return supportsPassive; 1177 }()), 1178 1179 gestures: (function checkGestures() { 1180 return 'ongesturestart' in win; 1181 }()), 1182 }; 1183 }()); 1184 1185 var SwiperClass = function SwiperClass(params) { 1186 if ( params === void 0 ) params = {}; 1187 1188 var self = this; 1189 self.params = params; 1190 1191 // Events 1192 self.eventsListeners = {}; 1193 1194 if (self.params && self.params.on) { 1195 Object.keys(self.params.on).forEach(function (eventName) { 1196 self.on(eventName, self.params.on[eventName]); 1197 }); 1198 } 1199 }; 1200 1201 var staticAccessors = { components: { configurable: true } }; 1202 1203 SwiperClass.prototype.on = function on (events, handler, priority) { 1204 var self = this; 1205 if (typeof handler !== 'function') { return self; } 1206 var method = priority ? 'unshift' : 'push'; 1207 events.split(' ').forEach(function (event) { 1208 if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; } 1209 self.eventsListeners[event][method](handler); 1210 }); 1211 return self; 1212 }; 1213 1214 SwiperClass.prototype.once = function once (events, handler, priority) { 1215 var self = this; 1216 if (typeof handler !== 'function') { return self; } 1217 function onceHandler() { 1218 var args = [], len = arguments.length; 1219 while ( len-- ) args[ len ] = arguments[ len ]; 1220 1221 handler.apply(self, args); 1222 self.off(events, onceHandler); 1223 } 1224 return self.on(events, onceHandler, priority); 1225 }; 1226 1227 SwiperClass.prototype.off = function off (events, handler) { 1228 var self = this; 1229 if (!self.eventsListeners) { return self; } 1230 events.split(' ').forEach(function (event) { 1231 if (typeof handler === 'undefined') { 1232 self.eventsListeners[event] = []; 1233 } else { 1234 self.eventsListeners[event].forEach(function (eventHandler, index) { 1235 if (eventHandler === handler) { 1236 self.eventsListeners[event].splice(index, 1); 1237 } 1238 }); 1239 } 1240 }); 1241 return self; 1242 }; 1243 1244 SwiperClass.prototype.emit = function emit () { 1245 var args = [], len = arguments.length; 1246 while ( len-- ) args[ len ] = arguments[ len ]; 1247 1248 var self = this; 1249 if (!self.eventsListeners) { return self; } 1250 var events; 1251 var data; 1252 var context; 1253 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 1254 events = args[0]; 1255 data = args.slice(1, args.length); 1256 context = self; 1257 } else { 1258 events = args[0].events; 1259 data = args[0].data; 1260 context = args[0].context || self; 1261 } 1262 var eventsArray = Array.isArray(events) ? events : events.split(' '); 1263 eventsArray.forEach(function (event) { 1264 if (self.eventsListeners && self.eventsListeners[event]) { 1265 var handlers = []; 1266 self.eventsListeners[event].forEach(function (eventHandler) { 1267 handlers.push(eventHandler); 1268 }); 1269 handlers.forEach(function (eventHandler) { 1270 eventHandler.apply(context, data); 1271 }); 1272 } 1273 }); 1274 return self; 1275 }; 1276 1277 SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) { 1278 var instance = this; 1279 if (!instance.modules) { return; } 1280 Object.keys(instance.modules).forEach(function (moduleName) { 1281 var module = instance.modules[moduleName]; 1282 // Extend params 1283 if (module.params) { 1284 Utils.extend(instanceParams, module.params); 1285 } 1286 }); 1287 }; 1288 1289 SwiperClass.prototype.useModules = function useModules (modulesParams) { 1290 if ( modulesParams === void 0 ) modulesParams = {}; 1291 1292 var instance = this; 1293 if (!instance.modules) { return; } 1294 Object.keys(instance.modules).forEach(function (moduleName) { 1295 var module = instance.modules[moduleName]; 1296 var moduleParams = modulesParams[moduleName] || {}; 1297 // Extend instance methods and props 1298 if (module.instance) { 1299 Object.keys(module.instance).forEach(function (modulePropName) { 1300 var moduleProp = module.instance[modulePropName]; 1301 if (typeof moduleProp === 'function') { 1302 instance[modulePropName] = moduleProp.bind(instance); 1303 } else { 1304 instance[modulePropName] = moduleProp; 1305 } 1306 }); 1307 } 1308 // Add event listeners 1309 if (module.on && instance.on) { 1310 Object.keys(module.on).forEach(function (moduleEventName) { 1311 instance.on(moduleEventName, module.on[moduleEventName]); 1312 }); 1313 } 1314 1315 // Module create callback 1316 if (module.create) { 1317 module.create.bind(instance)(moduleParams); 1318 } 1319 }); 1320 }; 1321 1322 staticAccessors.components.set = function (components) { 1323 var Class = this; 1324 if (!Class.use) { return; } 1325 Class.use(components); 1326 }; 1327 1328 SwiperClass.installModule = function installModule (module) { 1329 var params = [], len = arguments.length - 1; 1330 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 1331 1332 var Class = this; 1333 if (!Class.prototype.modules) { Class.prototype.modules = {}; } 1334 var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); 1335 Class.prototype.modules[name] = module; 1336 // Prototype 1337 if (module.proto) { 1338 Object.keys(module.proto).forEach(function (key) { 1339 Class.prototype[key] = module.proto[key]; 1340 }); 1341 } 1342 // Class 1343 if (module.static) { 1344 Object.keys(module.static).forEach(function (key) { 1345 Class[key] = module.static[key]; 1346 }); 1347 } 1348 // Callback 1349 if (module.install) { 1350 module.install.apply(Class, params); 1351 } 1352 return Class; 1353 }; 1354 1355 SwiperClass.use = function use (module) { 1356 var params = [], len = arguments.length - 1; 1357 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 1358 1359 var Class = this; 1360 if (Array.isArray(module)) { 1361 module.forEach(function (m) { return Class.installModule(m); }); 1362 return Class; 1363 } 1364 return Class.installModule.apply(Class, [ module ].concat( params )); 1365 }; 1366 1367 Object.defineProperties( SwiperClass, staticAccessors ); 1368 1369 function updateSize () { 1370 var swiper = this; 1371 var width; 1372 var height; 1373 var $el = swiper.$el; 1374 if (typeof swiper.params.width !== 'undefined') { 1375 width = swiper.params.width; 1376 } else { 1377 width = $el[0].clientWidth; 1378 } 1379 if (typeof swiper.params.height !== 'undefined') { 1380 height = swiper.params.height; 1381 } else { 1382 height = $el[0].clientHeight; 1383 } 1384 if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { 1385 return; 1386 } 1387 1388 // Subtract paddings 1389 width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); 1390 height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); 1391 1392 Utils.extend(swiper, { 1393 width: width, 1394 height: height, 1395 size: swiper.isHorizontal() ? width : height, 1396 }); 1397 } 1398 1399 function updateSlides () { 1400 var swiper = this; 1401 var params = swiper.params; 1402 1403 var $wrapperEl = swiper.$wrapperEl; 1404 var swiperSize = swiper.size; 1405 var rtl = swiper.rtlTranslate; 1406 var wrongRTL = swiper.wrongRTL; 1407 var isVirtual = swiper.virtual && params.virtual.enabled; 1408 var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 1409 var slides = $wrapperEl.children(("." + (swiper.params.slideClass))); 1410 var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 1411 var snapGrid = []; 1412 var slidesGrid = []; 1413 var slidesSizesGrid = []; 1414 1415 var offsetBefore = params.slidesOffsetBefore; 1416 if (typeof offsetBefore === 'function') { 1417 offsetBefore = params.slidesOffsetBefore.call(swiper); 1418 } 1419 1420 var offsetAfter = params.slidesOffsetAfter; 1421 if (typeof offsetAfter === 'function') { 1422 offsetAfter = params.slidesOffsetAfter.call(swiper); 1423 } 1424 1425 var previousSnapGridLength = swiper.snapGrid.length; 1426 var previousSlidesGridLength = swiper.snapGrid.length; 1427 1428 var spaceBetween = params.spaceBetween; 1429 var slidePosition = -offsetBefore; 1430 var prevSlideSize = 0; 1431 var index = 0; 1432 if (typeof swiperSize === 'undefined') { 1433 return; 1434 } 1435 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 1436 spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; 1437 } 1438 1439 swiper.virtualSize = -spaceBetween; 1440 1441 // reset margins 1442 if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); } 1443 else { slides.css({ marginRight: '', marginBottom: '' }); } 1444 1445 var slidesNumberEvenToRows; 1446 if (params.slidesPerColumn > 1) { 1447 if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { 1448 slidesNumberEvenToRows = slidesLength; 1449 } else { 1450 slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; 1451 } 1452 if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { 1453 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); 1454 } 1455 } 1456 1457 // Calc slides 1458 var slideSize; 1459 var slidesPerColumn = params.slidesPerColumn; 1460 var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; 1461 var numFullColumns = slidesPerRow - ((params.slidesPerColumn * slidesPerRow) - slidesLength); 1462 for (var i = 0; i < slidesLength; i += 1) { 1463 slideSize = 0; 1464 var slide = slides.eq(i); 1465 if (params.slidesPerColumn > 1) { 1466 // Set slides order 1467 var newSlideOrderIndex = (void 0); 1468 var column = (void 0); 1469 var row = (void 0); 1470 if (params.slidesPerColumnFill === 'column') { 1471 column = Math.floor(i / slidesPerColumn); 1472 row = i - (column * slidesPerColumn); 1473 if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { 1474 row += 1; 1475 if (row >= slidesPerColumn) { 1476 row = 0; 1477 column += 1; 1478 } 1479 } 1480 newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); 1481 slide 1482 .css({ 1483 '-webkit-box-ordinal-group': newSlideOrderIndex, 1484 '-moz-box-ordinal-group': newSlideOrderIndex, 1485 '-ms-flex-order': newSlideOrderIndex, 1486 '-webkit-order': newSlideOrderIndex, 1487 order: newSlideOrderIndex, 1488 }); 1489 } else { 1490 row = Math.floor(i / slidesPerRow); 1491 column = i - (row * slidesPerRow); 1492 } 1493 slide 1494 .css( 1495 ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')), 1496 (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px")) 1497 ) 1498 .attr('data-swiper-column', column) 1499 .attr('data-swiper-row', row); 1500 } 1501 if (slide.css('display') === 'none') { continue; } // eslint-disable-line 1502 1503 if (params.slidesPerView === 'auto') { 1504 var slideStyles = win.getComputedStyle(slide[0], null); 1505 var currentTransform = slide[0].style.transform; 1506 var currentWebKitTransform = slide[0].style.webkitTransform; 1507 if (currentTransform) { 1508 slide[0].style.transform = 'none'; 1509 } 1510 if (currentWebKitTransform) { 1511 slide[0].style.webkitTransform = 'none'; 1512 } 1513 if (swiper.isHorizontal()) { 1514 slideSize = slide[0].getBoundingClientRect().width 1515 + parseFloat(slideStyles.getPropertyValue('margin-left')) 1516 + parseFloat(slideStyles.getPropertyValue('margin-right')); 1517 } else { 1518 slideSize = slide[0].getBoundingClientRect().height 1519 + parseFloat(slideStyles.getPropertyValue('margin-top')) 1520 + parseFloat(slideStyles.getPropertyValue('margin-bottom')); 1521 } 1522 if (currentTransform) { 1523 slide[0].style.transform = currentTransform; 1524 } 1525 if (currentWebKitTransform) { 1526 slide[0].style.webkitTransform = currentWebKitTransform; 1527 } 1528 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 1529 } else { 1530 slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; 1531 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 1532 1533 if (slides[i]) { 1534 if (swiper.isHorizontal()) { 1535 slides[i].style.width = slideSize + "px"; 1536 } else { 1537 slides[i].style.height = slideSize + "px"; 1538 } 1539 } 1540 } 1541 if (slides[i]) { 1542 slides[i].swiperSlideSize = slideSize; 1543 } 1544 slidesSizesGrid.push(slideSize); 1545 1546 1547 if (params.centeredSlides) { 1548 slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; 1549 if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 1550 if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 1551 if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; } 1552 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 1553 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 1554 slidesGrid.push(slidePosition); 1555 } else { 1556 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 1557 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 1558 slidesGrid.push(slidePosition); 1559 slidePosition = slidePosition + slideSize + spaceBetween; 1560 } 1561 1562 swiper.virtualSize += slideSize + spaceBetween; 1563 1564 prevSlideSize = slideSize; 1565 1566 index += 1; 1567 } 1568 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 1569 var newSlidesGrid; 1570 1571 if ( 1572 rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 1573 $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); 1574 } 1575 if (!Support.flexbox || params.setWrapperSize) { 1576 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 1577 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 1578 } 1579 1580 if (params.slidesPerColumn > 1) { 1581 swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; 1582 swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; 1583 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 1584 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 1585 if (params.centeredSlides) { 1586 newSlidesGrid = []; 1587 for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) { 1588 var slidesGridItem = snapGrid[i$1]; 1589 if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); } 1590 if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); } 1591 } 1592 snapGrid = newSlidesGrid; 1593 } 1594 } 1595 1596 // Remove last grid elements depending on width 1597 if (!params.centeredSlides) { 1598 newSlidesGrid = []; 1599 for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) { 1600 var slidesGridItem$1 = snapGrid[i$2]; 1601 if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); } 1602 if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) { 1603 newSlidesGrid.push(slidesGridItem$1); 1604 } 1605 } 1606 snapGrid = newSlidesGrid; 1607 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 1608 snapGrid.push(swiper.virtualSize - swiperSize); 1609 } 1610 } 1611 if (snapGrid.length === 0) { snapGrid = [0]; } 1612 1613 if (params.spaceBetween !== 0) { 1614 if (swiper.isHorizontal()) { 1615 if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); } 1616 else { slides.css({ marginRight: (spaceBetween + "px") }); } 1617 } else { slides.css({ marginBottom: (spaceBetween + "px") }); } 1618 } 1619 1620 Utils.extend(swiper, { 1621 slides: slides, 1622 snapGrid: snapGrid, 1623 slidesGrid: slidesGrid, 1624 slidesSizesGrid: slidesSizesGrid, 1625 }); 1626 1627 if (slidesLength !== previousSlidesLength) { 1628 swiper.emit('slidesLengthChange'); 1629 } 1630 if (snapGrid.length !== previousSnapGridLength) { 1631 if (swiper.params.watchOverflow) { swiper.checkOverflow(); } 1632 swiper.emit('snapGridLengthChange'); 1633 } 1634 if (slidesGrid.length !== previousSlidesGridLength) { 1635 swiper.emit('slidesGridLengthChange'); 1636 } 1637 1638 if (params.watchSlidesProgress || params.watchSlidesVisibility) { 1639 swiper.updateSlidesOffset(); 1640 } 1641 } 1642 1643 function updateAutoHeight (speed) { 1644 var swiper = this; 1645 var activeSlides = []; 1646 var newHeight = 0; 1647 var i; 1648 if (typeof speed === 'number') { 1649 swiper.setTransition(speed); 1650 } else if (speed === true) { 1651 swiper.setTransition(swiper.params.speed); 1652 } 1653 // Find slides currently in view 1654 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 1655 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 1656 var index = swiper.activeIndex + i; 1657 if (index > swiper.slides.length) { break; } 1658 activeSlides.push(swiper.slides.eq(index)[0]); 1659 } 1660 } else { 1661 activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); 1662 } 1663 1664 // Find new height from highest slide in view 1665 for (i = 0; i < activeSlides.length; i += 1) { 1666 if (typeof activeSlides[i] !== 'undefined') { 1667 var height = activeSlides[i].offsetHeight; 1668 newHeight = height > newHeight ? height : newHeight; 1669 } 1670 } 1671 1672 // Update Height 1673 if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); } 1674 } 1675 1676 function updateSlidesOffset () { 1677 var swiper = this; 1678 var slides = swiper.slides; 1679 for (var i = 0; i < slides.length; i += 1) { 1680 slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 1681 } 1682 } 1683 1684 function updateSlidesProgress (translate) { 1685 if ( translate === void 0 ) translate = (this && this.translate) || 0; 1686 1687 var swiper = this; 1688 var params = swiper.params; 1689 1690 var slides = swiper.slides; 1691 var rtl = swiper.rtlTranslate; 1692 1693 if (slides.length === 0) { return; } 1694 if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); } 1695 1696 var offsetCenter = -translate; 1697 if (rtl) { offsetCenter = translate; } 1698 1699 // Visible Slides 1700 slides.removeClass(params.slideVisibleClass); 1701 1702 for (var i = 0; i < slides.length; i += 1) { 1703 var slide = slides[i]; 1704 var slideProgress = ( 1705 (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset 1706 ) / (slide.swiperSlideSize + params.spaceBetween); 1707 if (params.watchSlidesVisibility) { 1708 var slideBefore = -(offsetCenter - slide.swiperSlideOffset); 1709 var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 1710 var isVisible = (slideBefore >= 0 && slideBefore < swiper.size) 1711 || (slideAfter > 0 && slideAfter <= swiper.size) 1712 || (slideBefore <= 0 && slideAfter >= swiper.size); 1713 if (isVisible) { 1714 slides.eq(i).addClass(params.slideVisibleClass); 1715 } 1716 } 1717 slide.progress = rtl ? -slideProgress : slideProgress; 1718 } 1719 } 1720 1721 function updateProgress (translate) { 1722 if ( translate === void 0 ) translate = (this && this.translate) || 0; 1723 1724 var swiper = this; 1725 var params = swiper.params;
vendor: 6,283 bytes, lines 1725-1888
1725 1726 1727 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 1728 var progress = swiper.progress; 1729 var isBeginning = swiper.isBeginning; 1730 var isEnd = swiper.isEnd; 1731 var wasBeginning = isBeginning; 1732 var wasEnd = isEnd; 1733 if (translatesDiff === 0) { 1734 progress = 0; 1735 isBeginning = true; 1736 isEnd = true; 1737 } else { 1738 progress = (translate - swiper.minTranslate()) / (translatesDiff); 1739 isBeginning = progress <= 0; 1740 isEnd = progress >= 1; 1741 } 1742 Utils.extend(swiper, { 1743 progress: progress, 1744 isBeginning: isBeginning, 1745 isEnd: isEnd, 1746 }); 1747 1748 if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); } 1749 1750 if (isBeginning && !wasBeginning) { 1751 swiper.emit('reachBeginning toEdge'); 1752 } 1753 if (isEnd && !wasEnd) { 1754 swiper.emit('reachEnd toEdge'); 1755 } 1756 if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { 1757 swiper.emit('fromEdge'); 1758 } 1759 1760 swiper.emit('progress', progress); 1761 } 1762 1763 function updateSlidesClasses () { 1764 var swiper = this; 1765 1766 var slides = swiper.slides; 1767 var params = swiper.params; 1768 var $wrapperEl = swiper.$wrapperEl; 1769 var activeIndex = swiper.activeIndex; 1770 var realIndex = swiper.realIndex; 1771 var isVirtual = swiper.virtual && params.virtual.enabled; 1772 1773 slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass))); 1774 1775 var activeSlide; 1776 if (isVirtual) { 1777 activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]")); 1778 } else { 1779 activeSlide = slides.eq(activeIndex); 1780 } 1781 1782 // Active classes 1783 activeSlide.addClass(params.slideActiveClass); 1784 1785 if (params.loop) { 1786 // Duplicate to all looped slides 1787 if (activeSlide.hasClass(params.slideDuplicateClass)) { 1788 $wrapperEl 1789 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]")) 1790 .addClass(params.slideDuplicateActiveClass); 1791 } else { 1792 $wrapperEl 1793 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]")) 1794 .addClass(params.slideDuplicateActiveClass); 1795 } 1796 } 1797 // Next Slide 1798 var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass); 1799 if (params.loop && nextSlide.length === 0) { 1800 nextSlide = slides.eq(0); 1801 nextSlide.addClass(params.slideNextClass); 1802 } 1803 // Prev Slide 1804 var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); 1805 if (params.loop && prevSlide.length === 0) { 1806 prevSlide = slides.eq(-1); 1807 prevSlide.addClass(params.slidePrevClass); 1808 } 1809 if (params.loop) { 1810 // Duplicate to all looped slides 1811 if (nextSlide.hasClass(params.slideDuplicateClass)) { 1812 $wrapperEl 1813 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 1814 .addClass(params.slideDuplicateNextClass); 1815 } else { 1816 $wrapperEl 1817 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 1818 .addClass(params.slideDuplicateNextClass); 1819 } 1820 if (prevSlide.hasClass(params.slideDuplicateClass)) { 1821 $wrapperEl 1822 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 1823 .addClass(params.slideDuplicatePrevClass); 1824 } else { 1825 $wrapperEl 1826 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 1827 .addClass(params.slideDuplicatePrevClass); 1828 } 1829 } 1830 } 1831 1832 function updateActiveIndex (newActiveIndex) { 1833 var swiper = this; 1834 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 1835 var slidesGrid = swiper.slidesGrid; 1836 var snapGrid = swiper.snapGrid; 1837 var params = swiper.params; 1838 var previousIndex = swiper.activeIndex; 1839 var previousRealIndex = swiper.realIndex; 1840 var previousSnapIndex = swiper.snapIndex; 1841 var activeIndex = newActiveIndex; 1842 var snapIndex; 1843 if (typeof activeIndex === 'undefined') { 1844 for (var i = 0; i < slidesGrid.length; i += 1) { 1845 if (typeof slidesGrid[i + 1] !== 'undefined') { 1846 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { 1847 activeIndex = i; 1848 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 1849 activeIndex = i + 1; 1850 } 1851 } else if (translate >= slidesGrid[i]) { 1852 activeIndex = i; 1853 } 1854 } 1855 // Normalize slideIndex 1856 if (params.normalizeSlideIndex) { 1857 if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; } 1858 } 1859 } 1860 if (snapGrid.indexOf(translate) >= 0) { 1861 snapIndex = snapGrid.indexOf(translate); 1862 } else { 1863 snapIndex = Math.floor(activeIndex / params.slidesPerGroup); 1864 } 1865 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 1866 if (activeIndex === previousIndex) { 1867 if (snapIndex !== previousSnapIndex) { 1868 swiper.snapIndex = snapIndex; 1869 swiper.emit('snapIndexChange'); 1870 } 1871 return; 1872 } 1873 1874 // Get real index 1875 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); 1876 1877 Utils.extend(swiper, { 1878 snapIndex: snapIndex, 1879 realIndex: realIndex, 1880 previousIndex: previousIndex, 1881 activeIndex: activeIndex, 1882 }); 1883 swiper.emit('activeIndexChange'); 1884 swiper.emit('snapIndexChange'); 1885 if (previousRealIndex !== realIndex) { 1886 swiper.emit('realIndexChange'); 1887 } 1888
1888swiper.emit('slideChange');
vendor: 27,205 bytes, lines 1888-2734
1888 1889 } 1890 1891 function updateClickedSlide (e) { 1892 var swiper = this; 1893 var params = swiper.params; 1894 var slide = $(e.target).closest(("." + (params.slideClass)))[0]; 1895 var slideFound = false; 1896 if (slide) { 1897 for (var i = 0; i < swiper.slides.length; i += 1) { 1898 if (swiper.slides[i] === slide) { slideFound = true; } 1899 } 1900 } 1901 1902 if (slide && slideFound) { 1903 swiper.clickedSlide = slide; 1904 if (swiper.virtual && swiper.params.virtual.enabled) { 1905 swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); 1906 } else { 1907 swiper.clickedIndex = $(slide).index(); 1908 } 1909 } else { 1910 swiper.clickedSlide = undefined; 1911 swiper.clickedIndex = undefined; 1912 return; 1913 } 1914 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 1915 swiper.slideToClickedSlide(); 1916 } 1917 } 1918 1919 var update = { 1920 updateSize: updateSize, 1921 updateSlides: updateSlides, 1922 updateAutoHeight: updateAutoHeight, 1923 updateSlidesOffset: updateSlidesOffset, 1924 updateSlidesProgress: updateSlidesProgress, 1925 updateProgress: updateProgress, 1926 updateSlidesClasses: updateSlidesClasses, 1927 updateActiveIndex: updateActiveIndex, 1928 updateClickedSlide: updateClickedSlide, 1929 }; 1930 1931 function getTranslate (axis) { 1932 if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y'; 1933 1934 var swiper = this; 1935 1936 var params = swiper.params; 1937 var rtl = swiper.rtlTranslate; 1938 var translate = swiper.translate; 1939 var $wrapperEl = swiper.$wrapperEl; 1940 1941 if (params.virtualTranslate) { 1942 return rtl ? -translate : translate; 1943 } 1944 1945 var currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 1946 if (rtl) { currentTranslate = -currentTranslate; } 1947 1948 return currentTranslate || 0; 1949 } 1950 1951 function setTranslate (translate, byController) { 1952 var swiper = this; 1953 var rtl = swiper.rtlTranslate; 1954 var params = swiper.params; 1955 var $wrapperEl = swiper.$wrapperEl; 1956 var progress = swiper.progress; 1957 var x = 0; 1958 var y = 0; 1959 var z = 0; 1960 1961 if (swiper.isHorizontal()) { 1962 x = rtl ? -translate : translate; 1963 } else { 1964 y = translate; 1965 } 1966 1967 if (params.roundLengths) { 1968 x = Math.floor(x); 1969 y = Math.floor(y); 1970 } 1971 1972 if (!params.virtualTranslate) { 1973 if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); } 1974 else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); } 1975 } 1976 swiper.previousTranslate = swiper.translate; 1977 swiper.translate = swiper.isHorizontal() ? x : y; 1978 1979 // Check if we need to update progress 1980 var newProgress; 1981 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 1982 if (translatesDiff === 0) { 1983 newProgress = 0; 1984 } else { 1985 newProgress = (translate - swiper.minTranslate()) / (translatesDiff); 1986 } 1987 if (newProgress !== progress) { 1988 swiper.updateProgress(translate); 1989 } 1990 1991 swiper.emit('setTranslate', swiper.translate, byController); 1992 } 1993 1994 function minTranslate () { 1995 return (-this.snapGrid[0]); 1996 } 1997 1998 function maxTranslate () { 1999 return (-this.snapGrid[this.snapGrid.length - 1]); 2000 } 2001 2002 var translate = { 2003 getTranslate: getTranslate, 2004 setTranslate: setTranslate, 2005 minTranslate: minTranslate, 2006 maxTranslate: maxTranslate, 2007 }; 2008 2009 function setTransition (duration, byController) { 2010 var swiper = this; 2011 2012 swiper.$wrapperEl.transition(duration); 2013 2014 swiper.emit('setTransition', duration, byController); 2015 } 2016 2017 function transitionStart (runCallbacks, direction) { 2018 if ( runCallbacks === void 0 ) runCallbacks = true; 2019 2020 var swiper = this; 2021 var activeIndex = swiper.activeIndex; 2022 var params = swiper.params; 2023 var previousIndex = swiper.previousIndex; 2024 if (params.autoHeight) { 2025 swiper.updateAutoHeight(); 2026 } 2027 2028 var dir = direction; 2029 if (!dir) { 2030 if (activeIndex > previousIndex) { dir = 'next'; } 2031 else if (activeIndex < previousIndex) { dir = 'prev'; } 2032 else { dir = 'reset'; } 2033 } 2034 2035 swiper.emit('transitionStart'); 2036 2037 if (runCallbacks && activeIndex !== previousIndex) { 2038 if (dir === 'reset') { 2039 swiper.emit('slideResetTransitionStart'); 2040 return; 2041 } 2042 swiper.emit('slideChangeTransitionStart'); 2043 if (dir === 'next') { 2044 swiper.emit('slideNextTransitionStart'); 2045 } else { 2046 swiper.emit('slidePrevTransitionStart'); 2047 } 2048 } 2049 } 2050 2051 function transitionEnd$1 (runCallbacks, direction) { 2052 if ( runCallbacks === void 0 ) runCallbacks = true; 2053 2054 var swiper = this; 2055 var activeIndex = swiper.activeIndex; 2056 var previousIndex = swiper.previousIndex; 2057 swiper.animating = false; 2058 swiper.setTransition(0); 2059 2060 var dir = direction; 2061 if (!dir) { 2062 if (activeIndex > previousIndex) { dir = 'next'; } 2063 else if (activeIndex < previousIndex) { dir = 'prev'; } 2064 else { dir = 'reset'; } 2065 } 2066 2067 swiper.emit('transitionEnd'); 2068 2069 if (runCallbacks && activeIndex !== previousIndex) { 2070 if (dir === 'reset') { 2071 swiper.emit('slideResetTransitionEnd'); 2072 return; 2073 } 2074 swiper.emit('slideChangeTransitionEnd'); 2075 if (dir === 'next') { 2076 swiper.emit('slideNextTransitionEnd'); 2077 } else { 2078 swiper.emit('slidePrevTransitionEnd'); 2079 } 2080 } 2081 } 2082 2083 var transition$1 = { 2084 setTransition: setTransition, 2085 transitionStart: transitionStart, 2086 transitionEnd: transitionEnd$1, 2087 }; 2088 2089 function slideTo (index, speed, runCallbacks, internal) { 2090 if ( index === void 0 ) index = 0; 2091 if ( speed === void 0 ) speed = this.params.speed; 2092 if ( runCallbacks === void 0 ) runCallbacks = true; 2093 2094 var swiper = this; 2095 var slideIndex = index; 2096 if (slideIndex < 0) { slideIndex = 0; } 2097 2098 var params = swiper.params; 2099 var snapGrid = swiper.snapGrid; 2100 var slidesGrid = swiper.slidesGrid; 2101 var previousIndex = swiper.previousIndex; 2102 var activeIndex = swiper.activeIndex; 2103 var rtl = swiper.rtlTranslate; 2104 if (swiper.animating && params.preventInteractionOnTransition) { 2105 return false; 2106 } 2107 2108 var snapIndex = Math.floor(slideIndex / params.slidesPerGroup); 2109 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 2110 2111 if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { 2112 swiper.emit('beforeSlideChangeStart'); 2113 } 2114 2115 var translate = -snapGrid[snapIndex]; 2116 2117 // Update progress 2118 swiper.updateProgress(translate); 2119 2120 // Normalize slideIndex 2121 if (params.normalizeSlideIndex) { 2122 for (var i = 0; i < slidesGrid.length; i += 1) { 2123 if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { 2124 slideIndex = i; 2125 } 2126 } 2127 } 2128 // Directions locks 2129 if (swiper.initialized && slideIndex !== activeIndex) { 2130 if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { 2131 return false; 2132 } 2133 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 2134 if ((activeIndex || 0) !== slideIndex) { return false; } 2135 } 2136 } 2137 2138 var direction; 2139 if (slideIndex > activeIndex) { direction = 'next'; } 2140 else if (slideIndex < activeIndex) { direction = 'prev'; } 2141 else { direction = 'reset'; } 2142 2143 2144 // Update Index 2145 if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { 2146 swiper.updateActiveIndex(slideIndex); 2147 // Update Height 2148 if (params.autoHeight) { 2149 swiper.updateAutoHeight(); 2150 } 2151 swiper.updateSlidesClasses(); 2152 if (params.effect !== 'slide') { 2153 swiper.setTranslate(translate); 2154 } 2155 if (direction !== 'reset') { 2156 swiper.transitionStart(runCallbacks, direction); 2157 swiper.transitionEnd(runCallbacks, direction); 2158 } 2159 return false; 2160 } 2161 2162 if (speed === 0 || !Support.transition) { 2163 swiper.setTransition(0); 2164 swiper.setTranslate(translate); 2165 swiper.updateActiveIndex(slideIndex); 2166 swiper.updateSlidesClasses(); 2167 swiper.emit('beforeTransitionStart', speed, internal); 2168 swiper.transitionStart(runCallbacks, direction); 2169 swiper.transitionEnd(runCallbacks, direction); 2170 } else { 2171 swiper.setTransition(speed); 2172 swiper.setTranslate(translate); 2173 swiper.updateActiveIndex(slideIndex); 2174 swiper.updateSlidesClasses(); 2175 swiper.emit('beforeTransitionStart', speed, internal); 2176 swiper.transitionStart(runCallbacks, direction); 2177 if (!swiper.animating) { 2178 swiper.animating = true; 2179 if (!swiper.onSlideToWrapperTransitionEnd) { 2180 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 2181 if (!swiper || swiper.destroyed) { return; } 2182 if (e.target !== this) { return; } 2183 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 2184 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 2185 swiper.onSlideToWrapperTransitionEnd = null; 2186 delete swiper.onSlideToWrapperTransitionEnd; 2187 swiper.transitionEnd(runCallbacks, direction); 2188 }; 2189 } 2190 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 2191 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 2192 } 2193 } 2194 2195 return true; 2196 } 2197 2198 function slideToLoop (index, speed, runCallbacks, internal) { 2199 if ( index === void 0 ) index = 0; 2200 if ( speed === void 0 ) speed = this.params.speed; 2201 if ( runCallbacks === void 0 ) runCallbacks = true; 2202 2203 var swiper = this; 2204 var newIndex = index; 2205 if (swiper.params.loop) { 2206 newIndex += swiper.loopedSlides; 2207 } 2208 2209 return swiper.slideTo(newIndex, speed, runCallbacks, internal); 2210 } 2211 2212 /* eslint no-unused-vars: "off" */ 2213 function slideNext (speed, runCallbacks, internal) { 2214 if ( speed === void 0 ) speed = this.params.speed; 2215 if ( runCallbacks === void 0 ) runCallbacks = true; 2216 2217 var swiper = this; 2218 var params = swiper.params; 2219 var animating = swiper.animating; 2220 if (params.loop) { 2221 if (animating) { return false; } 2222 swiper.loopFix(); 2223 // eslint-disable-next-line 2224 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 2225 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 2226 } 2227 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 2228 } 2229 2230 /* eslint no-unused-vars: "off" */ 2231 function slidePrev (speed, runCallbacks, internal) { 2232 if ( speed === void 0 ) speed = this.params.speed; 2233 if ( runCallbacks === void 0 ) runCallbacks = true; 2234 2235 var swiper = this; 2236 var params = swiper.params; 2237 var animating = swiper.animating; 2238 var snapGrid = swiper.snapGrid; 2239 var slidesGrid = swiper.slidesGrid; 2240 var rtlTranslate = swiper.rtlTranslate; 2241 2242 if (params.loop) { 2243 if (animating) { return false; } 2244 swiper.loopFix(); 2245 // eslint-disable-next-line 2246 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 2247 } 2248 var translate = rtlTranslate ? swiper.translate : -swiper.translate; 2249 function normalize(val) { 2250 if (val < 0) { return -Math.floor(Math.abs(val)); } 2251 return Math.floor(val); 2252 } 2253 var normalizedTranslate = normalize(translate); 2254 var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); }); 2255 var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); }); 2256 2257 var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; 2258 var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 2259 var prevIndex; 2260 if (typeof prevSnap !== 'undefined') { 2261 prevIndex = slidesGrid.indexOf(prevSnap); 2262 if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; } 2263 } 2264 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 2265 } 2266 2267 /* eslint no-unused-vars: "off" */ 2268 function slideReset (speed, runCallbacks, internal) { 2269 if ( speed === void 0 ) speed = this.params.speed; 2270 if ( runCallbacks === void 0 ) runCallbacks = true; 2271 2272 var swiper = this; 2273 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 2274 } 2275 2276 /* eslint no-unused-vars: "off" */ 2277 function slideToClosest (speed, runCallbacks, internal) { 2278 if ( speed === void 0 ) speed = this.params.speed; 2279 if ( runCallbacks === void 0 ) runCallbacks = true; 2280 2281 var swiper = this; 2282 var index = swiper.activeIndex; 2283 var snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 2284 2285 if (snapIndex < swiper.snapGrid.length - 1) { 2286 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 2287 2288 var currentSnap = swiper.snapGrid[snapIndex]; 2289 var nextSnap = swiper.snapGrid[snapIndex + 1]; 2290 2291 if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 2292 index = swiper.params.slidesPerGroup; 2293 } 2294 } 2295 2296 return swiper.slideTo(index, speed, runCallbacks, internal); 2297 } 2298 2299 function slideToClickedSlide () { 2300 var swiper = this; 2301 var params = swiper.params; 2302 var $wrapperEl = swiper.$wrapperEl; 2303 2304 var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 2305 var slideToIndex = swiper.clickedIndex; 2306 var realIndex; 2307 if (params.loop) { 2308 if (swiper.animating) { return; } 2309 realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); 2310 if (params.centeredSlides) { 2311 if ( 2312 (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) 2313 || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) 2314 ) { 2315 swiper.loopFix(); 2316 slideToIndex = $wrapperEl 2317 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 2318 .eq(0) 2319 .index(); 2320 2321 Utils.nextTick(function () { 2322 swiper.slideTo(slideToIndex); 2323 }); 2324 } else { 2325 swiper.slideTo(slideToIndex); 2326 } 2327 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 2328 swiper.loopFix(); 2329 slideToIndex = $wrapperEl 2330 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 2331 .eq(0) 2332 .index(); 2333 2334 Utils.nextTick(function () { 2335 swiper.slideTo(slideToIndex); 2336 }); 2337 } else { 2338 swiper.slideTo(slideToIndex); 2339 } 2340 } else { 2341 swiper.slideTo(slideToIndex); 2342 } 2343 } 2344 2345 var slide = { 2346 slideTo: slideTo, 2347 slideToLoop: slideToLoop, 2348 slideNext: slideNext, 2349 slidePrev: slidePrev, 2350 slideReset: slideReset, 2351 slideToClosest: slideToClosest, 2352 slideToClickedSlide: slideToClickedSlide, 2353 }; 2354 2355 function loopCreate () { 2356 var swiper = this; 2357 var params = swiper.params; 2358 var $wrapperEl = swiper.$wrapperEl; 2359 // Remove duplicated slides 2360 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); 2361 2362 var slides = $wrapperEl.children(("." + (params.slideClass))); 2363 2364 if (params.loopFillGroupWithBlank) { 2365 var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); 2366 if (blankSlidesNum !== params.slidesPerGroup) { 2367 for (var i = 0; i < blankSlidesNum; i += 1) { 2368 var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass))); 2369 $wrapperEl.append(blankNode); 2370 } 2371 slides = $wrapperEl.children(("." + (params.slideClass))); 2372 } 2373 } 2374 2375 if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; } 2376 2377 swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10); 2378 swiper.loopedSlides += params.loopAdditionalSlides; 2379 if (swiper.loopedSlides > slides.length) { 2380 swiper.loopedSlides = slides.length; 2381 } 2382 2383 var prependSlides = []; 2384 var appendSlides = []; 2385 slides.each(function (index, el) { 2386 var slide = $(el); 2387 if (index < swiper.loopedSlides) { appendSlides.push(el); } 2388 if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); } 2389 slide.attr('data-swiper-slide-index', index); 2390 }); 2391 for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) { 2392 $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass)); 2393 } 2394 for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) { 2395 $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); 2396 } 2397 } 2398 2399 function loopFix () { 2400 var swiper = this; 2401 var params = swiper.params; 2402 var activeIndex = swiper.activeIndex; 2403 var slides = swiper.slides; 2404 var loopedSlides = swiper.loopedSlides; 2405 var allowSlidePrev = swiper.allowSlidePrev; 2406 var allowSlideNext = swiper.allowSlideNext; 2407 var snapGrid = swiper.snapGrid; 2408 var rtl = swiper.rtlTranslate; 2409 var newIndex; 2410 swiper.allowSlidePrev = true; 2411 swiper.allowSlideNext = true; 2412 2413 var snapTranslate = -snapGrid[activeIndex]; 2414 var diff = snapTranslate - swiper.getTranslate(); 2415 2416 2417 // Fix For Negative Oversliding 2418 if (activeIndex < loopedSlides) { 2419 newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; 2420 newIndex += loopedSlides; 2421 var slideChanged = swiper.slideTo(newIndex, 0, false, true); 2422 if (slideChanged && diff !== 0) { 2423 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 2424 } 2425 } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) { 2426 // Fix For Positive Oversliding 2427 newIndex = -slides.length + activeIndex + loopedSlides; 2428 newIndex += loopedSlides; 2429 var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true); 2430 if (slideChanged$1 && diff !== 0) { 2431 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 2432 } 2433 } 2434 swiper.allowSlidePrev = allowSlidePrev; 2435 swiper.allowSlideNext = allowSlideNext; 2436 } 2437 2438 function loopDestroy () { 2439 var swiper = this; 2440 var $wrapperEl = swiper.$wrapperEl; 2441 var params = swiper.params; 2442 var slides = swiper.slides; 2443 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); 2444 slides.removeAttr('data-swiper-slide-index'); 2445 } 2446 2447 var loop = { 2448 loopCreate: loopCreate, 2449 loopFix: loopFix, 2450 loopDestroy: loopDestroy, 2451 }; 2452 2453 function setGrabCursor (moving) { 2454 var swiper = this; 2455 if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 2456 var el = swiper.el; 2457 el.style.cursor = 'move'; 2458 el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 2459 el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 2460 el.style.cursor = moving ? 'grabbing' : 'grab'; 2461 } 2462 2463 function unsetGrabCursor () { 2464 var swiper = this; 2465 if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 2466 swiper.el.style.cursor = ''; 2467 } 2468 2469 var grabCursor = { 2470 setGrabCursor: setGrabCursor, 2471 unsetGrabCursor: unsetGrabCursor, 2472 }; 2473 2474 function appendSlide (slides) { 2475 var swiper = this; 2476 var $wrapperEl = swiper.$wrapperEl; 2477 var params = swiper.params; 2478 if (params.loop) { 2479 swiper.loopDestroy(); 2480 } 2481 if (typeof slides === 'object' && 'length' in slides) { 2482 for (var i = 0; i < slides.length; i += 1) { 2483 if (slides[i]) { $wrapperEl.append(slides[i]); } 2484 } 2485 } else { 2486 $wrapperEl.append(slides); 2487 } 2488 if (params.loop) { 2489 swiper.loopCreate(); 2490 } 2491 if (!(params.observer && Support.observer)) { 2492 swiper.update(); 2493 } 2494 } 2495 2496 function prependSlide (slides) { 2497 var swiper = this; 2498 var params = swiper.params; 2499 var $wrapperEl = swiper.$wrapperEl; 2500 var activeIndex = swiper.activeIndex; 2501 2502 if (params.loop) { 2503 swiper.loopDestroy(); 2504 } 2505 var newActiveIndex = activeIndex + 1; 2506 if (typeof slides === 'object' && 'length' in slides) { 2507 for (var i = 0; i < slides.length; i += 1) { 2508 if (slides[i]) { $wrapperEl.prepend(slides[i]); } 2509 } 2510 newActiveIndex = activeIndex + slides.length; 2511 } else { 2512 $wrapperEl.prepend(slides); 2513 } 2514 if (params.loop) { 2515 swiper.loopCreate(); 2516 } 2517 if (!(params.observer && Support.observer)) { 2518 swiper.update(); 2519 } 2520 swiper.slideTo(newActiveIndex, 0, false); 2521 } 2522 2523 function addSlide (index, slides) { 2524 var swiper = this; 2525 var $wrapperEl = swiper.$wrapperEl; 2526 var params = swiper.params; 2527 var activeIndex = swiper.activeIndex; 2528 var activeIndexBuffer = activeIndex; 2529 if (params.loop) { 2530 activeIndexBuffer -= swiper.loopedSlides; 2531 swiper.loopDestroy(); 2532 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 2533 } 2534 var baseLength = swiper.slides.length; 2535 if (index <= 0) { 2536 swiper.prependSlide(slides); 2537 return; 2538 } 2539 if (index >= baseLength) { 2540 swiper.appendSlide(slides); 2541 return; 2542 } 2543 var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 2544 2545 var slidesBuffer = []; 2546 for (var i = baseLength - 1; i >= index; i -= 1) { 2547 var currentSlide = swiper.slides.eq(i); 2548 currentSlide.remove(); 2549 slidesBuffer.unshift(currentSlide); 2550 } 2551 2552 if (typeof slides === 'object' && 'length' in slides) { 2553 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 2554 if (slides[i$1]) { $wrapperEl.append(slides[i$1]); } 2555 } 2556 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 2557 } else { 2558 $wrapperEl.append(slides); 2559 } 2560 2561 for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) { 2562 $wrapperEl.append(slidesBuffer[i$2]); 2563 } 2564 2565 if (params.loop) { 2566 swiper.loopCreate(); 2567 } 2568 if (!(params.observer && Support.observer)) { 2569 swiper.update(); 2570 } 2571 if (params.loop) { 2572 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2573 } else { 2574 swiper.slideTo(newActiveIndex, 0, false); 2575 } 2576 } 2577 2578 function removeSlide (slidesIndexes) { 2579 var swiper = this; 2580 var params = swiper.params; 2581 var $wrapperEl = swiper.$wrapperEl; 2582 var activeIndex = swiper.activeIndex; 2583 2584 var activeIndexBuffer = activeIndex; 2585 if (params.loop) { 2586 activeIndexBuffer -= swiper.loopedSlides; 2587 swiper.loopDestroy(); 2588 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 2589 } 2590 var newActiveIndex = activeIndexBuffer; 2591 var indexToRemove; 2592 2593 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 2594 for (var i = 0; i < slidesIndexes.length; i += 1) { 2595 indexToRemove = slidesIndexes[i]; 2596 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 2597 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 2598 } 2599 newActiveIndex = Math.max(newActiveIndex, 0); 2600 } else { 2601 indexToRemove = slidesIndexes; 2602 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 2603 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 2604 newActiveIndex = Math.max(newActiveIndex, 0); 2605 } 2606 2607 if (params.loop) { 2608 swiper.loopCreate(); 2609 } 2610 2611 if (!(params.observer && Support.observer)) { 2612 swiper.update(); 2613 } 2614 if (params.loop) { 2615 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 2616 } else { 2617 swiper.slideTo(newActiveIndex, 0, false); 2618 } 2619 } 2620 2621 function removeAllSlides () { 2622 var swiper = this; 2623 2624 var slidesIndexes = []; 2625 for (var i = 0; i < swiper.slides.length; i += 1) { 2626 slidesIndexes.push(i); 2627 } 2628 swiper.removeSlide(slidesIndexes); 2629 } 2630 2631 var manipulation = { 2632 appendSlide: appendSlide, 2633 prependSlide: prependSlide, 2634 addSlide: addSlide, 2635 removeSlide: removeSlide, 2636 removeAllSlides: removeAllSlides, 2637 }; 2638 2639 var Device = (function Device() { 2640 var ua = win.navigator.userAgent; 2641 2642 var device = { 2643 ios: false, 2644 android: false, 2645 androidChrome: false, 2646 desktop: false, 2647 windows: false, 2648 iphone: false, 2649 ipod: false, 2650 ipad: false, 2651 cordova: win.cordova || win.phonegap, 2652 phonegap: win.cordova || win.phonegap, 2653 }; 2654 2655 var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line 2656 var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 2657 var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 2658 var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 2659 var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 2660 2661 2662 // Windows 2663 if (windows) { 2664 device.os = 'windows'; 2665 device.osVersion = windows[2]; 2666 device.windows = true; 2667 } 2668 // Android 2669 if (android && !windows) { 2670 device.os = 'android'; 2671 device.osVersion = android[2]; 2672 device.android = true; 2673 device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; 2674 } 2675 if (ipad || iphone || ipod) { 2676 device.os = 'ios'; 2677 device.ios = true; 2678 } 2679 // iOS 2680 if (iphone && !ipod) { 2681 device.osVersion = iphone[2].replace(/_/g, '.'); 2682 device.iphone = true; 2683 } 2684 if (ipad) { 2685 device.osVersion = ipad[2].replace(/_/g, '.'); 2686 device.ipad = true; 2687 } 2688 if (ipod) { 2689 device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; 2690 device.iphone = true; 2691 } 2692 // iOS 8+ changed UA 2693 if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { 2694 if (device.osVersion.split('.')[0] === '10') { 2695 device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; 2696 } 2697 } 2698 2699 // Desktop 2700 device.desktop = !(device.os || device.android || device.webView); 2701 2702 // Webview 2703 device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i); 2704 2705 // Minimal UI 2706 if (device.os && device.os === 'ios') { 2707 var osVersionArr = device.osVersion.split('.'); 2708 var metaViewport = doc.querySelector('meta[name="viewport"]'); 2709 device.minimalUi = !device.webView 2710 && (ipod || iphone) 2711 && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) 2712 && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0; 2713 } 2714 2715 // Pixel Ratio 2716 device.pixelRatio = win.devicePixelRatio || 1; 2717 2718 // Export object 2719 return device; 2720 }()); 2721 2722 function onTouchStart (event) { 2723 var swiper = this; 2724 var data = swiper.touchEventsData; 2725 var params = swiper.params; 2726 var touches = swiper.touches; 2727 if (swiper.animating && params.preventInteractionOnTransition) { 2728 return; 2729 } 2730 var e = event; 2731 if (e.originalEvent) { e = e.originalEvent; } 2732 data.isTouchEvent = e.type === 'touchstart'; 2733 if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; } 2734 if (
vendor: 5,338 bytes, lines 2734-2893
2734data.isTouched && data.isMoved) { return; } 2735 if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) { 2736 swiper.allowClick = true; 2737 return; 2738 } 2739 if (params.swipeHandler) { 2740 if (!$(e).closest(params.swipeHandler)[0]) { return; } 2741 } 2742 2743 touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 2744 touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 2745 var startX = touches.currentX; 2746 var startY = touches.currentY; 2747 2748 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore 2749 2750 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; 2751 var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; 2752 if ( 2753 edgeSwipeDetection 2754 && ((startX <= edgeSwipeThreshold) 2755 || (startX >= win.screen.width - edgeSwipeThreshold)) 2756 ) { 2757 return; 2758 } 2759 2760 Utils.extend(data, { 2761 isTouched: true, 2762 isMoved: false, 2763 allowTouchCallbacks: true, 2764 isScrolling: undefined, 2765 startMoving: undefined, 2766 }); 2767 2768 touches.startX = startX; 2769 touches.startY = startY; 2770 data.touchStartTime = Utils.now(); 2771 swiper.allowClick = true; 2772 swiper.updateSize(); 2773 swiper.swipeDirection = undefined; 2774 if (params.threshold > 0) { data.allowThresholdMove = false; } 2775 if (e.type !== 'touchstart') { 2776 var preventDefault = true; 2777 if ($(e.target).is(data.formElements)) { preventDefault = false; } 2778 if ( 2779 doc.activeElement 2780 && $(doc.activeElement).is(data.formElements) 2781 && doc.activeElement !== e.target 2782 ) { 2783 doc.activeElement.blur(); 2784 } 2785 if (preventDefault && swiper.allowTouchMove) { 2786 e.preventDefault(); 2787 } 2788 } 2789 swiper.emit('touchStart', e); 2790 } 2791 2792 function onTouchMove (event) { 2793 var swiper = this; 2794 var data = swiper.touchEventsData; 2795 var params = swiper.params; 2796 var touches = swiper.touches; 2797 var rtl = swiper.rtlTranslate; 2798 var e = event; 2799 if (e.originalEvent) { e = e.originalEvent; } 2800 if (!data.isTouched) { 2801 if (data.startMoving && data.isScrolling) { 2802 swiper.emit('touchMoveOpposite', e); 2803 } 2804 return; 2805 } 2806 if (data.isTouchEvent && e.type === 'mousemove') { return; } 2807 var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 2808 var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 2809 if (e.preventedByNestedSwiper) { 2810 touches.startX = pageX; 2811 touches.startY = pageY; 2812 return; 2813 } 2814 if (!swiper.allowTouchMove) { 2815 // isMoved = true; 2816 swiper.allowClick = false; 2817 if (data.isTouched) { 2818 Utils.extend(touches, { 2819 startX: pageX, 2820 startY: pageY, 2821 currentX: pageX, 2822 currentY: pageY, 2823 }); 2824 data.touchStartTime = Utils.now(); 2825 } 2826 return; 2827 } 2828 if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { 2829 if (swiper.isVertical()) { 2830 // Vertical 2831 if ( 2832 (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) 2833 || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) 2834 ) { 2835 data.isTouched = false; 2836 data.isMoved = false; 2837 return; 2838 } 2839 } else if ( 2840 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) 2841 || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) 2842 ) { 2843 return; 2844 } 2845 } 2846 if (data.isTouchEvent && doc.activeElement) { 2847 if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { 2848 data.isMoved = true; 2849 swiper.allowClick = false; 2850 return; 2851 } 2852 } 2853 if (data.allowTouchCallbacks) { 2854 swiper.emit('touchMove', e); 2855 } 2856 if (e.targetTouches && e.targetTouches.length > 1) { return; } 2857 2858 touches.currentX = pageX; 2859 touches.currentY = pageY; 2860 2861 var diffX = touches.currentX - touches.startX; 2862 var diffY = touches.currentY - touches.startY; 2863 if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; } 2864 2865 if (typeof data.isScrolling === 'undefined') { 2866 var touchAngle; 2867 if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { 2868 data.isScrolling = false; 2869 } else { 2870 // eslint-disable-next-line 2871 if ((diffX * diffX) + (diffY * diffY) >= 25) { 2872 touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; 2873 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); 2874 } 2875 } 2876 } 2877 if (data.isScrolling) { 2878 swiper.emit('touchMoveOpposite', e); 2879 } 2880 if (typeof data.startMoving === 'undefined') { 2881 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 2882 data.startMoving = true; 2883 } 2884 } 2885 if (data.isScrolling) { 2886 data.isTouched = false; 2887 return; 2888 } 2889 if (!data.startMoving) { 2890 return; 2891 } 2892 swiper.allowClick = false; 2893 e.preventDefault();
vendor: 14,334 bytes, lines 2893-3308
2893 2894 if (params.touchMoveStopPropagation && !params.nested) { 2895 e.stopPropagation(); 2896 } 2897 2898 if (!data.isMoved) { 2899 if (params.loop) { 2900 swiper.loopFix(); 2901 } 2902 data.startTranslate = swiper.getTranslate(); 2903 swiper.setTransition(0); 2904 if (swiper.animating) { 2905 swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); 2906 } 2907 data.allowMomentumBounce = false; 2908 // Grab Cursor 2909 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 2910 swiper.setGrabCursor(true); 2911 } 2912 swiper.emit('sliderFirstMove', e); 2913 } 2914 swiper.emit('sliderMove', e); 2915 data.isMoved = true; 2916 2917 var diff = swiper.isHorizontal() ? diffX : diffY; 2918 touches.diff = diff; 2919 2920 diff *= params.touchRatio; 2921 if (rtl) { diff = -diff; } 2922 2923 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 2924 data.currentTranslate = diff + data.startTranslate; 2925 2926 var disableParentSwiper = true; 2927 var resistanceRatio = params.resistanceRatio; 2928 if (params.touchReleaseOnEdges) { 2929 resistanceRatio = 0; 2930 } 2931 if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { 2932 disableParentSwiper = false; 2933 if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); } 2934 } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { 2935 disableParentSwiper = false; 2936 if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); } 2937 } 2938 2939 if (disableParentSwiper) { 2940 e.preventedByNestedSwiper = true; 2941 } 2942 2943 // Directions locks 2944 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 2945 data.currentTranslate = data.startTranslate; 2946 } 2947 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 2948 data.currentTranslate = data.startTranslate; 2949 } 2950 2951 2952 // Threshold 2953 if (params.threshold > 0) { 2954 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 2955 if (!data.allowThresholdMove) { 2956 data.allowThresholdMove = true; 2957 touches.startX = touches.currentX; 2958 touches.startY = touches.currentY; 2959 data.currentTranslate = data.startTranslate; 2960 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 2961 return; 2962 } 2963 } else { 2964 data.currentTranslate = data.startTranslate; 2965 return; 2966 } 2967 } 2968 2969 if (!params.followFinger) { return; } 2970 2971 // Update active index in free mode 2972 if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { 2973 swiper.updateActiveIndex(); 2974 swiper.updateSlidesClasses(); 2975 } 2976 if (params.freeMode) { 2977 // Velocity 2978 if (data.velocities.length === 0) { 2979 data.velocities.push({ 2980 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 2981 time: data.touchStartTime, 2982 }); 2983 } 2984 data.velocities.push({ 2985 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 2986 time: Utils.now(), 2987 }); 2988 } 2989 // Update progress 2990 swiper.updateProgress(data.currentTranslate); 2991 // Update translate 2992 swiper.setTranslate(data.currentTranslate); 2993 } 2994 2995 function onTouchEnd (event) { 2996 var swiper = this; 2997 var data = swiper.touchEventsData; 2998 2999 var params = swiper.params; 3000 var touches = swiper.touches; 3001 var rtl = swiper.rtlTranslate; 3002 var $wrapperEl = swiper.$wrapperEl; 3003 var slidesGrid = swiper.slidesGrid; 3004 var snapGrid = swiper.snapGrid; 3005 var e = event; 3006 if (e.originalEvent) { e = e.originalEvent; } 3007 if (data.allowTouchCallbacks) { 3008 swiper.emit('touchEnd', e); 3009 } 3010 data.allowTouchCallbacks = false; 3011 if (!data.isTouched) { 3012 if (data.isMoved && params.grabCursor) { 3013 swiper.setGrabCursor(false); 3014 } 3015 data.isMoved = false; 3016 data.startMoving = false; 3017 return; 3018 } 3019 // Return Grab Cursor 3020 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 3021 swiper.setGrabCursor(false); 3022 } 3023 3024 // Time diff 3025 var touchEndTime = Utils.now(); 3026 var timeDiff = touchEndTime - data.touchStartTime; 3027 3028 // Tap, doubleTap, Click 3029 if (swiper.allowClick) { 3030 swiper.updateClickedSlide(e); 3031 swiper.emit('tap', e); 3032 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) { 3033 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 3034 data.clickTimeout = Utils.nextTick(function () { 3035 if (!swiper || swiper.destroyed) { return; } 3036 swiper.emit('click', e); 3037 }, 300); 3038 } 3039 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { 3040 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 3041 swiper.emit('doubleTap', e); 3042 } 3043 } 3044 3045 data.lastClickTime = Utils.now(); 3046 Utils.nextTick(function () { 3047 if (!swiper.destroyed) { swiper.allowClick = true; } 3048 }); 3049 3050 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { 3051 data.isTouched = false; 3052 data.isMoved = false; 3053 data.startMoving = false; 3054 return; 3055 } 3056 data.isTouched = false; 3057 data.isMoved = false; 3058 data.startMoving = false; 3059 3060 var currentPos; 3061 if (params.followFinger) { 3062 currentPos = rtl ? swiper.translate : -swiper.translate; 3063 } else { 3064 currentPos = -data.currentTranslate; 3065 } 3066 3067 if (params.freeMode) { 3068 if (currentPos < -swiper.minTranslate()) { 3069 swiper.slideTo(swiper.activeIndex); 3070 return; 3071 } 3072 if (currentPos > -swiper.maxTranslate()) { 3073 if (swiper.slides.length < snapGrid.length) { 3074 swiper.slideTo(snapGrid.length - 1); 3075 } else { 3076 swiper.slideTo(swiper.slides.length - 1); 3077 } 3078 return; 3079 } 3080 3081 if (params.freeModeMomentum) { 3082 if (data.velocities.length > 1) { 3083 var lastMoveEvent = data.velocities.pop(); 3084 var velocityEvent = data.velocities.pop(); 3085 3086 var distance = lastMoveEvent.position - velocityEvent.position; 3087 var time = lastMoveEvent.time - velocityEvent.time; 3088 swiper.velocity = distance / time; 3089 swiper.velocity /= 2; 3090 if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { 3091 swiper.velocity = 0; 3092 } 3093 // this implies that the user stopped moving a finger then released. 3094 // There would be no events with distance zero, so the last event is stale. 3095 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { 3096 swiper.velocity = 0; 3097 } 3098 } else { 3099 swiper.velocity = 0; 3100 } 3101 swiper.velocity *= params.freeModeMomentumVelocityRatio; 3102 3103 data.velocities.length = 0; 3104 var momentumDuration = 1000 * params.freeModeMomentumRatio; 3105 var momentumDistance = swiper.velocity * momentumDuration; 3106 3107 var newPosition = swiper.translate + momentumDistance; 3108 if (rtl) { newPosition = -newPosition; } 3109 3110 var doBounce = false; 3111 var afterBouncePosition; 3112 var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; 3113 var needsLoopFix; 3114 if (newPosition < swiper.maxTranslate()) { 3115 if (params.freeModeMomentumBounce) { 3116 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 3117 newPosition = swiper.maxTranslate() - bounceAmount; 3118 } 3119 afterBouncePosition = swiper.maxTranslate(); 3120 doBounce = true; 3121 data.allowMomentumBounce = true; 3122 } else { 3123 newPosition = swiper.maxTranslate(); 3124 } 3125 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 3126 } else if (newPosition > swiper.minTranslate()) { 3127 if (params.freeModeMomentumBounce) { 3128 if (newPosition - swiper.minTranslate() > bounceAmount) { 3129 newPosition = swiper.minTranslate() + bounceAmount; 3130 } 3131 afterBouncePosition = swiper.minTranslate(); 3132 doBounce = true; 3133 data.allowMomentumBounce = true; 3134 } else { 3135 newPosition = swiper.minTranslate(); 3136 } 3137 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 3138 } else if (params.freeModeSticky) { 3139 var nextSlide; 3140 for (var j = 0; j < snapGrid.length; j += 1) { 3141 if (snapGrid[j] > -newPosition) { 3142 nextSlide = j; 3143 break; 3144 } 3145 } 3146 3147 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 3148 newPosition = snapGrid[nextSlide]; 3149 } else { 3150 newPosition = snapGrid[nextSlide - 1]; 3151 } 3152 newPosition = -newPosition; 3153 } 3154 if (needsLoopFix) { 3155 swiper.once('transitionEnd', function () { 3156 swiper.loopFix(); 3157 }); 3158 } 3159 // Fix duration 3160 if (swiper.velocity !== 0) { 3161 if (rtl) { 3162 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 3163 } else { 3164 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 3165 } 3166 } else if (params.freeModeSticky) { 3167 swiper.slideToClosest(); 3168 return; 3169 } 3170 3171 if (params.freeModeMomentumBounce && doBounce) { 3172 swiper.updateProgress(afterBouncePosition); 3173 swiper.setTransition(momentumDuration); 3174 swiper.setTranslate(newPosition); 3175 swiper.transitionStart(true, swiper.swipeDirection); 3176 swiper.animating = true; 3177 $wrapperEl.transitionEnd(function () { 3178 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; } 3179 swiper.emit('momentumBounce'); 3180 3181 swiper.setTransition(params.speed); 3182 swiper.setTranslate(afterBouncePosition); 3183 $wrapperEl.transitionEnd(function () { 3184 if (!swiper || swiper.destroyed) { return; } 3185 swiper.transitionEnd(); 3186 }); 3187 }); 3188 } else if (swiper.velocity) { 3189 swiper.updateProgress(newPosition); 3190 swiper.setTransition(momentumDuration); 3191 swiper.setTranslate(newPosition); 3192 swiper.transitionStart(true, swiper.swipeDirection); 3193 if (!swiper.animating) { 3194 swiper.animating = true; 3195 $wrapperEl.transitionEnd(function () { 3196 if (!swiper || swiper.destroyed) { return; } 3197 swiper.transitionEnd(); 3198 }); 3199 } 3200 } else { 3201 swiper.updateProgress(newPosition); 3202 } 3203 3204 swiper.updateActiveIndex(); 3205 swiper.updateSlidesClasses(); 3206 } else if (params.freeModeSticky) { 3207 swiper.slideToClosest(); 3208 return; 3209 } 3210 3211 if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { 3212 swiper.updateProgress(); 3213 swiper.updateActiveIndex(); 3214 swiper.updateSlidesClasses(); 3215 } 3216 return; 3217 } 3218 3219 // Find current slide 3220 var stopIndex = 0; 3221 var groupSize = swiper.slidesSizesGrid[0]; 3222 for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) { 3223 if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') { 3224 if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) { 3225 stopIndex = i; 3226 groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i]; 3227 } 3228 } else if (currentPos >= slidesGrid[i]) { 3229 stopIndex = i; 3230 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 3231 } 3232 } 3233 3234 // Find current slide size 3235 var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 3236 3237 if (timeDiff > params.longSwipesMs) { 3238 // Long touches 3239 if (!params.longSwipes) { 3240 swiper.slideTo(swiper.activeIndex); 3241 return; 3242 } 3243 if (swiper.swipeDirection === 'next') { 3244 if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 3245 else { swiper.slideTo(stopIndex); } 3246 } 3247 if (swiper.swipeDirection === 'prev') { 3248 if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 3249 else { swiper.slideTo(stopIndex); } 3250 } 3251 } else { 3252 // Short swipes 3253 if (!params.shortSwipes) { 3254 swiper.slideTo(swiper.activeIndex); 3255 return; 3256 } 3257 if (swiper.swipeDirection === 'next') { 3258 swiper.slideTo(stopIndex + params.slidesPerGroup); 3259 } 3260 if (swiper.swipeDirection === 'prev') { 3261 swiper.slideTo(stopIndex); 3262 } 3263 } 3264 } 3265 3266 function onResize () { 3267 var swiper = this; 3268 3269 var params = swiper.params; 3270 var el = swiper.el; 3271 3272 if (el && el.offsetWidth === 0) { return; } 3273 3274 // Breakpoints 3275 if (params.breakpoints) { 3276 swiper.setBreakpoint(); 3277 } 3278 3279 // Save locks 3280 var allowSlideNext = swiper.allowSlideNext; 3281 var allowSlidePrev = swiper.allowSlidePrev; 3282 var snapGrid = swiper.snapGrid; 3283 3284 // Disable locks on resize 3285 swiper.allowSlideNext = true; 3286 swiper.allowSlidePrev = true; 3287 3288 swiper.updateSize(); 3289 swiper.updateSlides(); 3290 3291 if (params.freeMode) { 3292 var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate()); 3293 swiper.setTranslate(newTranslate); 3294 swiper.updateActiveIndex(); 3295 swiper.updateSlidesClasses(); 3296 3297 if (params.autoHeight) { 3298 swiper.updateAutoHeight(); 3299 } 3300 } else { 3301 swiper.updateSlidesClasses(); 3302 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 3303 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 3304 } else { 3305 swiper.slideTo(swiper.activeIndex, 0, false, true); 3306 } 3307 } 3308
vendor: 39,693 bytes, lines 3308-4589
3308// Return locks after resize 3309 swiper.allowSlidePrev = allowSlidePrev; 3310 swiper.allowSlideNext = allowSlideNext; 3311 3312 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 3313 swiper.checkOverflow(); 3314 } 3315 } 3316 3317 function onClick (e) { 3318 var swiper = this; 3319 if (!swiper.allowClick) { 3320 if (swiper.params.preventClicks) { e.preventDefault(); } 3321 if (swiper.params.preventClicksPropagation && swiper.animating) { 3322 e.stopPropagation(); 3323 e.stopImmediatePropagation(); 3324 } 3325 } 3326 } 3327 3328 function attachEvents() { 3329 var swiper = this; 3330 var params = swiper.params; 3331 var touchEvents = swiper.touchEvents; 3332 var el = swiper.el; 3333 var wrapperEl = swiper.wrapperEl; 3334 3335 { 3336 swiper.onTouchStart = onTouchStart.bind(swiper); 3337 swiper.onTouchMove = onTouchMove.bind(swiper); 3338 swiper.onTouchEnd = onTouchEnd.bind(swiper); 3339 } 3340 3341 swiper.onClick = onClick.bind(swiper); 3342 3343 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 3344 var capture = !!params.nested; 3345 3346 // Touch Events 3347 { 3348 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 3349 target.addEventListener(touchEvents.start, swiper.onTouchStart, false); 3350 doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); 3351 doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); 3352 } else { 3353 if (Support.touch) { 3354 var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 3355 target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 3356 target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture); 3357 target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 3358 } 3359 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 3360 target.addEventListener('mousedown', swiper.onTouchStart, false); 3361 doc.addEventListener('mousemove', swiper.onTouchMove, capture); 3362 doc.addEventListener('mouseup', swiper.onTouchEnd, false); 3363 } 3364 } 3365 // Prevent Links Clicks 3366 if (params.preventClicks || params.preventClicksPropagation) { 3367 target.addEventListener('click', swiper.onClick, true); 3368 } 3369 } 3370 3371 // Resize handler 3372 swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); 3373 } 3374 3375 function detachEvents() { 3376 var swiper = this; 3377 3378 var params = swiper.params; 3379 var touchEvents = swiper.touchEvents; 3380 var el = swiper.el; 3381 var wrapperEl = swiper.wrapperEl; 3382 3383 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 3384 var capture = !!params.nested; 3385 3386 // Touch Events 3387 { 3388 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 3389 target.removeEventListener(touchEvents.start, swiper.onTouchStart, false); 3390 doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 3391 doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); 3392 } else { 3393 if (Support.touch) { 3394 var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 3395 target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 3396 target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 3397 target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 3398 } 3399 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 3400 target.removeEventListener('mousedown', swiper.onTouchStart, false); 3401 doc.removeEventListener('mousemove', swiper.onTouchMove, capture); 3402 doc.removeEventListener('mouseup', swiper.onTouchEnd, false); 3403 } 3404 } 3405 // Prevent Links Clicks 3406 if (params.preventClicks || params.preventClicksPropagation) { 3407 target.removeEventListener('click', swiper.onClick, true); 3408 } 3409 } 3410 3411 // Resize handler 3412 swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); 3413 } 3414 3415 var events = { 3416 attachEvents: attachEvents, 3417 detachEvents: detachEvents, 3418 }; 3419 3420 function setBreakpoint () { 3421 var swiper = this; 3422 var activeIndex = swiper.activeIndex; 3423 var initialized = swiper.initialized; 3424 var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0; 3425 var params = swiper.params; 3426 var breakpoints = params.breakpoints; 3427 if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; } 3428 // Set breakpoint for window width and update parameters 3429 var breakpoint = swiper.getBreakpoint(breakpoints); 3430 if (breakpoint && swiper.currentBreakpoint !== breakpoint) { 3431 var breakPointsParams = breakpoint in breakpoints ? breakpoints[breakpoint] : swiper.originalParams; 3432 var needsReLoop = params.loop && (breakPointsParams.slidesPerView !== params.slidesPerView); 3433 3434 Utils.extend(swiper.params, breakPointsParams); 3435 3436 Utils.extend(swiper, { 3437 allowTouchMove: swiper.params.allowTouchMove, 3438 allowSlideNext: swiper.params.allowSlideNext, 3439 allowSlidePrev: swiper.params.allowSlidePrev, 3440 }); 3441 3442 swiper.currentBreakpoint = breakpoint; 3443 3444 if (needsReLoop && initialized) { 3445 swiper.loopDestroy(); 3446 swiper.loopCreate(); 3447 swiper.updateSlides(); 3448 swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); 3449 } 3450 swiper.emit('breakpoint', breakPointsParams); 3451 } 3452 } 3453 3454 function getBreakpoint (breakpoints) { 3455 // Get breakpoint for window width 3456 if (!breakpoints) { return undefined; } 3457 var breakpoint = false; 3458 var points = []; 3459 Object.keys(breakpoints).forEach(function (point) { 3460 points.push(point); 3461 }); 3462 points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); }); 3463 for (var i = 0; i < points.length; i += 1) { 3464 var point = points[i]; 3465 if (point >= win.innerWidth && !breakpoint) { 3466 breakpoint = point; 3467 } 3468 } 3469 return breakpoint || 'max'; 3470 } 3471 3472 var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; 3473 3474 var Browser = (function Browser() { 3475 function isSafari() { 3476 var ua = win.navigator.userAgent.toLowerCase(); 3477 return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 3478 } 3479 return { 3480 isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g), 3481 isSafari: isSafari(), 3482 isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), 3483 }; 3484 }()); 3485 3486 function addClasses () { 3487 var swiper = this; 3488 var classNames = swiper.classNames; 3489 var params = swiper.params; 3490 var rtl = swiper.rtl; 3491 var $el = swiper.$el; 3492 var suffixes = []; 3493 3494 suffixes.push(params.direction); 3495 3496 if (params.freeMode) { 3497 suffixes.push('free-mode'); 3498 } 3499 if (!Support.flexbox) { 3500 suffixes.push('no-flexbox'); 3501 } 3502 if (params.autoHeight) { 3503 suffixes.push('autoheight'); 3504 } 3505 if (rtl) { 3506 suffixes.push('rtl'); 3507 } 3508 if (params.slidesPerColumn > 1) { 3509 suffixes.push('multirow'); 3510 } 3511 if (Device.android) { 3512 suffixes.push('android'); 3513 } 3514 if (Device.ios) { 3515 suffixes.push('ios'); 3516 } 3517 // WP8 Touch Events Fix 3518 if (Browser.isIE && (Support.pointerEvents || Support.prefixedPointerEvents)) { 3519 suffixes.push(("wp8-" + (params.direction))); 3520 } 3521 3522 suffixes.forEach(function (suffix) { 3523 classNames.push(params.containerModifierClass + suffix); 3524 }); 3525 3526 $el.addClass(classNames.join(' ')); 3527 } 3528 3529 function removeClasses () { 3530 var swiper = this; 3531 var $el = swiper.$el; 3532 var classNames = swiper.classNames; 3533 3534 $el.removeClass(classNames.join(' ')); 3535 } 3536 3537 var classes = { addClasses: addClasses, removeClasses: removeClasses }; 3538 3539 function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { 3540 var image; 3541 function onReady() { 3542 if (callback) { callback(); } 3543 } 3544 if (!imageEl.complete || !checkForComplete) { 3545 if (src) { 3546 image = new win.Image(); 3547 image.onload = onReady; 3548 image.onerror = onReady; 3549 if (sizes) { 3550 image.sizes = sizes; 3551 } 3552 if (srcset) { 3553 image.srcset = srcset; 3554 } 3555 if (src) { 3556 image.src = src; 3557 } 3558 } else { 3559 onReady(); 3560 } 3561 } else { 3562 // image already loaded... 3563 onReady(); 3564 } 3565 } 3566 3567 function preloadImages () { 3568 var swiper = this; 3569 swiper.imagesToLoad = swiper.$el.find('img'); 3570 function onReady() { 3571 if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; } 3572 if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; } 3573 if (swiper.imagesLoaded === swiper.imagesToLoad.length) { 3574 if (swiper.params.updateOnImagesReady) { swiper.update(); } 3575 swiper.emit('imagesReady'); 3576 } 3577 } 3578 for (var i = 0; i < swiper.imagesToLoad.length; i += 1) { 3579 var imageEl = swiper.imagesToLoad[i]; 3580 swiper.loadImage( 3581 imageEl, 3582 imageEl.currentSrc || imageEl.getAttribute('src'), 3583 imageEl.srcset || imageEl.getAttribute('srcset'), 3584 imageEl.sizes || imageEl.getAttribute('sizes'), 3585 true, 3586 onReady 3587 ); 3588 } 3589 } 3590 3591 var images = { 3592 loadImage: loadImage, 3593 preloadImages: preloadImages, 3594 }; 3595 3596 function checkOverflow() { 3597 var swiper = this; 3598 var wasLocked = swiper.isLocked; 3599 3600 swiper.isLocked = swiper.snapGrid.length === 1; 3601 swiper.allowSlideNext = !swiper.isLocked; 3602 swiper.allowSlidePrev = !swiper.isLocked; 3603 3604 // events 3605 if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); } 3606 3607 if (wasLocked && wasLocked !== swiper.isLocked) { 3608 swiper.isEnd = false; 3609 swiper.navigation.update(); 3610 } 3611 } 3612 3613 var checkOverflow$1 = { checkOverflow: checkOverflow }; 3614 3615 var defaults = { 3616 init: true, 3617 direction: 'horizontal', 3618 touchEventsTarget: 'container', 3619 initialSlide: 0, 3620 speed: 300, 3621 // 3622 preventInteractionOnTransition: false, 3623 3624 // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). 3625 edgeSwipeDetection: false, 3626 edgeSwipeThreshold: 20, 3627 3628 // Free mode 3629 freeMode: false, 3630 freeModeMomentum: true, 3631 freeModeMomentumRatio: 1, 3632 freeModeMomentumBounce: true, 3633 freeModeMomentumBounceRatio: 1, 3634 freeModeMomentumVelocityRatio: 1, 3635 freeModeSticky: false, 3636 freeModeMinimumVelocity: 0.02, 3637 3638 // Autoheight 3639 autoHeight: false, 3640 3641 // Set wrapper width 3642 setWrapperSize: false, 3643 3644 // Virtual Translate 3645 virtualTranslate: false, 3646 3647 // Effects 3648 effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 3649 3650 // Breakpoints 3651 breakpoints: undefined, 3652 3653 // Slides grid 3654 spaceBetween: 0, 3655 slidesPerView: 1, 3656 slidesPerColumn: 1, 3657 slidesPerColumnFill: 'column', 3658 slidesPerGroup: 1, 3659 centeredSlides: false, 3660 slidesOffsetBefore: 0, // in px 3661 slidesOffsetAfter: 0, // in px 3662 normalizeSlideIndex: true, 3663 3664 // Disable swiper and hide navigation when container not overflow 3665 watchOverflow: false, 3666 3667 // Round length 3668 roundLengths: false, 3669 3670 // Touches 3671 touchRatio: 1, 3672 touchAngle: 45, 3673 simulateTouch: true, 3674 shortSwipes: true, 3675 longSwipes: true, 3676 longSwipesRatio: 0.5, 3677 longSwipesMs: 300, 3678 followFinger: true, 3679 allowTouchMove: true, 3680 threshold: 0, 3681 touchMoveStopPropagation: true, 3682 touchReleaseOnEdges: false, 3683 3684 // Unique Navigation Elements 3685 uniqueNavElements: true, 3686 3687 // Resistance 3688 resistance: true, 3689 resistanceRatio: 0.85, 3690 3691 // Progress 3692 watchSlidesProgress: false, 3693 watchSlidesVisibility: false, 3694 3695 // Cursor 3696 grabCursor: false, 3697 3698 // Clicks 3699 preventClicks: true, 3700 preventClicksPropagation: true, 3701 slideToClickedSlide: false, 3702 3703 // Images 3704 preloadImages: true, 3705 updateOnImagesReady: true, 3706 3707 // loop 3708 loop: false, 3709 loopAdditionalSlides: 0, 3710 loopedSlides: null, 3711 loopFillGroupWithBlank: false, 3712 3713 // Swiping/no swiping 3714 allowSlidePrev: true, 3715 allowSlideNext: true, 3716 swipeHandler: null, // '.swipe-handler', 3717 noSwiping: true, 3718 noSwipingClass: 'swiper-no-swiping', 3719 noSwipingSelector: null, 3720 3721 // Passive Listeners 3722 passiveListeners: true, 3723 3724 // NS 3725 containerModifierClass: 'swiper-container-', // NEW 3726 slideClass: 'swiper-slide', 3727 slideBlankClass: 'swiper-slide-invisible-blank', 3728 slideActiveClass: 'swiper-slide-active', 3729 slideDuplicateActiveClass: 'swiper-slide-duplicate-active', 3730 slideVisibleClass: 'swiper-slide-visible', 3731 slideDuplicateClass: 'swiper-slide-duplicate', 3732 slideNextClass: 'swiper-slide-next', 3733 slideDuplicateNextClass: 'swiper-slide-duplicate-next', 3734 slidePrevClass: 'swiper-slide-prev', 3735 slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', 3736 wrapperClass: 'swiper-wrapper', 3737 3738 // Callbacks 3739 runCallbacksOnInit: true, 3740 }; 3741 3742 var prototypes = { 3743 update: update, 3744 translate: translate, 3745 transition: transition$1, 3746 slide: slide, 3747 loop: loop, 3748 grabCursor: grabCursor, 3749 manipulation: manipulation, 3750 events: events, 3751 breakpoints: breakpoints, 3752 checkOverflow: checkOverflow$1, 3753 classes: classes, 3754 images: images, 3755 }; 3756 3757 var extendedDefaults = {}; 3758 3759 var Swiper = (function (SwiperClass$$1) { 3760 function Swiper() { 3761 var assign; 3762 3763 var args = [], len = arguments.length; 3764 while ( len-- ) args[ len ] = arguments[ len ]; 3765 var el; 3766 var params; 3767 if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { 3768 params = args[0]; 3769 } else { 3770 (assign = args, el = assign[0], params = assign[1]); 3771 } 3772 if (!params) { params = {}; } 3773 3774 params = Utils.extend({}, params); 3775 if (el && !params.el) { params.el = el; } 3776 3777 SwiperClass$$1.call(this, params); 3778 3779 Object.keys(prototypes).forEach(function (prototypeGroup) { 3780 Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) { 3781 if (!Swiper.prototype[protoMethod]) { 3782 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 3783 } 3784 }); 3785 }); 3786 3787 // Swiper Instance 3788 var swiper = this; 3789 if (typeof swiper.modules === 'undefined') { 3790 swiper.modules = {}; 3791 } 3792 Object.keys(swiper.modules).forEach(function (moduleName) { 3793 var module = swiper.modules[moduleName]; 3794 if (module.params) { 3795 var moduleParamName = Object.keys(module.params)[0]; 3796 var moduleParams = module.params[moduleParamName]; 3797 if (typeof moduleParams !== 'object') { return; } 3798 if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; } 3799 if (params[moduleParamName] === true) { 3800 params[moduleParamName] = { enabled: true }; 3801 } 3802 if ( 3803 typeof params[moduleParamName] === 'object' 3804 && !('enabled' in params[moduleParamName]) 3805 ) { 3806 params[moduleParamName].enabled = true; 3807 } 3808 if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; } 3809 } 3810 }); 3811 3812 // Extend defaults with modules params 3813 var swiperParams = Utils.extend({}, defaults); 3814 swiper.useModulesParams(swiperParams); 3815 3816 // Extend defaults with passed params 3817 swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); 3818 swiper.originalParams = Utils.extend({}, swiper.params); 3819 swiper.passedParams = Utils.extend({}, params); 3820 3821 // Save Dom lib 3822 swiper.$ = $; 3823 3824 // Find el 3825 var $el = $(swiper.params.el); 3826 el = $el[0]; 3827 3828 if (!el) { 3829 return undefined; 3830 } 3831 3832 if ($el.length > 1) { 3833 var swipers = []; 3834 $el.each(function (index, containerEl) { 3835 var newParams = Utils.extend({}, params, { el: containerEl }); 3836 swipers.push(new Swiper(newParams)); 3837 }); 3838 return swipers; 3839 } 3840 3841 el.swiper = swiper; 3842 $el.data('swiper', swiper); 3843 3844 // Find Wrapper 3845 var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass))); 3846 3847 // Extend Swiper 3848 Utils.extend(swiper, { 3849 $el: $el, 3850 el: el, 3851 $wrapperEl: $wrapperEl, 3852 wrapperEl: $wrapperEl[0], 3853 3854 // Classes 3855 classNames: [], 3856 3857 // Slides 3858 slides: $(), 3859 slidesGrid: [], 3860 snapGrid: [], 3861 slidesSizesGrid: [], 3862 3863 // isDirection 3864 isHorizontal: function isHorizontal() { 3865 return swiper.params.direction === 'horizontal'; 3866 }, 3867 isVertical: function isVertical() { 3868 return swiper.params.direction === 'vertical'; 3869 }, 3870 // RTL 3871 rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 3872 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 3873 wrongRTL: $wrapperEl.css('display') === '-webkit-box', 3874 3875 // Indexes 3876 activeIndex: 0, 3877 realIndex: 0, 3878 3879 // 3880 isBeginning: true, 3881 isEnd: false, 3882 3883 // Props 3884 translate: 0, 3885 previousTranslate: 0, 3886 progress: 0, 3887 velocity: 0, 3888 animating: false, 3889 3890 // Locks 3891 allowSlideNext: swiper.params.allowSlideNext, 3892 allowSlidePrev: swiper.params.allowSlidePrev, 3893 3894 // Touch Events 3895 touchEvents: (function touchEvents() { 3896 var touch = ['touchstart', 'touchmove', 'touchend']; 3897 var desktop = ['mousedown', 'mousemove', 'mouseup']; 3898 if (Support.pointerEvents) { 3899 desktop = ['pointerdown', 'pointermove', 'pointerup']; 3900 } else if (Support.prefixedPointerEvents) { 3901 desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; 3902 } 3903 swiper.touchEventsTouch = { 3904 start: touch[0], 3905 move: touch[1], 3906 end: touch[2], 3907 }; 3908 swiper.touchEventsDesktop = { 3909 start: desktop[0], 3910 move: desktop[1], 3911 end: desktop[2], 3912 }; 3913 return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; 3914 }()), 3915 touchEventsData: { 3916 isTouched: undefined, 3917 isMoved: undefined, 3918 allowTouchCallbacks: undefined, 3919 touchStartTime: undefined, 3920 isScrolling: undefined, 3921 currentTranslate: undefined, 3922 startTranslate: undefined, 3923 allowThresholdMove: undefined, 3924 // Form elements to match 3925 formElements: 'input, select, option, textarea, button, video', 3926 // Last click time 3927 lastClickTime: Utils.now(), 3928 clickTimeout: undefined, 3929 // Velocities 3930 velocities: [], 3931 allowMomentumBounce: undefined, 3932 isTouchEvent: undefined, 3933 startMoving: undefined, 3934 }, 3935 3936 // Clicks 3937 allowClick: true, 3938 3939 // Touches 3940 allowTouchMove: swiper.params.allowTouchMove, 3941 3942 touches: { 3943 startX: 0, 3944 startY: 0, 3945 currentX: 0, 3946 currentY: 0, 3947 diff: 0, 3948 }, 3949 3950 // Images 3951 imagesToLoad: [], 3952 imagesLoaded: 0, 3953 3954 }); 3955 3956 // Install Modules 3957 swiper.useModules(); 3958 3959 // Init 3960 if (swiper.params.init) { 3961 swiper.init(); 3962 } 3963 3964 // Return app instance 3965 return swiper; 3966 } 3967 3968 if ( SwiperClass$$1 ) Swiper.__proto__ = SwiperClass$$1; 3969 Swiper.prototype = Object.create( SwiperClass$$1 && SwiperClass$$1.prototype ); 3970 Swiper.prototype.constructor = Swiper; 3971 3972 var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } }; 3973 3974 Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () { 3975 var swiper = this; 3976 var params = swiper.params; 3977 var slides = swiper.slides; 3978 var slidesGrid = swiper.slidesGrid; 3979 var swiperSize = swiper.size; 3980 var activeIndex = swiper.activeIndex; 3981 var spv = 1; 3982 if (params.centeredSlides) { 3983 var slideSize = slides[activeIndex].swiperSlideSize; 3984 var breakLoop; 3985 for (var i = activeIndex + 1; i < slides.length; i += 1) { 3986 if (slides[i] && !breakLoop) { 3987 slideSize += slides[i].swiperSlideSize; 3988 spv += 1; 3989 if (slideSize > swiperSize) { breakLoop = true; } 3990 } 3991 } 3992 for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) { 3993 if (slides[i$1] && !breakLoop) { 3994 slideSize += slides[i$1].swiperSlideSize; 3995 spv += 1; 3996 if (slideSize > swiperSize) { breakLoop = true; } 3997 } 3998 } 3999 } else { 4000 for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) { 4001 if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) { 4002 spv += 1; 4003 } 4004 } 4005 } 4006 return spv; 4007 }; 4008 4009 Swiper.prototype.update = function update$$1 () { 4010 var swiper = this; 4011 if (!swiper || swiper.destroyed) { return; } 4012 var snapGrid = swiper.snapGrid; 4013 var params = swiper.params; 4014 // Breakpoints 4015 if (params.breakpoints) { 4016 swiper.setBreakpoint(); 4017 } 4018 swiper.updateSize(); 4019 swiper.updateSlides(); 4020 swiper.updateProgress(); 4021 swiper.updateSlidesClasses(); 4022 4023 function setTranslate() { 4024 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 4025 var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 4026 swiper.setTranslate(newTranslate); 4027 swiper.updateActiveIndex(); 4028 swiper.updateSlidesClasses(); 4029 } 4030 var translated; 4031 if (swiper.params.freeMode) { 4032 setTranslate(); 4033 if (swiper.params.autoHeight) { 4034 swiper.updateAutoHeight(); 4035 } 4036 } else { 4037 if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 4038 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); 4039 } else { 4040 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 4041 } 4042 if (!translated) { 4043 setTranslate(); 4044 } 4045 } 4046 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 4047 swiper.checkOverflow(); 4048 } 4049 swiper.emit('update'); 4050 }; 4051 4052 Swiper.prototype.init = function init () { 4053 var swiper = this; 4054 if (swiper.initialized) { return; } 4055 4056 swiper.emit('beforeInit'); 4057 4058 // Set breakpoint 4059 if (swiper.params.breakpoints) { 4060 swiper.setBreakpoint(); 4061 } 4062 4063 // Add Classes 4064 swiper.addClasses(); 4065 4066 // Create loop 4067 if (swiper.params.loop) { 4068 swiper.loopCreate(); 4069 } 4070 4071 // Update size 4072 swiper.updateSize(); 4073 4074 // Update slides 4075 swiper.updateSlides(); 4076 4077 if (swiper.params.watchOverflow) { 4078 swiper.checkOverflow(); 4079 } 4080 4081 // Set Grab Cursor 4082 if (swiper.params.grabCursor) { 4083 swiper.setGrabCursor(); 4084 } 4085 4086 if (swiper.params.preloadImages) { 4087 swiper.preloadImages(); 4088 } 4089 4090 // Slide To Initial Slide 4091 if (swiper.params.loop) { 4092 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); 4093 } else { 4094 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); 4095 } 4096 4097 // Attach events 4098 swiper.attachEvents(); 4099 4100 // Init Flag 4101 swiper.initialized = true; 4102 4103 // Emit 4104 swiper.emit('init'); 4105 }; 4106 4107 Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) { 4108 if ( deleteInstance === void 0 ) deleteInstance = true; 4109 if ( cleanStyles === void 0 ) cleanStyles = true; 4110 4111 var swiper = this; 4112 var params = swiper.params; 4113 var $el = swiper.$el; 4114 var $wrapperEl = swiper.$wrapperEl; 4115 var slides = swiper.slides; 4116 4117 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 4118 return null; 4119 } 4120 4121 swiper.emit('beforeDestroy'); 4122 4123 // Init Flag 4124 swiper.initialized = false; 4125 4126 // Detach events 4127 swiper.detachEvents(); 4128 4129 // Destroy loop 4130 if (params.loop) { 4131 swiper.loopDestroy(); 4132 } 4133 4134 // Cleanup styles 4135 if (cleanStyles) { 4136 swiper.removeClasses(); 4137 $el.removeAttr('style'); 4138 $wrapperEl.removeAttr('style'); 4139 if (slides && slides.length) { 4140 slides 4141 .removeClass([ 4142 params.slideVisibleClass, 4143 params.slideActiveClass, 4144 params.slideNextClass, 4145 params.slidePrevClass ].join(' ')) 4146 .removeAttr('style') 4147 .removeAttr('data-swiper-slide-index') 4148 .removeAttr('data-swiper-column') 4149 .removeAttr('data-swiper-row'); 4150 } 4151 } 4152 4153 swiper.emit('destroy'); 4154 4155 // Detach emitter events 4156 Object.keys(swiper.eventsListeners).forEach(function (eventName) { 4157 swiper.off(eventName); 4158 }); 4159 4160 if (deleteInstance !== false) { 4161 swiper.$el[0].swiper = null; 4162 swiper.$el.data('swiper', null); 4163 Utils.deleteProps(swiper); 4164 } 4165 swiper.destroyed = true; 4166 4167 return null; 4168 }; 4169 4170 Swiper.extendDefaults = function extendDefaults (newDefaults) { 4171 Utils.extend(extendedDefaults, newDefaults); 4172 }; 4173 4174 staticAccessors.extendedDefaults.get = function () { 4175 return extendedDefaults; 4176 }; 4177 4178 staticAccessors.defaults.get = function () { 4179 return defaults; 4180 }; 4181 4182 staticAccessors.Class.get = function () { 4183 return SwiperClass$$1; 4184 }; 4185 4186 staticAccessors.$.get = function () { 4187 return $; 4188 }; 4189 4190 Object.defineProperties( Swiper, staticAccessors ); 4191 4192 return Swiper; 4193 }(SwiperClass)); 4194 4195 var Device$1 = { 4196 name: 'device', 4197 proto: { 4198 device: Device, 4199 }, 4200 static: { 4201 device: Device, 4202 }, 4203 }; 4204 4205 var Support$1 = { 4206 name: 'support', 4207 proto: { 4208 support: Support, 4209 }, 4210 static: { 4211 support: Support, 4212 }, 4213 }; 4214 4215 var Browser$1 = { 4216 name: 'browser', 4217 proto: { 4218 browser: Browser, 4219 }, 4220 static: { 4221 browser: Browser, 4222 }, 4223 }; 4224 4225 var Resize = { 4226 name: 'resize', 4227 create: function create() { 4228 var swiper = this; 4229 Utils.extend(swiper, { 4230 resize: { 4231 resizeHandler: function resizeHandler() { 4232 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 4233 swiper.emit('beforeResize'); 4234 swiper.emit('resize'); 4235 }, 4236 orientationChangeHandler: function orientationChangeHandler() { 4237 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 4238 swiper.emit('orientationchange'); 4239 }, 4240 }, 4241 }); 4242 }, 4243 on: { 4244 init: function init() { 4245 var swiper = this; 4246 // Emit resize 4247 win.addEventListener('resize', swiper.resize.resizeHandler); 4248 4249 // Emit orientationchange 4250 win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); 4251 }, 4252 destroy: function destroy() { 4253 var swiper = this; 4254 win.removeEventListener('resize', swiper.resize.resizeHandler); 4255 win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); 4256 }, 4257 }, 4258 }; 4259 4260 var Observer = { 4261 func: win.MutationObserver || win.WebkitMutationObserver, 4262 attach: function attach(target, options) { 4263 if ( options === void 0 ) options = {}; 4264 4265 var swiper = this; 4266 4267 var ObserverFunc = Observer.func; 4268 var observer = new ObserverFunc(function (mutations) { 4269 // The observerUpdate event should only be triggered 4270 // once despite the number of mutations. Additional 4271 // triggers are redundant and are very costly 4272 if (mutations.length === 1) { 4273 swiper.emit('observerUpdate', mutations[0]); 4274 return; 4275 } 4276 var observerUpdate = function observerUpdate() { 4277 swiper.emit('observerUpdate', mutations[0]); 4278 }; 4279 4280 if (win.requestAnimationFrame) { 4281 win.requestAnimationFrame(observerUpdate); 4282 } else { 4283 win.setTimeout(observerUpdate, 0); 4284 } 4285 }); 4286 4287 observer.observe(target, { 4288 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 4289 childList: typeof options.childList === 'undefined' ? true : options.childList, 4290 characterData: typeof options.characterData === 'undefined' ? true : options.characterData, 4291 }); 4292 4293 swiper.observer.observers.push(observer); 4294 }, 4295 init: function init() { 4296 var swiper = this; 4297 if (!Support.observer || !swiper.params.observer) { return; } 4298 if (swiper.params.observeParents) { 4299 var containerParents = swiper.$el.parents(); 4300 for (var i = 0; i < containerParents.length; i += 1) { 4301 swiper.observer.attach(containerParents[i]); 4302 } 4303 } 4304 // Observe container 4305 swiper.observer.attach(swiper.$el[0], { childList: false }); 4306 4307 // Observe wrapper 4308 swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); 4309 }, 4310 destroy: function destroy() { 4311 var swiper = this; 4312 swiper.observer.observers.forEach(function (observer) { 4313 observer.disconnect(); 4314 }); 4315 swiper.observer.observers = []; 4316 }, 4317 }; 4318 4319 var Observer$1 = { 4320 name: 'observer', 4321 params: { 4322 observer: false, 4323 observeParents: false, 4324 }, 4325 create: function create() { 4326 var swiper = this; 4327 Utils.extend(swiper, { 4328 observer: { 4329 init: Observer.init.bind(swiper), 4330 attach: Observer.attach.bind(swiper), 4331 destroy: Observer.destroy.bind(swiper), 4332 observers: [], 4333 }, 4334 }); 4335 }, 4336 on: { 4337 init: function init() { 4338 var swiper = this; 4339 swiper.observer.init(); 4340 }, 4341 destroy: function destroy() { 4342 var swiper = this; 4343 swiper.observer.destroy(); 4344 }, 4345 }, 4346 }; 4347 4348 var Virtual = { 4349 update: function update(force) { 4350 var swiper = this; 4351 var ref = swiper.params; 4352 var slidesPerView = ref.slidesPerView; 4353 var slidesPerGroup = ref.slidesPerGroup; 4354 var centeredSlides = ref.centeredSlides; 4355 var ref$1 = swiper.virtual; 4356 var previousFrom = ref$1.from; 4357 var previousTo = ref$1.to; 4358 var slides = ref$1.slides; 4359 var previousSlidesGrid = ref$1.slidesGrid; 4360 var renderSlide = ref$1.renderSlide; 4361 var previousOffset = ref$1.offset; 4362 swiper.updateActiveIndex(); 4363 var activeIndex = swiper.activeIndex || 0; 4364 4365 var offsetProp; 4366 if (swiper.rtlTranslate) { offsetProp = 'right'; } 4367 else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; } 4368 4369 var slidesAfter; 4370 var slidesBefore; 4371 if (centeredSlides) { 4372 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup; 4373 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup; 4374 } else { 4375 slidesAfter = slidesPerView + (slidesPerGroup - 1); 4376 slidesBefore = slidesPerGroup; 4377 } 4378 var from = Math.max((activeIndex || 0) - slidesBefore, 0); 4379 var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); 4380 var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 4381 4382 Utils.extend(swiper.virtual, { 4383 from: from, 4384 to: to, 4385 offset: offset, 4386 slidesGrid: swiper.slidesGrid, 4387 }); 4388 4389 function onRendered() { 4390 swiper.updateSlides(); 4391 swiper.updateProgress(); 4392 swiper.updateSlidesClasses(); 4393 if (swiper.lazy && swiper.params.lazy.enabled) { 4394 swiper.lazy.load(); 4395 } 4396 } 4397 4398 if (previousFrom === from && previousTo === to && !force) { 4399 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 4400 swiper.slides.css(offsetProp, (offset + "px")); 4401 } 4402 swiper.updateProgress(); 4403 return; 4404 } 4405 if (swiper.params.virtual.renderExternal) { 4406 swiper.params.virtual.renderExternal.call(swiper, { 4407 offset: offset, 4408 from: from, 4409 to: to, 4410 slides: (function getSlides() { 4411 var slidesToRender = []; 4412 for (var i = from; i <= to; i += 1) { 4413 slidesToRender.push(slides[i]); 4414 } 4415 return slidesToRender; 4416 }()), 4417 }); 4418 onRendered(); 4419 return; 4420 } 4421 var prependIndexes = []; 4422 var appendIndexes = []; 4423 if (force) { 4424 swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove(); 4425 } else { 4426 for (var i = previousFrom; i <= previousTo; i += 1) { 4427 if (i < from || i > to) { 4428 swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); 4429 } 4430 } 4431 } 4432 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 4433 if (i$1 >= from && i$1 <= to) { 4434 if (typeof previousTo === 'undefined' || force) { 4435 appendIndexes.push(i$1); 4436 } else { 4437 if (i$1 > previousTo) { appendIndexes.push(i$1); } 4438 if (i$1 < previousFrom) { prependIndexes.push(i$1); } 4439 } 4440 } 4441 } 4442 appendIndexes.forEach(function (index) { 4443 swiper.$wrapperEl.append(renderSlide(slides[index], index)); 4444 }); 4445 prependIndexes.sort(function (a, b) { return a < b; }).forEach(function (index) { 4446 swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); 4447 }); 4448 swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px")); 4449 onRendered(); 4450 }, 4451 renderSlide: function renderSlide(slide, index) { 4452 var swiper = this; 4453 var params = swiper.params.virtual; 4454 if (params.cache && swiper.virtual.cache[index]) { 4455 return swiper.virtual.cache[index]; 4456 } 4457 var $slideEl = params.renderSlide 4458 ? $(params.renderSlide.call(swiper, slide, index)) 4459 : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>")); 4460 if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); } 4461 if (params.cache) { swiper.virtual.cache[index] = $slideEl; } 4462 return $slideEl; 4463 }, 4464 appendSlide: function appendSlide(slide) { 4465 var swiper = this; 4466 swiper.virtual.slides.push(slide); 4467 swiper.virtual.update(true); 4468 }, 4469 prependSlide: function prependSlide(slide) { 4470 var swiper = this; 4471 swiper.virtual.slides.unshift(slide); 4472 if (swiper.params.virtual.cache) { 4473 var cache = swiper.virtual.cache; 4474 var newCache = {}; 4475 Object.keys(cache).forEach(function (cachedIndex) { 4476 newCache[cachedIndex + 1] = cache[cachedIndex]; 4477 }); 4478 swiper.virtual.cache = newCache; 4479 } 4480 swiper.virtual.update(true); 4481 swiper.slideNext(0); 4482 }, 4483 }; 4484 4485 var Virtual$1 = { 4486 name: 'virtual', 4487 params: { 4488 virtual: { 4489 enabled: false, 4490 slides: [], 4491 cache: true, 4492 renderSlide: null, 4493 renderExternal: null, 4494 }, 4495 }, 4496 create: function create() { 4497 var swiper = this; 4498 Utils.extend(swiper, { 4499 virtual: { 4500 update: Virtual.update.bind(swiper), 4501 appendSlide: Virtual.appendSlide.bind(swiper), 4502 prependSlide: Virtual.prependSlide.bind(swiper), 4503 renderSlide: Virtual.renderSlide.bind(swiper), 4504 slides: swiper.params.virtual.slides, 4505 cache: {}, 4506 }, 4507 }); 4508 }, 4509 on: { 4510 beforeInit: function beforeInit() { 4511 var swiper = this; 4512 if (!swiper.params.virtual.enabled) { return; } 4513 swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); 4514 var overwriteParams = { 4515 watchSlidesProgress: true, 4516 }; 4517 Utils.extend(swiper.params, overwriteParams); 4518 Utils.extend(swiper.originalParams, overwriteParams); 4519 4520 swiper.virtual.update(); 4521 }, 4522 setTranslate: function setTranslate() { 4523 var swiper = this; 4524 if (!swiper.params.virtual.enabled) { return; } 4525 swiper.virtual.update(); 4526 }, 4527 }, 4528 }; 4529 4530 var Keyboard = { 4531 handle: function handle(event) { 4532 var swiper = this; 4533 var rtl = swiper.rtlTranslate; 4534 var e = event; 4535 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 4536 var kc = e.keyCode || e.charCode; 4537 // Directions locks 4538 if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) { 4539 return false; 4540 } 4541 if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) { 4542 return false; 4543 } 4544 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 4545 return undefined; 4546 } 4547 if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { 4548 return undefined; 4549 } 4550 if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) { 4551 var inView = false; 4552 // Check that swiper should be inside of visible area of window 4553 if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) { 4554 return undefined; 4555 } 4556 var windowWidth = win.innerWidth; 4557 var windowHeight = win.innerHeight; 4558 var swiperOffset = swiper.$el.offset(); 4559 if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; } 4560 var swiperCoord = [ 4561 [swiperOffset.left, swiperOffset.top], 4562 [swiperOffset.left + swiper.width, swiperOffset.top], 4563 [swiperOffset.left, swiperOffset.top + swiper.height], 4564 [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; 4565 for (var i = 0; i < swiperCoord.length; i += 1) { 4566 var point = swiperCoord[i]; 4567 if ( 4568 point[0] >= 0 && point[0] <= windowWidth 4569 && point[1] >= 0 && point[1] <= windowHeight 4570 ) { 4571 inView = true; 4572 } 4573 } 4574 if (!inView) { return undefined; } 4575 } 4576 if (swiper.isHorizontal()) { 4577 if (kc === 37 || kc === 39) { 4578 if (e.preventDefault) { e.preventDefault(); } 4579 else { e.returnValue = false; } 4580 } 4581 if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); } 4582 if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); } 4583 } else { 4584 if (kc === 38 || kc === 40) { 4585 if (e.preventDefault) { e.preventDefault(); } 4586 else { e.returnValue = false; } 4587 } 4588 if (kc === 40) { swiper.slideNext(); } 4589 if (
vendor: 10,116 bytes, lines 4589-4921
4589kc === 38) { swiper.slidePrev(); } 4590 } 4591 swiper.emit('keyPress', kc); 4592 return undefined; 4593 }, 4594 enable: function enable() { 4595 var swiper = this; 4596 if (swiper.keyboard.enabled) { return; } 4597 $(doc).on('keydown', swiper.keyboard.handle); 4598 swiper.keyboard.enabled = true; 4599 }, 4600 disable: function disable() { 4601 var swiper = this; 4602 if (!swiper.keyboard.enabled) { return; } 4603 $(doc).off('keydown', swiper.keyboard.handle); 4604 swiper.keyboard.enabled = false; 4605 }, 4606 }; 4607 4608 var Keyboard$1 = { 4609 name: 'keyboard', 4610 params: { 4611 keyboard: { 4612 enabled: false, 4613 onlyInViewport: true, 4614 }, 4615 }, 4616 create: function create() { 4617 var swiper = this; 4618 Utils.extend(swiper, { 4619 keyboard: { 4620 enabled: false, 4621 enable: Keyboard.enable.bind(swiper), 4622 disable: Keyboard.disable.bind(swiper), 4623 handle: Keyboard.handle.bind(swiper), 4624 }, 4625 }); 4626 }, 4627 on: { 4628 init: function init() { 4629 var swiper = this; 4630 if (swiper.params.keyboard.enabled) { 4631 swiper.keyboard.enable(); 4632 } 4633 }, 4634 destroy: function destroy() { 4635 var swiper = this; 4636 if (swiper.keyboard.enabled) { 4637 swiper.keyboard.disable(); 4638 } 4639 }, 4640 }, 4641 }; 4642 4643 function isEventSupported() { 4644 var eventName = 'onwheel'; 4645 var isSupported = eventName in doc; 4646 4647 if (!isSupported) { 4648 var element = doc.createElement('div'); 4649 element.setAttribute(eventName, 'return;'); 4650 isSupported = typeof element[eventName] === 'function'; 4651 } 4652 4653 if (!isSupported 4654 && doc.implementation 4655 && doc.implementation.hasFeature 4656 // always returns true in newer browsers as per the standard. 4657 // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature 4658 && doc.implementation.hasFeature('', '') !== true 4659 ) { 4660 // This is the only way to test support for the `wheel` event in IE9+. 4661 isSupported = doc.implementation.hasFeature('Events.wheel', '3.0'); 4662 } 4663 4664 return isSupported; 4665 } 4666 var Mousewheel = { 4667 lastScrollTime: Utils.now(), 4668 event: (function getEvent() { 4669 if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; } 4670 return isEventSupported() ? 'wheel' : 'mousewheel'; 4671 }()), 4672 normalize: function normalize(e) { 4673 // Reasonable defaults 4674 var PIXEL_STEP = 10; 4675 var LINE_HEIGHT = 40; 4676 var PAGE_HEIGHT = 800; 4677 4678 var sX = 0; 4679 var sY = 0; // spinX, spinY 4680 var pX = 0; 4681 var pY = 0; // pixelX, pixelY 4682 4683 // Legacy 4684 if ('detail' in e) { 4685 sY = e.detail; 4686 } 4687 if ('wheelDelta' in e) { 4688 sY = -e.wheelDelta / 120; 4689 } 4690 if ('wheelDeltaY' in e) { 4691 sY = -e.wheelDeltaY / 120; 4692 } 4693 if ('wheelDeltaX' in e) { 4694 sX = -e.wheelDeltaX / 120; 4695 } 4696 4697 // side scrolling on FF with DOMMouseScroll 4698 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 4699 sX = sY; 4700 sY = 0; 4701 } 4702 4703 pX = sX * PIXEL_STEP; 4704 pY = sY * PIXEL_STEP; 4705 4706 if ('deltaY' in e) { 4707 pY = e.deltaY; 4708 } 4709 if ('deltaX' in e) { 4710 pX = e.deltaX; 4711 } 4712 4713 if ((pX || pY) && e.deltaMode) { 4714 if (e.deltaMode === 1) { // delta in LINE units 4715 pX *= LINE_HEIGHT; 4716 pY *= LINE_HEIGHT; 4717 } else { // delta in PAGE units 4718 pX *= PAGE_HEIGHT; 4719 pY *= PAGE_HEIGHT; 4720 } 4721 } 4722 4723 // Fall-back if spin cannot be determined 4724 if (pX && !sX) { 4725 sX = (pX < 1) ? -1 : 1; 4726 } 4727 if (pY && !sY) { 4728 sY = (pY < 1) ? -1 : 1; 4729 } 4730 4731 return { 4732 spinX: sX, 4733 spinY: sY, 4734 pixelX: pX, 4735 pixelY: pY, 4736 }; 4737 }, 4738 handleMouseEnter: function handleMouseEnter() { 4739 var swiper = this; 4740 swiper.mouseEntered = true; 4741 }, 4742 handleMouseLeave: function handleMouseLeave() { 4743 var swiper = this; 4744 swiper.mouseEntered = false; 4745 }, 4746 handle: function handle(event) { 4747 var e = event; 4748 var swiper = this; 4749 var params = swiper.params.mousewheel; 4750 4751 if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; } 4752 4753 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 4754 var delta = 0; 4755 var rtlFactor = swiper.rtlTranslate ? -1 : 1; 4756 4757 var data = Mousewheel.normalize(e); 4758 4759 if (params.forceToAxis) { 4760 if (swiper.isHorizontal()) { 4761 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; } 4762 else { return true; } 4763 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; } 4764 else { return true; } 4765 } else { 4766 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 4767 } 4768 4769 if (delta === 0) { return true; } 4770 4771 if (params.invert) { delta = -delta; } 4772 4773 if (!swiper.params.freeMode) { 4774 if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) { 4775 if (delta < 0) { 4776 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 4777 swiper.slideNext(); 4778 swiper.emit('scroll', e); 4779 } else if (params.releaseOnEdges) { return true; } 4780 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 4781 swiper.slidePrev(); 4782 swiper.emit('scroll', e); 4783 } else if (params.releaseOnEdges) { return true; } 4784 } 4785 swiper.mousewheel.lastScrollTime = (new win.Date()).getTime(); 4786 } else { 4787 // Freemode or scrollContainer: 4788 if (swiper.params.loop) { 4789 swiper.loopFix(); 4790 } 4791 var position = swiper.getTranslate() + (delta * params.sensitivity); 4792 var wasBeginning = swiper.isBeginning; 4793 var wasEnd = swiper.isEnd; 4794 4795 if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); } 4796 if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); } 4797 4798 swiper.setTransition(0); 4799 swiper.setTranslate(position); 4800 swiper.updateProgress(); 4801 swiper.updateActiveIndex(); 4802 swiper.updateSlidesClasses(); 4803 4804 if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { 4805 swiper.updateSlidesClasses(); 4806 } 4807 4808 if (swiper.params.freeModeSticky) { 4809 clearTimeout(swiper.mousewheel.timeout); 4810 swiper.mousewheel.timeout = Utils.nextTick(function () { 4811 swiper.slideToClosest(); 4812 }, 300); 4813 } 4814 // Emit event 4815 swiper.emit('scroll', e); 4816 4817 // Stop autoplay 4818 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); } 4819 // Return page scroll on edge positions 4820 if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; } 4821 } 4822 4823 if (e.preventDefault) { e.preventDefault(); } 4824 else { e.returnValue = false; } 4825 return false; 4826 }, 4827 enable: function enable() { 4828 var swiper = this; 4829 if (!Mousewheel.event) { return false; } 4830 if (swiper.mousewheel.enabled) { return false; } 4831 var target = swiper.$el; 4832 if (swiper.params.mousewheel.eventsTarged !== 'container') { 4833 target = $(swiper.params.mousewheel.eventsTarged); 4834 } 4835 target.on('mouseenter', swiper.mousewheel.handleMouseEnter); 4836 target.on('mouseleave', swiper.mousewheel.handleMouseLeave); 4837 target.on(Mousewheel.event, swiper.mousewheel.handle); 4838 swiper.mousewheel.enabled = true; 4839 return true; 4840 }, 4841 disable: function disable() { 4842 var swiper = this; 4843 if (!Mousewheel.event) { return false; } 4844 if (!swiper.mousewheel.enabled) { return false; } 4845 var target = swiper.$el; 4846 if (swiper.params.mousewheel.eventsTarged !== 'container') { 4847 target = $(swiper.params.mousewheel.eventsTarged); 4848 } 4849 target.off(Mousewheel.event, swiper.mousewheel.handle); 4850 swiper.mousewheel.enabled = false; 4851 return true; 4852 }, 4853 }; 4854 4855 var Mousewheel$1 = { 4856 name: 'mousewheel', 4857 params: { 4858 mousewheel: { 4859 enabled: false, 4860 releaseOnEdges: false, 4861 invert: false, 4862 forceToAxis: false, 4863 sensitivity: 1, 4864 eventsTarged: 'container', 4865 }, 4866 }, 4867 create: function create() { 4868 var swiper = this; 4869 Utils.extend(swiper, { 4870 mousewheel: { 4871 enabled: false, 4872 enable: Mousewheel.enable.bind(swiper), 4873 disable: Mousewheel.disable.bind(swiper), 4874 handle: Mousewheel.handle.bind(swiper), 4875 handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), 4876 handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), 4877 lastScrollTime: Utils.now(), 4878 }, 4879 }); 4880 }, 4881 on: { 4882 init: function init() { 4883 var swiper = this; 4884 if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); } 4885 }, 4886 destroy: function destroy() { 4887 var swiper = this; 4888 if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); } 4889 }, 4890 }, 4891 }; 4892 4893 var Navigation = { 4894 update: function update() { 4895 // Update Navigation Buttons 4896 var swiper = this; 4897 var params = swiper.params.navigation; 4898 4899 if (swiper.params.loop) { return; } 4900 var ref = swiper.navigation; 4901 var $nextEl = ref.$nextEl; 4902 var $prevEl = ref.$prevEl; 4903 4904 if ($prevEl && $prevEl.length > 0) { 4905 if (swiper.isBeginning) { 4906 $prevEl.addClass(params.disabledClass); 4907 } else { 4908 $prevEl.removeClass(params.disabledClass); 4909 } 4910 $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 4911 } 4912 if ($nextEl && $nextEl.length > 0) { 4913 if (swiper.isEnd) { 4914 $nextEl.addClass(params.disabledClass); 4915 } else { 4916 $nextEl.removeClass(params.disabledClass); 4917 } 4918 $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 4919 } 4920 }, 4921
vendor: 2,579 bytes, lines 4921-5012
4921init: function init() { 4922 var swiper = this; 4923 var params = swiper.params.navigation; 4924 if (!(params.nextEl || params.prevEl)) { return; } 4925 4926 var $nextEl; 4927 var $prevEl; 4928 if (params.nextEl) { 4929 $nextEl = $(params.nextEl); 4930 if ( 4931 swiper.params.uniqueNavElements 4932 && typeof params.nextEl === 'string' 4933 && $nextEl.length > 1 4934 && swiper.$el.find(params.nextEl).length === 1 4935 ) { 4936 $nextEl = swiper.$el.find(params.nextEl); 4937 } 4938 } 4939 if (params.prevEl) { 4940 $prevEl = $(params.prevEl); 4941 if ( 4942 swiper.params.uniqueNavElements 4943 && typeof params.prevEl === 'string' 4944 && $prevEl.length > 1 4945 && swiper.$el.find(params.prevEl).length === 1 4946 ) { 4947 $prevEl = swiper.$el.find(params.prevEl); 4948 } 4949 } 4950 4951 if ($nextEl && $nextEl.length > 0) { 4952 $nextEl.on('click', function (e) { 4953 e.preventDefault(); 4954 if (swiper.isEnd && !swiper.params.loop) { return; } 4955 swiper.slideNext(); 4956 }); 4957 } 4958 if ($prevEl && $prevEl.length > 0) { 4959 $prevEl.on('click', function (e) { 4960 e.preventDefault(); 4961 if (swiper.isBeginning && !swiper.params.loop) { return; } 4962 swiper.slidePrev(); 4963 }); 4964 } 4965 4966 Utils.extend(swiper.navigation, { 4967 $nextEl: $nextEl, 4968 nextEl: $nextEl && $nextEl[0], 4969 $prevEl: $prevEl, 4970 prevEl: $prevEl && $prevEl[0], 4971 }); 4972 }, 4973 destroy: function destroy() { 4974 var swiper = this; 4975 var ref = swiper.navigation; 4976 var $nextEl = ref.$nextEl; 4977 var $prevEl = ref.$prevEl; 4978 if ($nextEl && $nextEl.length) { 4979 $nextEl.off('click'); 4980 $nextEl.removeClass(swiper.params.navigation.disabledClass); 4981 } 4982 if ($prevEl && $prevEl.length) { 4983 $prevEl.off('click'); 4984 $prevEl.removeClass(swiper.params.navigation.disabledClass); 4985 } 4986 }, 4987 }; 4988 4989 var Navigation$1 = { 4990 name: 'navigation', 4991 params: { 4992 navigation: { 4993 nextEl: null, 4994 prevEl: null, 4995 4996 hideOnClick: false, 4997 disabledClass: 'swiper-button-disabled', 4998 hiddenClass: 'swiper-button-hidden', 4999 lockClass: 'swiper-button-lock', 5000 }, 5001 }, 5002 create: function create() { 5003 var swiper = this; 5004 Utils.extend(swiper, { 5005 navigation: { 5006 init: Navigation.init.bind(swiper), 5007 update: Navigation.update.bind(swiper), 5008 destroy: Navigation.destroy.bind(swiper), 5009 }, 5010 }); 5011 }, 5012 on: {
5013 init: function init() { 5014 var swiper = this; 5015 swiper.navigation.init(); 5016 swiper.navigation.update(); 5017 }, 5018 toEdge: function toEdge() { 5019 var swiper = this; 5020 swiper.navigation.update(); 5021 }, 5022 fromEdge: function fromEdge() { 5023 var swiper = this; 5024 swiper.navigation.update(); 5025 }, 5026 destroy: function destroy() { 5027 var swiper = this; 5028 swiper.navigation.destroy(); 5029 }, 5030 click: function click(e) { 5031 var swiper = this; 5032 var ref = swiper.navigation; 5033 var $nextEl = ref.$nextEl; 5034 var $prevEl = ref.$prevEl; 5035 if ( 5036 swiper.params.navigation.hideOnClick 5037 && !$(e.target).is($prevEl) 5038 && !$(e.target).is($nextEl) 5039 ) { 5040 if ($nextEl) { $nextEl.toggleClass(swiper.params.navigation.hiddenClass); } 5041 if ($prevEl) { $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
vendor: 13,669 bytes, lines 5041-5372
5041 } 5042 } 5043 }, 5044 }, 5045 }; 5046 5047 var Pagination = { 5048 update: function update() { 5049 // Render || Update Pagination bullets/items 5050 var swiper = this; 5051 var rtl = swiper.rtl; 5052 var params = swiper.params.pagination; 5053 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 5054 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 5055 var $el = swiper.pagination.$el; 5056 // Current/Total 5057 var current; 5058 var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 5059 if (swiper.params.loop) { 5060 current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); 5061 if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { 5062 current -= (slidesLength - (swiper.loopedSlides * 2)); 5063 } 5064 if (current > total - 1) { current -= total; } 5065 if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; } 5066 } else if (typeof swiper.snapIndex !== 'undefined') { 5067 current = swiper.snapIndex; 5068 } else { 5069 current = swiper.activeIndex || 0; 5070 } 5071 // Types 5072 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 5073 var bullets = swiper.pagination.bullets; 5074 var firstIndex; 5075 var lastIndex; 5076 var midIndex; 5077 if (params.dynamicBullets) { 5078 swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); 5079 $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); 5080 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { 5081 swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); 5082 if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { 5083 swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; 5084 } else if (swiper.pagination.dynamicBulletIndex < 0) { 5085 swiper.pagination.dynamicBulletIndex = 0; 5086 } 5087 } 5088 firstIndex = current - swiper.pagination.dynamicBulletIndex; 5089 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 5090 midIndex = (lastIndex + firstIndex) / 2; 5091 } 5092 bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main")); 5093 if ($el.length > 1) { 5094 bullets.each(function (index, bullet) { 5095 var $bullet = $(bullet); 5096 var bulletIndex = $bullet.index(); 5097 if (bulletIndex === current) { 5098 $bullet.addClass(params.bulletActiveClass); 5099 } 5100 if (params.dynamicBullets) { 5101 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 5102 $bullet.addClass(((params.bulletActiveClass) + "-main")); 5103 } 5104 if (bulletIndex === firstIndex) { 5105 $bullet 5106 .prev() 5107 .addClass(((params.bulletActiveClass) + "-prev")) 5108 .prev() 5109 .addClass(((params.bulletActiveClass) + "-prev-prev")); 5110 } 5111 if (bulletIndex === lastIndex) { 5112 $bullet 5113 .next() 5114 .addClass(((params.bulletActiveClass) + "-next")) 5115 .next() 5116 .addClass(((params.bulletActiveClass) + "-next-next")); 5117 } 5118 } 5119 }); 5120 } else { 5121 var $bullet = bullets.eq(current); 5122 $bullet.addClass(params.bulletActiveClass); 5123 if (params.dynamicBullets) { 5124 var $firstDisplayedBullet = bullets.eq(firstIndex); 5125 var $lastDisplayedBullet = bullets.eq(lastIndex); 5126 for (var i = firstIndex; i <= lastIndex; i += 1) { 5127 bullets.eq(i).addClass(((params.bulletActiveClass) + "-main")); 5128 } 5129 $firstDisplayedBullet 5130 .prev() 5131 .addClass(((params.bulletActiveClass) + "-prev")) 5132 .prev() 5133 .addClass(((params.bulletActiveClass) + "-prev-prev")); 5134 $lastDisplayedBullet 5135 .next() 5136 .addClass(((params.bulletActiveClass) + "-next")) 5137 .next() 5138 .addClass(((params.bulletActiveClass) + "-next-next")); 5139 } 5140 } 5141 if (params.dynamicBullets) { 5142 var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 5143 var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); 5144 var offsetProp = rtl ? 'right' : 'left'; 5145 bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px")); 5146 } 5147 } 5148 if (params.type === 'fraction') { 5149 $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1)); 5150 $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total)); 5151 } 5152 if (params.type === 'progressbar') { 5153 var progressbarDirection; 5154 if (params.progressbarOpposite) { 5155 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 5156 } else { 5157 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 5158 } 5159 var scale = (current + 1) / total; 5160 var scaleX = 1; 5161 var scaleY = 1; 5162 if (progressbarDirection === 'horizontal') { 5163 scaleX = scale; 5164 } else { 5165 scaleY = scale; 5166 } 5167 $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed); 5168 } 5169 if (params.type === 'custom' && params.renderCustom) { 5170 $el.html(params.renderCustom(swiper, current + 1, total)); 5171 swiper.emit('paginationRender', swiper, $el[0]); 5172 } else { 5173 swiper.emit('paginationUpdate', swiper, $el[0]); 5174 } 5175 $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 5176 }, 5177 render: function render() { 5178 // Render Container 5179 var swiper = this; 5180 var params = swiper.params.pagination; 5181 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 5182 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 5183 5184 var $el = swiper.pagination.$el; 5185 var paginationHTML = ''; 5186 if (params.type === 'bullets') { 5187 var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 5188 for (var i = 0; i < numberOfBullets; i += 1) { 5189 if (params.renderBullet) { 5190 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 5191 } else { 5192 paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">"; 5193 } 5194 } 5195 $el.html(paginationHTML); 5196 swiper.pagination.bullets = $el.find(("." + (params.bulletClass))); 5197 } 5198 if (params.type === 'fraction') { 5199 if (params.renderFraction) { 5200 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 5201 } else { 5202 paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>" 5203 + ' / ' 5204 + "<span class=\"" + (params.totalClass) + "\"></span>"; 5205 } 5206 $el.html(paginationHTML); 5207 } 5208 if (params.type === 'progressbar') { 5209 if (params.renderProgressbar) { 5210 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 5211 } else { 5212 paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>"; 5213 } 5214 $el.html(paginationHTML); 5215 } 5216 if (params.type !== 'custom') { 5217 swiper.emit('paginationRender', swiper.pagination.$el[0]); 5218 } 5219 }, 5220 init: function init() { 5221 var swiper = this; 5222 var params = swiper.params.pagination; 5223 if (!params.el) { return; } 5224 5225 var $el = $(params.el); 5226 if ($el.length === 0) { return; } 5227 5228 if ( 5229 swiper.params.uniqueNavElements 5230 && typeof params.el === 'string' 5231 && $el.length > 1 5232 && swiper.$el.find(params.el).length === 1 5233 ) { 5234 $el = swiper.$el.find(params.el); 5235 } 5236 5237 if (params.type === 'bullets' && params.clickable) { 5238 $el.addClass(params.clickableClass); 5239 } 5240 5241 $el.addClass(params.modifierClass + params.type); 5242 5243 if (params.type === 'bullets' && params.dynamicBullets) { 5244 $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); 5245 swiper.pagination.dynamicBulletIndex = 0; 5246 if (params.dynamicMainBullets < 1) { 5247 params.dynamicMainBullets = 1; 5248 } 5249 } 5250 if (params.type === 'progressbar' && params.progressbarOpposite) { 5251 $el.addClass(params.progressbarOppositeClass); 5252 } 5253 5254 if (params.clickable) { 5255 $el.on('click', ("." + (params.bulletClass)), function onClick(e) { 5256 e.preventDefault(); 5257 var index = $(this).index() * swiper.params.slidesPerGroup; 5258 if (swiper.params.loop) { index += swiper.loopedSlides; } 5259 swiper.slideTo(index); 5260 }); 5261 } 5262 5263 Utils.extend(swiper.pagination, { 5264 $el: $el, 5265 el: $el[0], 5266 }); 5267 }, 5268 destroy: function destroy() { 5269 var swiper = this; 5270 var params = swiper.params.pagination; 5271 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 5272 var $el = swiper.pagination.$el; 5273 5274 $el.removeClass(params.hiddenClass); 5275 $el.removeClass(params.modifierClass + params.type); 5276 if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); } 5277 if (params.clickable) { 5278 $el.off('click', ("." + (params.bulletClass))); 5279 } 5280 }, 5281 }; 5282 5283 var Pagination$1 = { 5284 name: 'pagination', 5285 params: { 5286 pagination: { 5287 el: null, 5288 bulletElement: 'span', 5289 clickable: false, 5290 hideOnClick: false, 5291 renderBullet: null, 5292 renderProgressbar: null, 5293 renderFraction: null, 5294 renderCustom: null, 5295 progressbarOpposite: false, 5296 type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' 5297 dynamicBullets: false, 5298 dynamicMainBullets: 1, 5299 formatFractionCurrent: function (number) { return number; }, 5300 formatFractionTotal: function (number) { return number; }, 5301 bulletClass: 'swiper-pagination-bullet', 5302 bulletActiveClass: 'swiper-pagination-bullet-active', 5303 modifierClass: 'swiper-pagination-', // NEW 5304 currentClass: 'swiper-pagination-current', 5305 totalClass: 'swiper-pagination-total', 5306 hiddenClass: 'swiper-pagination-hidden', 5307 progressbarFillClass: 'swiper-pagination-progressbar-fill', 5308 progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', 5309 clickableClass: 'swiper-pagination-clickable', // NEW 5310 lockClass: 'swiper-pagination-lock', 5311 }, 5312 }, 5313 create: function create() { 5314 var swiper = this; 5315 Utils.extend(swiper, { 5316 pagination: { 5317 init: Pagination.init.bind(swiper), 5318 render: Pagination.render.bind(swiper), 5319 update: Pagination.update.bind(swiper), 5320 destroy: Pagination.destroy.bind(swiper), 5321 dynamicBulletIndex: 0, 5322 }, 5323 }); 5324 }, 5325 on: { 5326 init: function init() { 5327 var swiper = this; 5328 swiper.pagination.init(); 5329 swiper.pagination.render(); 5330 swiper.pagination.update(); 5331 }, 5332 activeIndexChange: function activeIndexChange() { 5333 var swiper = this; 5334 if (swiper.params.loop) { 5335 swiper.pagination.update(); 5336 } else if (typeof swiper.snapIndex === 'undefined') { 5337 swiper.pagination.update(); 5338 } 5339 }, 5340 snapIndexChange: function snapIndexChange() { 5341 var swiper = this; 5342 if (!swiper.params.loop) { 5343 swiper.pagination.update(); 5344 } 5345 }, 5346 slidesLengthChange: function slidesLengthChange() { 5347 var swiper = this; 5348 if (swiper.params.loop) { 5349 swiper.pagination.render(); 5350 swiper.pagination.update(); 5351 } 5352 }, 5353 snapGridLengthChange: function snapGridLengthChange() { 5354 var swiper = this; 5355 if (!swiper.params.loop) { 5356 swiper.pagination.render(); 5357 swiper.pagination.update(); 5358 } 5359 }, 5360 destroy: function destroy() { 5361 var swiper = this; 5362 swiper.pagination.destroy(); 5363 }, 5364 click: function click(e) { 5365 var swiper = this; 5366 if ( 5367 swiper.params.pagination.el 5368 && swiper.params.pagination.hideOnClick 5369 && swiper.pagination.$el.length > 0 5370 && !$(e.target).hasClass(swiper.params.pagination.bulletClass) 5371 ) { 5372
vendor: 36,542 bytes, lines 5372-6324
5372swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); 5373 } 5374 }, 5375 }, 5376 }; 5377 5378 var Scrollbar = { 5379 setTranslate: function setTranslate() { 5380 var swiper = this; 5381 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 5382 var scrollbar = swiper.scrollbar; 5383 var rtl = swiper.rtlTranslate; 5384 var progress = swiper.progress; 5385 var dragSize = scrollbar.dragSize; 5386 var trackSize = scrollbar.trackSize; 5387 var $dragEl = scrollbar.$dragEl; 5388 var $el = scrollbar.$el; 5389 var params = swiper.params.scrollbar; 5390 5391 var newSize = dragSize; 5392 var newPos = (trackSize - dragSize) * progress; 5393 if (rtl) { 5394 newPos = -newPos; 5395 if (newPos > 0) { 5396 newSize = dragSize - newPos; 5397 newPos = 0; 5398 } else if (-newPos + dragSize > trackSize) { 5399 newSize = trackSize + newPos; 5400 } 5401 } else if (newPos < 0) { 5402 newSize = dragSize + newPos; 5403 newPos = 0; 5404 } else if (newPos + dragSize > trackSize) { 5405 newSize = trackSize - newPos; 5406 } 5407 if (swiper.isHorizontal()) { 5408 if (Support.transforms3d) { 5409 $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); 5410 } else { 5411 $dragEl.transform(("translateX(" + newPos + "px)")); 5412 } 5413 $dragEl[0].style.width = newSize + "px"; 5414 } else { 5415 if (Support.transforms3d) { 5416 $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); 5417 } else { 5418 $dragEl.transform(("translateY(" + newPos + "px)")); 5419 } 5420 $dragEl[0].style.height = newSize + "px"; 5421 } 5422 if (params.hide) { 5423 clearTimeout(swiper.scrollbar.timeout); 5424 $el[0].style.opacity = 1; 5425 swiper.scrollbar.timeout = setTimeout(function () { 5426 $el[0].style.opacity = 0; 5427 $el.transition(400); 5428 }, 1000); 5429 } 5430 }, 5431 setTransition: function setTransition(duration) { 5432 var swiper = this; 5433 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 5434 swiper.scrollbar.$dragEl.transition(duration); 5435 }, 5436 updateSize: function updateSize() { 5437 var swiper = this; 5438 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 5439 5440 var scrollbar = swiper.scrollbar; 5441 var $dragEl = scrollbar.$dragEl; 5442 var $el = scrollbar.$el; 5443 5444 $dragEl[0].style.width = ''; 5445 $dragEl[0].style.height = ''; 5446 var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; 5447 5448 var divider = swiper.size / swiper.virtualSize; 5449 var moveDivider = divider * (trackSize / swiper.size); 5450 var dragSize; 5451 if (swiper.params.scrollbar.dragSize === 'auto') { 5452 dragSize = trackSize * divider; 5453 } else { 5454 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 5455 } 5456 5457 if (swiper.isHorizontal()) { 5458 $dragEl[0].style.width = dragSize + "px"; 5459 } else { 5460 $dragEl[0].style.height = dragSize + "px"; 5461 } 5462 5463 if (divider >= 1) { 5464 $el[0].style.display = 'none'; 5465 } else { 5466 $el[0].style.display = ''; 5467 } 5468 if (swiper.params.scrollbarHide) { 5469 $el[0].style.opacity = 0; 5470 } 5471 Utils.extend(scrollbar, { 5472 trackSize: trackSize, 5473 divider: divider, 5474 moveDivider: moveDivider, 5475 dragSize: dragSize, 5476 }); 5477 scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); 5478 }, 5479 setDragPosition: function setDragPosition(e) { 5480 var swiper = this; 5481 var scrollbar = swiper.scrollbar; 5482 var rtl = swiper.rtlTranslate; 5483 var $el = scrollbar.$el; 5484 var dragSize = scrollbar.dragSize; 5485 var trackSize = scrollbar.trackSize; 5486 5487 var pointerPosition; 5488 if (swiper.isHorizontal()) { 5489 pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX); 5490 } else { 5491 pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY); 5492 } 5493 var positionRatio; 5494 positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize); 5495 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 5496 if (rtl) { 5497 positionRatio = 1 - positionRatio; 5498 } 5499 5500 var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); 5501 5502 swiper.updateProgress(position); 5503 swiper.setTranslate(position); 5504 swiper.updateActiveIndex(); 5505 swiper.updateSlidesClasses(); 5506 }, 5507 onDragStart: function onDragStart(e) { 5508 var swiper = this; 5509 var params = swiper.params.scrollbar; 5510 var scrollbar = swiper.scrollbar; 5511 var $wrapperEl = swiper.$wrapperEl; 5512 var $el = scrollbar.$el; 5513 var $dragEl = scrollbar.$dragEl; 5514 swiper.scrollbar.isTouched = true; 5515 e.preventDefault(); 5516 e.stopPropagation(); 5517 5518 $wrapperEl.transition(100); 5519 $dragEl.transition(100); 5520 scrollbar.setDragPosition(e); 5521 5522 clearTimeout(swiper.scrollbar.dragTimeout); 5523 5524 $el.transition(0); 5525 if (params.hide) { 5526 $el.css('opacity', 1); 5527 } 5528 swiper.emit('scrollbarDragStart', e); 5529 }, 5530 onDragMove: function onDragMove(e) { 5531 var swiper = this; 5532 var scrollbar = swiper.scrollbar; 5533 var $wrapperEl = swiper.$wrapperEl; 5534 var $el = scrollbar.$el; 5535 var $dragEl = scrollbar.$dragEl; 5536 5537 if (!swiper.scrollbar.isTouched) { return; } 5538 if (e.preventDefault) { e.preventDefault(); } 5539 else { e.returnValue = false; } 5540 scrollbar.setDragPosition(e); 5541 $wrapperEl.transition(0); 5542 $el.transition(0); 5543 $dragEl.transition(0); 5544 swiper.emit('scrollbarDragMove', e); 5545 }, 5546 onDragEnd: function onDragEnd(e) { 5547 var swiper = this; 5548 5549 var params = swiper.params.scrollbar; 5550 var scrollbar = swiper.scrollbar; 5551 var $el = scrollbar.$el; 5552 5553 if (!swiper.scrollbar.isTouched) { return; } 5554 swiper.scrollbar.isTouched = false; 5555 if (params.hide) { 5556 clearTimeout(swiper.scrollbar.dragTimeout); 5557 swiper.scrollbar.dragTimeout = Utils.nextTick(function () { 5558 $el.css('opacity', 0); 5559 $el.transition(400); 5560 }, 1000); 5561 } 5562 swiper.emit('scrollbarDragEnd', e); 5563 if (params.snapOnRelease) { 5564 swiper.slideToClosest(); 5565 } 5566 }, 5567 enableDraggable: function enableDraggable() { 5568 var swiper = this; 5569 if (!swiper.params.scrollbar.el) { return; } 5570 var scrollbar = swiper.scrollbar; 5571 var touchEvents = swiper.touchEvents; 5572 var touchEventsDesktop = swiper.touchEventsDesktop; 5573 var params = swiper.params; 5574 var $el = scrollbar.$el; 5575 var target = $el[0]; 5576 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 5577 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 5578 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 5579 target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 5580 doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 5581 doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 5582 } else { 5583 if (Support.touch) { 5584 target.addEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener); 5585 target.addEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener); 5586 target.addEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener); 5587 } 5588 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 5589 target.addEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener); 5590 doc.addEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener); 5591 doc.addEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener); 5592 } 5593 } 5594 }, 5595 disableDraggable: function disableDraggable() { 5596 var swiper = this; 5597 if (!swiper.params.scrollbar.el) { return; } 5598 var scrollbar = swiper.scrollbar; 5599 var touchEvents = swiper.touchEvents; 5600 var touchEventsDesktop = swiper.touchEventsDesktop; 5601 var params = swiper.params; 5602 var $el = scrollbar.$el; 5603 var target = $el[0]; 5604 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 5605 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 5606 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 5607 target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 5608 doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 5609 doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 5610 } else { 5611 if (Support.touch) { 5612 target.removeEventListener(touchEvents.start, swiper.scrollbar.onDragStart, activeListener); 5613 target.removeEventListener(touchEvents.move, swiper.scrollbar.onDragMove, activeListener); 5614 target.removeEventListener(touchEvents.end, swiper.scrollbar.onDragEnd, passiveListener); 5615 } 5616 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 5617 target.removeEventListener('mousedown', swiper.scrollbar.onDragStart, activeListener); 5618 doc.removeEventListener('mousemove', swiper.scrollbar.onDragMove, activeListener); 5619 doc.removeEventListener('mouseup', swiper.scrollbar.onDragEnd, passiveListener); 5620 } 5621 } 5622 }, 5623 init: function init() { 5624 var swiper = this; 5625 if (!swiper.params.scrollbar.el) { return; } 5626 var scrollbar = swiper.scrollbar; 5627 var $swiperEl = swiper.$el; 5628 var params = swiper.params.scrollbar; 5629 5630 var $el = $(params.el); 5631 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { 5632 $el = $swiperEl.find(params.el); 5633 } 5634 5635 var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass))); 5636 if ($dragEl.length === 0) { 5637 $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>")); 5638 $el.append($dragEl); 5639 } 5640 5641 Utils.extend(scrollbar, { 5642 $el: $el, 5643 el: $el[0], 5644 $dragEl: $dragEl, 5645 dragEl: $dragEl[0], 5646 }); 5647 5648 if (params.draggable) { 5649 scrollbar.enableDraggable(); 5650 } 5651 }, 5652 destroy: function destroy() { 5653 var swiper = this; 5654 swiper.scrollbar.disableDraggable(); 5655 }, 5656 }; 5657 5658 var Scrollbar$1 = { 5659 name: 'scrollbar', 5660 params: { 5661 scrollbar: { 5662 el: null, 5663 dragSize: 'auto', 5664 hide: false, 5665 draggable: false, 5666 snapOnRelease: true, 5667 lockClass: 'swiper-scrollbar-lock', 5668 dragClass: 'swiper-scrollbar-drag', 5669 }, 5670 }, 5671 create: function create() { 5672 var swiper = this; 5673 Utils.extend(swiper, { 5674 scrollbar: { 5675 init: Scrollbar.init.bind(swiper), 5676 destroy: Scrollbar.destroy.bind(swiper), 5677 updateSize: Scrollbar.updateSize.bind(swiper), 5678 setTranslate: Scrollbar.setTranslate.bind(swiper), 5679 setTransition: Scrollbar.setTransition.bind(swiper), 5680 enableDraggable: Scrollbar.enableDraggable.bind(swiper), 5681 disableDraggable: Scrollbar.disableDraggable.bind(swiper), 5682 setDragPosition: Scrollbar.setDragPosition.bind(swiper), 5683 onDragStart: Scrollbar.onDragStart.bind(swiper), 5684 onDragMove: Scrollbar.onDragMove.bind(swiper), 5685 onDragEnd: Scrollbar.onDragEnd.bind(swiper), 5686 isTouched: false, 5687 timeout: null, 5688 dragTimeout: null, 5689 }, 5690 }); 5691 }, 5692 on: { 5693 init: function init() { 5694 var swiper = this; 5695 swiper.scrollbar.init(); 5696 swiper.scrollbar.updateSize(); 5697 swiper.scrollbar.setTranslate(); 5698 }, 5699 update: function update() { 5700 var swiper = this; 5701 swiper.scrollbar.updateSize(); 5702 }, 5703 resize: function resize() { 5704 var swiper = this; 5705 swiper.scrollbar.updateSize(); 5706 }, 5707 observerUpdate: function observerUpdate() { 5708 var swiper = this; 5709 swiper.scrollbar.updateSize(); 5710 }, 5711 setTranslate: function setTranslate() { 5712 var swiper = this; 5713 swiper.scrollbar.setTranslate(); 5714 }, 5715 setTransition: function setTransition(duration) { 5716 var swiper = this; 5717 swiper.scrollbar.setTransition(duration); 5718 }, 5719 destroy: function destroy() { 5720 var swiper = this; 5721 swiper.scrollbar.destroy(); 5722 }, 5723 }, 5724 }; 5725 5726 var Parallax = { 5727 setTransform: function setTransform(el, progress) { 5728 var swiper = this; 5729 var rtl = swiper.rtl; 5730 5731 var $el = $(el); 5732 var rtlFactor = rtl ? -1 : 1; 5733 5734 var p = $el.attr('data-swiper-parallax') || '0'; 5735 var x = $el.attr('data-swiper-parallax-x'); 5736 var y = $el.attr('data-swiper-parallax-y'); 5737 var scale = $el.attr('data-swiper-parallax-scale'); 5738 var opacity = $el.attr('data-swiper-parallax-opacity'); 5739 5740 if (x || y) { 5741 x = x || '0'; 5742 y = y || '0'; 5743 } else if (swiper.isHorizontal()) { 5744 x = p; 5745 y = '0'; 5746 } else { 5747 y = p; 5748 x = '0'; 5749 } 5750 5751 if ((x).indexOf('%') >= 0) { 5752 x = (parseInt(x, 10) * progress * rtlFactor) + "%"; 5753 } else { 5754 x = (x * progress * rtlFactor) + "px"; 5755 } 5756 if ((y).indexOf('%') >= 0) { 5757 y = (parseInt(y, 10) * progress) + "%"; 5758 } else { 5759 y = (y * progress) + "px"; 5760 } 5761 5762 if (typeof opacity !== 'undefined' && opacity !== null) { 5763 var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); 5764 $el[0].style.opacity = currentOpacity; 5765 } 5766 if (typeof scale === 'undefined' || scale === null) { 5767 $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); 5768 } else { 5769 var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); 5770 $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); 5771 } 5772 }, 5773 setTranslate: function setTranslate() { 5774 var swiper = this; 5775 var $el = swiper.$el; 5776 var slides = swiper.slides; 5777 var progress = swiper.progress; 5778 var snapGrid = swiper.snapGrid; 5779 $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 5780 .each(function (index, el) { 5781 swiper.parallax.setTransform(el, progress); 5782 }); 5783 slides.each(function (slideIndex, slideEl) { 5784 var slideProgress = slideEl.progress; 5785 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 5786 slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); 5787 } 5788 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 5789 $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 5790 .each(function (index, el) { 5791 swiper.parallax.setTransform(el, slideProgress); 5792 }); 5793 }); 5794 }, 5795 setTransition: function setTransition(duration) { 5796 if ( duration === void 0 ) duration = this.params.speed; 5797 5798 var swiper = this; 5799 var $el = swiper.$el; 5800 $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 5801 .each(function (index, parallaxEl) { 5802 var $parallaxEl = $(parallaxEl); 5803 var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; 5804 if (duration === 0) { parallaxDuration = 0; } 5805 $parallaxEl.transition(parallaxDuration); 5806 }); 5807 }, 5808 }; 5809 5810 var Parallax$1 = { 5811 name: 'parallax', 5812 params: { 5813 parallax: { 5814 enabled: false, 5815 }, 5816 }, 5817 create: function create() { 5818 var swiper = this; 5819 Utils.extend(swiper, { 5820 parallax: { 5821 setTransform: Parallax.setTransform.bind(swiper), 5822 setTranslate: Parallax.setTranslate.bind(swiper), 5823 setTransition: Parallax.setTransition.bind(swiper), 5824 }, 5825 }); 5826 }, 5827 on: { 5828 beforeInit: function beforeInit() { 5829 var swiper = this; 5830 if (!swiper.params.parallax.enabled) { return; } 5831 swiper.params.watchSlidesProgress = true; 5832 }, 5833 init: function init() { 5834 var swiper = this; 5835 if (!swiper.params.parallax) { return; } 5836 swiper.parallax.setTranslate(); 5837 }, 5838 setTranslate: function setTranslate() { 5839 var swiper = this; 5840 if (!swiper.params.parallax) { return; } 5841 swiper.parallax.setTranslate(); 5842 }, 5843 setTransition: function setTransition(duration) { 5844 var swiper = this; 5845 if (!swiper.params.parallax) { return; } 5846 swiper.parallax.setTransition(duration); 5847 }, 5848 }, 5849 }; 5850 5851 var Zoom = { 5852 // Calc Scale From Multi-touches 5853 getDistanceBetweenTouches: function getDistanceBetweenTouches(e) { 5854 if (e.targetTouches.length < 2) { return 1; } 5855 var x1 = e.targetTouches[0].pageX; 5856 var y1 = e.targetTouches[0].pageY; 5857 var x2 = e.targetTouches[1].pageX; 5858 var y2 = e.targetTouches[1].pageY; 5859 var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 ))); 5860 return distance; 5861 }, 5862 // Events 5863 onGestureStart: function onGestureStart(e) { 5864 var swiper = this; 5865 var params = swiper.params.zoom; 5866 var zoom = swiper.zoom; 5867 var gesture = zoom.gesture; 5868 zoom.fakeGestureTouched = false; 5869 zoom.fakeGestureMoved = false; 5870 if (!Support.gestures) { 5871 if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { 5872 return; 5873 } 5874 zoom.fakeGestureTouched = true; 5875 gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); 5876 } 5877 if (!gesture.$slideEl || !gesture.$slideEl.length) { 5878 gesture.$slideEl = $(e.target).closest('.swiper-slide'); 5879 if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); } 5880 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 5881 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 5882 gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 5883 if (gesture.$imageWrapEl.length === 0) { 5884 gesture.$imageEl = undefined; 5885 return; 5886 } 5887 } 5888 gesture.$imageEl.transition(0); 5889 swiper.zoom.isScaling = true; 5890 }, 5891 onGestureChange: function onGestureChange(e) { 5892 var swiper = this; 5893 var params = swiper.params.zoom; 5894 var zoom = swiper.zoom; 5895 var gesture = zoom.gesture; 5896 if (!Support.gestures) { 5897 if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { 5898 return; 5899 } 5900 zoom.fakeGestureMoved = true; 5901 gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); 5902 } 5903 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 5904 if (Support.gestures) { 5905 swiper.zoom.scale = e.scale * zoom.currentScale; 5906 } else { 5907 zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; 5908 } 5909 if (zoom.scale > gesture.maxRatio) { 5910 zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 )); 5911 } 5912 if (zoom.scale < params.minRatio) { 5913 zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 )); 5914 } 5915 gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 5916 }, 5917 onGestureEnd: function onGestureEnd(e) { 5918 var swiper = this; 5919 var params = swiper.params.zoom; 5920 var zoom = swiper.zoom; 5921 var gesture = zoom.gesture; 5922 if (!Support.gestures) { 5923 if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { 5924 return; 5925 } 5926 if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { 5927 return; 5928 } 5929 zoom.fakeGestureTouched = false; 5930 zoom.fakeGestureMoved = false; 5931 } 5932 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 5933 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 5934 gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 5935 zoom.currentScale = zoom.scale; 5936 zoom.isScaling = false; 5937 if (zoom.scale === 1) { gesture.$slideEl = undefined; } 5938 }, 5939 onTouchStart: function onTouchStart(e) { 5940 var swiper = this; 5941 var zoom = swiper.zoom; 5942 var gesture = zoom.gesture; 5943 var image = zoom.image; 5944 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 5945 if (image.isTouched) { return; } 5946 if (Device.android) { e.preventDefault(); } 5947 image.isTouched = true; 5948 image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 5949 image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 5950 }, 5951 onTouchMove: function onTouchMove(e) { 5952 var swiper = this; 5953 var zoom = swiper.zoom; 5954 var gesture = zoom.gesture; 5955 var image = zoom.image; 5956 var velocity = zoom.velocity; 5957 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 5958 swiper.allowClick = false; 5959 if (!image.isTouched || !gesture.$slideEl) { return; } 5960 5961 if (!image.isMoved) { 5962 image.width = gesture.$imageEl[0].offsetWidth; 5963 image.height = gesture.$imageEl[0].offsetHeight; 5964 image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; 5965 image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; 5966 gesture.slideWidth = gesture.$slideEl[0].offsetWidth; 5967 gesture.slideHeight = gesture.$slideEl[0].offsetHeight; 5968 gesture.$imageWrapEl.transition(0); 5969 if (swiper.rtl) { 5970 image.startX = -image.startX; 5971 image.startY = -image.startY; 5972 } 5973 } 5974 // Define if we need image drag 5975 var scaledWidth = image.width * zoom.scale; 5976 var scaledHeight = image.height * zoom.scale; 5977 5978 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; } 5979 5980 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 5981 image.maxX = -image.minX; 5982 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 5983 image.maxY = -image.minY; 5984 5985 image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 5986 image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 5987 5988 if (!image.isMoved && !zoom.isScaling) { 5989 if ( 5990 swiper.isHorizontal() 5991 && ( 5992 (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) 5993 || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) 5994 ) 5995 ) { 5996 image.isTouched = false; 5997 return; 5998 } if ( 5999 !swiper.isHorizontal() 6000 && ( 6001 (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) 6002 || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) 6003 ) 6004 ) { 6005 image.isTouched = false; 6006 return; 6007 } 6008 } 6009 e.preventDefault(); 6010 e.stopPropagation(); 6011 6012 image.isMoved = true; 6013 image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; 6014 image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; 6015 6016 if (image.currentX < image.minX) { 6017 image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 )); 6018 } 6019 if (image.currentX > image.maxX) { 6020 image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 )); 6021 } 6022 6023 if (image.currentY < image.minY) { 6024 image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 )); 6025 } 6026 if (image.currentY > image.maxY) { 6027 image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 )); 6028 } 6029 6030 // Velocity 6031 if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; } 6032 if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; } 6033 if (!velocity.prevTime) { velocity.prevTime = Date.now(); } 6034 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 6035 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 6036 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; } 6037 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; } 6038 velocity.prevPositionX = image.touchesCurrent.x; 6039 velocity.prevPositionY = image.touchesCurrent.y; 6040 velocity.prevTime = Date.now(); 6041 6042 gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 6043 }, 6044 onTouchEnd: function onTouchEnd() { 6045 var swiper = this; 6046 var zoom = swiper.zoom; 6047 var gesture = zoom.gesture; 6048 var image = zoom.image; 6049 var velocity = zoom.velocity; 6050 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 6051 if (!image.isTouched || !image.isMoved) { 6052 image.isTouched = false; 6053 image.isMoved = false; 6054 return; 6055 } 6056 image.isTouched = false; 6057 image.isMoved = false; 6058 var momentumDurationX = 300; 6059 var momentumDurationY = 300; 6060 var momentumDistanceX = velocity.x * momentumDurationX; 6061 var newPositionX = image.currentX + momentumDistanceX; 6062 var momentumDistanceY = velocity.y * momentumDurationY; 6063 var newPositionY = image.currentY + momentumDistanceY; 6064 6065 // Fix duration 6066 if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); } 6067 if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); } 6068 var momentumDuration = Math.max(momentumDurationX, momentumDurationY); 6069 6070 image.currentX = newPositionX; 6071 image.currentY = newPositionY; 6072 6073 // Define if we need image drag 6074 var scaledWidth = image.width * zoom.scale; 6075 var scaledHeight = image.height * zoom.scale; 6076 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 6077 image.maxX = -image.minX; 6078 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 6079 image.maxY = -image.minY; 6080 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 6081 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 6082 6083 gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 6084 }, 6085 onTransitionEnd: function onTransitionEnd() { 6086 var swiper = this; 6087 var zoom = swiper.zoom; 6088 var gesture = zoom.gesture; 6089 if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { 6090 gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); 6091 gesture.$imageWrapEl.transform('translate3d(0,0,0)'); 6092 gesture.$slideEl = undefined; 6093 gesture.$imageEl = undefined; 6094 gesture.$imageWrapEl = undefined; 6095 6096 zoom.scale = 1; 6097 zoom.currentScale = 1; 6098 } 6099 }, 6100 // Toggle Zoom 6101 toggle: function toggle(e) { 6102 var swiper = this; 6103 var zoom = swiper.zoom; 6104 6105 if (zoom.scale && zoom.scale !== 1) { 6106 // Zoom Out 6107 zoom.out(); 6108 } else { 6109 // Zoom In 6110 zoom.in(e); 6111 } 6112 }, 6113 in: function in$1(e) { 6114 var swiper = this; 6115 6116 var zoom = swiper.zoom; 6117 var params = swiper.params.zoom; 6118 var gesture = zoom.gesture; 6119 var image = zoom.image; 6120 6121 if (!gesture.$slideEl) { 6122 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 6123 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 6124 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 6125 } 6126 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 6127 6128 gesture.$slideEl.addClass(("" + (params.zoomedSlideClass))); 6129 6130 var touchX; 6131 var touchY; 6132 var offsetX; 6133 var offsetY; 6134 var diffX; 6135 var diffY; 6136 var translateX; 6137 var translateY; 6138 var imageWidth; 6139 var imageHeight; 6140 var scaledWidth; 6141 var scaledHeight; 6142 var translateMinX; 6143 var translateMinY; 6144 var translateMaxX; 6145 var translateMaxY; 6146 var slideWidth; 6147 var slideHeight; 6148 6149 if (typeof image.touchesStart.x === 'undefined' && e) { 6150 touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; 6151 touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; 6152 } else { 6153 touchX = image.touchesStart.x; 6154 touchY = image.touchesStart.y; 6155 } 6156 6157 zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 6158 zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 6159 if (e) { 6160 slideWidth = gesture.$slideEl[0].offsetWidth; 6161 slideHeight = gesture.$slideEl[0].offsetHeight; 6162 offsetX = gesture.$slideEl.offset().left; 6163 offsetY = gesture.$slideEl.offset().top; 6164 diffX = (offsetX + (slideWidth / 2)) - touchX; 6165 diffY = (offsetY + (slideHeight / 2)) - touchY; 6166 6167 imageWidth = gesture.$imageEl[0].offsetWidth; 6168 imageHeight = gesture.$imageEl[0].offsetHeight; 6169 scaledWidth = imageWidth * zoom.scale; 6170 scaledHeight = imageHeight * zoom.scale; 6171 6172 translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); 6173 translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); 6174 translateMaxX = -translateMinX; 6175 translateMaxY = -translateMinY; 6176 6177 translateX = diffX * zoom.scale; 6178 translateY = diffY * zoom.scale; 6179 6180 if (translateX < translateMinX) { 6181 translateX = translateMinX; 6182 } 6183 if (translateX > translateMaxX) { 6184 translateX = translateMaxX; 6185 } 6186 6187 if (translateY < translateMinY) { 6188 translateY = translateMinY; 6189 } 6190 if (translateY > translateMaxY) { 6191 translateY = translateMaxY; 6192 } 6193 } else { 6194 translateX = 0; 6195 translateY = 0; 6196 } 6197 gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); 6198 gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 6199 }, 6200 out: function out() { 6201 var swiper = this; 6202 6203 var zoom = swiper.zoom; 6204 var params = swiper.params.zoom; 6205 var gesture = zoom.gesture; 6206 6207 if (!gesture.$slideEl) { 6208 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 6209 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 6210 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 6211 } 6212 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 6213 6214 zoom.scale = 1; 6215 zoom.currentScale = 1; 6216 gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); 6217 gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); 6218 gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); 6219 gesture.$slideEl = undefined; 6220 }, 6221 // Attach/Detach Events 6222 enable: function enable() { 6223 var swiper = this; 6224 var zoom = swiper.zoom; 6225 if (zoom.enabled) { return; } 6226 zoom.enabled = true; 6227 6228 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 6229 6230 // Scale image 6231 if (Support.gestures) { 6232 swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 6233 swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 6234 swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 6235 } else if (swiper.touchEvents.start === 'touchstart') { 6236 swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 6237 swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 6238 swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 6239 } 6240 6241 // Move image 6242 swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 6243 }, 6244 disable: function disable() { 6245 var swiper = this; 6246 var zoom = swiper.zoom; 6247 if (!zoom.enabled) { return; } 6248 6249 swiper.zoom.enabled = false; 6250 6251 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 6252 6253 // Scale image 6254 if (Support.gestures) { 6255 swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 6256 swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 6257 swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 6258 } else if (swiper.touchEvents.start === 'touchstart') { 6259 swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 6260 swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 6261 swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 6262 } 6263 6264 // Move image 6265 swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 6266 }, 6267 }; 6268 6269 var Zoom$1 = { 6270 name: 'zoom', 6271 params: { 6272 zoom: { 6273 enabled: false, 6274 maxRatio: 3, 6275 minRatio: 1, 6276 toggle: true, 6277 containerClass: 'swiper-zoom-container', 6278 zoomedSlideClass: 'swiper-slide-zoomed', 6279 }, 6280 }, 6281 create: function create() { 6282 var swiper = this; 6283 var zoom = { 6284 enabled: false, 6285 scale: 1, 6286 currentScale: 1, 6287 isScaling: false, 6288 gesture: { 6289 $slideEl: undefined, 6290 slideWidth: undefined, 6291 slideHeight: undefined, 6292 $imageEl: undefined, 6293 $imageWrapEl: undefined, 6294 maxRatio: 3, 6295 }, 6296 image: { 6297 isTouched: undefined, 6298 isMoved: undefined, 6299 currentX: undefined, 6300 currentY: undefined, 6301 minX: undefined, 6302 minY: undefined, 6303 maxX: undefined, 6304 maxY: undefined, 6305 width: undefined, 6306 height: undefined, 6307 startX: undefined, 6308 startY: undefined, 6309 touchesStart: {}, 6310 touchesCurrent: {}, 6311 }, 6312 velocity: { 6313 x: undefined, 6314 y: undefined, 6315 prevPositionX: undefined, 6316 prevPositionY: undefined, 6317 prevTime: undefined, 6318 }, 6319 }; 6320 ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) { 6321 zoom[methodName] = Zoom[methodName].bind(swiper); 6322 }); 6323 Utils.extend(swiper, { 6324 zoom: zoom
vendor: 24,869 bytes, lines 6324-7014
6324, 6325 }); 6326 }, 6327 on: { 6328 init: function init() { 6329 var swiper = this; 6330 if (swiper.params.zoom.enabled) { 6331 swiper.zoom.enable(); 6332 } 6333 }, 6334 destroy: function destroy() { 6335 var swiper = this; 6336 swiper.zoom.disable(); 6337 }, 6338 touchStart: function touchStart(e) { 6339 var swiper = this; 6340 if (!swiper.zoom.enabled) { return; } 6341 swiper.zoom.onTouchStart(e); 6342 }, 6343 touchEnd: function touchEnd(e) { 6344 var swiper = this; 6345 if (!swiper.zoom.enabled) { return; } 6346 swiper.zoom.onTouchEnd(e); 6347 }, 6348 doubleTap: function doubleTap(e) { 6349 var swiper = this; 6350 if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 6351 swiper.zoom.toggle(e); 6352 } 6353 }, 6354 transitionEnd: function transitionEnd() { 6355 var swiper = this; 6356 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 6357 swiper.zoom.onTransitionEnd(); 6358 } 6359 }, 6360 }, 6361 }; 6362 6363 var Lazy = { 6364 loadInSlide: function loadInSlide(index, loadInDuplicate) { 6365 if ( loadInDuplicate === void 0 ) loadInDuplicate = true; 6366 6367 var swiper = this; 6368 var params = swiper.params.lazy; 6369 if (typeof index === 'undefined') { return; } 6370 if (swiper.slides.length === 0) { return; } 6371 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 6372 6373 var $slideEl = isVirtual 6374 ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) 6375 : swiper.slides.eq(index); 6376 6377 var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); 6378 if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { 6379 $images = $images.add($slideEl[0]); 6380 } 6381 if ($images.length === 0) { return; } 6382 6383 $images.each(function (imageIndex, imageEl) { 6384 var $imageEl = $(imageEl); 6385 $imageEl.addClass(params.loadingClass); 6386 6387 var background = $imageEl.attr('data-background'); 6388 var src = $imageEl.attr('data-src'); 6389 var srcset = $imageEl.attr('data-srcset'); 6390 var sizes = $imageEl.attr('data-sizes'); 6391 6392 swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () { 6393 if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; } 6394 if (background) { 6395 $imageEl.css('background-image', ("url(\"" + background + "\")")); 6396 $imageEl.removeAttr('data-background'); 6397 } else { 6398 if (srcset) { 6399 $imageEl.attr('srcset', srcset); 6400 $imageEl.removeAttr('data-srcset'); 6401 } 6402 if (sizes) { 6403 $imageEl.attr('sizes', sizes); 6404 $imageEl.removeAttr('data-sizes'); 6405 } 6406 if (src) { 6407 $imageEl.attr('src', src); 6408 $imageEl.removeAttr('data-src'); 6409 } 6410 } 6411 6412 $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); 6413 $slideEl.find(("." + (params.preloaderClass))).remove(); 6414 if (swiper.params.loop && loadInDuplicate) { 6415 var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); 6416 if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { 6417 var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); 6418 swiper.lazy.loadInSlide(originalSlide.index(), false); 6419 } else { 6420 var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); 6421 swiper.lazy.loadInSlide(duplicatedSlide.index(), false); 6422 } 6423 } 6424 swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); 6425 }); 6426 6427 swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); 6428 }); 6429 }, 6430 load: function load() { 6431 var swiper = this; 6432 var $wrapperEl = swiper.$wrapperEl; 6433 var swiperParams = swiper.params; 6434 var slides = swiper.slides; 6435 var activeIndex = swiper.activeIndex; 6436 var isVirtual = swiper.virtual && swiperParams.virtual.enabled; 6437 var params = swiperParams.lazy; 6438 6439 var slidesPerView = swiperParams.slidesPerView; 6440 if (slidesPerView === 'auto') { 6441 slidesPerView = 0; 6442 } 6443 6444 function slideExist(index) { 6445 if (isVirtual) { 6446 if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) { 6447 return true; 6448 } 6449 } else if (slides[index]) { return true; } 6450 return false; 6451 } 6452 function slideIndex(slideEl) { 6453 if (isVirtual) { 6454 return $(slideEl).attr('data-swiper-slide-index'); 6455 } 6456 return $(slideEl).index(); 6457 } 6458 6459 if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; } 6460 if (swiper.params.watchSlidesVisibility) { 6461 $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) { 6462 var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); 6463 swiper.lazy.loadInSlide(index); 6464 }); 6465 } else if (slidesPerView > 1) { 6466 for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) { 6467 if (slideExist(i)) { swiper.lazy.loadInSlide(i); } 6468 } 6469 } else { 6470 swiper.lazy.loadInSlide(activeIndex); 6471 } 6472 if (params.loadPrevNext) { 6473 if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { 6474 var amount = params.loadPrevNextAmount; 6475 var spv = slidesPerView; 6476 var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); 6477 var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); 6478 // Next Slides 6479 for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) { 6480 if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); } 6481 } 6482 // Prev Slides 6483 for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) { 6484 if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); } 6485 } 6486 } else { 6487 var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass))); 6488 if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); } 6489 6490 var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass))); 6491 if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); } 6492 } 6493 } 6494 }, 6495 }; 6496 6497 var Lazy$1 = { 6498 name: 'lazy', 6499 params: { 6500 lazy: { 6501 enabled: false, 6502 loadPrevNext: false, 6503 loadPrevNextAmount: 1, 6504 loadOnTransitionStart: false, 6505 6506 elementClass: 'swiper-lazy', 6507 loadingClass: 'swiper-lazy-loading', 6508 loadedClass: 'swiper-lazy-loaded', 6509 preloaderClass: 'swiper-lazy-preloader', 6510 }, 6511 }, 6512 create: function create() { 6513 var swiper = this; 6514 Utils.extend(swiper, { 6515 lazy: { 6516 initialImageLoaded: false, 6517 load: Lazy.load.bind(swiper), 6518 loadInSlide: Lazy.loadInSlide.bind(swiper), 6519 }, 6520 }); 6521 }, 6522 on: { 6523 beforeInit: function beforeInit() { 6524 var swiper = this; 6525 if (swiper.params.lazy.enabled && swiper.params.preloadImages) { 6526 swiper.params.preloadImages = false; 6527 } 6528 }, 6529 init: function init() { 6530 var swiper = this; 6531 if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { 6532 swiper.lazy.load(); 6533 } 6534 }, 6535 scroll: function scroll() { 6536 var swiper = this; 6537 if (swiper.params.freeMode && !swiper.params.freeModeSticky) { 6538 swiper.lazy.load(); 6539 } 6540 }, 6541 resize: function resize() { 6542 var swiper = this; 6543 if (swiper.params.lazy.enabled) { 6544 swiper.lazy.load(); 6545 } 6546 }, 6547 scrollbarDragMove: function scrollbarDragMove() { 6548 var swiper = this; 6549 if (swiper.params.lazy.enabled) { 6550 swiper.lazy.load(); 6551 } 6552 }, 6553 transitionStart: function transitionStart() { 6554 var swiper = this; 6555 if (swiper.params.lazy.enabled) { 6556 if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { 6557 swiper.lazy.load(); 6558 } 6559 } 6560 }, 6561 transitionEnd: function transitionEnd() { 6562 var swiper = this; 6563 if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { 6564 swiper.lazy.load(); 6565 } 6566 }, 6567 }, 6568 }; 6569 6570 /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 6571 6572 var Controller = { 6573 LinearSpline: function LinearSpline(x, y) { 6574 var binarySearch = (function search() { 6575 var maxIndex; 6576 var minIndex; 6577 var guess; 6578 return function (array, val) { 6579 minIndex = -1; 6580 maxIndex = array.length; 6581 while (maxIndex - minIndex > 1) { 6582 guess = maxIndex + minIndex >> 1; 6583 if (array[guess] <= val) { 6584 minIndex = guess; 6585 } else { 6586 maxIndex = guess; 6587 } 6588 } 6589 return maxIndex; 6590 }; 6591 }()); 6592 this.x = x; 6593 this.y = y; 6594 this.lastIndex = x.length - 1; 6595 // Given an x value (x2), return the expected y2 value: 6596 // (x1,y1) is the known point before given value, 6597 // (x3,y3) is the known point after given value. 6598 var i1; 6599 var i3; 6600 6601 this.interpolate = function interpolate(x2) { 6602 if (!x2) { return 0; } 6603 6604 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 6605 i3 = binarySearch(this.x, x2); 6606 i1 = i3 - 1; 6607 6608 // We have our indexes i1 & i3, so we can calculate already: 6609 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 6610 return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; 6611 }; 6612 return this; 6613 }, 6614 // xxx: for now i will just save one spline function to to 6615 getInterpolateFunction: function getInterpolateFunction(c) { 6616 var swiper = this; 6617 if (!swiper.controller.spline) { 6618 swiper.controller.spline = swiper.params.loop 6619 ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) 6620 : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); 6621 } 6622 }, 6623 setTranslate: function setTranslate(setTranslate$1, byController) { 6624 var swiper = this; 6625 var controlled = swiper.controller.control; 6626 var multiplier; 6627 var controlledTranslate; 6628 function setControlledTranslate(c) { 6629 // this will create an Interpolate function based on the snapGrids 6630 // x is the Grid of the scrolled scroller and y will be the controlled scroller 6631 // it makes sense to create this only once and recall it for the interpolation 6632 // the function does a lot of value caching for performance 6633 var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 6634 if (swiper.params.controller.by === 'slide') { 6635 swiper.controller.getInterpolateFunction(c); 6636 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 6637 // but it did not work out 6638 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 6639 } 6640 6641 if (!controlledTranslate || swiper.params.controller.by === 'container') { 6642 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 6643 controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); 6644 } 6645 6646 if (swiper.params.controller.inverse) { 6647 controlledTranslate = c.maxTranslate() - controlledTranslate; 6648 } 6649 c.updateProgress(controlledTranslate); 6650 c.setTranslate(controlledTranslate, swiper); 6651 c.updateActiveIndex(); 6652 c.updateSlidesClasses(); 6653 } 6654 if (Array.isArray(controlled)) { 6655 for (var i = 0; i < controlled.length; i += 1) { 6656 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 6657 setControlledTranslate(controlled[i]); 6658 } 6659 } 6660 } else if (controlled instanceof Swiper && byController !== controlled) { 6661 setControlledTranslate(controlled); 6662 } 6663 }, 6664 setTransition: function setTransition(duration, byController) { 6665 var swiper = this; 6666 var controlled = swiper.controller.control; 6667 var i; 6668 function setControlledTransition(c) { 6669 c.setTransition(duration, swiper); 6670 if (duration !== 0) { 6671 c.transitionStart(); 6672 if (c.params.autoHeight) { 6673 Utils.nextTick(function () { 6674 c.updateAutoHeight(); 6675 }); 6676 } 6677 c.$wrapperEl.transitionEnd(function () { 6678 if (!controlled) { return; } 6679 if (c.params.loop && swiper.params.controller.by === 'slide') { 6680 c.loopFix(); 6681 } 6682 c.transitionEnd(); 6683 }); 6684 } 6685 } 6686 if (Array.isArray(controlled)) { 6687 for (i = 0; i < controlled.length; i += 1) { 6688 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 6689 setControlledTransition(controlled[i]); 6690 } 6691 } 6692 } else if (controlled instanceof Swiper && byController !== controlled) { 6693 setControlledTransition(controlled); 6694 } 6695 }, 6696 }; 6697 var Controller$1 = { 6698 name: 'controller', 6699 params: { 6700 controller: { 6701 control: undefined, 6702 inverse: false, 6703 by: 'slide', // or 'container' 6704 }, 6705 }, 6706 create: function create() { 6707 var swiper = this; 6708 Utils.extend(swiper, { 6709 controller: { 6710 control: swiper.params.controller.control, 6711 getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), 6712 setTranslate: Controller.setTranslate.bind(swiper), 6713 setTransition: Controller.setTransition.bind(swiper), 6714 }, 6715 }); 6716 }, 6717 on: { 6718 update: function update() { 6719 var swiper = this; 6720 if (!swiper.controller.control) { return; } 6721 if (swiper.controller.spline) { 6722 swiper.controller.spline = undefined; 6723 delete swiper.controller.spline; 6724 } 6725 }, 6726 resize: function resize() { 6727 var swiper = this; 6728 if (!swiper.controller.control) { return; } 6729 if (swiper.controller.spline) { 6730 swiper.controller.spline = undefined; 6731 delete swiper.controller.spline; 6732 } 6733 }, 6734 observerUpdate: function observerUpdate() { 6735 var swiper = this; 6736 if (!swiper.controller.control) { return; } 6737 if (swiper.controller.spline) { 6738 swiper.controller.spline = undefined; 6739 delete swiper.controller.spline; 6740 } 6741 }, 6742 setTranslate: function setTranslate(translate, byController) { 6743 var swiper = this; 6744 if (!swiper.controller.control) { return; } 6745 swiper.controller.setTranslate(translate, byController); 6746 }, 6747 setTransition: function setTransition(duration, byController) { 6748 var swiper = this; 6749 if (!swiper.controller.control) { return; } 6750 swiper.controller.setTransition(duration, byController); 6751 }, 6752 }, 6753 }; 6754 6755 var a11y = { 6756 makeElFocusable: function makeElFocusable($el) { 6757 $el.attr('tabIndex', '0'); 6758 return $el; 6759 }, 6760 addElRole: function addElRole($el, role) { 6761 $el.attr('role', role); 6762 return $el; 6763 }, 6764 addElLabel: function addElLabel($el, label) { 6765 $el.attr('aria-label', label); 6766 return $el; 6767 }, 6768 disableEl: function disableEl($el) { 6769 $el.attr('aria-disabled', true); 6770 return $el; 6771 }, 6772 enableEl: function enableEl($el) { 6773 $el.attr('aria-disabled', false); 6774 return $el; 6775 }, 6776 onEnterKey: function onEnterKey(e) { 6777 var swiper = this; 6778 var params = swiper.params.a11y; 6779 if (e.keyCode !== 13) { return; } 6780 var $targetEl = $(e.target); 6781 if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { 6782 if (!(swiper.isEnd && !swiper.params.loop)) { 6783 swiper.slideNext(); 6784 } 6785 if (swiper.isEnd) { 6786 swiper.a11y.notify(params.lastSlideMessage); 6787 } else { 6788 swiper.a11y.notify(params.nextSlideMessage); 6789 } 6790 } 6791 if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { 6792 if (!(swiper.isBeginning && !swiper.params.loop)) { 6793 swiper.slidePrev(); 6794 } 6795 if (swiper.isBeginning) { 6796 swiper.a11y.notify(params.firstSlideMessage); 6797 } else { 6798 swiper.a11y.notify(params.prevSlideMessage); 6799 } 6800 } 6801 if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) { 6802 $targetEl[0].click(); 6803 } 6804 }, 6805 notify: function notify(message) { 6806 var swiper = this; 6807 var notification = swiper.a11y.liveRegion; 6808 if (notification.length === 0) { return; } 6809 notification.html(''); 6810 notification.html(message); 6811 }, 6812 updateNavigation: function updateNavigation() { 6813 var swiper = this; 6814 6815 if (swiper.params.loop) { return; } 6816 var ref = swiper.navigation; 6817 var $nextEl = ref.$nextEl; 6818 var $prevEl = ref.$prevEl; 6819 6820 if ($prevEl && $prevEl.length > 0) { 6821 if (swiper.isBeginning) { 6822 swiper.a11y.disableEl($prevEl); 6823 } else { 6824 swiper.a11y.enableEl($prevEl); 6825 } 6826 } 6827 if ($nextEl && $nextEl.length > 0) { 6828 if (swiper.isEnd) { 6829 swiper.a11y.disableEl($nextEl); 6830 } else { 6831 swiper.a11y.enableEl($nextEl); 6832 } 6833 } 6834 }, 6835 updatePagination: function updatePagination() { 6836 var swiper = this; 6837 var params = swiper.params.a11y; 6838 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 6839 swiper.pagination.bullets.each(function (bulletIndex, bulletEl) { 6840 var $bulletEl = $(bulletEl); 6841 swiper.a11y.makeElFocusable($bulletEl); 6842 swiper.a11y.addElRole($bulletEl, 'button'); 6843 swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1)); 6844 }); 6845 } 6846 }, 6847 init: function init() { 6848 var swiper = this; 6849 6850 swiper.$el.append(swiper.a11y.liveRegion); 6851 6852 // Navigation 6853 var params = swiper.params.a11y; 6854 var $nextEl; 6855 var $prevEl; 6856 if (swiper.navigation && swiper.navigation.$nextEl) { 6857 $nextEl = swiper.navigation.$nextEl; 6858 } 6859 if (swiper.navigation && swiper.navigation.$prevEl) { 6860 $prevEl = swiper.navigation.$prevEl; 6861 } 6862 if ($nextEl) { 6863 swiper.a11y.makeElFocusable($nextEl); 6864 swiper.a11y.addElRole($nextEl, 'button'); 6865 swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); 6866 $nextEl.on('keydown', swiper.a11y.onEnterKey); 6867 } 6868 if ($prevEl) { 6869 swiper.a11y.makeElFocusable($prevEl); 6870 swiper.a11y.addElRole($prevEl, 'button'); 6871 swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); 6872 $prevEl.on('keydown', swiper.a11y.onEnterKey); 6873 } 6874 6875 // Pagination 6876 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 6877 swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 6878 } 6879 }, 6880 destroy: function destroy() { 6881 var swiper = this; 6882 if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); } 6883 6884 var $nextEl; 6885 var $prevEl; 6886 if (swiper.navigation && swiper.navigation.$nextEl) { 6887 $nextEl = swiper.navigation.$nextEl; 6888 } 6889 if (swiper.navigation && swiper.navigation.$prevEl) { 6890 $prevEl = swiper.navigation.$prevEl; 6891 } 6892 if ($nextEl) { 6893 $nextEl.off('keydown', swiper.a11y.onEnterKey); 6894 } 6895 if ($prevEl) { 6896 $prevEl.off('keydown', swiper.a11y.onEnterKey); 6897 } 6898 6899 // Pagination 6900 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 6901 swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 6902 } 6903 }, 6904 }; 6905 var A11y = { 6906 name: 'a11y', 6907 params: { 6908 a11y: { 6909 enabled: true, 6910 notificationClass: 'swiper-notification', 6911 prevSlideMessage: 'Previous slide', 6912 nextSlideMessage: 'Next slide', 6913 firstSlideMessage: 'This is the first slide', 6914 lastSlideMessage: 'This is the last slide', 6915 paginationBulletMessage: 'Go to slide {{index}}', 6916 }, 6917 }, 6918 create: function create() { 6919 var swiper = this; 6920 Utils.extend(swiper, { 6921 a11y: { 6922 liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")), 6923 }, 6924 }); 6925 Object.keys(a11y).forEach(function (methodName) { 6926 swiper.a11y[methodName] = a11y[methodName].bind(swiper); 6927 }); 6928 }, 6929 on: { 6930 init: function init() { 6931 var swiper = this; 6932 if (!swiper.params.a11y.enabled) { return; } 6933 swiper.a11y.init(); 6934 swiper.a11y.updateNavigation(); 6935 }, 6936 toEdge: function toEdge() { 6937 var swiper = this; 6938 if (!swiper.params.a11y.enabled) { return; } 6939 swiper.a11y.updateNavigation(); 6940 }, 6941 fromEdge: function fromEdge() { 6942 var swiper = this; 6943 if (!swiper.params.a11y.enabled) { return; } 6944 swiper.a11y.updateNavigation(); 6945 }, 6946 paginationUpdate: function paginationUpdate() { 6947 var swiper = this; 6948 if (!swiper.params.a11y.enabled) { return; } 6949 swiper.a11y.updatePagination(); 6950 }, 6951 destroy: function destroy() { 6952 var swiper = this; 6953 if (!swiper.params.a11y.enabled) { return; } 6954 swiper.a11y.destroy(); 6955 }, 6956 }, 6957 }; 6958 6959 var History = { 6960 init: function init() { 6961 var swiper = this; 6962 if (!swiper.params.history) { return; } 6963 if (!win.history || !win.history.pushState) { 6964 swiper.params.history.enabled = false; 6965 swiper.params.hashNavigation.enabled = true; 6966 return; 6967 } 6968 var history = swiper.history; 6969 history.initialized = true; 6970 history.paths = History.getPathValues(); 6971 if (!history.paths.key && !history.paths.value) { return; } 6972 history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); 6973 if (!swiper.params.history.replaceState) { 6974 win.addEventListener('popstate', swiper.history.setHistoryPopState); 6975 } 6976 }, 6977 destroy: function destroy() { 6978 var swiper = this; 6979 if (!swiper.params.history.replaceState) { 6980 win.removeEventListener('popstate', swiper.history.setHistoryPopState); 6981 } 6982 }, 6983 setHistoryPopState: function setHistoryPopState() { 6984 var swiper = this; 6985 swiper.history.paths = History.getPathValues(); 6986 swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); 6987 }, 6988 getPathValues: function getPathValues() { 6989 var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; }); 6990 var total = pathArray.length; 6991 var key = pathArray[total - 2]; 6992 var value = pathArray[total - 1]; 6993 return { key: key, value: value }; 6994 }, 6995 setHistory: function setHistory(key, index) { 6996 var swiper = this; 6997 if (!swiper.history.initialized || !swiper.params.history.enabled) { return; } 6998 var slide = swiper.slides.eq(index); 6999 var value = History.slugify(slide.attr('data-history')); 7000 if (!win.location.pathname.includes(key)) { 7001 value = key + "/" + value; 7002 } 7003 var currentState = win.history.state; 7004 if (currentState && currentState.value === value) { 7005 return; 7006 } 7007 if (swiper.params.history.replaceState) { 7008 win.history.replaceState({ value: value }, null, value); 7009 } else { 7010 win.history.pushState({ value: value }, null, value); 7011 } 7012 }, 7013 slugify: function slugify(text) { 7014 return text.toString()
vendor: 5,530 bytes, lines 7014-7180
7014.toLowerCase() 7015 .replace(/\s+/g, '-') 7016 .replace(/[^\w-]+/g, '') 7017 .replace(/--+/g, '-') 7018 .replace(/^-+/, '') 7019 .replace(/-+$/, ''); 7020 }, 7021 scrollToSlide: function scrollToSlide(speed, value, runCallbacks) { 7022 var swiper = this; 7023 if (value) { 7024 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 7025 var slide = swiper.slides.eq(i); 7026 var slideHistory = History.slugify(slide.attr('data-history')); 7027 if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { 7028 var index = slide.index(); 7029 swiper.slideTo(index, speed, runCallbacks); 7030 } 7031 } 7032 } else { 7033 swiper.slideTo(0, speed, runCallbacks); 7034 } 7035 }, 7036 }; 7037 7038 var History$1 = { 7039 name: 'history', 7040 params: { 7041 history: { 7042 enabled: false, 7043 replaceState: false, 7044 key: 'slides', 7045 }, 7046 }, 7047 create: function create() { 7048 var swiper = this; 7049 Utils.extend(swiper, { 7050 history: { 7051 init: History.init.bind(swiper), 7052 setHistory: History.setHistory.bind(swiper), 7053 setHistoryPopState: History.setHistoryPopState.bind(swiper), 7054 scrollToSlide: History.scrollToSlide.bind(swiper), 7055 destroy: History.destroy.bind(swiper), 7056 }, 7057 }); 7058 }, 7059 on: { 7060 init: function init() { 7061 var swiper = this; 7062 if (swiper.params.history.enabled) { 7063 swiper.history.init(); 7064 } 7065 }, 7066 destroy: function destroy() { 7067 var swiper = this; 7068 if (swiper.params.history.enabled) { 7069 swiper.history.destroy(); 7070 } 7071 }, 7072 transitionEnd: function transitionEnd() { 7073 var swiper = this; 7074 if (swiper.history.initialized) { 7075 swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); 7076 } 7077 }, 7078 }, 7079 }; 7080 7081 var HashNavigation = { 7082 onHashCange: function onHashCange() { 7083 var swiper = this; 7084 var newHash = doc.location.hash.replace('#', ''); 7085 var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); 7086 if (newHash !== activeSlideHash) { 7087 swiper.slideTo(swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index()); 7088 } 7089 }, 7090 setHash: function setHash() { 7091 var swiper = this; 7092 if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; } 7093 if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) { 7094 win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || '')); 7095 } else { 7096 var slide = swiper.slides.eq(swiper.activeIndex); 7097 var hash = slide.attr('data-hash') || slide.attr('data-history'); 7098 doc.location.hash = hash || ''; 7099 } 7100 }, 7101 init: function init() { 7102 var swiper = this; 7103 if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; } 7104 swiper.hashNavigation.initialized = true; 7105 var hash = doc.location.hash.replace('#', ''); 7106 if (hash) { 7107 var speed = 0; 7108 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 7109 var slide = swiper.slides.eq(i); 7110 var slideHash = slide.attr('data-hash') || slide.attr('data-history'); 7111 if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { 7112 var index = slide.index(); 7113 swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); 7114 } 7115 } 7116 } 7117 if (swiper.params.hashNavigation.watchState) { 7118 $(win).on('hashchange', swiper.hashNavigation.onHashCange); 7119 } 7120 }, 7121 destroy: function destroy() { 7122 var swiper = this; 7123 if (swiper.params.hashNavigation.watchState) { 7124 $(win).off('hashchange', swiper.hashNavigation.onHashCange); 7125 } 7126 }, 7127 }; 7128 var HashNavigation$1 = { 7129 name: 'hash-navigation', 7130 params: { 7131 hashNavigation: { 7132 enabled: false, 7133 replaceState: false, 7134 watchState: false, 7135 }, 7136 }, 7137 create: function create() { 7138 var swiper = this; 7139 Utils.extend(swiper, { 7140 hashNavigation: { 7141 initialized: false, 7142 init: HashNavigation.init.bind(swiper), 7143 destroy: HashNavigation.destroy.bind(swiper), 7144 setHash: HashNavigation.setHash.bind(swiper), 7145 onHashCange: HashNavigation.onHashCange.bind(swiper), 7146 }, 7147 }); 7148 }, 7149 on: { 7150 init: function init() { 7151 var swiper = this; 7152 if (swiper.params.hashNavigation.enabled) { 7153 swiper.hashNavigation.init(); 7154 } 7155 }, 7156 destroy: function destroy() { 7157 var swiper = this; 7158 if (swiper.params.hashNavigation.enabled) { 7159 swiper.hashNavigation.destroy(); 7160 } 7161 }, 7162 transitionEnd: function transitionEnd() { 7163 var swiper = this; 7164 if (swiper.hashNavigation.initialized) { 7165 swiper.hashNavigation.setHash(); 7166 } 7167 }, 7168 }, 7169 }; 7170 7171 /* eslint no-underscore-dangle: "off" */ 7172 7173 var Autoplay = { 7174 run: function run() { 7175 var swiper = this; 7176 var $activeSlideEl = swiper.slides.eq(swiper.activeIndex); 7177 var delay = swiper.params.autoplay.delay; 7178 if ($activeSlideEl.attr('data-swiper-autoplay')) { 7179 delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; 7180 }
vendor: 24,532 bytes, lines 7180-7831
7180 7181 swiper.autoplay.timeout = Utils.nextTick(function () { 7182 if (swiper.params.autoplay.reverseDirection) { 7183 if (swiper.params.loop) { 7184 swiper.loopFix(); 7185 swiper.slidePrev(swiper.params.speed, true, true); 7186 swiper.emit('autoplay'); 7187 } else if (!swiper.isBeginning) { 7188 swiper.slidePrev(swiper.params.speed, true, true); 7189 swiper.emit('autoplay'); 7190 } else if (!swiper.params.autoplay.stopOnLastSlide) { 7191 swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); 7192 swiper.emit('autoplay'); 7193 } else { 7194 swiper.autoplay.stop(); 7195 } 7196 } else if (swiper.params.loop) { 7197 swiper.loopFix(); 7198 swiper.slideNext(swiper.params.speed, true, true); 7199 swiper.emit('autoplay'); 7200 } else if (!swiper.isEnd) { 7201 swiper.slideNext(swiper.params.speed, true, true); 7202 swiper.emit('autoplay'); 7203 } else if (!swiper.params.autoplay.stopOnLastSlide) { 7204 swiper.slideTo(0, swiper.params.speed, true, true); 7205 swiper.emit('autoplay'); 7206 } else { 7207 swiper.autoplay.stop(); 7208 } 7209 }, delay); 7210 }, 7211 start: function start() { 7212 var swiper = this; 7213 if (typeof swiper.autoplay.timeout !== 'undefined') { return false; } 7214 if (swiper.autoplay.running) { return false; } 7215 swiper.autoplay.running = true; 7216 swiper.emit('autoplayStart'); 7217 swiper.autoplay.run(); 7218 return true; 7219 }, 7220 stop: function stop() { 7221 var swiper = this; 7222 if (!swiper.autoplay.running) { return false; } 7223 if (typeof swiper.autoplay.timeout === 'undefined') { return false; } 7224 7225 if (swiper.autoplay.timeout) { 7226 clearTimeout(swiper.autoplay.timeout); 7227 swiper.autoplay.timeout = undefined; 7228 } 7229 swiper.autoplay.running = false; 7230 swiper.emit('autoplayStop'); 7231 return true; 7232 }, 7233 pause: function pause(speed) { 7234 var swiper = this; 7235 if (!swiper.autoplay.running) { return; } 7236 if (swiper.autoplay.paused) { return; } 7237 if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); } 7238 swiper.autoplay.paused = true; 7239 if (speed === 0 || !swiper.params.autoplay.waitForTransition) { 7240 swiper.autoplay.paused = false; 7241 swiper.autoplay.run(); 7242 } else { 7243 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); 7244 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 7245 } 7246 }, 7247 }; 7248 7249 var Autoplay$1 = { 7250 name: 'autoplay', 7251 params: { 7252 autoplay: { 7253 enabled: false, 7254 delay: 3000, 7255 waitForTransition: true, 7256 disableOnInteraction: true, 7257 stopOnLastSlide: false, 7258 reverseDirection: false, 7259 }, 7260 }, 7261 create: function create() { 7262 var swiper = this; 7263 Utils.extend(swiper, { 7264 autoplay: { 7265 running: false, 7266 paused: false, 7267 run: Autoplay.run.bind(swiper), 7268 start: Autoplay.start.bind(swiper), 7269 stop: Autoplay.stop.bind(swiper), 7270 pause: Autoplay.pause.bind(swiper), 7271 onTransitionEnd: function onTransitionEnd(e) { 7272 if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; } 7273 if (e.target !== this) { return; } 7274 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); 7275 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 7276 swiper.autoplay.paused = false; 7277 if (!swiper.autoplay.running) { 7278 swiper.autoplay.stop(); 7279 } else { 7280 swiper.autoplay.run(); 7281 } 7282 }, 7283 }, 7284 }); 7285 }, 7286 on: { 7287 init: function init() { 7288 var swiper = this; 7289 if (swiper.params.autoplay.enabled) { 7290 swiper.autoplay.start(); 7291 } 7292 }, 7293 beforeTransitionStart: function beforeTransitionStart(speed, internal) { 7294 var swiper = this; 7295 if (swiper.autoplay.running) { 7296 if (internal || !swiper.params.autoplay.disableOnInteraction) { 7297 swiper.autoplay.pause(speed); 7298 } else { 7299 swiper.autoplay.stop(); 7300 } 7301 } 7302 }, 7303 sliderFirstMove: function sliderFirstMove() { 7304 var swiper = this; 7305 if (swiper.autoplay.running) { 7306 if (swiper.params.autoplay.disableOnInteraction) { 7307 swiper.autoplay.stop(); 7308 } else { 7309 swiper.autoplay.pause(); 7310 } 7311 } 7312 }, 7313 destroy: function destroy() { 7314 var swiper = this; 7315 if (swiper.autoplay.running) { 7316 swiper.autoplay.stop(); 7317 } 7318 }, 7319 }, 7320 }; 7321 7322 var Fade = { 7323 setTranslate: function setTranslate() { 7324 var swiper = this; 7325 var slides = swiper.slides; 7326 for (var i = 0; i < slides.length; i += 1) { 7327 var $slideEl = swiper.slides.eq(i); 7328 var offset = $slideEl[0].swiperSlideOffset; 7329 var tx = -offset; 7330 if (!swiper.params.virtualTranslate) { tx -= swiper.translate; } 7331 var ty = 0; 7332 if (!swiper.isHorizontal()) { 7333 ty = tx; 7334 tx = 0; 7335 } 7336 var slideOpacity = swiper.params.fadeEffect.crossFade 7337 ? Math.max(1 - Math.abs($slideEl[0].progress), 0) 7338 : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); 7339 $slideEl 7340 .css({ 7341 opacity: slideOpacity, 7342 }) 7343 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)")); 7344 } 7345 }, 7346 setTransition: function setTransition(duration) { 7347 var swiper = this; 7348 var slides = swiper.slides; 7349 var $wrapperEl = swiper.$wrapperEl; 7350 slides.transition(duration); 7351 if (swiper.params.virtualTranslate && duration !== 0) { 7352 var eventTriggered = false; 7353 slides.transitionEnd(function () { 7354 if (eventTriggered) { return; } 7355 if (!swiper || swiper.destroyed) { return; } 7356 eventTriggered = true; 7357 swiper.animating = false; 7358 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 7359 for (var i = 0; i < triggerEvents.length; i += 1) { 7360 $wrapperEl.trigger(triggerEvents[i]); 7361 } 7362 }); 7363 } 7364 }, 7365 }; 7366 7367 var EffectFade = { 7368 name: 'effect-fade', 7369 params: { 7370 fadeEffect: { 7371 crossFade: false, 7372 }, 7373 }, 7374 create: function create() { 7375 var swiper = this; 7376 Utils.extend(swiper, { 7377 fadeEffect: { 7378 setTranslate: Fade.setTranslate.bind(swiper), 7379 setTransition: Fade.setTransition.bind(swiper), 7380 }, 7381 }); 7382 }, 7383 on: { 7384 beforeInit: function beforeInit() { 7385 var swiper = this; 7386 if (swiper.params.effect !== 'fade') { return; } 7387 swiper.classNames.push(((swiper.params.containerModifierClass) + "fade")); 7388 var overwriteParams = { 7389 slidesPerView: 1, 7390 slidesPerColumn: 1, 7391 slidesPerGroup: 1, 7392 watchSlidesProgress: true, 7393 spaceBetween: 0, 7394 virtualTranslate: true, 7395 }; 7396 Utils.extend(swiper.params, overwriteParams); 7397 Utils.extend(swiper.originalParams, overwriteParams); 7398 }, 7399 setTranslate: function setTranslate() { 7400 var swiper = this; 7401 if (swiper.params.effect !== 'fade') { return; } 7402 swiper.fadeEffect.setTranslate(); 7403 }, 7404 setTransition: function setTransition(duration) { 7405 var swiper = this; 7406 if (swiper.params.effect !== 'fade') { return; } 7407 swiper.fadeEffect.setTransition(duration); 7408 }, 7409 }, 7410 }; 7411 7412 var Cube = { 7413 setTranslate: function setTranslate() { 7414 var swiper = this; 7415 var $el = swiper.$el; 7416 var $wrapperEl = swiper.$wrapperEl; 7417 var slides = swiper.slides; 7418 var swiperWidth = swiper.width; 7419 var swiperHeight = swiper.height; 7420 var rtl = swiper.rtlTranslate; 7421 var swiperSize = swiper.size; 7422 var params = swiper.params.cubeEffect; 7423 var isHorizontal = swiper.isHorizontal(); 7424 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 7425 var wrapperRotate = 0; 7426 var $cubeShadowEl; 7427 if (params.shadow) { 7428 if (isHorizontal) { 7429 $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); 7430 if ($cubeShadowEl.length === 0) { 7431 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 7432 $wrapperEl.append($cubeShadowEl); 7433 } 7434 $cubeShadowEl.css({ height: (swiperWidth + "px") }); 7435 } else { 7436 $cubeShadowEl = $el.find('.swiper-cube-shadow'); 7437 if ($cubeShadowEl.length === 0) { 7438 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 7439 $el.append($cubeShadowEl); 7440 } 7441 } 7442 } 7443 for (var i = 0; i < slides.length; i += 1) { 7444 var $slideEl = slides.eq(i); 7445 var slideIndex = i; 7446 if (isVirtual) { 7447 slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); 7448 } 7449 var slideAngle = slideIndex * 90; 7450 var round = Math.floor(slideAngle / 360); 7451 if (rtl) { 7452 slideAngle = -slideAngle; 7453 round = Math.floor(-slideAngle / 360); 7454 } 7455 var progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 7456 var tx = 0; 7457 var ty = 0; 7458 var tz = 0; 7459 if (slideIndex % 4 === 0) { 7460 tx = -round * 4 * swiperSize; 7461 tz = 0; 7462 } else if ((slideIndex - 1) % 4 === 0) { 7463 tx = 0; 7464 tz = -round * 4 * swiperSize; 7465 } else if ((slideIndex - 2) % 4 === 0) { 7466 tx = swiperSize + (round * 4 * swiperSize); 7467 tz = swiperSize; 7468 } else if ((slideIndex - 3) % 4 === 0) { 7469 tx = -swiperSize; 7470 tz = (3 * swiperSize) + (swiperSize * 4 * round); 7471 } 7472 if (rtl) { 7473 tx = -tx; 7474 } 7475 7476 if (!isHorizontal) { 7477 ty = tx; 7478 tx = 0; 7479 } 7480 7481 var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)"; 7482 if (progress <= 1 && progress > -1) { 7483 wrapperRotate = (slideIndex * 90) + (progress * 90); 7484 if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); } 7485 } 7486 $slideEl.transform(transform); 7487 if (params.slideShadows) { 7488 // Set shadows 7489 var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 7490 var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 7491 if (shadowBefore.length === 0) { 7492 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 7493 $slideEl.append(shadowBefore); 7494 } 7495 if (shadowAfter.length === 0) { 7496 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 7497 $slideEl.append(shadowAfter); 7498 } 7499 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 7500 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 7501 } 7502 } 7503 $wrapperEl.css({ 7504 '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 7505 '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 7506 '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 7507 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 7508 }); 7509 7510 if (params.shadow) { 7511 if (isHorizontal) { 7512 $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); 7513 } else { 7514 var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); 7515 var multiplier = 1.5 - ( 7516 (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) 7517 + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) 7518 ); 7519 var scale1 = params.shadowScale; 7520 var scale2 = params.shadowScale / multiplier; 7521 var offset = params.shadowOffset; 7522 $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); 7523 } 7524 } 7525 var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; 7526 $wrapperEl 7527 .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)")); 7528 }, 7529 setTransition: function setTransition(duration) { 7530 var swiper = this; 7531 var $el = swiper.$el; 7532 var slides = swiper.slides; 7533 slides 7534 .transition(duration) 7535 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 7536 .transition(duration); 7537 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 7538 $el.find('.swiper-cube-shadow').transition(duration); 7539 } 7540 }, 7541 }; 7542 7543 var EffectCube = { 7544 name: 'effect-cube', 7545 params: { 7546 cubeEffect: { 7547 slideShadows: true, 7548 shadow: true, 7549 shadowOffset: 20, 7550 shadowScale: 0.94, 7551 }, 7552 }, 7553 create: function create() { 7554 var swiper = this; 7555 Utils.extend(swiper, { 7556 cubeEffect: { 7557 setTranslate: Cube.setTranslate.bind(swiper), 7558 setTransition: Cube.setTransition.bind(swiper), 7559 }, 7560 }); 7561 }, 7562 on: { 7563 beforeInit: function beforeInit() { 7564 var swiper = this; 7565 if (swiper.params.effect !== 'cube') { return; } 7566 swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); 7567 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 7568 var overwriteParams = { 7569 slidesPerView: 1, 7570 slidesPerColumn: 1, 7571 slidesPerGroup: 1, 7572 watchSlidesProgress: true, 7573 resistanceRatio: 0, 7574 spaceBetween: 0, 7575 centeredSlides: false, 7576 virtualTranslate: true, 7577 }; 7578 Utils.extend(swiper.params, overwriteParams); 7579 Utils.extend(swiper.originalParams, overwriteParams); 7580 }, 7581 setTranslate: function setTranslate() { 7582 var swiper = this; 7583 if (swiper.params.effect !== 'cube') { return; } 7584 swiper.cubeEffect.setTranslate(); 7585 }, 7586 setTransition: function setTransition(duration) { 7587 var swiper = this; 7588 if (swiper.params.effect !== 'cube') { return; } 7589 swiper.cubeEffect.setTransition(duration); 7590 }, 7591 }, 7592 }; 7593 7594 var Flip = { 7595 setTranslate: function setTranslate() { 7596 var swiper = this; 7597 var slides = swiper.slides; 7598 var rtl = swiper.rtlTranslate; 7599 for (var i = 0; i < slides.length; i += 1) { 7600 var $slideEl = slides.eq(i); 7601 var progress = $slideEl[0].progress; 7602 if (swiper.params.flipEffect.limitRotation) { 7603 progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 7604 } 7605 var offset = $slideEl[0].swiperSlideOffset; 7606 var rotate = -180 * progress; 7607 var rotateY = rotate; 7608 var rotateX = 0; 7609 var tx = -offset; 7610 var ty = 0; 7611 if (!swiper.isHorizontal()) { 7612 ty = tx; 7613 tx = 0; 7614 rotateX = -rotateY; 7615 rotateY = 0; 7616 } else if (rtl) { 7617 rotateY = -rotateY; 7618 } 7619 7620 $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 7621 7622 if (swiper.params.flipEffect.slideShadows) { 7623 // Set shadows 7624 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 7625 var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 7626 if (shadowBefore.length === 0) { 7627 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>")); 7628 $slideEl.append(shadowBefore); 7629 } 7630 if (shadowAfter.length === 0) { 7631 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>")); 7632 $slideEl.append(shadowAfter); 7633 } 7634 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 7635 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 7636 } 7637 $slideEl 7638 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); 7639 } 7640 }, 7641 setTransition: function setTransition(duration) { 7642 var swiper = this; 7643 var slides = swiper.slides; 7644 var activeIndex = swiper.activeIndex; 7645 var $wrapperEl = swiper.$wrapperEl; 7646 slides 7647 .transition(duration) 7648 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 7649 .transition(duration); 7650 if (swiper.params.virtualTranslate && duration !== 0) { 7651 var eventTriggered = false; 7652 // eslint-disable-next-line 7653 slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { 7654 if (eventTriggered) { return; } 7655 if (!swiper || swiper.destroyed) { return; } 7656 // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; 7657 eventTriggered = true; 7658 swiper.animating = false; 7659 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 7660 for (var i = 0; i < triggerEvents.length; i += 1) { 7661 $wrapperEl.trigger(triggerEvents[i]); 7662 } 7663 }); 7664 } 7665 }, 7666 }; 7667 7668 var EffectFlip = { 7669 name: 'effect-flip', 7670 params: { 7671 flipEffect: { 7672 slideShadows: true, 7673 limitRotation: true, 7674 }, 7675 }, 7676 create: function create() { 7677 var swiper = this; 7678 Utils.extend(swiper, { 7679 flipEffect: { 7680 setTranslate: Flip.setTranslate.bind(swiper), 7681 setTransition: Flip.setTransition.bind(swiper), 7682 }, 7683 }); 7684 }, 7685 on: { 7686 beforeInit: function beforeInit() { 7687 var swiper = this; 7688 if (swiper.params.effect !== 'flip') { return; } 7689 swiper.classNames.push(((swiper.params.containerModifierClass) + "flip")); 7690 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 7691 var overwriteParams = { 7692 slidesPerView: 1, 7693 slidesPerColumn: 1, 7694 slidesPerGroup: 1, 7695 watchSlidesProgress: true, 7696 spaceBetween: 0, 7697 virtualTranslate: true, 7698 }; 7699 Utils.extend(swiper.params, overwriteParams); 7700 Utils.extend(swiper.originalParams, overwriteParams); 7701 }, 7702 setTranslate: function setTranslate() { 7703 var swiper = this; 7704 if (swiper.params.effect !== 'flip') { return; } 7705 swiper.flipEffect.setTranslate(); 7706 }, 7707 setTransition: function setTransition(duration) { 7708 var swiper = this; 7709 if (swiper.params.effect !== 'flip') { return; } 7710 swiper.flipEffect.setTransition(duration); 7711 }, 7712 }, 7713 }; 7714 7715 var Coverflow = { 7716 setTranslate: function setTranslate() { 7717 var swiper = this; 7718 var swiperWidth = swiper.width; 7719 var swiperHeight = swiper.height; 7720 var slides = swiper.slides; 7721 var $wrapperEl = swiper.$wrapperEl; 7722 var slidesSizesGrid = swiper.slidesSizesGrid; 7723 var params = swiper.params.coverflowEffect; 7724 var isHorizontal = swiper.isHorizontal(); 7725 var transform = swiper.translate; 7726 var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); 7727 var rotate = isHorizontal ? params.rotate : -params.rotate; 7728 var translate = params.depth; 7729 // Each slide offset from center 7730 for (var i = 0, length = slides.length; i < length; i += 1) { 7731 var $slideEl = slides.eq(i); 7732 var slideSize = slidesSizesGrid[i]; 7733 var slideOffset = $slideEl[0].swiperSlideOffset; 7734 var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; 7735 7736 var rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 7737 var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 7738 // var rotateZ = 0 7739 var translateZ = -translate * Math.abs(offsetMultiplier); 7740 7741 var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier); 7742 var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0; 7743 7744 // Fix for ultra small values 7745 if (Math.abs(translateX) < 0.001) { translateX = 0; } 7746 if (Math.abs(translateY) < 0.001) { translateY = 0; } 7747 if (Math.abs(translateZ) < 0.001) { translateZ = 0; } 7748 if (Math.abs(rotateY) < 0.001) { rotateY = 0; } 7749 if (Math.abs(rotateX) < 0.001) { rotateX = 0; } 7750 7751 var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"; 7752 7753 $slideEl.transform(slideTransform); 7754 $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 7755 if (params.slideShadows) { 7756 // Set shadows 7757 var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 7758 var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 7759 if ($shadowBeforeEl.length === 0) { 7760 $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 7761 $slideEl.append($shadowBeforeEl); 7762 } 7763 if ($shadowAfterEl.length === 0) { 7764 $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 7765 $slideEl.append($shadowAfterEl); 7766 } 7767 if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; } 7768 if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; } 7769 } 7770 } 7771 7772 // Set correct perspective for IE10 7773 if (Support.pointerEvents || Support.prefixedPointerEvents) { 7774 var ws = $wrapperEl[0].style; 7775 ws.perspectiveOrigin = center + "px 50%"; 7776 } 7777 }, 7778 setTransition: function setTransition(duration) { 7779 var swiper = this; 7780 swiper.slides 7781 .transition(duration) 7782 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 7783 .transition(duration); 7784 }, 7785 }; 7786 7787 var EffectCoverflow = { 7788 name: 'effect-coverflow', 7789 params: { 7790 coverflowEffect: { 7791 rotate: 50, 7792 stretch: 0, 7793 depth: 100, 7794 modifier: 1, 7795 slideShadows: true, 7796 }, 7797 }, 7798 create: function create() { 7799 var swiper = this; 7800 Utils.extend(swiper, { 7801 coverflowEffect: { 7802 setTranslate: Coverflow.setTranslate.bind(swiper), 7803 setTransition: Coverflow.setTransition.bind(swiper), 7804 }, 7805 }); 7806 }, 7807 on: { 7808 beforeInit: function beforeInit() { 7809 var swiper = this; 7810 if (swiper.params.effect !== 'coverflow') { return; } 7811 7812 swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); 7813 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 7814 7815 swiper.params.watchSlidesProgress = true; 7816 swiper.originalParams.watchSlidesProgress = true; 7817 }, 7818 setTranslate: function setTranslate() { 7819 var swiper = this; 7820 if (swiper.params.effect !== 'coverflow') { return; } 7821 swiper.coverflowEffect.setTranslate(); 7822 }, 7823 setTransition: function setTransition(duration) { 7824 var swiper = this; 7825 if (swiper.params.effect !== 'coverflow') { return; } 7826 swiper.coverflowEffect.setTransition(duration); 7827 }, 7828 }, 7829 }; 7830 7831
7831// Swiper Class 7832 7833 var components = [ 7834 Device$1, 7835 Support$1, 7836 Browser$1, 7837 Resize, 7838 Observer$1, 7839 Virtual$1, 7840 Keyboard$1, 7841 Mousewheel$1, 7842 Navigation$1, 7843 Pagination$1, 7844 Scrollbar$1, 7845 Parallax$1, 7846 Zoom$1, 7847 Lazy$1, 7848 Controller$1, 7849 A11y, 7850 History$1, 7851 HashNavigation$1, 7852 Autoplay$1, 7853 EffectFade, 7854 EffectCube, 7855 EffectFlip, 7856 EffectCoverflow 7857 ]; 7858 7859 if (typeof Swiper.use === 'undefined') { 7860 Swiper.use = Swiper.Class.use; 7861 Swiper.installModule = Swiper.Class.installModule; 7862 } 7863 7864 Swiper.use(components); 7865 7866 return Swiper; 7867 7868}))); 7869 7870!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(this,function(e,n){function i(n,i,t){e.WeixinJSBridge?WeixinJSBridge.invoke(n,o(i),function(e){c(n,e,t)}):u(n,t)}function t(n,i,t){e.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),c(n,e,i)}):t?u(n,t):u(n,i)}function o(e){return e=e||{},e.appId=C.appId,e.verifyAppId=C.appId,e.verifySignType="sha1",e.verifyTimestamp=C.timestamp+"",e.verifyNonceStr=C.nonceStr,e.verifySignature=C.signature,e}function r(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}function c(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=s(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",C.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e,n){var i=e,t=v[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}function d(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=h[t];o&&(e[n]=o)}return e}}function u(e,n){if(!(!C.debug||n&&n.isInnerInvoke)){var i=v[e];i&&(e=i),n&&n._complete&&delete n._complete,console.log('"'+e+'",',n||"")}}function l(e){if(!(k||w||C.debug||x<"6.0.2"||V.systemType<0)){var n=new Image;V.appId=C.appId,V.initTime=A.initEndTime-A.initStartTime,V.preVerifyTime=A.preVerifyEndTime-A.preVerifyStartTime,N.getNetworkType({isInnerInvoke:!0,success:function(e){V.networkType=e.networkType;var i="https://open.weixin.qq.com/sdk/report?v="+V.version+"&o="+V.isPreVerifyOk+"&s="+V.systemType+"&c="+V.clientVersion+"&a="+V.appId+"&n="+V.networkType+"&i="+V.initTime+"&p="+V.preVerifyTime+"&u="+V.url;n.src=i}})}}function p(){return(new Date).getTime()}function f(n){T&&(e.WeixinJSBridge?n():S.addEventListener&&S.addEventListener("WeixinJSBridgeReady",n,!1))}function m(){N.invoke||(N.invoke=function(n,i,t){e.WeixinJSBridge&&WeixinJSBridge.invoke(n,o(i),t)},N.on=function(n,i){e.WeixinJSBridge&&WeixinJSBridge.on(n,i)})}function g(e){if("string"==typeof e&&e.length>0){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}if(!e.jWeixin){var h={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},v=function(){var e={};for(var n in h)e[h[n]]=n;return e}(),S=e.document,I=S.title,y=navigator.userAgent.toLowerCase(),_=navigator.platform.toLowerCase(),k=!(!_.match("mac")&&!_.match("win")),w=-1!=y.indexOf("wx
7870debugger"),T=-1!=y.indexOf("micromessenger"),M=-1!=y.indexOf("android"),P=-1!=y.indexOf("iphone")||-1!=y.indexOf("ipad"),x=function(){var e=y.match(/micromessenger\/(\d+\.\d+\.\d+)/)||y.match(/micromessenger\/(\d+\.\d+)/);return e?e[1]:""}(),A={initStartTime:p(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},V={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:P?1:M?2:-1,clientVersion:x,url:encodeURIComponent(location.href)},C={},L={_completes:[]},B={state:0,data:{}};f(function(){A.initEndTime=p()});var O=!1,E=[],N={config:function(e){C=e,u("config",e);var n=!1!==C.check;f(function(){if(n)i(h.config,{verifyJsApiList:d(C.jsApiList)},function(){L._complete=function(e){A.preVerifyEndTime=p(),B.state=1,B.data=e},L.success=function(e){V.isPreVerifyOk=0},L.fail=function(e){L._fail?L._fail(e):B.state=-1};var e=L._completes;return e.push(function(){l()}),L.complete=function(n){for(var i=0,t=e.length;i<t;++i)e[i]();L._completes=[]},L}()),A.preVerifyStartTime=p();else{B.state=1;for(var e=L._completes,t=0,o=e.length;t<o;++t)e[t]();L._completes=[]}}),m()},ready:function(e){0!=B.state?e():(L._completes.push(e),!T&&C.debug&&e())},error:function(e){x<"6.0.2"||(-1==B.state?e(B.data):L._fail=e)},checkJsApi:function(e){var n=function(e){var n=e.checkResult;for(var i in n){var t=v[i];t&&(n[t]=n[i],delete n[i])}return e};i("checkJsApi",{jsApiList:d(e.jsApiList)},(e._complete=function(e){if(M){var i=e.checkResult;i&&(e.checkResult=JSON.parse(i))}e=n(e)},e))},onMenuShareTimeline:function(e){t(h.onMenuShareTimeline,{complete:function(){i("shareTimeline",{title:e.title||I,desc:e.title||I,img_url:e.imgUrl||"",link:e.link||location.href,type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareAppMessage:function(e){t(h.onMenuShareAppMessage,{complete:function(n){"favorite"===n.scene?i("sendAppMessage",{title:e.title||I,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""}):i("sendAppMessage",{title:e.title||I,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareQQ:function(e){t(h.onMenuShareQQ,{complete:function(){i("shareQQ",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareWeibo:function(e){t(h.onMenuShareWeibo,{complete:function(){i("shareWeiboApp",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareQZone:function(e){t(h.onMenuShareQZone,{complete:function(){i("shareQZone",{title:e.title||I,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},updateTimelineShareData:function(e){i("updateTimelineShareData",{title:e.title,link:e.link,imgUrl:e.imgUrl},e)},updateAppMessageShareData:function(e){i("updateAppMessageShareData",{title:e.title,desc:e.desc,link:e.link,imgUrl:e.imgUrl},e)},startRecord:function(e){i("startRecord",{},e)},stopRecord:function(e){i("stopRecord",{},e)},onVoiceRecordEnd:function(e){t("onVoiceRecordEnd",e)},playVoice:function(e){i("playVoice",{localId:e.localId},e)},pauseVoice:function(e){i("pauseVoice",{localId:e.localId},e)},stopVoice:function(e){i("stopVoice",{localId:e.localId},e)},onVoicePlayEnd:function(e){t("onVoicePlayEnd",e)},uploadVoice:function(e){i("uploadVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadVoice:function(e){i("downloadVoice",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},translateVoice:function(e){i("translateVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},chooseImage:function(e){i("chooseImage",{scene:"1|2",count:e.count||9,sizeType:e.sizeType||["original","compressed"],sourceType:e.sourceType||["album","camera"]},(e._complete=function(e){if(M){var n=e.localIds;try{n&&(e.localIds=JSON.parse(n))}catch(e){}}},e))},getLocation:function(e){},previewImage:function(e){i(h.previewImage,{current:e.current,urls:e.urls},e)},uploadImage:function(e){i("uploadImage",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadImage:function(e){i("downloadImage",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},getLocalImgData:function(e){!1===O?(O=!0,i("getLocalImgData",{localId:e.localId},(e._complete=function(e){if(O=!1,E.length>0){var n=E.shift();wx.getLocalImgData(n)}},e))):E.push(e)},getNetworkType:function(e){var n=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e};i("getNetworkType",{},(e._complete=function(e){e=n(e)},e))},openLocation:function(e){i("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){e=e||{},i(h.getLocation,{type:e.type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){i("hideOptionMenu",{},e)},showOptionMenu:function(e){i("showOptionMenu",{},e)},closeWindow:function(e){i("closeWindow",{},e=e||{})},hideMenuItems:function(e){i("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){i("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){i("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){i("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){i("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(P){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){i(h.openAddress,{},(e._complete=function(e){e=a(e)},e))},openProductSpecificView:function(e){i(h.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,card_ext:a.cardExt};t.push(c)}i(h.addCard,{card_list:t},(e._complete=function(e){var n=e.card_list;if(n){for(var i=0,t=(n=JSON.parse(n)).length;i<t;++i){var o=n[i];
7870o.cardId=o.card_id,o.cardExt=o.card_ext,o.isSuccess=!!o.is_succ,delete o.card_id,delete o.card_ext,delete o.is_succ}e.cardList=n,delete e.card_list}},e))},chooseCard:function(e){i("chooseCard",{app_id:C.appId,location_id:e.shopId||"",sign_type:e.signType||"SHA1",card_id:e.cardId||"",card_type:e.cardType||"",card_sign:e.cardSign,time_stamp:e.timestamp+"",nonce_str:e.nonceStr},(e._complete=function(e){e.cardList=e.choose_card_info,delete e.choose_card_info},e))},openCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,code:a.code};t.push(c)}i(h.openCard,{card_list:t},e)},consumeAndShareCard:function(e){i(h.consumeAndShareCard,{consumedCardId:e.cardId,consumedCode:e.code},e)},chooseWXPay:function(e){i(h.chooseWXPay,r(e),e)},openEnterpriseRedPacket:function(e){i(h.openEnterpriseRedPacket,r(e),e)},startSearchBeacons:function(e){i(h.startSearchBeacons,{ticket:e.ticket},e)},stopSearchBeacons:function(e){i(h.stopSearchBeacons,{},e)},onSearchBeacons:function(e){t(h.onSearchBeacons,e)},openEnterpriseChat:function(e){i("openEnterpriseChat",{useridlist:e.userIds,chatname:e.groupName},e)},launchMiniProgram:function(e){i("launchMiniProgram",{targetAppId:e.targetAppId,path:g(e.path),envVersion:e.envVersion},e)},miniProgram:{navigateBack:function(e){e=e||{},f(function(){i("invokeMiniProgramAPI",{name:"navigateBack",arg:{delta:e.delta||1}},e)})},navigateTo:function(e){f(function(){i("invokeMiniProgramAPI",{name:"navigateTo",arg:{url:e.url}},e)})},redirectTo:function(e){f(function(){i("invokeMiniProgramAPI",{name:"redirectTo",arg:{url:e.url}},e)})},switchTab:function(e){f(function(){i("invokeMiniProgramAPI",{name:"switchTab",arg:{url:e.url}},e)})},reLaunch:function(e){f(function(){i("invokeMiniProgramAPI",{name:"reLaunch",arg:{url:e.url}},e)})},postMessage:function(e){f(function(){i("invokeMiniProgramAPI",{name:"postMessage",arg:e.data||{}},e)})},getEnv:function(n){f(function(){n({miniprogram:"miniprogram"===e.__wxjs_environment})})}}},b=1,R={};return S.addEventListener("error",function(e){if(!M){var n=e.target,i=n.tagName,t=n.src;if(("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i)&&-1!=t.indexOf("wxlocalresource://")){e.preventDefault(),e.stopPropagation();var o=n["wx-id"];if(o||(o=b++,n["wx-id"]=o),R[o])return;R[o]=!0,wx.ready(function(){wx.getLocalImgData({localId:t,success:function(e){n.src=e.localData}})})}}},!0),S.addEventListener("load",function(e){if(!M){var n=e.target,i=n.tagName;n.src;if("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i){var t=n["wx-id"];t&&(R[t]=!1)}}},!0),n&&(e.wx=e.jWeixin=N),N}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.