").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
+
+/*! jQuery Validation Plugin - v1.10.0*/
+(function(a){a.extend(a.fn,{validate:function(b){if(!this.length){b&&b.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return}var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a("
").attr("name",c.submitButton.name).val(c.submitButton.value).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){if(a(this[0]).is("form"))return this.validate().form();var b=!0,c=a(this[0].form).validate();return this.each(function(){b&=c.element(this)}),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d=this[0];if(b){var e=a.data(d.form,"validator").settings,f=e.rules,g=a.validator.staticRules(d);switch(b){case"add":a.extend(g,a.validator.normalizeRule(c)),f[d.name]=g,c.messages&&(e.messages[d.name]=a.extend(e.messages[d.name],c.messages));break;case"remove":if(!c)return delete f[d.name],g;var h={};return a.each(c.split(/\s/),function(a,b){h[b]=g[b],delete g[b]}),h}}var i=a.validator.normalizeRules(a.extend({},a.validator.metadataRules(d),a.validator.classRules(d),a.validator.attributeRules(d),a.validator.staticRules(d)),d);if(i.required){var j=i.required;delete i.required,i=a.extend({required:j},i)}return i}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+b.value)},filled:function(b){return!!a.trim(""+b.value)},unchecked:function(a){return!a.checked}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return arguments.length===1?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),c)}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a,b){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(a)).hide())},onfocusout:function(a,b){!this.checkable(a)&&(a.name in this.submitted||!this.optional(a))&&this.element(a)},onkeyup:function(a,b){if(b.which===9&&this.elementValue(a)==="")return;(a.name in this.submitted||a===this.lastActive)&&this.element(a)},onclick:function(a,b){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){b.type==="radio"?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){b.type==="radio"?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function d(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,"");c.settings[d]&&c.settings[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var b=this.groups={};a.each(this.settings.groups,function(c,d){a.each(d.split(/\s/),function(a,d){b[d]=c})});var c=this.settings.rules;a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",d).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",d),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){b=this.validationTargetFor(this.clean(b)),this.lastElement=b,this.prepareElement(b),this.currentElements=a(b);var c=this.check(b)!==!1;return c?delete this.invalid[b.name]:this.invalid[b.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),c},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0;for(var c in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()===0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&a.grep(this.errorList,function(a){return a.element.name===b.name}).length===1&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.replace(" ",".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c=a(b).attr("type"),d=a(b).val();return c==="radio"||c==="checkbox"?a('input[name="'+a(b).attr("name")+'"]:checked').val():typeof d=="string"?d.replace(/\r/g,""):d},check:function(b){b=this.validationTargetFor(this.clean(b));var c=a(b).rules(),d=!1,e=this.elementValue(b),f;for(var g in c){var h={method:g,parameters:c[g]};try{f=a.validator.methods[g].call(this,e,b,h.parameters);if(f==="dependency-mismatch"){d=!0;continue}d=!1;if(f==="pending"){this.toHide=this.toHide.not(this.errorsFor(b));return}if(!f)return this.formatAndAdd(b,h),!1}catch(i){throw this.settings.debug&&window.console&&console.log("exception occured when checking element "+b.id+", check the '"+h.method+"' method",i),i}}if(d)return;return this.objectLength(c)&&this.successList.push(b),!0},customMetaMessage:function(b,c){if(!a.metadata)return;var d=this.settings.meta?a(b).metadata()[this.settings.meta]:a(b).metadata();return d&&d.messages&&d.messages[c]},customDataMessage:function(b,c){return a(b).data("msg-"+c.toLowerCase())||b.attributes&&a(b).attr("data-msg-"+c.toLowerCase())},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a
Warning: No message defined for "+b.name+"")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;typeof d=="function"?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b;for(a=0;this.errorList[a];a++){var c=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message)}this.errorList.length&&(this.toShow=this.toShow.add(this.containers));if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d=this.errorsFor(b);d.length?(d.removeClass(this.settings.validClass).addClass(this.settings.errorClass),d.attr("generated")&&d.html(c)):(d=a("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(b),generated:!0}).addClass(this.settings.errorClass).html(c||""),this.settings.wrapper&&(d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b))),!c&&this.settings.success&&(d.text(""),typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d,b)),this.toShow=this.toShow.add(d)},errorsFor:function(b){var c=this.idOrName(b);return this.errors().filter(function(){return a(this).attr("for")===c})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find('[name="'+b+'"]')},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a,b){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&this.pendingRequest===0&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&this.pendingRequest===0&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c={},d=a(b);for(var e in a.validator.methods){var f;e==="required"?(f=d.get(0).getAttribute(e),f===""&&(f=!0),f=!!f):f=d.attr(e),f?c[e]=f:d[0].getAttribute("type")===e&&(c[e]=!0)}return c.maxlength&&/-1|2147483647|524288/.test(c.maxlength)&&delete c.maxlength,c},metadataRules:function(b){if(!a.metadata)return{};var c=a.data(b.form,"validator").settings.meta;return c?a(b).metadata()[c]:a(b).metadata()},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1){delete b[d];return}if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=e.param!==undefined?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength","min","max"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){b[this]&&(b[this]=[Number(b[this][0]),Number(b[this][1])])}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b.messages&&delete b.messages,b},normalizeRule:function(b){if(typeof b=="string"){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=d!==undefined?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if(c.nodeName.toLowerCase()==="select"){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e=this.previousValue(c);this.settings.messages[c.name]||(this.settings.messages[c.name]={}),e.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=e.message,d=typeof d=="string"&&{url:d}||d;if(this.pending[c.name])return"pending";if(e.old===b)return e.valid;e.old=b;var f=this;this.startRequest(c);var g={};return g[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:g,success:function(d){f.settings.messages[c.name].remote=e.originalMessage;var g=d===!0||d==="true";if(g){var h=f.formSubmitted;f.prepareElement(c),f.formSubmitted=h,f.successList.push(c),delete f.invalid[c.name],f.showErrors()}else{var i={},j=d||f.defaultMessage(c,"remote");i[c.name]=e.message=a.isFunction(j)?j(b):j,f.invalid[c.name]=!0,f.showErrors(i)}e.valid=g,f.stopRequest(c,g)}},d)),"pending"},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(a)},url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c=0,d=0,e=!1;a=a.replace(/\D/g,"");for(var f=a.length-1;f>=0;f--){var g=a.charAt(f);d=parseInt(g,10),e&&(d*=2)>9&&(d-=9),c+=d,e=!e}return c%10===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()}}}),a.format=a.validator.format})(jQuery),function(a){var b={};if(a.ajaxPrefilter)a.ajaxPrefilter(function(a,c,d){var e=a.port;a.mode==="abort"&&(b[e]&&b[e].abort(),b[e]=d)});else{var c=a.ajax;a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return e==="abort"?(b[f]&&b[f].abort(),b[f]=c.apply(this,arguments)):c.apply(this,arguments)}}}(jQuery),function(a){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&a.each({focus:"focusin",blur:"focusout"},function(b,c){function d(b){return b=a.event.fix(b),b.type=c,a.event.handle.call(this,b)}a.event.special[c]={setup:function(){this.addEventListener(b,d,!0)},teardown:function(){this.removeEventListener(b,d,!0)},handler:function(b){var d=arguments;return d[0]=a.event.fix(b),d[0].type=c,a.event.handle.apply(this,d)}}}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);if(e.is(b))return d.apply(e,arguments)})}})}(jQuery);
+/*
+ * jQuery Form Plugin - @requires jQuery v1.1 or later
+ */
+(function($){$.fn.ajaxSubmit=function(options){if(typeof options=='function')options={success:options};options=$.extend({url:this.attr('action')||window.location,type:this.attr('method')||'GET'},options||{});var veto={};$.event.trigger('form.pre.serialize',[this,options,veto]);if(veto.veto)return this;var a=this.formToArray(options.semantic);if(options.data){for(var n in options.data)a.push({name:n,value:options.data[n]});};if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false)return this;$.event.trigger('form.submit.validate',[a,this,options,veto]);if(veto.veto)return this;var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null;}else options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm();});if(options.clearForm)callbacks.push(function(){$form.clearForm();});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){if(this.evalScripts)$(options.target).attr("innerHTML",data).evalScripts().each(oldSuccess,arguments);else $(options.target).html(data).each(oldSuccess,arguments);});}else if(options.success)callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i ');var io=$io[0];var op8=$.browser.opera&&window.opera.version()<9;if($.browser.msie||op8)io.src='javascript:false;document.write("");';$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);var cbInvoked=0;var timedOut=0;setTimeout(function(){$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);var encAttr=form.encoding?'encoding':'enctype';var t=$form.attr('target');$form.attr({target:id,method:'POST',action:opts.url});form[encAttr]='multipart/form-data';if(opts.timeout)setTimeout(function(){timedOut=true;cb();},opts.timeout);form.submit();$form.attr('target',t);},10);function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var ok=true;try{if(timedOut)throw 'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];data=ta?ta.value:xhr.responseText;if(opts.dataType=='json')eval("data = "+data);else $.globalEval(data);}else if(opts.dataType=='xml'){data=xhr.responseXML;if(!data&&xhr.responseText!=null)data=toXml(xhr.responseText);}else{data=xhr.responseText;}}catch(e){ok=false;$.handleError(opts,xhr,'error',e);};if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts]);};if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null;},100);};function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s);}else doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null;};};};$.fn.ajaxSubmit.counter=0;$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().submit(submitHandler).each(function(){this.formPluginId=$.fn.ajaxForm.counter++;$.fn.ajaxForm.optionHash[this.formPluginId]=options;$(":submit,input:image",this).click(clickHandler);});};$.fn.ajaxForm.counter=1;$.fn.ajaxForm.optionHash={};function clickHandler(e){var $form=this.form;$form.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){$form.clk_x=e.offsetX;$form.clk_y=e.offsetY;}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();$form.clk_x=e.pageX-offset.left;$form.clk_y=e.pageY-offset.top;}else{$form.clk_x=e.pageX-this.offsetLeft;$form.clk_y=e.pageY-this.offsetTop;}};setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null;},10);};function submitHandler(){var id=this.formPluginId;var options=$.fn.ajaxForm.optionHash[id];$(this).ajaxSubmit(options);return false;};$.fn.ajaxFormUnbind=function(){this.unbind('submit',submitHandler);return this.each(function(){$(":submit,input:image",this).unbind('click',clickHandler);});};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i>2),this.enKey.charAt(((ch1<<4)+(ch2>>4))&0x3f));str.push(this.enKey.charAt(((ch2<<2)+(ch3>>6))&0x3f),this.enKey.charAt(ch3&0x3f));};if(pos>2));if(pos>4))&0x3f));str.push(this.enKey.charAt(ch2<<2&0x3f),'=');}else{str.push(this.enKey.charAt(ch1<<4&0x3f),'==');}};return str.join('');},decode:function(src){var str=new Array();var ch1,ch2,ch3,ch4;var pos=0;src=src.replace(/[^A-Za-z0-9\+\/]/g,'');while(pos+4<=src.length){ch1=this.deKey[src.charCodeAt(pos++)];ch2=this.deKey[src.charCodeAt(pos++)];ch3=this.deKey[src.charCodeAt(pos++)];ch4=this.deKey[src.charCodeAt(pos++)];str.push(String.fromCharCode((ch1<<2&0xff)+(ch2>>4),(ch2<<4&0xff)+(ch3>>2),(ch3<<6&0xff)+ch4));};if(pos+1>4),(ch2<<4&0xff)+(ch3>>2)));}else{str.push(String.fromCharCode((ch1<<2&0xff)+(ch2>>4)));}};return str.join('');}};
+/*
+ * Treeview 1.4 - jQuery plugin to hide and show branches of a tree
+ */
+(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){if($(this).attr("tagName")!="DIV"&&$(this).parent().find(">ul").css("display")=="block"){return;}$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery);
+/*
+ * Async Treeview 0.1 - Lazy-loading extension for Treeview
+ */
+(function($){function load(settings,root,child,container){$.getJSON(settings.url,{root:root},function(response){function createNode(parent){var current=$("
").attr("id",this.id||"").html("
"+this.text+" ").appendTo(parent);if(this.classes){current.children("span").addClass(this.classes);};if(this.expanded){current.addClass("open");};if(this.hasChildren||this.children&&this.children.length){var branch=$("
").appendTo(current);if(this.hasChildren){current.addClass("hasChildren");createNode.call({text:"placeholder",id:"placeholder",children:[]},branch);};if(this.children&&this.children.length){$.each(this.children,createNode,[branch])}}};$.each(response,createNode,[child]);$(container).treeview({add:child});});};var proxied=$.fn.treeview;$.fn.treeview=function(settings){if(!settings||!settings.url){return proxied.apply(this,arguments);};var container=this;load(settings,"source",this,container);var userToggle=settings.toggle;return proxied.call(this,$.extend({},settings,{collapsed:true,toggle:function(){var $this=$(this);if($this.hasClass("hasChildren")){var childList=$this.removeClass("hasChildren").find("ul");childList.empty();load(settings,this.id,childList,container);};if(userToggle){userToggle.apply(this,arguments);}}}));};})(jQuery);
+
+$.extend($.validator.messages, {
+ required : "该项为必填项",
+ remote : "请修正该字段",
+ email : "请输入正确格式的电子邮件",
+ url : "请输入合法的网址",
+ date : "请输入合法的日期",
+ dateISO : "请输入合法的日期 ",
+ number : "请输入合法的数字",
+ digits : "只能输入整数",
+ creditcard : "请输入合法的信用卡号",
+ equalTo : "请再次输入相同的值",
+ accept : "请输入拥有合法后缀名的字符串",
+ maxlength : $.format("请输入一个长度最多是 {0} 的字符串"),
+ minlength : $.format("请输入一个长度最少是 {0} 的字符串"),
+ rangelength : $.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
+ range : $.format("请输入一个介于 {0} 和 {1} 之间的值"),
+ max : $.format("该项不能大于 {0}"),
+ min : $.format("该项不能小于 {0}")
+});
+
+$.metadata.setType("attr", "vld");
+
+$.validator.AlertError = {
+ invalidHandler : function(form, validator) {
+ var errors = validator.numberOfInvalids();
+ if (errors) {
+ for (var name in validator.invalid) {
+ alert(validator.invalid[name]);
+ return;
+ }
+ }
+ },
+ showErrors : function(errors) {
+ }
+};
+$.validator.addMethod("username", function(value) {
+ var p = /^[0-9a-zA-Z\u4e00-\u9fa5\.\-@_]+$/;
+ return p.exec(value) ? true : false;
+}, "请只输入字母,数字,汉字和'_','-','@'");
+$.validator.addMethod("path", function(value) {
+ var p = /^[0-9a-zA-Z]+$/;
+ return p.exec(value) ? true : false;
+}, "请只输入字母和数字");
+
+$.fn.extend( {
+ showBy : function(target) {
+ var offset = target.offset();
+ var top, left;
+ var b = $(window).height() + $(document).scrollTop() - offset.top
+ - target.outerHeight();
+ var t = offset.top - $(document).scrollTop();
+ var r = $(window).width() + $(document).scrollLeft() - offset.left;
+ var l = offset.left + target.outerWidth() - $(document).scrollLeft();
+ if (b - this.outerHeight() < 0 && t > b) {
+ top = offset.top - this.outerHeight() - 1;
+ } else {
+ top = offset.top + target.outerHeight() + 1;
+ }
+ if (r - this.outerWidth() < 0 && l > r) {
+ left = offset.left + target.outerWidth() - this.outerWidth();
+ } else {
+ left = offset.left;
+ }
+ this.css("top", top).css("left", left).show();
+ }
+});
+
+
diff --git a/src/components/Swiper/swiper.css b/src/components/Swiper/swiper.css
new file mode 100644
index 0000000..c4a633d
--- /dev/null
+++ b/src/components/Swiper/swiper.css
@@ -0,0 +1,12 @@
+/**
+ * Swiper 4.5.0
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
+ * http://www.idangero.us/swiper/
+ *
+ * Copyright 2014-2019 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 22, 2019
+ */
+.swiper-container{margin:0 auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-wp8-horizontal,.swiper-container-wp8-horizontal>.swiper-wrapper{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-container-wp8-vertical,.swiper-container-wp8-vertical>.swiper-wrapper{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s opacity;-o-transition:.3s opacity;transition:.3s opacity;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;-webkit-transition:.2s top,.2s -webkit-transform;transition:.2s top,.2s -webkit-transform;-o-transition:.2s transform,.2s top;transition:.2s transform,.2s top;transition:.2s transform,.2s top,.2s -webkit-transform}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s left,.2s -webkit-transform;transition:.2s left,.2s -webkit-transform;-o-transition:.2s transform,.2s left;transition:.2s transform,.2s left;transition:.2s transform,.2s left,.2s -webkit-transform}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s right,.2s -webkit-transform;transition:.2s right,.2s -webkit-transform;-o-transition:.2s transform,.2s right;transition:.2s transform,.2s right;transition:.2s transform,.2s right,.2s -webkit-transform}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-progressbar.swiper-pagination-white{background:rgba(255,255,255,.25)}.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-pagination-progressbar.swiper-pagination-black{background:rgba(0,0,0,.25)}.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill{background:#000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:'';width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-coverflow .swiper-wrapper{-ms-perspective:1200px}
\ No newline at end of file
diff --git a/src/components/Swiper/swiper.js b/src/components/Swiper/swiper.js
new file mode 100644
index 0000000..54b903a
--- /dev/null
+++ b/src/components/Swiper/swiper.js
@@ -0,0 +1,8124 @@
+/**
+ * Swiper 4.5.0
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
+ * http://www.idangero.us/swiper/
+ *
+ * Copyright 2014-2019 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 22, 2019
+ */
+
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.Swiper = factory());
+}(this, function () { 'use strict';
+
+ /**
+ * SSR Window 1.0.1
+ * Better handling for window object in SSR environment
+ * https://github.com/nolimits4web/ssr-window
+ *
+ * Copyright 2018, Vladimir Kharlampidi
+ *
+ * Licensed under MIT
+ *
+ * Released on: July 18, 2018
+ */
+ var doc = (typeof document === 'undefined') ? {
+ body: {},
+ addEventListener: function addEventListener() {},
+ removeEventListener: function removeEventListener() {},
+ activeElement: {
+ blur: function blur() {},
+ nodeName: '',
+ },
+ querySelector: function querySelector() {
+ return null;
+ },
+ querySelectorAll: function querySelectorAll() {
+ return [];
+ },
+ getElementById: function getElementById() {
+ return null;
+ },
+ createEvent: function createEvent() {
+ return {
+ initEvent: function initEvent() {},
+ };
+ },
+ createElement: function createElement() {
+ return {
+ children: [],
+ childNodes: [],
+ style: {},
+ setAttribute: function setAttribute() {},
+ getElementsByTagName: function getElementsByTagName() {
+ return [];
+ },
+ };
+ },
+ location: { hash: '' },
+ } : document; // eslint-disable-line
+
+ var win = (typeof window === 'undefined') ? {
+ document: doc,
+ navigator: {
+ userAgent: '',
+ },
+ location: {},
+ history: {},
+ CustomEvent: function CustomEvent() {
+ return this;
+ },
+ addEventListener: function addEventListener() {},
+ removeEventListener: function removeEventListener() {},
+ getComputedStyle: function getComputedStyle() {
+ return {
+ getPropertyValue: function getPropertyValue() {
+ return '';
+ },
+ };
+ },
+ Image: function Image() {},
+ Date: function Date() {},
+ screen: {},
+ setTimeout: function setTimeout() {},
+ clearTimeout: function clearTimeout() {},
+ } : window; // eslint-disable-line
+
+ /**
+ * Dom7 2.1.3
+ * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
+ * http://framework7.io/docs/dom.html
+ *
+ * Copyright 2019, Vladimir Kharlampidi
+ * The iDangero.us
+ * http://www.idangero.us/
+ *
+ * Licensed under MIT
+ *
+ * Released on: February 11, 2019
+ */
+
+ var Dom7 = function Dom7(arr) {
+ var self = this;
+ // Create array-like object
+ for (var i = 0; i < arr.length; i += 1) {
+ self[i] = arr[i];
+ }
+ self.length = arr.length;
+ // Return collection with methods
+ return this;
+ };
+
+ function $(selector, context) {
+ var arr = [];
+ var i = 0;
+ if (selector && !context) {
+ if (selector instanceof Dom7) {
+ return selector;
+ }
+ }
+ if (selector) {
+ // String
+ if (typeof selector === 'string') {
+ var els;
+ var tempParent;
+ var html = selector.trim();
+ if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
+ var toCreate = 'div';
+ if (html.indexOf('
:~]/)) {
+ // Pure ID selector
+ els = [doc.getElementById(selector.trim().split('#')[1])];
+ } else {
+ // Other selectors
+ els = (context || doc).querySelectorAll(selector.trim());
+ }
+ for (i = 0; i < els.length; i += 1) {
+ if (els[i]) { arr.push(els[i]); }
+ }
+ }
+ } else if (selector.nodeType || selector === win || selector === doc) {
+ // Node/element
+ arr.push(selector);
+ } else if (selector.length > 0 && selector[0].nodeType) {
+ // Array of elements or instance of Dom
+ for (i = 0; i < selector.length; i += 1) {
+ arr.push(selector[i]);
+ }
+ }
+ }
+ return new Dom7(arr);
+ }
+
+ $.fn = Dom7.prototype;
+ $.Class = Dom7;
+ $.Dom7 = Dom7;
+
+ function unique(arr) {
+ var uniqueArray = [];
+ for (var i = 0; i < arr.length; i += 1) {
+ if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }
+ }
+ return uniqueArray;
+ }
+
+ // Classes and attributes
+ function addClass(className) {
+ if (typeof className === 'undefined') {
+ return this;
+ }
+ var classes = className.split(' ');
+ for (var i = 0; i < classes.length; i += 1) {
+ for (var j = 0; j < this.length; j += 1) {
+ if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }
+ }
+ }
+ return this;
+ }
+ function removeClass(className) {
+ var classes = className.split(' ');
+ for (var i = 0; i < classes.length; i += 1) {
+ for (var j = 0; j < this.length; j += 1) {
+ if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }
+ }
+ }
+ return this;
+ }
+ function hasClass(className) {
+ if (!this[0]) { return false; }
+ return this[0].classList.contains(className);
+ }
+ function toggleClass(className) {
+ var classes = className.split(' ');
+ for (var i = 0; i < classes.length; i += 1) {
+ for (var j = 0; j < this.length; j += 1) {
+ if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }
+ }
+ }
+ return this;
+ }
+ function attr(attrs, value) {
+ var arguments$1 = arguments;
+
+ if (arguments.length === 1 && typeof attrs === 'string') {
+ // Get attr
+ if (this[0]) { return this[0].getAttribute(attrs); }
+ return undefined;
+ }
+
+ // Set attrs
+ for (var i = 0; i < this.length; i += 1) {
+ if (arguments$1.length === 2) {
+ // String
+ this[i].setAttribute(attrs, value);
+ } else {
+ // Object
+ // eslint-disable-next-line
+ for (var attrName in attrs) {
+ this[i][attrName] = attrs[attrName];
+ this[i].setAttribute(attrName, attrs[attrName]);
+ }
+ }
+ }
+ return this;
+ }
+ // eslint-disable-next-line
+ function removeAttr(attr) {
+ for (var i = 0; i < this.length; i += 1) {
+ this[i].removeAttribute(attr);
+ }
+ return this;
+ }
+ function data(key, value) {
+ var el;
+ if (typeof value === 'undefined') {
+ el = this[0];
+ // Get value
+ if (el) {
+ if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {
+ return el.dom7ElementDataStorage[key];
+ }
+
+ var dataKey = el.getAttribute(("data-" + key));
+ if (dataKey) {
+ return dataKey;
+ }
+ return undefined;
+ }
+ return undefined;
+ }
+
+ // Set value
+ for (var i = 0; i < this.length; i += 1) {
+ el = this[i];
+ if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }
+ el.dom7ElementDataStorage[key] = value;
+ }
+ return this;
+ }
+ // Transforms
+ // eslint-disable-next-line
+ function transform(transform) {
+ for (var i = 0; i < this.length; i += 1) {
+ var elStyle = this[i].style;
+ elStyle.webkitTransform = transform;
+ elStyle.transform = transform;
+ }
+ return this;
+ }
+ function transition(duration) {
+ if (typeof duration !== 'string') {
+ duration = duration + "ms"; // eslint-disable-line
+ }
+ for (var i = 0; i < this.length; i += 1) {
+ var elStyle = this[i].style;
+ elStyle.webkitTransitionDuration = duration;
+ elStyle.transitionDuration = duration;
+ }
+ return this;
+ }
+ // Events
+ function on() {
+ var assign;
+
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+ var eventType = args[0];
+ var targetSelector = args[1];
+ var listener = args[2];
+ var capture = args[3];
+ if (typeof args[1] === 'function') {
+ (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
+ targetSelector = undefined;
+ }
+ if (!capture) { capture = false; }
+
+ function handleLiveEvent(e) {
+ var target = e.target;
+ if (!target) { return; }
+ var eventData = e.target.dom7EventData || [];
+ if (eventData.indexOf(e) < 0) {
+ eventData.unshift(e);
+ }
+ if ($(target).is(targetSelector)) { listener.apply(target, eventData); }
+ else {
+ var parents = $(target).parents(); // eslint-disable-line
+ for (var k = 0; k < parents.length; k += 1) {
+ if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }
+ }
+ }
+ }
+ function handleEvent(e) {
+ var eventData = e && e.target ? e.target.dom7EventData || [] : [];
+ if (eventData.indexOf(e) < 0) {
+ eventData.unshift(e);
+ }
+ listener.apply(this, eventData);
+ }
+ var events = eventType.split(' ');
+ var j;
+ for (var i = 0; i < this.length; i += 1) {
+ var el = this[i];
+ if (!targetSelector) {
+ for (j = 0; j < events.length; j += 1) {
+ var event = events[j];
+ if (!el.dom7Listeners) { el.dom7Listeners = {}; }
+ if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }
+ el.dom7Listeners[event].push({
+ listener: listener,
+ proxyListener: handleEvent,
+ });
+ el.addEventListener(event, handleEvent, capture);
+ }
+ } else {
+ // Live events
+ for (j = 0; j < events.length; j += 1) {
+ var event$1 = events[j];
+ if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }
+ if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }
+ el.dom7LiveListeners[event$1].push({
+ listener: listener,
+ proxyListener: handleLiveEvent,
+ });
+ el.addEventListener(event$1, handleLiveEvent, capture);
+ }
+ }
+ }
+ return this;
+ }
+ function off() {
+ var assign;
+
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+ var eventType = args[0];
+ var targetSelector = args[1];
+ var listener = args[2];
+ var capture = args[3];
+ if (typeof args[1] === 'function') {
+ (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);
+ targetSelector = undefined;
+ }
+ if (!capture) { capture = false; }
+
+ var events = eventType.split(' ');
+ for (var i = 0; i < events.length; i += 1) {
+ var event = events[i];
+ for (var j = 0; j < this.length; j += 1) {
+ var el = this[j];
+ var handlers = (void 0);
+ if (!targetSelector && el.dom7Listeners) {
+ handlers = el.dom7Listeners[event];
+ } else if (targetSelector && el.dom7LiveListeners) {
+ handlers = el.dom7LiveListeners[event];
+ }
+ if (handlers && handlers.length) {
+ for (var k = handlers.length - 1; k >= 0; k -= 1) {
+ var handler = handlers[k];
+ if (listener && handler.listener === listener) {
+ el.removeEventListener(event, handler.proxyListener, capture);
+ handlers.splice(k, 1);
+ } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
+ el.removeEventListener(event, handler.proxyListener, capture);
+ handlers.splice(k, 1);
+ } else if (!listener) {
+ el.removeEventListener(event, handler.proxyListener, capture);
+ handlers.splice(k, 1);
+ }
+ }
+ }
+ }
+ }
+ return this;
+ }
+ function trigger() {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ var events = args[0].split(' ');
+ var eventData = args[1];
+ for (var i = 0; i < events.length; i += 1) {
+ var event = events[i];
+ for (var j = 0; j < this.length; j += 1) {
+ var el = this[j];
+ var evt = (void 0);
+ try {
+ evt = new win.CustomEvent(event, {
+ detail: eventData,
+ bubbles: true,
+ cancelable: true,
+ });
+ } catch (e) {
+ evt = doc.createEvent('Event');
+ evt.initEvent(event, true, true);
+ evt.detail = eventData;
+ }
+ // eslint-disable-next-line
+ el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });
+ el.dispatchEvent(evt);
+ el.dom7EventData = [];
+ delete el.dom7EventData;
+ }
+ }
+ return this;
+ }
+ function transitionEnd(callback) {
+ var events = ['webkitTransitionEnd', 'transitionend'];
+ var dom = this;
+ var i;
+ function fireCallBack(e) {
+ /* jshint validthis:true */
+ if (e.target !== this) { return; }
+ callback.call(this, e);
+ for (i = 0; i < events.length; i += 1) {
+ dom.off(events[i], fireCallBack);
+ }
+ }
+ if (callback) {
+ for (i = 0; i < events.length; i += 1) {
+ dom.on(events[i], fireCallBack);
+ }
+ }
+ return this;
+ }
+ function outerWidth(includeMargins) {
+ if (this.length > 0) {
+ if (includeMargins) {
+ // eslint-disable-next-line
+ var styles = this.styles();
+ return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
+ }
+ return this[0].offsetWidth;
+ }
+ return null;
+ }
+ function outerHeight(includeMargins) {
+ if (this.length > 0) {
+ if (includeMargins) {
+ // eslint-disable-next-line
+ var styles = this.styles();
+ return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
+ }
+ return this[0].offsetHeight;
+ }
+ return null;
+ }
+ function offset() {
+ if (this.length > 0) {
+ var el = this[0];
+ var box = el.getBoundingClientRect();
+ var body = doc.body;
+ var clientTop = el.clientTop || body.clientTop || 0;
+ var clientLeft = el.clientLeft || body.clientLeft || 0;
+ var scrollTop = el === win ? win.scrollY : el.scrollTop;
+ var scrollLeft = el === win ? win.scrollX : el.scrollLeft;
+ return {
+ top: (box.top + scrollTop) - clientTop,
+ left: (box.left + scrollLeft) - clientLeft,
+ };
+ }
+
+ return null;
+ }
+ function styles() {
+ if (this[0]) { return win.getComputedStyle(this[0], null); }
+ return {};
+ }
+ function css(props, value) {
+ var i;
+ if (arguments.length === 1) {
+ if (typeof props === 'string') {
+ if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }
+ } else {
+ for (i = 0; i < this.length; i += 1) {
+ // eslint-disable-next-line
+ for (var prop in props) {
+ this[i].style[prop] = props[prop];
+ }
+ }
+ return this;
+ }
+ }
+ if (arguments.length === 2 && typeof props === 'string') {
+ for (i = 0; i < this.length; i += 1) {
+ this[i].style[props] = value;
+ }
+ return this;
+ }
+ return this;
+ }
+ // Iterate over the collection passing elements to `callback`
+ function each(callback) {
+ // Don't bother continuing without a callback
+ if (!callback) { return this; }
+ // Iterate over the current collection
+ for (var i = 0; i < this.length; i += 1) {
+ // If the callback returns false
+ if (callback.call(this[i], i, this[i]) === false) {
+ // End the loop early
+ return this;
+ }
+ }
+ // Return `this` to allow chained DOM operations
+ return this;
+ }
+ // eslint-disable-next-line
+ function html(html) {
+ if (typeof html === 'undefined') {
+ return this[0] ? this[0].innerHTML : undefined;
+ }
+
+ for (var i = 0; i < this.length; i += 1) {
+ this[i].innerHTML = html;
+ }
+ return this;
+ }
+ // eslint-disable-next-line
+ function text(text) {
+ if (typeof text === 'undefined') {
+ if (this[0]) {
+ return this[0].textContent.trim();
+ }
+ return null;
+ }
+
+ for (var i = 0; i < this.length; i += 1) {
+ this[i].textContent = text;
+ }
+ return this;
+ }
+ function is(selector) {
+ var el = this[0];
+ var compareWith;
+ var i;
+ if (!el || typeof selector === 'undefined') { return false; }
+ if (typeof selector === 'string') {
+ if (el.matches) { return el.matches(selector); }
+ else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }
+ else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }
+
+ compareWith = $(selector);
+ for (i = 0; i < compareWith.length; i += 1) {
+ if (compareWith[i] === el) { return true; }
+ }
+ return false;
+ } else if (selector === doc) { return el === doc; }
+ else if (selector === win) { return el === win; }
+
+ if (selector.nodeType || selector instanceof Dom7) {
+ compareWith = selector.nodeType ? [selector] : selector;
+ for (i = 0; i < compareWith.length; i += 1) {
+ if (compareWith[i] === el) { return true; }
+ }
+ return false;
+ }
+ return false;
+ }
+ function index() {
+ var child = this[0];
+ var i;
+ if (child) {
+ i = 0;
+ // eslint-disable-next-line
+ while ((child = child.previousSibling) !== null) {
+ if (child.nodeType === 1) { i += 1; }
+ }
+ return i;
+ }
+ return undefined;
+ }
+ // eslint-disable-next-line
+ function eq(index) {
+ if (typeof index === 'undefined') { return this; }
+ var length = this.length;
+ var returnIndex;
+ if (index > length - 1) {
+ return new Dom7([]);
+ }
+ if (index < 0) {
+ returnIndex = length + index;
+ if (returnIndex < 0) { return new Dom7([]); }
+ return new Dom7([this[returnIndex]]);
+ }
+ return new Dom7([this[index]]);
+ }
+ function append() {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ var newChild;
+
+ for (var k = 0; k < args.length; k += 1) {
+ newChild = args[k];
+ for (var i = 0; i < this.length; i += 1) {
+ if (typeof newChild === 'string') {
+ var tempDiv = doc.createElement('div');
+ tempDiv.innerHTML = newChild;
+ while (tempDiv.firstChild) {
+ this[i].appendChild(tempDiv.firstChild);
+ }
+ } else if (newChild instanceof Dom7) {
+ for (var j = 0; j < newChild.length; j += 1) {
+ this[i].appendChild(newChild[j]);
+ }
+ } else {
+ this[i].appendChild(newChild);
+ }
+ }
+ }
+
+ return this;
+ }
+ function prepend(newChild) {
+ var i;
+ var j;
+ for (i = 0; i < this.length; i += 1) {
+ if (typeof newChild === 'string') {
+ var tempDiv = doc.createElement('div');
+ tempDiv.innerHTML = newChild;
+ for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
+ this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
+ }
+ } else if (newChild instanceof Dom7) {
+ for (j = 0; j < newChild.length; j += 1) {
+ this[i].insertBefore(newChild[j], this[i].childNodes[0]);
+ }
+ } else {
+ this[i].insertBefore(newChild, this[i].childNodes[0]);
+ }
+ }
+ return this;
+ }
+ function next(selector) {
+ if (this.length > 0) {
+ if (selector) {
+ if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
+ return new Dom7([this[0].nextElementSibling]);
+ }
+ return new Dom7([]);
+ }
+
+ if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }
+ return new Dom7([]);
+ }
+ return new Dom7([]);
+ }
+ function nextAll(selector) {
+ var nextEls = [];
+ var el = this[0];
+ if (!el) { return new Dom7([]); }
+ while (el.nextElementSibling) {
+ var next = el.nextElementSibling; // eslint-disable-line
+ if (selector) {
+ if ($(next).is(selector)) { nextEls.push(next); }
+ } else { nextEls.push(next); }
+ el = next;
+ }
+ return new Dom7(nextEls);
+ }
+ function prev(selector) {
+ if (this.length > 0) {
+ var el = this[0];
+ if (selector) {
+ if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
+ return new Dom7([el.previousElementSibling]);
+ }
+ return new Dom7([]);
+ }
+
+ if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }
+ return new Dom7([]);
+ }
+ return new Dom7([]);
+ }
+ function prevAll(selector) {
+ var prevEls = [];
+ var el = this[0];
+ if (!el) { return new Dom7([]); }
+ while (el.previousElementSibling) {
+ var prev = el.previousElementSibling; // eslint-disable-line
+ if (selector) {
+ if ($(prev).is(selector)) { prevEls.push(prev); }
+ } else { prevEls.push(prev); }
+ el = prev;
+ }
+ return new Dom7(prevEls);
+ }
+ function parent(selector) {
+ var parents = []; // eslint-disable-line
+ for (var i = 0; i < this.length; i += 1) {
+ if (this[i].parentNode !== null) {
+ if (selector) {
+ if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }
+ } else {
+ parents.push(this[i].parentNode);
+ }
+ }
+ }
+ return $(unique(parents));
+ }
+ function parents(selector) {
+ var parents = []; // eslint-disable-line
+ for (var i = 0; i < this.length; i += 1) {
+ var parent = this[i].parentNode; // eslint-disable-line
+ while (parent) {
+ if (selector) {
+ if ($(parent).is(selector)) { parents.push(parent); }
+ } else {
+ parents.push(parent);
+ }
+ parent = parent.parentNode;
+ }
+ }
+ return $(unique(parents));
+ }
+ function closest(selector) {
+ var closest = this; // eslint-disable-line
+ if (typeof selector === 'undefined') {
+ return new Dom7([]);
+ }
+ if (!closest.is(selector)) {
+ closest = closest.parents(selector).eq(0);
+ }
+ return closest;
+ }
+ function find(selector) {
+ var foundElements = [];
+ for (var i = 0; i < this.length; i += 1) {
+ var found = this[i].querySelectorAll(selector);
+ for (var j = 0; j < found.length; j += 1) {
+ foundElements.push(found[j]);
+ }
+ }
+ return new Dom7(foundElements);
+ }
+ function children(selector) {
+ var children = []; // eslint-disable-line
+ for (var i = 0; i < this.length; i += 1) {
+ var childNodes = this[i].childNodes;
+
+ for (var j = 0; j < childNodes.length; j += 1) {
+ if (!selector) {
+ if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }
+ } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {
+ children.push(childNodes[j]);
+ }
+ }
+ }
+ return new Dom7(unique(children));
+ }
+ function remove() {
+ for (var i = 0; i < this.length; i += 1) {
+ if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }
+ }
+ return this;
+ }
+ function add() {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ var dom = this;
+ var i;
+ var j;
+ for (i = 0; i < args.length; i += 1) {
+ var toAdd = $(args[i]);
+ for (j = 0; j < toAdd.length; j += 1) {
+ dom[dom.length] = toAdd[j];
+ dom.length += 1;
+ }
+ }
+ return dom;
+ }
+
+ var Methods = {
+ addClass: addClass,
+ removeClass: removeClass,
+ hasClass: hasClass,
+ toggleClass: toggleClass,
+ attr: attr,
+ removeAttr: removeAttr,
+ data: data,
+ transform: transform,
+ transition: transition,
+ on: on,
+ off: off,
+ trigger: trigger,
+ transitionEnd: transitionEnd,
+ outerWidth: outerWidth,
+ outerHeight: outerHeight,
+ offset: offset,
+ css: css,
+ each: each,
+ html: html,
+ text: text,
+ is: is,
+ index: index,
+ eq: eq,
+ append: append,
+ prepend: prepend,
+ next: next,
+ nextAll: nextAll,
+ prev: prev,
+ prevAll: prevAll,
+ parent: parent,
+ parents: parents,
+ closest: closest,
+ find: find,
+ children: children,
+ remove: remove,
+ add: add,
+ styles: styles,
+ };
+
+ Object.keys(Methods).forEach(function (methodName) {
+ $.fn[methodName] = Methods[methodName];
+ });
+
+ var Utils = {
+ deleteProps: function deleteProps(obj) {
+ var object = obj;
+ Object.keys(object).forEach(function (key) {
+ try {
+ object[key] = null;
+ } catch (e) {
+ // no getter for object
+ }
+ try {
+ delete object[key];
+ } catch (e) {
+ // something got wrong
+ }
+ });
+ },
+ nextTick: function nextTick(callback, delay) {
+ if ( delay === void 0 ) delay = 0;
+
+ return setTimeout(callback, delay);
+ },
+ now: function now() {
+ return Date.now();
+ },
+ getTranslate: function getTranslate(el, axis) {
+ if ( axis === void 0 ) axis = 'x';
+
+ var matrix;
+ var curTransform;
+ var transformMatrix;
+
+ var curStyle = win.getComputedStyle(el, null);
+
+ if (win.WebKitCSSMatrix) {
+ curTransform = curStyle.transform || curStyle.webkitTransform;
+ if (curTransform.split(',').length > 6) {
+ curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');
+ }
+ // Some old versions of Webkit choke when 'none' is passed; pass
+ // empty string instead in this case
+ transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
+ } else {
+ transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
+ matrix = transformMatrix.toString().split(',');
+ }
+
+ if (axis === 'x') {
+ // Latest Chrome and webkits Fix
+ if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; }
+ // Crazy IE10 Matrix
+ else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); }
+ // Normal Browsers
+ else { curTransform = parseFloat(matrix[4]); }
+ }
+ if (axis === 'y') {
+ // Latest Chrome and webkits Fix
+ if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; }
+ // Crazy IE10 Matrix
+ else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); }
+ // Normal Browsers
+ else { curTransform = parseFloat(matrix[5]); }
+ }
+ return curTransform || 0;
+ },
+ parseUrlQuery: function parseUrlQuery(url) {
+ var query = {};
+ var urlToParse = url || win.location.href;
+ var i;
+ var params;
+ var param;
+ var length;
+ if (typeof urlToParse === 'string' && urlToParse.length) {
+ urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
+ params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });
+ length = params.length;
+
+ for (i = 0; i < length; i += 1) {
+ param = params[i].replace(/#\S+/g, '').split('=');
+ query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';
+ }
+ }
+ return query;
+ },
+ isObject: function isObject(o) {
+ return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
+ },
+ extend: function extend() {
+ var args = [], len$1 = arguments.length;
+ while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];
+
+ var to = Object(args[0]);
+ for (var i = 1; i < args.length; i += 1) {
+ var nextSource = args[i];
+ if (nextSource !== undefined && nextSource !== null) {
+ var keysArray = Object.keys(Object(nextSource));
+ for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
+ var nextKey = keysArray[nextIndex];
+ var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+ if (desc !== undefined && desc.enumerable) {
+ if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
+ Utils.extend(to[nextKey], nextSource[nextKey]);
+ } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {
+ to[nextKey] = {};
+ Utils.extend(to[nextKey], nextSource[nextKey]);
+ } else {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ }
+ return to;
+ },
+ };
+
+ var Support = (function Support() {
+ var testDiv = doc.createElement('div');
+ return {
+ touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {
+ return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));
+ }()),
+
+ pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),
+ prefixedPointerEvents: !!win.navigator.msPointerEnabled,
+
+ transition: (function checkTransition() {
+ var style = testDiv.style;
+ return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);
+ }()),
+ transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {
+ var style = testDiv.style;
+ return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);
+ }()),
+
+ flexbox: (function checkFlexbox() {
+ var style = testDiv.style;
+ var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');
+ for (var i = 0; i < styles.length; i += 1) {
+ if (styles[i] in style) { return true; }
+ }
+ return false;
+ }()),
+
+ observer: (function checkObserver() {
+ return ('MutationObserver' in win || 'WebkitMutationObserver' in win);
+ }()),
+
+ passiveListener: (function checkPassiveListener() {
+ var supportsPassive = false;
+ try {
+ var opts = Object.defineProperty({}, 'passive', {
+ // eslint-disable-next-line
+ get: function get() {
+ supportsPassive = true;
+ },
+ });
+ win.addEventListener('testPassiveListener', null, opts);
+ } catch (e) {
+ // No support
+ }
+ return supportsPassive;
+ }()),
+
+ gestures: (function checkGestures() {
+ return 'ongesturestart' in win;
+ }()),
+ };
+ }());
+
+ var Browser = (function Browser() {
+ function isSafari() {
+ var ua = win.navigator.userAgent.toLowerCase();
+ return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);
+ }
+ return {
+ isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g),
+ isEdge: !!win.navigator.userAgent.match(/Edge/g),
+ isSafari: isSafari(),
+ isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),
+ };
+ }());
+
+ var SwiperClass = function SwiperClass(params) {
+ if ( params === void 0 ) params = {};
+
+ var self = this;
+ self.params = params;
+
+ // Events
+ self.eventsListeners = {};
+
+ if (self.params && self.params.on) {
+ Object.keys(self.params.on).forEach(function (eventName) {
+ self.on(eventName, self.params.on[eventName]);
+ });
+ }
+ };
+
+ var staticAccessors = { components: { configurable: true } };
+
+ SwiperClass.prototype.on = function on (events, handler, priority) {
+ var self = this;
+ if (typeof handler !== 'function') { return self; }
+ var method = priority ? 'unshift' : 'push';
+ events.split(' ').forEach(function (event) {
+ if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }
+ self.eventsListeners[event][method](handler);
+ });
+ return self;
+ };
+
+ SwiperClass.prototype.once = function once (events, handler, priority) {
+ var self = this;
+ if (typeof handler !== 'function') { return self; }
+ function onceHandler() {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ handler.apply(self, args);
+ self.off(events, onceHandler);
+ if (onceHandler.f7proxy) {
+ delete onceHandler.f7proxy;
+ }
+ }
+ onceHandler.f7proxy = handler;
+ return self.on(events, onceHandler, priority);
+ };
+
+ SwiperClass.prototype.off = function off (events, handler) {
+ var self = this;
+ if (!self.eventsListeners) { return self; }
+ events.split(' ').forEach(function (event) {
+ if (typeof handler === 'undefined') {
+ self.eventsListeners[event] = [];
+ } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {
+ self.eventsListeners[event].forEach(function (eventHandler, index) {
+ if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {
+ self.eventsListeners[event].splice(index, 1);
+ }
+ });
+ }
+ });
+ return self;
+ };
+
+ SwiperClass.prototype.emit = function emit () {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ var self = this;
+ if (!self.eventsListeners) { return self; }
+ var events;
+ var data;
+ var context;
+ if (typeof args[0] === 'string' || Array.isArray(args[0])) {
+ events = args[0];
+ data = args.slice(1, args.length);
+ context = self;
+ } else {
+ events = args[0].events;
+ data = args[0].data;
+ context = args[0].context || self;
+ }
+ var eventsArray = Array.isArray(events) ? events : events.split(' ');
+ eventsArray.forEach(function (event) {
+ if (self.eventsListeners && self.eventsListeners[event]) {
+ var handlers = [];
+ self.eventsListeners[event].forEach(function (eventHandler) {
+ handlers.push(eventHandler);
+ });
+ handlers.forEach(function (eventHandler) {
+ eventHandler.apply(context, data);
+ });
+ }
+ });
+ return self;
+ };
+
+ SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {
+ var instance = this;
+ if (!instance.modules) { return; }
+ Object.keys(instance.modules).forEach(function (moduleName) {
+ var module = instance.modules[moduleName];
+ // Extend params
+ if (module.params) {
+ Utils.extend(instanceParams, module.params);
+ }
+ });
+ };
+
+ SwiperClass.prototype.useModules = function useModules (modulesParams) {
+ if ( modulesParams === void 0 ) modulesParams = {};
+
+ var instance = this;
+ if (!instance.modules) { return; }
+ Object.keys(instance.modules).forEach(function (moduleName) {
+ var module = instance.modules[moduleName];
+ var moduleParams = modulesParams[moduleName] || {};
+ // Extend instance methods and props
+ if (module.instance) {
+ Object.keys(module.instance).forEach(function (modulePropName) {
+ var moduleProp = module.instance[modulePropName];
+ if (typeof moduleProp === 'function') {
+ instance[modulePropName] = moduleProp.bind(instance);
+ } else {
+ instance[modulePropName] = moduleProp;
+ }
+ });
+ }
+ // Add event listeners
+ if (module.on && instance.on) {
+ Object.keys(module.on).forEach(function (moduleEventName) {
+ instance.on(moduleEventName, module.on[moduleEventName]);
+ });
+ }
+
+ // Module create callback
+ if (module.create) {
+ module.create.bind(instance)(moduleParams);
+ }
+ });
+ };
+
+ staticAccessors.components.set = function (components) {
+ var Class = this;
+ if (!Class.use) { return; }
+ Class.use(components);
+ };
+
+ SwiperClass.installModule = function installModule (module) {
+ var params = [], len = arguments.length - 1;
+ while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
+
+ var Class = this;
+ if (!Class.prototype.modules) { Class.prototype.modules = {}; }
+ var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now())));
+ Class.prototype.modules[name] = module;
+ // Prototype
+ if (module.proto) {
+ Object.keys(module.proto).forEach(function (key) {
+ Class.prototype[key] = module.proto[key];
+ });
+ }
+ // Class
+ if (module.static) {
+ Object.keys(module.static).forEach(function (key) {
+ Class[key] = module.static[key];
+ });
+ }
+ // Callback
+ if (module.install) {
+ module.install.apply(Class, params);
+ }
+ return Class;
+ };
+
+ SwiperClass.use = function use (module) {
+ var params = [], len = arguments.length - 1;
+ while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];
+
+ var Class = this;
+ if (Array.isArray(module)) {
+ module.forEach(function (m) { return Class.installModule(m); });
+ return Class;
+ }
+ return Class.installModule.apply(Class, [ module ].concat( params ));
+ };
+
+ Object.defineProperties( SwiperClass, staticAccessors );
+
+ function updateSize () {
+ var swiper = this;
+ var width;
+ var height;
+ var $el = swiper.$el;
+ if (typeof swiper.params.width !== 'undefined') {
+ width = swiper.params.width;
+ } else {
+ width = $el[0].clientWidth;
+ }
+ if (typeof swiper.params.height !== 'undefined') {
+ height = swiper.params.height;
+ } else {
+ height = $el[0].clientHeight;
+ }
+ if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {
+ return;
+ }
+
+ // Subtract paddings
+ width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);
+ height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);
+
+ Utils.extend(swiper, {
+ width: width,
+ height: height,
+ size: swiper.isHorizontal() ? width : height,
+ });
+ }
+
+ function updateSlides () {
+ var swiper = this;
+ var params = swiper.params;
+
+ var $wrapperEl = swiper.$wrapperEl;
+ var swiperSize = swiper.size;
+ var rtl = swiper.rtlTranslate;
+ var wrongRTL = swiper.wrongRTL;
+ var isVirtual = swiper.virtual && params.virtual.enabled;
+ var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
+ var slides = $wrapperEl.children(("." + (swiper.params.slideClass)));
+ var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
+ var snapGrid = [];
+ var slidesGrid = [];
+ var slidesSizesGrid = [];
+
+ var offsetBefore = params.slidesOffsetBefore;
+ if (typeof offsetBefore === 'function') {
+ offsetBefore = params.slidesOffsetBefore.call(swiper);
+ }
+
+ var offsetAfter = params.slidesOffsetAfter;
+ if (typeof offsetAfter === 'function') {
+ offsetAfter = params.slidesOffsetAfter.call(swiper);
+ }
+
+ var previousSnapGridLength = swiper.snapGrid.length;
+ var previousSlidesGridLength = swiper.snapGrid.length;
+
+ var spaceBetween = params.spaceBetween;
+ var slidePosition = -offsetBefore;
+ var prevSlideSize = 0;
+ var index = 0;
+ if (typeof swiperSize === 'undefined') {
+ return;
+ }
+ if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
+ spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;
+ }
+
+ swiper.virtualSize = -spaceBetween;
+
+ // reset margins
+ if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); }
+ else { slides.css({ marginRight: '', marginBottom: '' }); }
+
+ var slidesNumberEvenToRows;
+ if (params.slidesPerColumn > 1) {
+ if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
+ slidesNumberEvenToRows = slidesLength;
+ } else {
+ slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
+ }
+ if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
+ slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
+ }
+ }
+
+ // Calc slides
+ var slideSize;
+ var slidesPerColumn = params.slidesPerColumn;
+ var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
+ var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
+ for (var i = 0; i < slidesLength; i += 1) {
+ slideSize = 0;
+ var slide = slides.eq(i);
+ if (params.slidesPerColumn > 1) {
+ // Set slides order
+ var newSlideOrderIndex = (void 0);
+ var column = (void 0);
+ var row = (void 0);
+ if (params.slidesPerColumnFill === 'column') {
+ column = Math.floor(i / slidesPerColumn);
+ row = i - (column * slidesPerColumn);
+ if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {
+ row += 1;
+ if (row >= slidesPerColumn) {
+ row = 0;
+ column += 1;
+ }
+ }
+ newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);
+ slide
+ .css({
+ '-webkit-box-ordinal-group': newSlideOrderIndex,
+ '-moz-box-ordinal-group': newSlideOrderIndex,
+ '-ms-flex-order': newSlideOrderIndex,
+ '-webkit-order': newSlideOrderIndex,
+ order: newSlideOrderIndex,
+ });
+ } else {
+ row = Math.floor(i / slidesPerRow);
+ column = i - (row * slidesPerRow);
+ }
+ slide
+ .css(
+ ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')),
+ (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px"))
+ )
+ .attr('data-swiper-column', column)
+ .attr('data-swiper-row', row);
+ }
+ if (slide.css('display') === 'none') { continue; } // eslint-disable-line
+
+ if (params.slidesPerView === 'auto') {
+ var slideStyles = win.getComputedStyle(slide[0], null);
+ var currentTransform = slide[0].style.transform;
+ var currentWebKitTransform = slide[0].style.webkitTransform;
+ if (currentTransform) {
+ slide[0].style.transform = 'none';
+ }
+ if (currentWebKitTransform) {
+ slide[0].style.webkitTransform = 'none';
+ }
+ if (params.roundLengths) {
+ slideSize = swiper.isHorizontal()
+ ? slide.outerWidth(true)
+ : slide.outerHeight(true);
+ } else {
+ // eslint-disable-next-line
+ if (swiper.isHorizontal()) {
+ var width = parseFloat(slideStyles.getPropertyValue('width'));
+ var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));
+ var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));
+ var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));
+ var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));
+ var boxSizing = slideStyles.getPropertyValue('box-sizing');
+ if (boxSizing && boxSizing === 'border-box') {
+ slideSize = width + marginLeft + marginRight;
+ } else {
+ slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;
+ }
+ } else {
+ var height = parseFloat(slideStyles.getPropertyValue('height'));
+ var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));
+ var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));
+ var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));
+ var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));
+ var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');
+ if (boxSizing$1 && boxSizing$1 === 'border-box') {
+ slideSize = height + marginTop + marginBottom;
+ } else {
+ slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;
+ }
+ }
+ }
+ if (currentTransform) {
+ slide[0].style.transform = currentTransform;
+ }
+ if (currentWebKitTransform) {
+ slide[0].style.webkitTransform = currentWebKitTransform;
+ }
+ if (params.roundLengths) { slideSize = Math.floor(slideSize); }
+ } else {
+ slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;
+ if (params.roundLengths) { slideSize = Math.floor(slideSize); }
+
+ if (slides[i]) {
+ if (swiper.isHorizontal()) {
+ slides[i].style.width = slideSize + "px";
+ } else {
+ slides[i].style.height = slideSize + "px";
+ }
+ }
+ }
+ if (slides[i]) {
+ slides[i].swiperSlideSize = slideSize;
+ }
+ slidesSizesGrid.push(slideSize);
+
+
+ if (params.centeredSlides) {
+ slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;
+ if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
+ if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; }
+ if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; }
+ if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
+ if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
+ slidesGrid.push(slidePosition);
+ } else {
+ if (params.roundLengths) { slidePosition = Math.floor(slidePosition); }
+ if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); }
+ slidesGrid.push(slidePosition);
+ slidePosition = slidePosition + slideSize + spaceBetween;
+ }
+
+ swiper.virtualSize += slideSize + spaceBetween;
+
+ prevSlideSize = slideSize;
+
+ index += 1;
+ }
+ swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
+ var newSlidesGrid;
+
+ if (
+ rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
+ $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") });
+ }
+ if (!Support.flexbox || params.setWrapperSize) {
+ if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
+ else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
+ }
+
+ if (params.slidesPerColumn > 1) {
+ swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
+ swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
+ if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
+ else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); }
+ if (params.centeredSlides) {
+ newSlidesGrid = [];
+ for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {
+ var slidesGridItem = snapGrid[i$1];
+ if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }
+ if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); }
+ }
+ snapGrid = newSlidesGrid;
+ }
+ }
+
+ // Remove last grid elements depending on width
+ if (!params.centeredSlides) {
+ newSlidesGrid = [];
+ for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {
+ var slidesGridItem$1 = snapGrid[i$2];
+ if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }
+ if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {
+ newSlidesGrid.push(slidesGridItem$1);
+ }
+ }
+ snapGrid = newSlidesGrid;
+ if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
+ snapGrid.push(swiper.virtualSize - swiperSize);
+ }
+ }
+ if (snapGrid.length === 0) { snapGrid = [0]; }
+
+ if (params.spaceBetween !== 0) {
+ if (swiper.isHorizontal()) {
+ if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); }
+ else { slides.css({ marginRight: (spaceBetween + "px") }); }
+ } else { slides.css({ marginBottom: (spaceBetween + "px") }); }
+ }
+
+ if (params.centerInsufficientSlides) {
+ var allSlidesSize = 0;
+ slidesSizesGrid.forEach(function (slideSizeValue) {
+ allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
+ });
+ allSlidesSize -= params.spaceBetween;
+ if (allSlidesSize < swiperSize) {
+ var allSlidesOffset = (swiperSize - allSlidesSize) / 2;
+ snapGrid.forEach(function (snap, snapIndex) {
+ snapGrid[snapIndex] = snap - allSlidesOffset;
+ });
+ slidesGrid.forEach(function (snap, snapIndex) {
+ slidesGrid[snapIndex] = snap + allSlidesOffset;
+ });
+ }
+ }
+
+ Utils.extend(swiper, {
+ slides: slides,
+ snapGrid: snapGrid,
+ slidesGrid: slidesGrid,
+ slidesSizesGrid: slidesSizesGrid,
+ });
+
+ if (slidesLength !== previousSlidesLength) {
+ swiper.emit('slidesLengthChange');
+ }
+ if (snapGrid.length !== previousSnapGridLength) {
+ if (swiper.params.watchOverflow) { swiper.checkOverflow(); }
+ swiper.emit('snapGridLengthChange');
+ }
+ if (slidesGrid.length !== previousSlidesGridLength) {
+ swiper.emit('slidesGridLengthChange');
+ }
+
+ if (params.watchSlidesProgress || params.watchSlidesVisibility) {
+ swiper.updateSlidesOffset();
+ }
+ }
+
+ function updateAutoHeight (speed) {
+ var swiper = this;
+ var activeSlides = [];
+ var newHeight = 0;
+ var i;
+ if (typeof speed === 'number') {
+ swiper.setTransition(speed);
+ } else if (speed === true) {
+ swiper.setTransition(swiper.params.speed);
+ }
+ // Find slides currently in view
+ if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
+ for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
+ var index = swiper.activeIndex + i;
+ if (index > swiper.slides.length) { break; }
+ activeSlides.push(swiper.slides.eq(index)[0]);
+ }
+ } else {
+ activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);
+ }
+
+ // Find new height from highest slide in view
+ for (i = 0; i < activeSlides.length; i += 1) {
+ if (typeof activeSlides[i] !== 'undefined') {
+ var height = activeSlides[i].offsetHeight;
+ newHeight = height > newHeight ? height : newHeight;
+ }
+ }
+
+ // Update Height
+ if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); }
+ }
+
+ function updateSlidesOffset () {
+ var swiper = this;
+ var slides = swiper.slides;
+ for (var i = 0; i < slides.length; i += 1) {
+ slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
+ }
+ }
+
+ function updateSlidesProgress (translate) {
+ if ( translate === void 0 ) translate = (this && this.translate) || 0;
+
+ var swiper = this;
+ var params = swiper.params;
+
+ var slides = swiper.slides;
+ var rtl = swiper.rtlTranslate;
+
+ if (slides.length === 0) { return; }
+ if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }
+
+ var offsetCenter = -translate;
+ if (rtl) { offsetCenter = translate; }
+
+ // Visible Slides
+ slides.removeClass(params.slideVisibleClass);
+
+ swiper.visibleSlidesIndexes = [];
+ swiper.visibleSlides = [];
+
+ for (var i = 0; i < slides.length; i += 1) {
+ var slide = slides[i];
+ var slideProgress = (
+ (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset
+ ) / (slide.swiperSlideSize + params.spaceBetween);
+ if (params.watchSlidesVisibility) {
+ var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
+ var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
+ var isVisible = (slideBefore >= 0 && slideBefore < swiper.size)
+ || (slideAfter > 0 && slideAfter <= swiper.size)
+ || (slideBefore <= 0 && slideAfter >= swiper.size);
+ if (isVisible) {
+ swiper.visibleSlides.push(slide);
+ swiper.visibleSlidesIndexes.push(i);
+ slides.eq(i).addClass(params.slideVisibleClass);
+ }
+ }
+ slide.progress = rtl ? -slideProgress : slideProgress;
+ }
+ swiper.visibleSlides = $(swiper.visibleSlides);
+ }
+
+ function updateProgress (translate) {
+ if ( translate === void 0 ) translate = (this && this.translate) || 0;
+
+ var swiper = this;
+ var params = swiper.params;
+
+ var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
+ var progress = swiper.progress;
+ var isBeginning = swiper.isBeginning;
+ var isEnd = swiper.isEnd;
+ var wasBeginning = isBeginning;
+ var wasEnd = isEnd;
+ if (translatesDiff === 0) {
+ progress = 0;
+ isBeginning = true;
+ isEnd = true;
+ } else {
+ progress = (translate - swiper.minTranslate()) / (translatesDiff);
+ isBeginning = progress <= 0;
+ isEnd = progress >= 1;
+ }
+ Utils.extend(swiper, {
+ progress: progress,
+ isBeginning: isBeginning,
+ isEnd: isEnd,
+ });
+
+ if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); }
+
+ if (isBeginning && !wasBeginning) {
+ swiper.emit('reachBeginning toEdge');
+ }
+ if (isEnd && !wasEnd) {
+ swiper.emit('reachEnd toEdge');
+ }
+ if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {
+ swiper.emit('fromEdge');
+ }
+
+ swiper.emit('progress', progress);
+ }
+
+ function updateSlidesClasses () {
+ var swiper = this;
+
+ var slides = swiper.slides;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+ var activeIndex = swiper.activeIndex;
+ var realIndex = swiper.realIndex;
+ var isVirtual = swiper.virtual && params.virtual.enabled;
+
+ slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass)));
+
+ var activeSlide;
+ if (isVirtual) {
+ activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]"));
+ } else {
+ activeSlide = slides.eq(activeIndex);
+ }
+
+ // Active classes
+ activeSlide.addClass(params.slideActiveClass);
+
+ if (params.loop) {
+ // Duplicate to all looped slides
+ if (activeSlide.hasClass(params.slideDuplicateClass)) {
+ $wrapperEl
+ .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]"))
+ .addClass(params.slideDuplicateActiveClass);
+ } else {
+ $wrapperEl
+ .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]"))
+ .addClass(params.slideDuplicateActiveClass);
+ }
+ }
+ // Next Slide
+ var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass);
+ if (params.loop && nextSlide.length === 0) {
+ nextSlide = slides.eq(0);
+ nextSlide.addClass(params.slideNextClass);
+ }
+ // Prev Slide
+ var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass);
+ if (params.loop && prevSlide.length === 0) {
+ prevSlide = slides.eq(-1);
+ prevSlide.addClass(params.slidePrevClass);
+ }
+ if (params.loop) {
+ // Duplicate to all looped slides
+ if (nextSlide.hasClass(params.slideDuplicateClass)) {
+ $wrapperEl
+ .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
+ .addClass(params.slideDuplicateNextClass);
+ } else {
+ $wrapperEl
+ .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]"))
+ .addClass(params.slideDuplicateNextClass);
+ }
+ if (prevSlide.hasClass(params.slideDuplicateClass)) {
+ $wrapperEl
+ .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
+ .addClass(params.slideDuplicatePrevClass);
+ } else {
+ $wrapperEl
+ .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]"))
+ .addClass(params.slideDuplicatePrevClass);
+ }
+ }
+ }
+
+ function updateActiveIndex (newActiveIndex) {
+ var swiper = this;
+ var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
+ var slidesGrid = swiper.slidesGrid;
+ var snapGrid = swiper.snapGrid;
+ var params = swiper.params;
+ var previousIndex = swiper.activeIndex;
+ var previousRealIndex = swiper.realIndex;
+ var previousSnapIndex = swiper.snapIndex;
+ var activeIndex = newActiveIndex;
+ var snapIndex;
+ if (typeof activeIndex === 'undefined') {
+ for (var i = 0; i < slidesGrid.length; i += 1) {
+ if (typeof slidesGrid[i + 1] !== 'undefined') {
+ if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {
+ activeIndex = i;
+ } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
+ activeIndex = i + 1;
+ }
+ } else if (translate >= slidesGrid[i]) {
+ activeIndex = i;
+ }
+ }
+ // Normalize slideIndex
+ if (params.normalizeSlideIndex) {
+ if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; }
+ }
+ }
+ if (snapGrid.indexOf(translate) >= 0) {
+ snapIndex = snapGrid.indexOf(translate);
+ } else {
+ snapIndex = Math.floor(activeIndex / params.slidesPerGroup);
+ }
+ if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
+ if (activeIndex === previousIndex) {
+ if (snapIndex !== previousSnapIndex) {
+ swiper.snapIndex = snapIndex;
+ swiper.emit('snapIndexChange');
+ }
+ return;
+ }
+
+ // Get real index
+ var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
+
+ Utils.extend(swiper, {
+ snapIndex: snapIndex,
+ realIndex: realIndex,
+ previousIndex: previousIndex,
+ activeIndex: activeIndex,
+ });
+ swiper.emit('activeIndexChange');
+ swiper.emit('snapIndexChange');
+ if (previousRealIndex !== realIndex) {
+ swiper.emit('realIndexChange');
+ }
+ swiper.emit('slideChange');
+ }
+
+ function updateClickedSlide (e) {
+ var swiper = this;
+ var params = swiper.params;
+ var slide = $(e.target).closest(("." + (params.slideClass)))[0];
+ var slideFound = false;
+ if (slide) {
+ for (var i = 0; i < swiper.slides.length; i += 1) {
+ if (swiper.slides[i] === slide) { slideFound = true; }
+ }
+ }
+
+ if (slide && slideFound) {
+ swiper.clickedSlide = slide;
+ if (swiper.virtual && swiper.params.virtual.enabled) {
+ swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);
+ } else {
+ swiper.clickedIndex = $(slide).index();
+ }
+ } else {
+ swiper.clickedSlide = undefined;
+ swiper.clickedIndex = undefined;
+ return;
+ }
+ if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
+ swiper.slideToClickedSlide();
+ }
+ }
+
+ var update = {
+ updateSize: updateSize,
+ updateSlides: updateSlides,
+ updateAutoHeight: updateAutoHeight,
+ updateSlidesOffset: updateSlidesOffset,
+ updateSlidesProgress: updateSlidesProgress,
+ updateProgress: updateProgress,
+ updateSlidesClasses: updateSlidesClasses,
+ updateActiveIndex: updateActiveIndex,
+ updateClickedSlide: updateClickedSlide,
+ };
+
+ function getTranslate (axis) {
+ if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';
+
+ var swiper = this;
+
+ var params = swiper.params;
+ var rtl = swiper.rtlTranslate;
+ var translate = swiper.translate;
+ var $wrapperEl = swiper.$wrapperEl;
+
+ if (params.virtualTranslate) {
+ return rtl ? -translate : translate;
+ }
+
+ var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);
+ if (rtl) { currentTranslate = -currentTranslate; }
+
+ return currentTranslate || 0;
+ }
+
+ function setTranslate (translate, byController) {
+ var swiper = this;
+ var rtl = swiper.rtlTranslate;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+ var progress = swiper.progress;
+ var x = 0;
+ var y = 0;
+ var z = 0;
+
+ if (swiper.isHorizontal()) {
+ x = rtl ? -translate : translate;
+ } else {
+ y = translate;
+ }
+
+ if (params.roundLengths) {
+ x = Math.floor(x);
+ y = Math.floor(y);
+ }
+
+ if (!params.virtualTranslate) {
+ if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); }
+ else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); }
+ }
+ swiper.previousTranslate = swiper.translate;
+ swiper.translate = swiper.isHorizontal() ? x : y;
+
+ // Check if we need to update progress
+ var newProgress;
+ var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
+ if (translatesDiff === 0) {
+ newProgress = 0;
+ } else {
+ newProgress = (translate - swiper.minTranslate()) / (translatesDiff);
+ }
+ if (newProgress !== progress) {
+ swiper.updateProgress(translate);
+ }
+
+ swiper.emit('setTranslate', swiper.translate, byController);
+ }
+
+ function minTranslate () {
+ return (-this.snapGrid[0]);
+ }
+
+ function maxTranslate () {
+ return (-this.snapGrid[this.snapGrid.length - 1]);
+ }
+
+ var translate = {
+ getTranslate: getTranslate,
+ setTranslate: setTranslate,
+ minTranslate: minTranslate,
+ maxTranslate: maxTranslate,
+ };
+
+ function setTransition (duration, byController) {
+ var swiper = this;
+
+ swiper.$wrapperEl.transition(duration);
+
+ swiper.emit('setTransition', duration, byController);
+ }
+
+ function transitionStart (runCallbacks, direction) {
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var activeIndex = swiper.activeIndex;
+ var params = swiper.params;
+ var previousIndex = swiper.previousIndex;
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+
+ var dir = direction;
+ if (!dir) {
+ if (activeIndex > previousIndex) { dir = 'next'; }
+ else if (activeIndex < previousIndex) { dir = 'prev'; }
+ else { dir = 'reset'; }
+ }
+
+ swiper.emit('transitionStart');
+
+ if (runCallbacks && activeIndex !== previousIndex) {
+ if (dir === 'reset') {
+ swiper.emit('slideResetTransitionStart');
+ return;
+ }
+ swiper.emit('slideChangeTransitionStart');
+ if (dir === 'next') {
+ swiper.emit('slideNextTransitionStart');
+ } else {
+ swiper.emit('slidePrevTransitionStart');
+ }
+ }
+ }
+
+ function transitionEnd$1 (runCallbacks, direction) {
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var activeIndex = swiper.activeIndex;
+ var previousIndex = swiper.previousIndex;
+ swiper.animating = false;
+ swiper.setTransition(0);
+
+ var dir = direction;
+ if (!dir) {
+ if (activeIndex > previousIndex) { dir = 'next'; }
+ else if (activeIndex < previousIndex) { dir = 'prev'; }
+ else { dir = 'reset'; }
+ }
+
+ swiper.emit('transitionEnd');
+
+ if (runCallbacks && activeIndex !== previousIndex) {
+ if (dir === 'reset') {
+ swiper.emit('slideResetTransitionEnd');
+ return;
+ }
+ swiper.emit('slideChangeTransitionEnd');
+ if (dir === 'next') {
+ swiper.emit('slideNextTransitionEnd');
+ } else {
+ swiper.emit('slidePrevTransitionEnd');
+ }
+ }
+ }
+
+ var transition$1 = {
+ setTransition: setTransition,
+ transitionStart: transitionStart,
+ transitionEnd: transitionEnd$1,
+ };
+
+ function slideTo (index, speed, runCallbacks, internal) {
+ if ( index === void 0 ) index = 0;
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var slideIndex = index;
+ if (slideIndex < 0) { slideIndex = 0; }
+
+ var params = swiper.params;
+ var snapGrid = swiper.snapGrid;
+ var slidesGrid = swiper.slidesGrid;
+ var previousIndex = swiper.previousIndex;
+ var activeIndex = swiper.activeIndex;
+ var rtl = swiper.rtlTranslate;
+ if (swiper.animating && params.preventInteractionOnTransition) {
+ return false;
+ }
+
+ var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);
+ if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; }
+
+ if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
+ swiper.emit('beforeSlideChangeStart');
+ }
+
+ var translate = -snapGrid[snapIndex];
+
+ // Update progress
+ swiper.updateProgress(translate);
+
+ // Normalize slideIndex
+ if (params.normalizeSlideIndex) {
+ for (var i = 0; i < slidesGrid.length; i += 1) {
+ if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {
+ slideIndex = i;
+ }
+ }
+ }
+ // Directions locks
+ if (swiper.initialized && slideIndex !== activeIndex) {
+ if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
+ return false;
+ }
+ if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
+ if ((activeIndex || 0) !== slideIndex) { return false; }
+ }
+ }
+
+ var direction;
+ if (slideIndex > activeIndex) { direction = 'next'; }
+ else if (slideIndex < activeIndex) { direction = 'prev'; }
+ else { direction = 'reset'; }
+
+
+ // Update Index
+ if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {
+ swiper.updateActiveIndex(slideIndex);
+ // Update Height
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ swiper.updateSlidesClasses();
+ if (params.effect !== 'slide') {
+ swiper.setTranslate(translate);
+ }
+ if (direction !== 'reset') {
+ swiper.transitionStart(runCallbacks, direction);
+ swiper.transitionEnd(runCallbacks, direction);
+ }
+ return false;
+ }
+
+ if (speed === 0 || !Support.transition) {
+ swiper.setTransition(0);
+ swiper.setTranslate(translate);
+ swiper.updateActiveIndex(slideIndex);
+ swiper.updateSlidesClasses();
+ swiper.emit('beforeTransitionStart', speed, internal);
+ swiper.transitionStart(runCallbacks, direction);
+ swiper.transitionEnd(runCallbacks, direction);
+ } else {
+ swiper.setTransition(speed);
+ swiper.setTranslate(translate);
+ swiper.updateActiveIndex(slideIndex);
+ swiper.updateSlidesClasses();
+ swiper.emit('beforeTransitionStart', speed, internal);
+ swiper.transitionStart(runCallbacks, direction);
+ if (!swiper.animating) {
+ swiper.animating = true;
+ if (!swiper.onSlideToWrapperTransitionEnd) {
+ swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
+ if (!swiper || swiper.destroyed) { return; }
+ if (e.target !== this) { return; }
+ swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
+ swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
+ swiper.onSlideToWrapperTransitionEnd = null;
+ delete swiper.onSlideToWrapperTransitionEnd;
+ swiper.transitionEnd(runCallbacks, direction);
+ };
+ }
+ swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
+ swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
+ }
+ }
+
+ return true;
+ }
+
+ function slideToLoop (index, speed, runCallbacks, internal) {
+ if ( index === void 0 ) index = 0;
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var newIndex = index;
+ if (swiper.params.loop) {
+ newIndex += swiper.loopedSlides;
+ }
+
+ return swiper.slideTo(newIndex, speed, runCallbacks, internal);
+ }
+
+ /* eslint no-unused-vars: "off" */
+ function slideNext (speed, runCallbacks, internal) {
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var params = swiper.params;
+ var animating = swiper.animating;
+ if (params.loop) {
+ if (animating) { return false; }
+ swiper.loopFix();
+ // eslint-disable-next-line
+ swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
+ return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
+ }
+ return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);
+ }
+
+ /* eslint no-unused-vars: "off" */
+ function slidePrev (speed, runCallbacks, internal) {
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var params = swiper.params;
+ var animating = swiper.animating;
+ var snapGrid = swiper.snapGrid;
+ var slidesGrid = swiper.slidesGrid;
+ var rtlTranslate = swiper.rtlTranslate;
+
+ if (params.loop) {
+ if (animating) { return false; }
+ swiper.loopFix();
+ // eslint-disable-next-line
+ swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
+ }
+ var translate = rtlTranslate ? swiper.translate : -swiper.translate;
+ function normalize(val) {
+ if (val < 0) { return -Math.floor(Math.abs(val)); }
+ return Math.floor(val);
+ }
+ var normalizedTranslate = normalize(translate);
+ var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });
+ var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });
+
+ var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
+ var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
+ var prevIndex;
+ if (typeof prevSnap !== 'undefined') {
+ prevIndex = slidesGrid.indexOf(prevSnap);
+ if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; }
+ }
+ return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
+ }
+
+ /* eslint no-unused-vars: "off" */
+ function slideReset (speed, runCallbacks, internal) {
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
+ }
+
+ /* eslint no-unused-vars: "off" */
+ function slideToClosest (speed, runCallbacks, internal) {
+ if ( speed === void 0 ) speed = this.params.speed;
+ if ( runCallbacks === void 0 ) runCallbacks = true;
+
+ var swiper = this;
+ var index = swiper.activeIndex;
+ var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);
+
+ if (snapIndex < swiper.snapGrid.length - 1) {
+ var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
+
+ var currentSnap = swiper.snapGrid[snapIndex];
+ var nextSnap = swiper.snapGrid[snapIndex + 1];
+
+ if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {
+ index = swiper.params.slidesPerGroup;
+ }
+ }
+
+ return swiper.slideTo(index, speed, runCallbacks, internal);
+ }
+
+ function slideToClickedSlide () {
+ var swiper = this;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+
+ var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
+ var slideToIndex = swiper.clickedIndex;
+ var realIndex;
+ if (params.loop) {
+ if (swiper.animating) { return; }
+ realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
+ if (params.centeredSlides) {
+ if (
+ (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))
+ || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))
+ ) {
+ swiper.loopFix();
+ slideToIndex = $wrapperEl
+ .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
+ .eq(0)
+ .index();
+
+ Utils.nextTick(function () {
+ swiper.slideTo(slideToIndex);
+ });
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ } else if (slideToIndex > swiper.slides.length - slidesPerView) {
+ swiper.loopFix();
+ slideToIndex = $wrapperEl
+ .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")"))
+ .eq(0)
+ .index();
+
+ Utils.nextTick(function () {
+ swiper.slideTo(slideToIndex);
+ });
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ }
+
+ var slide = {
+ slideTo: slideTo,
+ slideToLoop: slideToLoop,
+ slideNext: slideNext,
+ slidePrev: slidePrev,
+ slideReset: slideReset,
+ slideToClosest: slideToClosest,
+ slideToClickedSlide: slideToClickedSlide,
+ };
+
+ function loopCreate () {
+ var swiper = this;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+ // Remove duplicated slides
+ $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove();
+
+ var slides = $wrapperEl.children(("." + (params.slideClass)));
+
+ if (params.loopFillGroupWithBlank) {
+ var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);
+ if (blankSlidesNum !== params.slidesPerGroup) {
+ for (var i = 0; i < blankSlidesNum; i += 1) {
+ var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass)));
+ $wrapperEl.append(blankNode);
+ }
+ slides = $wrapperEl.children(("." + (params.slideClass)));
+ }
+ }
+
+ if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; }
+
+ swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);
+ swiper.loopedSlides += params.loopAdditionalSlides;
+ if (swiper.loopedSlides > slides.length) {
+ swiper.loopedSlides = slides.length;
+ }
+
+ var prependSlides = [];
+ var appendSlides = [];
+ slides.each(function (index, el) {
+ var slide = $(el);
+ if (index < swiper.loopedSlides) { appendSlides.push(el); }
+ if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); }
+ slide.attr('data-swiper-slide-index', index);
+ });
+ for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {
+ $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));
+ }
+ for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {
+ $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));
+ }
+ }
+
+ function loopFix () {
+ var swiper = this;
+ var params = swiper.params;
+ var activeIndex = swiper.activeIndex;
+ var slides = swiper.slides;
+ var loopedSlides = swiper.loopedSlides;
+ var allowSlidePrev = swiper.allowSlidePrev;
+ var allowSlideNext = swiper.allowSlideNext;
+ var snapGrid = swiper.snapGrid;
+ var rtl = swiper.rtlTranslate;
+ var newIndex;
+ swiper.allowSlidePrev = true;
+ swiper.allowSlideNext = true;
+
+ var snapTranslate = -snapGrid[activeIndex];
+ var diff = snapTranslate - swiper.getTranslate();
+
+
+ // Fix For Negative Oversliding
+ if (activeIndex < loopedSlides) {
+ newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;
+ newIndex += loopedSlides;
+ var slideChanged = swiper.slideTo(newIndex, 0, false, true);
+ if (slideChanged && diff !== 0) {
+ swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
+ }
+ } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {
+ // Fix For Positive Oversliding
+ newIndex = -slides.length + activeIndex + loopedSlides;
+ newIndex += loopedSlides;
+ var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);
+ if (slideChanged$1 && diff !== 0) {
+ swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
+ }
+ }
+ swiper.allowSlidePrev = allowSlidePrev;
+ swiper.allowSlideNext = allowSlideNext;
+ }
+
+ function loopDestroy () {
+ var swiper = this;
+ var $wrapperEl = swiper.$wrapperEl;
+ var params = swiper.params;
+ var slides = swiper.slides;
+ $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove();
+ slides.removeAttr('data-swiper-slide-index');
+ }
+
+ var loop = {
+ loopCreate: loopCreate,
+ loopFix: loopFix,
+ loopDestroy: loopDestroy,
+ };
+
+ function setGrabCursor (moving) {
+ var swiper = this;
+ if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
+ var el = swiper.el;
+ el.style.cursor = 'move';
+ el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
+ el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
+ el.style.cursor = moving ? 'grabbing' : 'grab';
+ }
+
+ function unsetGrabCursor () {
+ var swiper = this;
+ if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; }
+ swiper.el.style.cursor = '';
+ }
+
+ var grabCursor = {
+ setGrabCursor: setGrabCursor,
+ unsetGrabCursor: unsetGrabCursor,
+ };
+
+ function appendSlide (slides) {
+ var swiper = this;
+ var $wrapperEl = swiper.$wrapperEl;
+ var params = swiper.params;
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+ if (typeof slides === 'object' && 'length' in slides) {
+ for (var i = 0; i < slides.length; i += 1) {
+ if (slides[i]) { $wrapperEl.append(slides[i]); }
+ }
+ } else {
+ $wrapperEl.append(slides);
+ }
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!(params.observer && Support.observer)) {
+ swiper.update();
+ }
+ }
+
+ function prependSlide (slides) {
+ var swiper = this;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+ var activeIndex = swiper.activeIndex;
+
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+ var newActiveIndex = activeIndex + 1;
+ if (typeof slides === 'object' && 'length' in slides) {
+ for (var i = 0; i < slides.length; i += 1) {
+ if (slides[i]) { $wrapperEl.prepend(slides[i]); }
+ }
+ newActiveIndex = activeIndex + slides.length;
+ } else {
+ $wrapperEl.prepend(slides);
+ }
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!(params.observer && Support.observer)) {
+ swiper.update();
+ }
+ swiper.slideTo(newActiveIndex, 0, false);
+ }
+
+ function addSlide (index, slides) {
+ var swiper = this;
+ var $wrapperEl = swiper.$wrapperEl;
+ var params = swiper.params;
+ var activeIndex = swiper.activeIndex;
+ var activeIndexBuffer = activeIndex;
+ if (params.loop) {
+ activeIndexBuffer -= swiper.loopedSlides;
+ swiper.loopDestroy();
+ swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
+ }
+ var baseLength = swiper.slides.length;
+ if (index <= 0) {
+ swiper.prependSlide(slides);
+ return;
+ }
+ if (index >= baseLength) {
+ swiper.appendSlide(slides);
+ return;
+ }
+ var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
+
+ var slidesBuffer = [];
+ for (var i = baseLength - 1; i >= index; i -= 1) {
+ var currentSlide = swiper.slides.eq(i);
+ currentSlide.remove();
+ slidesBuffer.unshift(currentSlide);
+ }
+
+ if (typeof slides === 'object' && 'length' in slides) {
+ for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
+ if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }
+ }
+ newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
+ } else {
+ $wrapperEl.append(slides);
+ }
+
+ for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {
+ $wrapperEl.append(slidesBuffer[i$2]);
+ }
+
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!(params.observer && Support.observer)) {
+ swiper.update();
+ }
+ if (params.loop) {
+ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
+ } else {
+ swiper.slideTo(newActiveIndex, 0, false);
+ }
+ }
+
+ function removeSlide (slidesIndexes) {
+ var swiper = this;
+ var params = swiper.params;
+ var $wrapperEl = swiper.$wrapperEl;
+ var activeIndex = swiper.activeIndex;
+
+ var activeIndexBuffer = activeIndex;
+ if (params.loop) {
+ activeIndexBuffer -= swiper.loopedSlides;
+ swiper.loopDestroy();
+ swiper.slides = $wrapperEl.children(("." + (params.slideClass)));
+ }
+ var newActiveIndex = activeIndexBuffer;
+ var indexToRemove;
+
+ if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
+ for (var i = 0; i < slidesIndexes.length; i += 1) {
+ indexToRemove = slidesIndexes[i];
+ if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
+ if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
+ }
+ newActiveIndex = Math.max(newActiveIndex, 0);
+ } else {
+ indexToRemove = slidesIndexes;
+ if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); }
+ if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; }
+ newActiveIndex = Math.max(newActiveIndex, 0);
+ }
+
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+
+ if (!(params.observer && Support.observer)) {
+ swiper.update();
+ }
+ if (params.loop) {
+ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
+ } else {
+ swiper.slideTo(newActiveIndex, 0, false);
+ }
+ }
+
+ function removeAllSlides () {
+ var swiper = this;
+
+ var slidesIndexes = [];
+ for (var i = 0; i < swiper.slides.length; i += 1) {
+ slidesIndexes.push(i);
+ }
+ swiper.removeSlide(slidesIndexes);
+ }
+
+ var manipulation = {
+ appendSlide: appendSlide,
+ prependSlide: prependSlide,
+ addSlide: addSlide,
+ removeSlide: removeSlide,
+ removeAllSlides: removeAllSlides,
+ };
+
+ var Device = (function Device() {
+ var ua = win.navigator.userAgent;
+
+ var device = {
+ ios: false,
+ android: false,
+ androidChrome: false,
+ desktop: false,
+ windows: false,
+ iphone: false,
+ ipod: false,
+ ipad: false,
+ cordova: win.cordova || win.phonegap,
+ phonegap: win.cordova || win.phonegap,
+ };
+
+ var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line
+ var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
+ var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
+ var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
+ var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
+
+
+ // Windows
+ if (windows) {
+ device.os = 'windows';
+ device.osVersion = windows[2];
+ device.windows = true;
+ }
+ // Android
+ if (android && !windows) {
+ device.os = 'android';
+ device.osVersion = android[2];
+ device.android = true;
+ device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
+ }
+ if (ipad || iphone || ipod) {
+ device.os = 'ios';
+ device.ios = true;
+ }
+ // iOS
+ if (iphone && !ipod) {
+ device.osVersion = iphone[2].replace(/_/g, '.');
+ device.iphone = true;
+ }
+ if (ipad) {
+ device.osVersion = ipad[2].replace(/_/g, '.');
+ device.ipad = true;
+ }
+ if (ipod) {
+ device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
+ device.iphone = true;
+ }
+ // iOS 8+ changed UA
+ if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
+ if (device.osVersion.split('.')[0] === '10') {
+ device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
+ }
+ }
+
+ // Desktop
+ device.desktop = !(device.os || device.android || device.webView);
+
+ // Webview
+ device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
+
+ // Minimal UI
+ if (device.os && device.os === 'ios') {
+ var osVersionArr = device.osVersion.split('.');
+ var metaViewport = doc.querySelector('meta[name="viewport"]');
+ device.minimalUi = !device.webView
+ && (ipod || iphone)
+ && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)
+ && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;
+ }
+
+ // Pixel Ratio
+ device.pixelRatio = win.devicePixelRatio || 1;
+
+ // Export object
+ return device;
+ }());
+
+ function onTouchStart (event) {
+ var swiper = this;
+ var data = swiper.touchEventsData;
+ var params = swiper.params;
+ var touches = swiper.touches;
+ if (swiper.animating && params.preventInteractionOnTransition) {
+ return;
+ }
+ var e = event;
+ if (e.originalEvent) { e = e.originalEvent; }
+ data.isTouchEvent = e.type === 'touchstart';
+ if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; }
+ if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; }
+ if (data.isTouched && data.isMoved) { return; }
+ if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) {
+ swiper.allowClick = true;
+ return;
+ }
+ if (params.swipeHandler) {
+ if (!$(e).closest(params.swipeHandler)[0]) { return; }
+ }
+
+ touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ var startX = touches.currentX;
+ var startY = touches.currentY;
+
+ // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore
+
+ var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
+ var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
+ if (
+ edgeSwipeDetection
+ && ((startX <= edgeSwipeThreshold)
+ || (startX >= win.screen.width - edgeSwipeThreshold))
+ ) {
+ return;
+ }
+
+ Utils.extend(data, {
+ isTouched: true,
+ isMoved: false,
+ allowTouchCallbacks: true,
+ isScrolling: undefined,
+ startMoving: undefined,
+ });
+
+ touches.startX = startX;
+ touches.startY = startY;
+ data.touchStartTime = Utils.now();
+ swiper.allowClick = true;
+ swiper.updateSize();
+ swiper.swipeDirection = undefined;
+ if (params.threshold > 0) { data.allowThresholdMove = false; }
+ if (e.type !== 'touchstart') {
+ var preventDefault = true;
+ if ($(e.target).is(data.formElements)) { preventDefault = false; }
+ if (
+ doc.activeElement
+ && $(doc.activeElement).is(data.formElements)
+ && doc.activeElement !== e.target
+ ) {
+ doc.activeElement.blur();
+ }
+
+ var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
+ if (params.touchStartForcePreventDefault || shouldPreventDefault) {
+ e.preventDefault();
+ }
+ }
+ swiper.emit('touchStart', e);
+ }
+
+ function onTouchMove (event) {
+ var swiper = this;
+ var data = swiper.touchEventsData;
+ var params = swiper.params;
+ var touches = swiper.touches;
+ var rtl = swiper.rtlTranslate;
+ var e = event;
+ if (e.originalEvent) { e = e.originalEvent; }
+ if (!data.isTouched) {
+ if (data.startMoving && data.isScrolling) {
+ swiper.emit('touchMoveOpposite', e);
+ }
+ return;
+ }
+ if (data.isTouchEvent && e.type === 'mousemove') { return; }
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ if (e.preventedByNestedSwiper) {
+ touches.startX = pageX;
+ touches.startY = pageY;
+ return;
+ }
+ if (!swiper.allowTouchMove) {
+ // isMoved = true;
+ swiper.allowClick = false;
+ if (data.isTouched) {
+ Utils.extend(touches, {
+ startX: pageX,
+ startY: pageY,
+ currentX: pageX,
+ currentY: pageY,
+ });
+ data.touchStartTime = Utils.now();
+ }
+ return;
+ }
+ if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
+ if (swiper.isVertical()) {
+ // Vertical
+ if (
+ (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())
+ || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())
+ ) {
+ data.isTouched = false;
+ data.isMoved = false;
+ return;
+ }
+ } else if (
+ (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())
+ || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())
+ ) {
+ return;
+ }
+ }
+ if (data.isTouchEvent && doc.activeElement) {
+ if (e.target === doc.activeElement && $(e.target).is(data.formElements)) {
+ data.isMoved = true;
+ swiper.allowClick = false;
+ return;
+ }
+ }
+ if (data.allowTouchCallbacks) {
+ swiper.emit('touchMove', e);
+ }
+ if (e.targetTouches && e.targetTouches.length > 1) { return; }
+
+ touches.currentX = pageX;
+ touches.currentY = pageY;
+
+ var diffX = touches.currentX - touches.startX;
+ var diffY = touches.currentY - touches.startY;
+ if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }
+
+ if (typeof data.isScrolling === 'undefined') {
+ var touchAngle;
+ if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {
+ data.isScrolling = false;
+ } else {
+ // eslint-disable-next-line
+ if ((diffX * diffX) + (diffY * diffY) >= 25) {
+ touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;
+ data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);
+ }
+ }
+ }
+ if (data.isScrolling) {
+ swiper.emit('touchMoveOpposite', e);
+ }
+ if (typeof data.startMoving === 'undefined') {
+ if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
+ data.startMoving = true;
+ }
+ }
+ if (data.isScrolling) {
+ data.isTouched = false;
+ return;
+ }
+ if (!data.startMoving) {
+ return;
+ }
+ swiper.allowClick = false;
+ e.preventDefault();
+ if (params.touchMoveStopPropagation && !params.nested) {
+ e.stopPropagation();
+ }
+
+ if (!data.isMoved) {
+ if (params.loop) {
+ swiper.loopFix();
+ }
+ data.startTranslate = swiper.getTranslate();
+ swiper.setTransition(0);
+ if (swiper.animating) {
+ swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
+ }
+ data.allowMomentumBounce = false;
+ // Grab Cursor
+ if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
+ swiper.setGrabCursor(true);
+ }
+ swiper.emit('sliderFirstMove', e);
+ }
+ swiper.emit('sliderMove', e);
+ data.isMoved = true;
+
+ var diff = swiper.isHorizontal() ? diffX : diffY;
+ touches.diff = diff;
+
+ diff *= params.touchRatio;
+ if (rtl) { diff = -diff; }
+
+ swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
+ data.currentTranslate = diff + data.startTranslate;
+
+ var disableParentSwiper = true;
+ var resistanceRatio = params.resistanceRatio;
+ if (params.touchReleaseOnEdges) {
+ resistanceRatio = 0;
+ }
+ if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {
+ disableParentSwiper = false;
+ if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); }
+ } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
+ disableParentSwiper = false;
+ if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); }
+ }
+
+ if (disableParentSwiper) {
+ e.preventedByNestedSwiper = true;
+ }
+
+ // Directions locks
+ if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
+ data.currentTranslate = data.startTranslate;
+ }
+ if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
+ data.currentTranslate = data.startTranslate;
+ }
+
+
+ // Threshold
+ if (params.threshold > 0) {
+ if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
+ if (!data.allowThresholdMove) {
+ data.allowThresholdMove = true;
+ touches.startX = touches.currentX;
+ touches.startY = touches.currentY;
+ data.currentTranslate = data.startTranslate;
+ touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
+ return;
+ }
+ } else {
+ data.currentTranslate = data.startTranslate;
+ return;
+ }
+ }
+
+ if (!params.followFinger) { return; }
+
+ // Update active index in free mode
+ if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ if (params.freeMode) {
+ // Velocity
+ if (data.velocities.length === 0) {
+ data.velocities.push({
+ position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
+ time: data.touchStartTime,
+ });
+ }
+ data.velocities.push({
+ position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
+ time: Utils.now(),
+ });
+ }
+ // Update progress
+ swiper.updateProgress(data.currentTranslate);
+ // Update translate
+ swiper.setTranslate(data.currentTranslate);
+ }
+
+ function onTouchEnd (event) {
+ var swiper = this;
+ var data = swiper.touchEventsData;
+
+ var params = swiper.params;
+ var touches = swiper.touches;
+ var rtl = swiper.rtlTranslate;
+ var $wrapperEl = swiper.$wrapperEl;
+ var slidesGrid = swiper.slidesGrid;
+ var snapGrid = swiper.snapGrid;
+ var e = event;
+ if (e.originalEvent) { e = e.originalEvent; }
+ if (data.allowTouchCallbacks) {
+ swiper.emit('touchEnd', e);
+ }
+ data.allowTouchCallbacks = false;
+ if (!data.isTouched) {
+ if (data.isMoved && params.grabCursor) {
+ swiper.setGrabCursor(false);
+ }
+ data.isMoved = false;
+ data.startMoving = false;
+ return;
+ }
+ // Return Grab Cursor
+ if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
+ swiper.setGrabCursor(false);
+ }
+
+ // Time diff
+ var touchEndTime = Utils.now();
+ var timeDiff = touchEndTime - data.touchStartTime;
+
+ // Tap, doubleTap, Click
+ if (swiper.allowClick) {
+ swiper.updateClickedSlide(e);
+ swiper.emit('tap', e);
+ if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {
+ if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
+ data.clickTimeout = Utils.nextTick(function () {
+ if (!swiper || swiper.destroyed) { return; }
+ swiper.emit('click', e);
+ }, 300);
+ }
+ if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {
+ if (data.clickTimeout) { clearTimeout(data.clickTimeout); }
+ swiper.emit('doubleTap', e);
+ }
+ }
+
+ data.lastClickTime = Utils.now();
+ Utils.nextTick(function () {
+ if (!swiper.destroyed) { swiper.allowClick = true; }
+ });
+
+ if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
+ data.isTouched = false;
+ data.isMoved = false;
+ data.startMoving = false;
+ return;
+ }
+ data.isTouched = false;
+ data.isMoved = false;
+ data.startMoving = false;
+
+ var currentPos;
+ if (params.followFinger) {
+ currentPos = rtl ? swiper.translate : -swiper.translate;
+ } else {
+ currentPos = -data.currentTranslate;
+ }
+
+ if (params.freeMode) {
+ if (currentPos < -swiper.minTranslate()) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ if (currentPos > -swiper.maxTranslate()) {
+ if (swiper.slides.length < snapGrid.length) {
+ swiper.slideTo(snapGrid.length - 1);
+ } else {
+ swiper.slideTo(swiper.slides.length - 1);
+ }
+ return;
+ }
+
+ if (params.freeModeMomentum) {
+ if (data.velocities.length > 1) {
+ var lastMoveEvent = data.velocities.pop();
+ var velocityEvent = data.velocities.pop();
+
+ var distance = lastMoveEvent.position - velocityEvent.position;
+ var time = lastMoveEvent.time - velocityEvent.time;
+ swiper.velocity = distance / time;
+ swiper.velocity /= 2;
+ if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
+ swiper.velocity = 0;
+ }
+ // this implies that the user stopped moving a finger then released.
+ // There would be no events with distance zero, so the last event is stale.
+ if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {
+ swiper.velocity = 0;
+ }
+ } else {
+ swiper.velocity = 0;
+ }
+ swiper.velocity *= params.freeModeMomentumVelocityRatio;
+
+ data.velocities.length = 0;
+ var momentumDuration = 1000 * params.freeModeMomentumRatio;
+ var momentumDistance = swiper.velocity * momentumDuration;
+
+ var newPosition = swiper.translate + momentumDistance;
+ if (rtl) { newPosition = -newPosition; }
+
+ var doBounce = false;
+ var afterBouncePosition;
+ var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
+ var needsLoopFix;
+ if (newPosition < swiper.maxTranslate()) {
+ if (params.freeModeMomentumBounce) {
+ if (newPosition + swiper.maxTranslate() < -bounceAmount) {
+ newPosition = swiper.maxTranslate() - bounceAmount;
+ }
+ afterBouncePosition = swiper.maxTranslate();
+ doBounce = true;
+ data.allowMomentumBounce = true;
+ } else {
+ newPosition = swiper.maxTranslate();
+ }
+ if (params.loop && params.centeredSlides) { needsLoopFix = true; }
+ } else if (newPosition > swiper.minTranslate()) {
+ if (params.freeModeMomentumBounce) {
+ if (newPosition - swiper.minTranslate() > bounceAmount) {
+ newPosition = swiper.minTranslate() + bounceAmount;
+ }
+ afterBouncePosition = swiper.minTranslate();
+ doBounce = true;
+ data.allowMomentumBounce = true;
+ } else {
+ newPosition = swiper.minTranslate();
+ }
+ if (params.loop && params.centeredSlides) { needsLoopFix = true; }
+ } else if (params.freeModeSticky) {
+ var nextSlide;
+ for (var j = 0; j < snapGrid.length; j += 1) {
+ if (snapGrid[j] > -newPosition) {
+ nextSlide = j;
+ break;
+ }
+ }
+
+ if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
+ newPosition = snapGrid[nextSlide];
+ } else {
+ newPosition = snapGrid[nextSlide - 1];
+ }
+ newPosition = -newPosition;
+ }
+ if (needsLoopFix) {
+ swiper.once('transitionEnd', function () {
+ swiper.loopFix();
+ });
+ }
+ // Fix duration
+ if (swiper.velocity !== 0) {
+ if (rtl) {
+ momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
+ } else {
+ momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
+ }
+ } else if (params.freeModeSticky) {
+ swiper.slideToClosest();
+ return;
+ }
+
+ if (params.freeModeMomentumBounce && doBounce) {
+ swiper.updateProgress(afterBouncePosition);
+ swiper.setTransition(momentumDuration);
+ swiper.setTranslate(newPosition);
+ swiper.transitionStart(true, swiper.swipeDirection);
+ swiper.animating = true;
+ $wrapperEl.transitionEnd(function () {
+ if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; }
+ swiper.emit('momentumBounce');
+
+ swiper.setTransition(params.speed);
+ swiper.setTranslate(afterBouncePosition);
+ $wrapperEl.transitionEnd(function () {
+ if (!swiper || swiper.destroyed) { return; }
+ swiper.transitionEnd();
+ });
+ });
+ } else if (swiper.velocity) {
+ swiper.updateProgress(newPosition);
+ swiper.setTransition(momentumDuration);
+ swiper.setTranslate(newPosition);
+ swiper.transitionStart(true, swiper.swipeDirection);
+ if (!swiper.animating) {
+ swiper.animating = true;
+ $wrapperEl.transitionEnd(function () {
+ if (!swiper || swiper.destroyed) { return; }
+ swiper.transitionEnd();
+ });
+ }
+ } else {
+ swiper.updateProgress(newPosition);
+ }
+
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ } else if (params.freeModeSticky) {
+ swiper.slideToClosest();
+ return;
+ }
+
+ if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
+ swiper.updateProgress();
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ return;
+ }
+
+ // Find current slide
+ var stopIndex = 0;
+ var groupSize = swiper.slidesSizesGrid[0];
+ for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {
+ if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {
+ if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {
+ stopIndex = i;
+ groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];
+ }
+ } else if (currentPos >= slidesGrid[i]) {
+ stopIndex = i;
+ groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
+ }
+ }
+
+ // Find current slide size
+ var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
+
+ if (timeDiff > params.longSwipesMs) {
+ // Long touches
+ if (!params.longSwipes) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ if (swiper.swipeDirection === 'next') {
+ if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
+ else { swiper.slideTo(stopIndex); }
+ }
+ if (swiper.swipeDirection === 'prev') {
+ if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }
+ else { swiper.slideTo(stopIndex); }
+ }
+ } else {
+ // Short swipes
+ if (!params.shortSwipes) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ if (swiper.swipeDirection === 'next') {
+ swiper.slideTo(stopIndex + params.slidesPerGroup);
+ }
+ if (swiper.swipeDirection === 'prev') {
+ swiper.slideTo(stopIndex);
+ }
+ }
+ }
+
+ function onResize () {
+ var swiper = this;
+
+ var params = swiper.params;
+ var el = swiper.el;
+
+ if (el && el.offsetWidth === 0) { return; }
+
+ // Breakpoints
+ if (params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+
+ // Save locks
+ var allowSlideNext = swiper.allowSlideNext;
+ var allowSlidePrev = swiper.allowSlidePrev;
+ var snapGrid = swiper.snapGrid;
+
+ // Disable locks on resize
+ swiper.allowSlideNext = true;
+ swiper.allowSlidePrev = true;
+
+ swiper.updateSize();
+ swiper.updateSlides();
+
+ if (params.freeMode) {
+ var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());
+ swiper.setTranslate(newTranslate);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ } else {
+ swiper.updateSlidesClasses();
+ if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
+ swiper.slideTo(swiper.slides.length - 1, 0, false, true);
+ } else {
+ swiper.slideTo(swiper.activeIndex, 0, false, true);
+ }
+ }
+ // Return locks after resize
+ swiper.allowSlidePrev = allowSlidePrev;
+ swiper.allowSlideNext = allowSlideNext;
+
+ if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
+ swiper.checkOverflow();
+ }
+ }
+
+ function onClick (e) {
+ var swiper = this;
+ if (!swiper.allowClick) {
+ if (swiper.params.preventClicks) { e.preventDefault(); }
+ if (swiper.params.preventClicksPropagation && swiper.animating) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ }
+ }
+ }
+
+ function attachEvents() {
+ var swiper = this;
+ var params = swiper.params;
+ var touchEvents = swiper.touchEvents;
+ var el = swiper.el;
+ var wrapperEl = swiper.wrapperEl;
+
+ {
+ swiper.onTouchStart = onTouchStart.bind(swiper);
+ swiper.onTouchMove = onTouchMove.bind(swiper);
+ swiper.onTouchEnd = onTouchEnd.bind(swiper);
+ }
+
+ swiper.onClick = onClick.bind(swiper);
+
+ var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
+ var capture = !!params.nested;
+
+ // Touch Events
+ {
+ if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
+ target.addEventListener(touchEvents.start, swiper.onTouchStart, false);
+ doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
+ doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
+ } else {
+ if (Support.touch) {
+ var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
+ target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
+ target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);
+ target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
+ }
+ if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
+ target.addEventListener('mousedown', swiper.onTouchStart, false);
+ doc.addEventListener('mousemove', swiper.onTouchMove, capture);
+ doc.addEventListener('mouseup', swiper.onTouchEnd, false);
+ }
+ }
+ // Prevent Links Clicks
+ if (params.preventClicks || params.preventClicksPropagation) {
+ target.addEventListener('click', swiper.onClick, true);
+ }
+ }
+
+ // Resize handler
+ swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);
+ }
+
+ function detachEvents() {
+ var swiper = this;
+
+ var params = swiper.params;
+ var touchEvents = swiper.touchEvents;
+ var el = swiper.el;
+ var wrapperEl = swiper.wrapperEl;
+
+ var target = params.touchEventsTarget === 'container' ? el : wrapperEl;
+ var capture = !!params.nested;
+
+ // Touch Events
+ {
+ if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {
+ target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
+ doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
+ doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
+ } else {
+ if (Support.touch) {
+ var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
+ target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
+ target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
+ target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
+ }
+ if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {
+ target.removeEventListener('mousedown', swiper.onTouchStart, false);
+ doc.removeEventListener('mousemove', swiper.onTouchMove, capture);
+ doc.removeEventListener('mouseup', swiper.onTouchEnd, false);
+ }
+ }
+ // Prevent Links Clicks
+ if (params.preventClicks || params.preventClicksPropagation) {
+ target.removeEventListener('click', swiper.onClick, true);
+ }
+ }
+
+ // Resize handler
+ swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);
+ }
+
+ var events = {
+ attachEvents: attachEvents,
+ detachEvents: detachEvents,
+ };
+
+ function setBreakpoint () {
+ var swiper = this;
+ var activeIndex = swiper.activeIndex;
+ var initialized = swiper.initialized;
+ var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;
+ var params = swiper.params;
+ var breakpoints = params.breakpoints;
+ if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }
+
+ // Set breakpoint for window width and update parameters
+ var breakpoint = swiper.getBreakpoint(breakpoints);
+
+ if (breakpoint && swiper.currentBreakpoint !== breakpoint) {
+ var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
+ if (breakpointOnlyParams) {
+ ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {
+ var paramValue = breakpointOnlyParams[param];
+ if (typeof paramValue === 'undefined') { return; }
+ if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
+ breakpointOnlyParams[param] = 'auto';
+ } else if (param === 'slidesPerView') {
+ breakpointOnlyParams[param] = parseFloat(paramValue);
+ } else {
+ breakpointOnlyParams[param] = parseInt(paramValue, 10);
+ }
+ });
+ }
+
+ var breakpointParams = breakpointOnlyParams || swiper.originalParams;
+ var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
+ var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
+
+ if (directionChanged && initialized) {
+ swiper.changeDirection();
+ }
+
+ Utils.extend(swiper.params, breakpointParams);
+
+ Utils.extend(swiper, {
+ allowTouchMove: swiper.params.allowTouchMove,
+ allowSlideNext: swiper.params.allowSlideNext,
+ allowSlidePrev: swiper.params.allowSlidePrev,
+ });
+
+ swiper.currentBreakpoint = breakpoint;
+
+ if (needsReLoop && initialized) {
+ swiper.loopDestroy();
+ swiper.loopCreate();
+ swiper.updateSlides();
+ swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);
+ }
+
+ swiper.emit('breakpoint', breakpointParams);
+ }
+ }
+
+ function getBreakpoint (breakpoints) {
+ var swiper = this;
+ // Get breakpoint for window width
+ if (!breakpoints) { return undefined; }
+ var breakpoint = false;
+ var points = [];
+ Object.keys(breakpoints).forEach(function (point) {
+ points.push(point);
+ });
+ points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });
+ for (var i = 0; i < points.length; i += 1) {
+ var point = points[i];
+ if (swiper.params.breakpointsInverse) {
+ if (point <= win.innerWidth) {
+ breakpoint = point;
+ }
+ } else if (point >= win.innerWidth && !breakpoint) {
+ breakpoint = point;
+ }
+ }
+ return breakpoint || 'max';
+ }
+
+ var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };
+
+ function addClasses () {
+ var swiper = this;
+ var classNames = swiper.classNames;
+ var params = swiper.params;
+ var rtl = swiper.rtl;
+ var $el = swiper.$el;
+ var suffixes = [];
+
+ suffixes.push('initialized');
+ suffixes.push(params.direction);
+
+ if (params.freeMode) {
+ suffixes.push('free-mode');
+ }
+ if (!Support.flexbox) {
+ suffixes.push('no-flexbox');
+ }
+ if (params.autoHeight) {
+ suffixes.push('autoheight');
+ }
+ if (rtl) {
+ suffixes.push('rtl');
+ }
+ if (params.slidesPerColumn > 1) {
+ suffixes.push('multirow');
+ }
+ if (Device.android) {
+ suffixes.push('android');
+ }
+ if (Device.ios) {
+ suffixes.push('ios');
+ }
+ // WP8 Touch Events Fix
+ if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
+ suffixes.push(("wp8-" + (params.direction)));
+ }
+
+ suffixes.forEach(function (suffix) {
+ classNames.push(params.containerModifierClass + suffix);
+ });
+
+ $el.addClass(classNames.join(' '));
+ }
+
+ function removeClasses () {
+ var swiper = this;
+ var $el = swiper.$el;
+ var classNames = swiper.classNames;
+
+ $el.removeClass(classNames.join(' '));
+ }
+
+ var classes = { addClasses: addClasses, removeClasses: removeClasses };
+
+ function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {
+ var image;
+ function onReady() {
+ if (callback) { callback(); }
+ }
+ if (!imageEl.complete || !checkForComplete) {
+ if (src) {
+ image = new win.Image();
+ image.onload = onReady;
+ image.onerror = onReady;
+ if (sizes) {
+ image.sizes = sizes;
+ }
+ if (srcset) {
+ image.srcset = srcset;
+ }
+ if (src) {
+ image.src = src;
+ }
+ } else {
+ onReady();
+ }
+ } else {
+ // image already loaded...
+ onReady();
+ }
+ }
+
+ function preloadImages () {
+ var swiper = this;
+ swiper.imagesToLoad = swiper.$el.find('img');
+ function onReady() {
+ if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; }
+ if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; }
+ if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
+ if (swiper.params.updateOnImagesReady) { swiper.update(); }
+ swiper.emit('imagesReady');
+ }
+ }
+ for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
+ var imageEl = swiper.imagesToLoad[i];
+ swiper.loadImage(
+ imageEl,
+ imageEl.currentSrc || imageEl.getAttribute('src'),
+ imageEl.srcset || imageEl.getAttribute('srcset'),
+ imageEl.sizes || imageEl.getAttribute('sizes'),
+ true,
+ onReady
+ );
+ }
+ }
+
+ var images = {
+ loadImage: loadImage,
+ preloadImages: preloadImages,
+ };
+
+ function checkOverflow() {
+ var swiper = this;
+ var wasLocked = swiper.isLocked;
+
+ swiper.isLocked = swiper.snapGrid.length === 1;
+ swiper.allowSlideNext = !swiper.isLocked;
+ swiper.allowSlidePrev = !swiper.isLocked;
+
+ // events
+ if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); }
+
+ if (wasLocked && wasLocked !== swiper.isLocked) {
+ swiper.isEnd = false;
+ swiper.navigation.update();
+ }
+ }
+
+ var checkOverflow$1 = { checkOverflow: checkOverflow };
+
+ var defaults = {
+ init: true,
+ direction: 'horizontal',
+ touchEventsTarget: 'container',
+ initialSlide: 0,
+ speed: 300,
+ //
+ preventInteractionOnTransition: false,
+
+ // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).
+ edgeSwipeDetection: false,
+ edgeSwipeThreshold: 20,
+
+ // Free mode
+ freeMode: false,
+ freeModeMomentum: true,
+ freeModeMomentumRatio: 1,
+ freeModeMomentumBounce: true,
+ freeModeMomentumBounceRatio: 1,
+ freeModeMomentumVelocityRatio: 1,
+ freeModeSticky: false,
+ freeModeMinimumVelocity: 0.02,
+
+ // Autoheight
+ autoHeight: false,
+
+ // Set wrapper width
+ setWrapperSize: false,
+
+ // Virtual Translate
+ virtualTranslate: false,
+
+ // Effects
+ effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
+
+ // Breakpoints
+ breakpoints: undefined,
+ breakpointsInverse: false,
+
+ // Slides grid
+ spaceBetween: 0,
+ slidesPerView: 1,
+ slidesPerColumn: 1,
+ slidesPerColumnFill: 'column',
+ slidesPerGroup: 1,
+ centeredSlides: false,
+ slidesOffsetBefore: 0, // in px
+ slidesOffsetAfter: 0, // in px
+ normalizeSlideIndex: true,
+ centerInsufficientSlides: false,
+
+ // Disable swiper and hide navigation when container not overflow
+ watchOverflow: false,
+
+ // Round length
+ roundLengths: false,
+
+ // Touches
+ touchRatio: 1,
+ touchAngle: 45,
+ simulateTouch: true,
+ shortSwipes: true,
+ longSwipes: true,
+ longSwipesRatio: 0.5,
+ longSwipesMs: 300,
+ followFinger: true,
+ allowTouchMove: true,
+ threshold: 0,
+ touchMoveStopPropagation: true,
+ touchStartPreventDefault: true,
+ touchStartForcePreventDefault: false,
+ touchReleaseOnEdges: false,
+
+ // Unique Navigation Elements
+ uniqueNavElements: true,
+
+ // Resistance
+ resistance: true,
+ resistanceRatio: 0.85,
+
+ // Progress
+ watchSlidesProgress: false,
+ watchSlidesVisibility: false,
+
+ // Cursor
+ grabCursor: false,
+
+ // Clicks
+ preventClicks: true,
+ preventClicksPropagation: true,
+ slideToClickedSlide: false,
+
+ // Images
+ preloadImages: true,
+ updateOnImagesReady: true,
+
+ // loop
+ loop: false,
+ loopAdditionalSlides: 0,
+ loopedSlides: null,
+ loopFillGroupWithBlank: false,
+
+ // Swiping/no swiping
+ allowSlidePrev: true,
+ allowSlideNext: true,
+ swipeHandler: null, // '.swipe-handler',
+ noSwiping: true,
+ noSwipingClass: 'swiper-no-swiping',
+ noSwipingSelector: null,
+
+ // Passive Listeners
+ passiveListeners: true,
+
+ // NS
+ containerModifierClass: 'swiper-container-', // NEW
+ slideClass: 'swiper-slide',
+ slideBlankClass: 'swiper-slide-invisible-blank',
+ slideActiveClass: 'swiper-slide-active',
+ slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
+ slideVisibleClass: 'swiper-slide-visible',
+ slideDuplicateClass: 'swiper-slide-duplicate',
+ slideNextClass: 'swiper-slide-next',
+ slideDuplicateNextClass: 'swiper-slide-duplicate-next',
+ slidePrevClass: 'swiper-slide-prev',
+ slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
+ wrapperClass: 'swiper-wrapper',
+
+ // Callbacks
+ runCallbacksOnInit: true,
+ };
+
+ /* eslint no-param-reassign: "off" */
+
+ var prototypes = {
+ update: update,
+ translate: translate,
+ transition: transition$1,
+ slide: slide,
+ loop: loop,
+ grabCursor: grabCursor,
+ manipulation: manipulation,
+ events: events,
+ breakpoints: breakpoints,
+ checkOverflow: checkOverflow$1,
+ classes: classes,
+ images: images,
+ };
+
+ var extendedDefaults = {};
+
+ var Swiper = /*@__PURE__*/(function (SwiperClass) {
+ function Swiper() {
+ var assign;
+
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+ var el;
+ var params;
+ if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
+ params = args[0];
+ } else {
+ (assign = args, el = assign[0], params = assign[1]);
+ }
+ if (!params) { params = {}; }
+
+ params = Utils.extend({}, params);
+ if (el && !params.el) { params.el = el; }
+
+ SwiperClass.call(this, params);
+
+ Object.keys(prototypes).forEach(function (prototypeGroup) {
+ Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
+ if (!Swiper.prototype[protoMethod]) {
+ Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
+ }
+ });
+ });
+
+ // Swiper Instance
+ var swiper = this;
+ if (typeof swiper.modules === 'undefined') {
+ swiper.modules = {};
+ }
+ Object.keys(swiper.modules).forEach(function (moduleName) {
+ var module = swiper.modules[moduleName];
+ if (module.params) {
+ var moduleParamName = Object.keys(module.params)[0];
+ var moduleParams = module.params[moduleParamName];
+ if (typeof moduleParams !== 'object' || moduleParams === null) { return; }
+ if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; }
+ if (params[moduleParamName] === true) {
+ params[moduleParamName] = { enabled: true };
+ }
+ if (
+ typeof params[moduleParamName] === 'object'
+ && !('enabled' in params[moduleParamName])
+ ) {
+ params[moduleParamName].enabled = true;
+ }
+ if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; }
+ }
+ });
+
+ // Extend defaults with modules params
+ var swiperParams = Utils.extend({}, defaults);
+ swiper.useModulesParams(swiperParams);
+
+ // Extend defaults with passed params
+ swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);
+ swiper.originalParams = Utils.extend({}, swiper.params);
+ swiper.passedParams = Utils.extend({}, params);
+
+ // Save Dom lib
+ swiper.$ = $;
+
+ // Find el
+ var $el = $(swiper.params.el);
+ el = $el[0];
+
+ if (!el) {
+ return undefined;
+ }
+
+ if ($el.length > 1) {
+ var swipers = [];
+ $el.each(function (index, containerEl) {
+ var newParams = Utils.extend({}, params, { el: containerEl });
+ swipers.push(new Swiper(newParams));
+ });
+ return swipers;
+ }
+
+ el.swiper = swiper;
+ $el.data('swiper', swiper);
+
+ // Find Wrapper
+ var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass)));
+
+ // Extend Swiper
+ Utils.extend(swiper, {
+ $el: $el,
+ el: el,
+ $wrapperEl: $wrapperEl,
+ wrapperEl: $wrapperEl[0],
+
+ // Classes
+ classNames: [],
+
+ // Slides
+ slides: $(),
+ slidesGrid: [],
+ snapGrid: [],
+ slidesSizesGrid: [],
+
+ // isDirection
+ isHorizontal: function isHorizontal() {
+ return swiper.params.direction === 'horizontal';
+ },
+ isVertical: function isVertical() {
+ return swiper.params.direction === 'vertical';
+ },
+ // RTL
+ rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
+ rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
+ wrongRTL: $wrapperEl.css('display') === '-webkit-box',
+
+ // Indexes
+ activeIndex: 0,
+ realIndex: 0,
+
+ //
+ isBeginning: true,
+ isEnd: false,
+
+ // Props
+ translate: 0,
+ previousTranslate: 0,
+ progress: 0,
+ velocity: 0,
+ animating: false,
+
+ // Locks
+ allowSlideNext: swiper.params.allowSlideNext,
+ allowSlidePrev: swiper.params.allowSlidePrev,
+
+ // Touch Events
+ touchEvents: (function touchEvents() {
+ var touch = ['touchstart', 'touchmove', 'touchend'];
+ var desktop = ['mousedown', 'mousemove', 'mouseup'];
+ if (Support.pointerEvents) {
+ desktop = ['pointerdown', 'pointermove', 'pointerup'];
+ } else if (Support.prefixedPointerEvents) {
+ desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];
+ }
+ swiper.touchEventsTouch = {
+ start: touch[0],
+ move: touch[1],
+ end: touch[2],
+ };
+ swiper.touchEventsDesktop = {
+ start: desktop[0],
+ move: desktop[1],
+ end: desktop[2],
+ };
+ return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
+ }()),
+ touchEventsData: {
+ isTouched: undefined,
+ isMoved: undefined,
+ allowTouchCallbacks: undefined,
+ touchStartTime: undefined,
+ isScrolling: undefined,
+ currentTranslate: undefined,
+ startTranslate: undefined,
+ allowThresholdMove: undefined,
+ // Form elements to match
+ formElements: 'input, select, option, textarea, button, video',
+ // Last click time
+ lastClickTime: Utils.now(),
+ clickTimeout: undefined,
+ // Velocities
+ velocities: [],
+ allowMomentumBounce: undefined,
+ isTouchEvent: undefined,
+ startMoving: undefined,
+ },
+
+ // Clicks
+ allowClick: true,
+
+ // Touches
+ allowTouchMove: swiper.params.allowTouchMove,
+
+ touches: {
+ startX: 0,
+ startY: 0,
+ currentX: 0,
+ currentY: 0,
+ diff: 0,
+ },
+
+ // Images
+ imagesToLoad: [],
+ imagesLoaded: 0,
+
+ });
+
+ // Install Modules
+ swiper.useModules();
+
+ // Init
+ if (swiper.params.init) {
+ swiper.init();
+ }
+
+ // Return app instance
+ return swiper;
+ }
+
+ if ( SwiperClass ) Swiper.__proto__ = SwiperClass;
+ Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );
+ Swiper.prototype.constructor = Swiper;
+
+ var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };
+
+ Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {
+ var swiper = this;
+ var params = swiper.params;
+ var slides = swiper.slides;
+ var slidesGrid = swiper.slidesGrid;
+ var swiperSize = swiper.size;
+ var activeIndex = swiper.activeIndex;
+ var spv = 1;
+ if (params.centeredSlides) {
+ var slideSize = slides[activeIndex].swiperSlideSize;
+ var breakLoop;
+ for (var i = activeIndex + 1; i < slides.length; i += 1) {
+ if (slides[i] && !breakLoop) {
+ slideSize += slides[i].swiperSlideSize;
+ spv += 1;
+ if (slideSize > swiperSize) { breakLoop = true; }
+ }
+ }
+ for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {
+ if (slides[i$1] && !breakLoop) {
+ slideSize += slides[i$1].swiperSlideSize;
+ spv += 1;
+ if (slideSize > swiperSize) { breakLoop = true; }
+ }
+ }
+ } else {
+ for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {
+ if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {
+ spv += 1;
+ }
+ }
+ }
+ return spv;
+ };
+
+ Swiper.prototype.update = function update () {
+ var swiper = this;
+ if (!swiper || swiper.destroyed) { return; }
+ var snapGrid = swiper.snapGrid;
+ var params = swiper.params;
+ // Breakpoints
+ if (params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+ swiper.updateSize();
+ swiper.updateSlides();
+ swiper.updateProgress();
+ swiper.updateSlidesClasses();
+
+ function setTranslate() {
+ var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
+ var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
+ swiper.setTranslate(newTranslate);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ var translated;
+ if (swiper.params.freeMode) {
+ setTranslate();
+ if (swiper.params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ } else {
+ if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
+ translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
+ } else {
+ translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
+ }
+ if (!translated) {
+ setTranslate();
+ }
+ }
+ if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
+ swiper.checkOverflow();
+ }
+ swiper.emit('update');
+ };
+
+ Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {
+ if ( needUpdate === void 0 ) needUpdate = true;
+
+ var swiper = this;
+ var currentDirection = swiper.params.direction;
+ if (!newDirection) {
+ // eslint-disable-next-line
+ newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
+ }
+ if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {
+ return swiper;
+ }
+
+ if (currentDirection === 'vertical') {
+ swiper.$el
+ .removeClass(((swiper.params.containerModifierClass) + "vertical wp8-vertical"))
+ .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
+
+ if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
+ swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection));
+ }
+ }
+ if (currentDirection === 'horizontal') {
+ swiper.$el
+ .removeClass(((swiper.params.containerModifierClass) + "horizontal wp8-horizontal"))
+ .addClass(("" + (swiper.params.containerModifierClass) + newDirection));
+
+ if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {
+ swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection));
+ }
+ }
+
+ swiper.params.direction = newDirection;
+
+ swiper.slides.each(function (slideIndex, slideEl) {
+ if (newDirection === 'vertical') {
+ slideEl.style.width = '';
+ } else {
+ slideEl.style.height = '';
+ }
+ });
+
+ swiper.emit('changeDirection');
+ if (needUpdate) { swiper.update(); }
+
+ return swiper;
+ };
+
+ Swiper.prototype.init = function init () {
+ var swiper = this;
+ if (swiper.initialized) { return; }
+
+ swiper.emit('beforeInit');
+
+ // Set breakpoint
+ if (swiper.params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+
+ // Add Classes
+ swiper.addClasses();
+
+ // Create loop
+ if (swiper.params.loop) {
+ swiper.loopCreate();
+ }
+
+ // Update size
+ swiper.updateSize();
+
+ // Update slides
+ swiper.updateSlides();
+
+ if (swiper.params.watchOverflow) {
+ swiper.checkOverflow();
+ }
+
+ // Set Grab Cursor
+ if (swiper.params.grabCursor) {
+ swiper.setGrabCursor();
+ }
+
+ if (swiper.params.preloadImages) {
+ swiper.preloadImages();
+ }
+
+ // Slide To Initial Slide
+ if (swiper.params.loop) {
+ swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
+ } else {
+ swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
+ }
+
+ // Attach events
+ swiper.attachEvents();
+
+ // Init Flag
+ swiper.initialized = true;
+
+ // Emit
+ swiper.emit('init');
+ };
+
+ Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {
+ if ( deleteInstance === void 0 ) deleteInstance = true;
+ if ( cleanStyles === void 0 ) cleanStyles = true;
+
+ var swiper = this;
+ var params = swiper.params;
+ var $el = swiper.$el;
+ var $wrapperEl = swiper.$wrapperEl;
+ var slides = swiper.slides;
+
+ if (typeof swiper.params === 'undefined' || swiper.destroyed) {
+ return null;
+ }
+
+ swiper.emit('beforeDestroy');
+
+ // Init Flag
+ swiper.initialized = false;
+
+ // Detach events
+ swiper.detachEvents();
+
+ // Destroy loop
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+
+ // Cleanup styles
+ if (cleanStyles) {
+ swiper.removeClasses();
+ $el.removeAttr('style');
+ $wrapperEl.removeAttr('style');
+ if (slides && slides.length) {
+ slides
+ .removeClass([
+ params.slideVisibleClass,
+ params.slideActiveClass,
+ params.slideNextClass,
+ params.slidePrevClass ].join(' '))
+ .removeAttr('style')
+ .removeAttr('data-swiper-slide-index')
+ .removeAttr('data-swiper-column')
+ .removeAttr('data-swiper-row');
+ }
+ }
+
+ swiper.emit('destroy');
+
+ // Detach emitter events
+ Object.keys(swiper.eventsListeners).forEach(function (eventName) {
+ swiper.off(eventName);
+ });
+
+ if (deleteInstance !== false) {
+ swiper.$el[0].swiper = null;
+ swiper.$el.data('swiper', null);
+ Utils.deleteProps(swiper);
+ }
+ swiper.destroyed = true;
+
+ return null;
+ };
+
+ Swiper.extendDefaults = function extendDefaults (newDefaults) {
+ Utils.extend(extendedDefaults, newDefaults);
+ };
+
+ staticAccessors.extendedDefaults.get = function () {
+ return extendedDefaults;
+ };
+
+ staticAccessors.defaults.get = function () {
+ return defaults;
+ };
+
+ staticAccessors.Class.get = function () {
+ return SwiperClass;
+ };
+
+ staticAccessors.$.get = function () {
+ return $;
+ };
+
+ Object.defineProperties( Swiper, staticAccessors );
+
+ return Swiper;
+ }(SwiperClass));
+
+ var Device$1 = {
+ name: 'device',
+ proto: {
+ device: Device,
+ },
+ static: {
+ device: Device,
+ },
+ };
+
+ var Support$1 = {
+ name: 'support',
+ proto: {
+ support: Support,
+ },
+ static: {
+ support: Support,
+ },
+ };
+
+ var Browser$1 = {
+ name: 'browser',
+ proto: {
+ browser: Browser,
+ },
+ static: {
+ browser: Browser,
+ },
+ };
+
+ var Resize = {
+ name: 'resize',
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ resize: {
+ resizeHandler: function resizeHandler() {
+ if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
+ swiper.emit('beforeResize');
+ swiper.emit('resize');
+ },
+ orientationChangeHandler: function orientationChangeHandler() {
+ if (!swiper || swiper.destroyed || !swiper.initialized) { return; }
+ swiper.emit('orientationchange');
+ },
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ // Emit resize
+ win.addEventListener('resize', swiper.resize.resizeHandler);
+
+ // Emit orientationchange
+ win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ win.removeEventListener('resize', swiper.resize.resizeHandler);
+ win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
+ },
+ },
+ };
+
+ var Observer = {
+ func: win.MutationObserver || win.WebkitMutationObserver,
+ attach: function attach(target, options) {
+ if ( options === void 0 ) options = {};
+
+ var swiper = this;
+
+ var ObserverFunc = Observer.func;
+ var observer = new ObserverFunc(function (mutations) {
+ // The observerUpdate event should only be triggered
+ // once despite the number of mutations. Additional
+ // triggers are redundant and are very costly
+ if (mutations.length === 1) {
+ swiper.emit('observerUpdate', mutations[0]);
+ return;
+ }
+ var observerUpdate = function observerUpdate() {
+ swiper.emit('observerUpdate', mutations[0]);
+ };
+
+ if (win.requestAnimationFrame) {
+ win.requestAnimationFrame(observerUpdate);
+ } else {
+ win.setTimeout(observerUpdate, 0);
+ }
+ });
+
+ observer.observe(target, {
+ attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
+ childList: typeof options.childList === 'undefined' ? true : options.childList,
+ characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
+ });
+
+ swiper.observer.observers.push(observer);
+ },
+ init: function init() {
+ var swiper = this;
+ if (!Support.observer || !swiper.params.observer) { return; }
+ if (swiper.params.observeParents) {
+ var containerParents = swiper.$el.parents();
+ for (var i = 0; i < containerParents.length; i += 1) {
+ swiper.observer.attach(containerParents[i]);
+ }
+ }
+ // Observe container
+ swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });
+
+ // Observe wrapper
+ swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.observer.observers.forEach(function (observer) {
+ observer.disconnect();
+ });
+ swiper.observer.observers = [];
+ },
+ };
+
+ var Observer$1 = {
+ name: 'observer',
+ params: {
+ observer: false,
+ observeParents: false,
+ observeSlideChildren: false,
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ observer: {
+ init: Observer.init.bind(swiper),
+ attach: Observer.attach.bind(swiper),
+ destroy: Observer.destroy.bind(swiper),
+ observers: [],
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ swiper.observer.init();
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.observer.destroy();
+ },
+ },
+ };
+
+ var Virtual = {
+ update: function update(force) {
+ var swiper = this;
+ var ref = swiper.params;
+ var slidesPerView = ref.slidesPerView;
+ var slidesPerGroup = ref.slidesPerGroup;
+ var centeredSlides = ref.centeredSlides;
+ var ref$1 = swiper.params.virtual;
+ var addSlidesBefore = ref$1.addSlidesBefore;
+ var addSlidesAfter = ref$1.addSlidesAfter;
+ var ref$2 = swiper.virtual;
+ var previousFrom = ref$2.from;
+ var previousTo = ref$2.to;
+ var slides = ref$2.slides;
+ var previousSlidesGrid = ref$2.slidesGrid;
+ var renderSlide = ref$2.renderSlide;
+ var previousOffset = ref$2.offset;
+ swiper.updateActiveIndex();
+ var activeIndex = swiper.activeIndex || 0;
+
+ var offsetProp;
+ if (swiper.rtlTranslate) { offsetProp = 'right'; }
+ else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }
+
+ var slidesAfter;
+ var slidesBefore;
+ if (centeredSlides) {
+ slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
+ slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
+ } else {
+ slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;
+ slidesBefore = slidesPerGroup + addSlidesAfter;
+ }
+ var from = Math.max((activeIndex || 0) - slidesBefore, 0);
+ var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
+ var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
+
+ Utils.extend(swiper.virtual, {
+ from: from,
+ to: to,
+ offset: offset,
+ slidesGrid: swiper.slidesGrid,
+ });
+
+ function onRendered() {
+ swiper.updateSlides();
+ swiper.updateProgress();
+ swiper.updateSlidesClasses();
+ if (swiper.lazy && swiper.params.lazy.enabled) {
+ swiper.lazy.load();
+ }
+ }
+
+ if (previousFrom === from && previousTo === to && !force) {
+ if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
+ swiper.slides.css(offsetProp, (offset + "px"));
+ }
+ swiper.updateProgress();
+ return;
+ }
+ if (swiper.params.virtual.renderExternal) {
+ swiper.params.virtual.renderExternal.call(swiper, {
+ offset: offset,
+ from: from,
+ to: to,
+ slides: (function getSlides() {
+ var slidesToRender = [];
+ for (var i = from; i <= to; i += 1) {
+ slidesToRender.push(slides[i]);
+ }
+ return slidesToRender;
+ }()),
+ });
+ onRendered();
+ return;
+ }
+ var prependIndexes = [];
+ var appendIndexes = [];
+ if (force) {
+ swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove();
+ } else {
+ for (var i = previousFrom; i <= previousTo; i += 1) {
+ if (i < from || i > to) {
+ swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove();
+ }
+ }
+ }
+ for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {
+ if (i$1 >= from && i$1 <= to) {
+ if (typeof previousTo === 'undefined' || force) {
+ appendIndexes.push(i$1);
+ } else {
+ if (i$1 > previousTo) { appendIndexes.push(i$1); }
+ if (i$1 < previousFrom) { prependIndexes.push(i$1); }
+ }
+ }
+ }
+ appendIndexes.forEach(function (index) {
+ swiper.$wrapperEl.append(renderSlide(slides[index], index));
+ });
+ prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) {
+ swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
+ });
+ swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px"));
+ onRendered();
+ },
+ renderSlide: function renderSlide(slide, index) {
+ var swiper = this;
+ var params = swiper.params.virtual;
+ if (params.cache && swiper.virtual.cache[index]) {
+ return swiper.virtual.cache[index];
+ }
+ var $slideEl = params.renderSlide
+ ? $(params.renderSlide.call(swiper, slide, index))
+ : $(("" + slide + "
"));
+ if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); }
+ if (params.cache) { swiper.virtual.cache[index] = $slideEl; }
+ return $slideEl;
+ },
+ appendSlide: function appendSlide(slides) {
+ var swiper = this;
+ if (typeof slides === 'object' && 'length' in slides) {
+ for (var i = 0; i < slides.length; i += 1) {
+ if (slides[i]) { swiper.virtual.slides.push(slides[i]); }
+ }
+ } else {
+ swiper.virtual.slides.push(slides);
+ }
+ swiper.virtual.update(true);
+ },
+ prependSlide: function prependSlide(slides) {
+ var swiper = this;
+ var activeIndex = swiper.activeIndex;
+ var newActiveIndex = activeIndex + 1;
+ var numberOfNewSlides = 1;
+
+ if (Array.isArray(slides)) {
+ for (var i = 0; i < slides.length; i += 1) {
+ if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); }
+ }
+ newActiveIndex = activeIndex + slides.length;
+ numberOfNewSlides = slides.length;
+ } else {
+ swiper.virtual.slides.unshift(slides);
+ }
+ if (swiper.params.virtual.cache) {
+ var cache = swiper.virtual.cache;
+ var newCache = {};
+ Object.keys(cache).forEach(function (cachedIndex) {
+ newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];
+ });
+ swiper.virtual.cache = newCache;
+ }
+ swiper.virtual.update(true);
+ swiper.slideTo(newActiveIndex, 0);
+ },
+ removeSlide: function removeSlide(slidesIndexes) {
+ var swiper = this;
+ if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }
+ var activeIndex = swiper.activeIndex;
+ if (Array.isArray(slidesIndexes)) {
+ for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
+ swiper.virtual.slides.splice(slidesIndexes[i], 1);
+ if (swiper.params.virtual.cache) {
+ delete swiper.virtual.cache[slidesIndexes[i]];
+ }
+ if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; }
+ activeIndex = Math.max(activeIndex, 0);
+ }
+ } else {
+ swiper.virtual.slides.splice(slidesIndexes, 1);
+ if (swiper.params.virtual.cache) {
+ delete swiper.virtual.cache[slidesIndexes];
+ }
+ if (slidesIndexes < activeIndex) { activeIndex -= 1; }
+ activeIndex = Math.max(activeIndex, 0);
+ }
+ swiper.virtual.update(true);
+ swiper.slideTo(activeIndex, 0);
+ },
+ removeAllSlides: function removeAllSlides() {
+ var swiper = this;
+ swiper.virtual.slides = [];
+ if (swiper.params.virtual.cache) {
+ swiper.virtual.cache = {};
+ }
+ swiper.virtual.update(true);
+ swiper.slideTo(0, 0);
+ },
+ };
+
+ var Virtual$1 = {
+ name: 'virtual',
+ params: {
+ virtual: {
+ enabled: false,
+ slides: [],
+ cache: true,
+ renderSlide: null,
+ renderExternal: null,
+ addSlidesBefore: 0,
+ addSlidesAfter: 0,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ virtual: {
+ update: Virtual.update.bind(swiper),
+ appendSlide: Virtual.appendSlide.bind(swiper),
+ prependSlide: Virtual.prependSlide.bind(swiper),
+ removeSlide: Virtual.removeSlide.bind(swiper),
+ removeAllSlides: Virtual.removeAllSlides.bind(swiper),
+ renderSlide: Virtual.renderSlide.bind(swiper),
+ slides: swiper.params.virtual.slides,
+ cache: {},
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (!swiper.params.virtual.enabled) { return; }
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual"));
+ var overwriteParams = {
+ watchSlidesProgress: true,
+ };
+ Utils.extend(swiper.params, overwriteParams);
+ Utils.extend(swiper.originalParams, overwriteParams);
+
+ if (!swiper.params.initialSlide) {
+ swiper.virtual.update();
+ }
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (!swiper.params.virtual.enabled) { return; }
+ swiper.virtual.update();
+ },
+ },
+ };
+
+ var Keyboard = {
+ handle: function handle(event) {
+ var swiper = this;
+ var rtl = swiper.rtlTranslate;
+ var e = event;
+ if (e.originalEvent) { e = e.originalEvent; } // jquery fix
+ var kc = e.keyCode || e.charCode;
+ // Directions locks
+ if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {
+ return false;
+ }
+ if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {
+ return false;
+ }
+ if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
+ return undefined;
+ }
+ if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {
+ return undefined;
+ }
+ if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {
+ var inView = false;
+ // Check that swiper should be inside of visible area of window
+ if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) {
+ return undefined;
+ }
+ var windowWidth = win.innerWidth;
+ var windowHeight = win.innerHeight;
+ var swiperOffset = swiper.$el.offset();
+ if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }
+ var swiperCoord = [
+ [swiperOffset.left, swiperOffset.top],
+ [swiperOffset.left + swiper.width, swiperOffset.top],
+ [swiperOffset.left, swiperOffset.top + swiper.height],
+ [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ];
+ for (var i = 0; i < swiperCoord.length; i += 1) {
+ var point = swiperCoord[i];
+ if (
+ point[0] >= 0 && point[0] <= windowWidth
+ && point[1] >= 0 && point[1] <= windowHeight
+ ) {
+ inView = true;
+ }
+ }
+ if (!inView) { return undefined; }
+ }
+ if (swiper.isHorizontal()) {
+ if (kc === 37 || kc === 39) {
+ if (e.preventDefault) { e.preventDefault(); }
+ else { e.returnValue = false; }
+ }
+ if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); }
+ if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); }
+ } else {
+ if (kc === 38 || kc === 40) {
+ if (e.preventDefault) { e.preventDefault(); }
+ else { e.returnValue = false; }
+ }
+ if (kc === 40) { swiper.slideNext(); }
+ if (kc === 38) { swiper.slidePrev(); }
+ }
+ swiper.emit('keyPress', kc);
+ return undefined;
+ },
+ enable: function enable() {
+ var swiper = this;
+ if (swiper.keyboard.enabled) { return; }
+ $(doc).on('keydown', swiper.keyboard.handle);
+ swiper.keyboard.enabled = true;
+ },
+ disable: function disable() {
+ var swiper = this;
+ if (!swiper.keyboard.enabled) { return; }
+ $(doc).off('keydown', swiper.keyboard.handle);
+ swiper.keyboard.enabled = false;
+ },
+ };
+
+ var Keyboard$1 = {
+ name: 'keyboard',
+ params: {
+ keyboard: {
+ enabled: false,
+ onlyInViewport: true,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ keyboard: {
+ enabled: false,
+ enable: Keyboard.enable.bind(swiper),
+ disable: Keyboard.disable.bind(swiper),
+ handle: Keyboard.handle.bind(swiper),
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.keyboard.enabled) {
+ swiper.keyboard.enable();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.keyboard.enabled) {
+ swiper.keyboard.disable();
+ }
+ },
+ },
+ };
+
+ function isEventSupported() {
+ var eventName = 'onwheel';
+ var isSupported = eventName in doc;
+
+ if (!isSupported) {
+ var element = doc.createElement('div');
+ element.setAttribute(eventName, 'return;');
+ isSupported = typeof element[eventName] === 'function';
+ }
+
+ if (!isSupported
+ && doc.implementation
+ && doc.implementation.hasFeature
+ // always returns true in newer browsers as per the standard.
+ // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
+ && doc.implementation.hasFeature('', '') !== true
+ ) {
+ // This is the only way to test support for the `wheel` event in IE9+.
+ isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');
+ }
+
+ return isSupported;
+ }
+ var Mousewheel = {
+ lastScrollTime: Utils.now(),
+ event: (function getEvent() {
+ if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }
+ return isEventSupported() ? 'wheel' : 'mousewheel';
+ }()),
+ normalize: function normalize(e) {
+ // Reasonable defaults
+ var PIXEL_STEP = 10;
+ var LINE_HEIGHT = 40;
+ var PAGE_HEIGHT = 800;
+
+ var sX = 0;
+ var sY = 0; // spinX, spinY
+ var pX = 0;
+ var pY = 0; // pixelX, pixelY
+
+ // Legacy
+ if ('detail' in e) {
+ sY = e.detail;
+ }
+ if ('wheelDelta' in e) {
+ sY = -e.wheelDelta / 120;
+ }
+ if ('wheelDeltaY' in e) {
+ sY = -e.wheelDeltaY / 120;
+ }
+ if ('wheelDeltaX' in e) {
+ sX = -e.wheelDeltaX / 120;
+ }
+
+ // side scrolling on FF with DOMMouseScroll
+ if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
+ sX = sY;
+ sY = 0;
+ }
+
+ pX = sX * PIXEL_STEP;
+ pY = sY * PIXEL_STEP;
+
+ if ('deltaY' in e) {
+ pY = e.deltaY;
+ }
+ if ('deltaX' in e) {
+ pX = e.deltaX;
+ }
+
+ if ((pX || pY) && e.deltaMode) {
+ if (e.deltaMode === 1) { // delta in LINE units
+ pX *= LINE_HEIGHT;
+ pY *= LINE_HEIGHT;
+ } else { // delta in PAGE units
+ pX *= PAGE_HEIGHT;
+ pY *= PAGE_HEIGHT;
+ }
+ }
+
+ // Fall-back if spin cannot be determined
+ if (pX && !sX) {
+ sX = (pX < 1) ? -1 : 1;
+ }
+ if (pY && !sY) {
+ sY = (pY < 1) ? -1 : 1;
+ }
+
+ return {
+ spinX: sX,
+ spinY: sY,
+ pixelX: pX,
+ pixelY: pY,
+ };
+ },
+ handleMouseEnter: function handleMouseEnter() {
+ var swiper = this;
+ swiper.mouseEntered = true;
+ },
+ handleMouseLeave: function handleMouseLeave() {
+ var swiper = this;
+ swiper.mouseEntered = false;
+ },
+ handle: function handle(event) {
+ var e = event;
+ var swiper = this;
+ var params = swiper.params.mousewheel;
+
+ if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }
+
+ if (e.originalEvent) { e = e.originalEvent; } // jquery fix
+ var delta = 0;
+ var rtlFactor = swiper.rtlTranslate ? -1 : 1;
+
+ var data = Mousewheel.normalize(e);
+
+ if (params.forceToAxis) {
+ if (swiper.isHorizontal()) {
+ if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; }
+ else { return true; }
+ } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; }
+ else { return true; }
+ } else {
+ delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
+ }
+
+ if (delta === 0) { return true; }
+
+ if (params.invert) { delta = -delta; }
+
+ if (!swiper.params.freeMode) {
+ if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {
+ if (delta < 0) {
+ if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
+ swiper.slideNext();
+ swiper.emit('scroll', e);
+ } else if (params.releaseOnEdges) { return true; }
+ } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
+ swiper.slidePrev();
+ swiper.emit('scroll', e);
+ } else if (params.releaseOnEdges) { return true; }
+ }
+ swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();
+ } else {
+ // Freemode or scrollContainer:
+ if (swiper.params.loop) {
+ swiper.loopFix();
+ }
+ var position = swiper.getTranslate() + (delta * params.sensitivity);
+ var wasBeginning = swiper.isBeginning;
+ var wasEnd = swiper.isEnd;
+
+ if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); }
+ if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); }
+
+ swiper.setTransition(0);
+ swiper.setTranslate(position);
+ swiper.updateProgress();
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+
+ if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {
+ swiper.updateSlidesClasses();
+ }
+
+ if (swiper.params.freeModeSticky) {
+ clearTimeout(swiper.mousewheel.timeout);
+ swiper.mousewheel.timeout = Utils.nextTick(function () {
+ swiper.slideToClosest();
+ }, 300);
+ }
+ // Emit event
+ swiper.emit('scroll', e);
+
+ // Stop autoplay
+ if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); }
+ // Return page scroll on edge positions
+ if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; }
+ }
+
+ if (e.preventDefault) { e.preventDefault(); }
+ else { e.returnValue = false; }
+ return false;
+ },
+ enable: function enable() {
+ var swiper = this;
+ if (!Mousewheel.event) { return false; }
+ if (swiper.mousewheel.enabled) { return false; }
+ var target = swiper.$el;
+ if (swiper.params.mousewheel.eventsTarged !== 'container') {
+ target = $(swiper.params.mousewheel.eventsTarged);
+ }
+ target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
+ target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
+ target.on(Mousewheel.event, swiper.mousewheel.handle);
+ swiper.mousewheel.enabled = true;
+ return true;
+ },
+ disable: function disable() {
+ var swiper = this;
+ if (!Mousewheel.event) { return false; }
+ if (!swiper.mousewheel.enabled) { return false; }
+ var target = swiper.$el;
+ if (swiper.params.mousewheel.eventsTarged !== 'container') {
+ target = $(swiper.params.mousewheel.eventsTarged);
+ }
+ target.off(Mousewheel.event, swiper.mousewheel.handle);
+ swiper.mousewheel.enabled = false;
+ return true;
+ },
+ };
+
+ var Mousewheel$1 = {
+ name: 'mousewheel',
+ params: {
+ mousewheel: {
+ enabled: false,
+ releaseOnEdges: false,
+ invert: false,
+ forceToAxis: false,
+ sensitivity: 1,
+ eventsTarged: 'container',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ mousewheel: {
+ enabled: false,
+ enable: Mousewheel.enable.bind(swiper),
+ disable: Mousewheel.disable.bind(swiper),
+ handle: Mousewheel.handle.bind(swiper),
+ handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),
+ handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),
+ lastScrollTime: Utils.now(),
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }
+ },
+ },
+ };
+
+ var Navigation = {
+ update: function update() {
+ // Update Navigation Buttons
+ var swiper = this;
+ var params = swiper.params.navigation;
+
+ if (swiper.params.loop) { return; }
+ var ref = swiper.navigation;
+ var $nextEl = ref.$nextEl;
+ var $prevEl = ref.$prevEl;
+
+ if ($prevEl && $prevEl.length > 0) {
+ if (swiper.isBeginning) {
+ $prevEl.addClass(params.disabledClass);
+ } else {
+ $prevEl.removeClass(params.disabledClass);
+ }
+ $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
+ }
+ if ($nextEl && $nextEl.length > 0) {
+ if (swiper.isEnd) {
+ $nextEl.addClass(params.disabledClass);
+ } else {
+ $nextEl.removeClass(params.disabledClass);
+ }
+ $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
+ }
+ },
+ onPrevClick: function onPrevClick(e) {
+ var swiper = this;
+ e.preventDefault();
+ if (swiper.isBeginning && !swiper.params.loop) { return; }
+ swiper.slidePrev();
+ },
+ onNextClick: function onNextClick(e) {
+ var swiper = this;
+ e.preventDefault();
+ if (swiper.isEnd && !swiper.params.loop) { return; }
+ swiper.slideNext();
+ },
+ init: function init() {
+ var swiper = this;
+ var params = swiper.params.navigation;
+ if (!(params.nextEl || params.prevEl)) { return; }
+
+ var $nextEl;
+ var $prevEl;
+ if (params.nextEl) {
+ $nextEl = $(params.nextEl);
+ if (
+ swiper.params.uniqueNavElements
+ && typeof params.nextEl === 'string'
+ && $nextEl.length > 1
+ && swiper.$el.find(params.nextEl).length === 1
+ ) {
+ $nextEl = swiper.$el.find(params.nextEl);
+ }
+ }
+ if (params.prevEl) {
+ $prevEl = $(params.prevEl);
+ if (
+ swiper.params.uniqueNavElements
+ && typeof params.prevEl === 'string'
+ && $prevEl.length > 1
+ && swiper.$el.find(params.prevEl).length === 1
+ ) {
+ $prevEl = swiper.$el.find(params.prevEl);
+ }
+ }
+
+ if ($nextEl && $nextEl.length > 0) {
+ $nextEl.on('click', swiper.navigation.onNextClick);
+ }
+ if ($prevEl && $prevEl.length > 0) {
+ $prevEl.on('click', swiper.navigation.onPrevClick);
+ }
+
+ Utils.extend(swiper.navigation, {
+ $nextEl: $nextEl,
+ nextEl: $nextEl && $nextEl[0],
+ $prevEl: $prevEl,
+ prevEl: $prevEl && $prevEl[0],
+ });
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ var ref = swiper.navigation;
+ var $nextEl = ref.$nextEl;
+ var $prevEl = ref.$prevEl;
+ if ($nextEl && $nextEl.length) {
+ $nextEl.off('click', swiper.navigation.onNextClick);
+ $nextEl.removeClass(swiper.params.navigation.disabledClass);
+ }
+ if ($prevEl && $prevEl.length) {
+ $prevEl.off('click', swiper.navigation.onPrevClick);
+ $prevEl.removeClass(swiper.params.navigation.disabledClass);
+ }
+ },
+ };
+
+ var Navigation$1 = {
+ name: 'navigation',
+ params: {
+ navigation: {
+ nextEl: null,
+ prevEl: null,
+
+ hideOnClick: false,
+ disabledClass: 'swiper-button-disabled',
+ hiddenClass: 'swiper-button-hidden',
+ lockClass: 'swiper-button-lock',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ navigation: {
+ init: Navigation.init.bind(swiper),
+ update: Navigation.update.bind(swiper),
+ destroy: Navigation.destroy.bind(swiper),
+ onNextClick: Navigation.onNextClick.bind(swiper),
+ onPrevClick: Navigation.onPrevClick.bind(swiper),
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ swiper.navigation.init();
+ swiper.navigation.update();
+ },
+ toEdge: function toEdge() {
+ var swiper = this;
+ swiper.navigation.update();
+ },
+ fromEdge: function fromEdge() {
+ var swiper = this;
+ swiper.navigation.update();
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.navigation.destroy();
+ },
+ click: function click(e) {
+ var swiper = this;
+ var ref = swiper.navigation;
+ var $nextEl = ref.$nextEl;
+ var $prevEl = ref.$prevEl;
+ if (
+ swiper.params.navigation.hideOnClick
+ && !$(e.target).is($prevEl)
+ && !$(e.target).is($nextEl)
+ ) {
+ var isHidden;
+ if ($nextEl) {
+ isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
+ } else if ($prevEl) {
+ isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
+ }
+ if (isHidden === true) {
+ swiper.emit('navigationShow', swiper);
+ } else {
+ swiper.emit('navigationHide', swiper);
+ }
+ if ($nextEl) {
+ $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
+ }
+ if ($prevEl) {
+ $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
+ }
+ }
+ },
+ },
+ };
+
+ var Pagination = {
+ update: function update() {
+ // Render || Update Pagination bullets/items
+ var swiper = this;
+ var rtl = swiper.rtl;
+ var params = swiper.params.pagination;
+ if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
+ var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
+ var $el = swiper.pagination.$el;
+ // Current/Total
+ var current;
+ var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
+ if (swiper.params.loop) {
+ current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
+ if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {
+ current -= (slidesLength - (swiper.loopedSlides * 2));
+ }
+ if (current > total - 1) { current -= total; }
+ if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; }
+ } else if (typeof swiper.snapIndex !== 'undefined') {
+ current = swiper.snapIndex;
+ } else {
+ current = swiper.activeIndex || 0;
+ }
+ // Types
+ if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
+ var bullets = swiper.pagination.bullets;
+ var firstIndex;
+ var lastIndex;
+ var midIndex;
+ if (params.dynamicBullets) {
+ swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
+ $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px"));
+ if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
+ swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);
+ if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {
+ swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
+ } else if (swiper.pagination.dynamicBulletIndex < 0) {
+ swiper.pagination.dynamicBulletIndex = 0;
+ }
+ }
+ firstIndex = current - swiper.pagination.dynamicBulletIndex;
+ lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
+ midIndex = (lastIndex + firstIndex) / 2;
+ }
+ bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main"));
+ if ($el.length > 1) {
+ bullets.each(function (index, bullet) {
+ var $bullet = $(bullet);
+ var bulletIndex = $bullet.index();
+ if (bulletIndex === current) {
+ $bullet.addClass(params.bulletActiveClass);
+ }
+ if (params.dynamicBullets) {
+ if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
+ $bullet.addClass(((params.bulletActiveClass) + "-main"));
+ }
+ if (bulletIndex === firstIndex) {
+ $bullet
+ .prev()
+ .addClass(((params.bulletActiveClass) + "-prev"))
+ .prev()
+ .addClass(((params.bulletActiveClass) + "-prev-prev"));
+ }
+ if (bulletIndex === lastIndex) {
+ $bullet
+ .next()
+ .addClass(((params.bulletActiveClass) + "-next"))
+ .next()
+ .addClass(((params.bulletActiveClass) + "-next-next"));
+ }
+ }
+ });
+ } else {
+ var $bullet = bullets.eq(current);
+ $bullet.addClass(params.bulletActiveClass);
+ if (params.dynamicBullets) {
+ var $firstDisplayedBullet = bullets.eq(firstIndex);
+ var $lastDisplayedBullet = bullets.eq(lastIndex);
+ for (var i = firstIndex; i <= lastIndex; i += 1) {
+ bullets.eq(i).addClass(((params.bulletActiveClass) + "-main"));
+ }
+ $firstDisplayedBullet
+ .prev()
+ .addClass(((params.bulletActiveClass) + "-prev"))
+ .prev()
+ .addClass(((params.bulletActiveClass) + "-prev-prev"));
+ $lastDisplayedBullet
+ .next()
+ .addClass(((params.bulletActiveClass) + "-next"))
+ .next()
+ .addClass(((params.bulletActiveClass) + "-next-next"));
+ }
+ }
+ if (params.dynamicBullets) {
+ var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
+ var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);
+ var offsetProp = rtl ? 'right' : 'left';
+ bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px"));
+ }
+ }
+ if (params.type === 'fraction') {
+ $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1));
+ $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total));
+ }
+ if (params.type === 'progressbar') {
+ var progressbarDirection;
+ if (params.progressbarOpposite) {
+ progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
+ } else {
+ progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
+ }
+ var scale = (current + 1) / total;
+ var scaleX = 1;
+ var scaleY = 1;
+ if (progressbarDirection === 'horizontal') {
+ scaleX = scale;
+ } else {
+ scaleY = scale;
+ }
+ $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed);
+ }
+ if (params.type === 'custom' && params.renderCustom) {
+ $el.html(params.renderCustom(swiper, current + 1, total));
+ swiper.emit('paginationRender', swiper, $el[0]);
+ } else {
+ swiper.emit('paginationUpdate', swiper, $el[0]);
+ }
+ $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
+ },
+ render: function render() {
+ // Render Container
+ var swiper = this;
+ var params = swiper.params.pagination;
+ if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
+ var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
+
+ var $el = swiper.pagination.$el;
+ var paginationHTML = '';
+ if (params.type === 'bullets') {
+ var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
+ for (var i = 0; i < numberOfBullets; i += 1) {
+ if (params.renderBullet) {
+ paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
+ } else {
+ paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\">" + (params.bulletElement) + ">";
+ }
+ }
+ $el.html(paginationHTML);
+ swiper.pagination.bullets = $el.find(("." + (params.bulletClass)));
+ }
+ if (params.type === 'fraction') {
+ if (params.renderFraction) {
+ paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
+ } else {
+ paginationHTML = " "
+ + ' / '
+ + " ";
+ }
+ $el.html(paginationHTML);
+ }
+ if (params.type === 'progressbar') {
+ if (params.renderProgressbar) {
+ paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
+ } else {
+ paginationHTML = " ";
+ }
+ $el.html(paginationHTML);
+ }
+ if (params.type !== 'custom') {
+ swiper.emit('paginationRender', swiper.pagination.$el[0]);
+ }
+ },
+ init: function init() {
+ var swiper = this;
+ var params = swiper.params.pagination;
+ if (!params.el) { return; }
+
+ var $el = $(params.el);
+ if ($el.length === 0) { return; }
+
+ if (
+ swiper.params.uniqueNavElements
+ && typeof params.el === 'string'
+ && $el.length > 1
+ && swiper.$el.find(params.el).length === 1
+ ) {
+ $el = swiper.$el.find(params.el);
+ }
+
+ if (params.type === 'bullets' && params.clickable) {
+ $el.addClass(params.clickableClass);
+ }
+
+ $el.addClass(params.modifierClass + params.type);
+
+ if (params.type === 'bullets' && params.dynamicBullets) {
+ $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic"));
+ swiper.pagination.dynamicBulletIndex = 0;
+ if (params.dynamicMainBullets < 1) {
+ params.dynamicMainBullets = 1;
+ }
+ }
+ if (params.type === 'progressbar' && params.progressbarOpposite) {
+ $el.addClass(params.progressbarOppositeClass);
+ }
+
+ if (params.clickable) {
+ $el.on('click', ("." + (params.bulletClass)), function onClick(e) {
+ e.preventDefault();
+ var index = $(this).index() * swiper.params.slidesPerGroup;
+ if (swiper.params.loop) { index += swiper.loopedSlides; }
+ swiper.slideTo(index);
+ });
+ }
+
+ Utils.extend(swiper.pagination, {
+ $el: $el,
+ el: $el[0],
+ });
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ var params = swiper.params.pagination;
+ if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }
+ var $el = swiper.pagination.$el;
+
+ $el.removeClass(params.hiddenClass);
+ $el.removeClass(params.modifierClass + params.type);
+ if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); }
+ if (params.clickable) {
+ $el.off('click', ("." + (params.bulletClass)));
+ }
+ },
+ };
+
+ var Pagination$1 = {
+ name: 'pagination',
+ params: {
+ pagination: {
+ el: null,
+ bulletElement: 'span',
+ clickable: false,
+ hideOnClick: false,
+ renderBullet: null,
+ renderProgressbar: null,
+ renderFraction: null,
+ renderCustom: null,
+ progressbarOpposite: false,
+ type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'
+ dynamicBullets: false,
+ dynamicMainBullets: 1,
+ formatFractionCurrent: function (number) { return number; },
+ formatFractionTotal: function (number) { return number; },
+ bulletClass: 'swiper-pagination-bullet',
+ bulletActiveClass: 'swiper-pagination-bullet-active',
+ modifierClass: 'swiper-pagination-', // NEW
+ currentClass: 'swiper-pagination-current',
+ totalClass: 'swiper-pagination-total',
+ hiddenClass: 'swiper-pagination-hidden',
+ progressbarFillClass: 'swiper-pagination-progressbar-fill',
+ progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
+ clickableClass: 'swiper-pagination-clickable', // NEW
+ lockClass: 'swiper-pagination-lock',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ pagination: {
+ init: Pagination.init.bind(swiper),
+ render: Pagination.render.bind(swiper),
+ update: Pagination.update.bind(swiper),
+ destroy: Pagination.destroy.bind(swiper),
+ dynamicBulletIndex: 0,
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ swiper.pagination.init();
+ swiper.pagination.render();
+ swiper.pagination.update();
+ },
+ activeIndexChange: function activeIndexChange() {
+ var swiper = this;
+ if (swiper.params.loop) {
+ swiper.pagination.update();
+ } else if (typeof swiper.snapIndex === 'undefined') {
+ swiper.pagination.update();
+ }
+ },
+ snapIndexChange: function snapIndexChange() {
+ var swiper = this;
+ if (!swiper.params.loop) {
+ swiper.pagination.update();
+ }
+ },
+ slidesLengthChange: function slidesLengthChange() {
+ var swiper = this;
+ if (swiper.params.loop) {
+ swiper.pagination.render();
+ swiper.pagination.update();
+ }
+ },
+ snapGridLengthChange: function snapGridLengthChange() {
+ var swiper = this;
+ if (!swiper.params.loop) {
+ swiper.pagination.render();
+ swiper.pagination.update();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.pagination.destroy();
+ },
+ click: function click(e) {
+ var swiper = this;
+ if (
+ swiper.params.pagination.el
+ && swiper.params.pagination.hideOnClick
+ && swiper.pagination.$el.length > 0
+ && !$(e.target).hasClass(swiper.params.pagination.bulletClass)
+ ) {
+ var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
+ if (isHidden === true) {
+ swiper.emit('paginationShow', swiper);
+ } else {
+ swiper.emit('paginationHide', swiper);
+ }
+ swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
+ }
+ },
+ },
+ };
+
+ var Scrollbar = {
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
+ var scrollbar = swiper.scrollbar;
+ var rtl = swiper.rtlTranslate;
+ var progress = swiper.progress;
+ var dragSize = scrollbar.dragSize;
+ var trackSize = scrollbar.trackSize;
+ var $dragEl = scrollbar.$dragEl;
+ var $el = scrollbar.$el;
+ var params = swiper.params.scrollbar;
+
+ var newSize = dragSize;
+ var newPos = (trackSize - dragSize) * progress;
+ if (rtl) {
+ newPos = -newPos;
+ if (newPos > 0) {
+ newSize = dragSize - newPos;
+ newPos = 0;
+ } else if (-newPos + dragSize > trackSize) {
+ newSize = trackSize + newPos;
+ }
+ } else if (newPos < 0) {
+ newSize = dragSize + newPos;
+ newPos = 0;
+ } else if (newPos + dragSize > trackSize) {
+ newSize = trackSize - newPos;
+ }
+ if (swiper.isHorizontal()) {
+ if (Support.transforms3d) {
+ $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)"));
+ } else {
+ $dragEl.transform(("translateX(" + newPos + "px)"));
+ }
+ $dragEl[0].style.width = newSize + "px";
+ } else {
+ if (Support.transforms3d) {
+ $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)"));
+ } else {
+ $dragEl.transform(("translateY(" + newPos + "px)"));
+ }
+ $dragEl[0].style.height = newSize + "px";
+ }
+ if (params.hide) {
+ clearTimeout(swiper.scrollbar.timeout);
+ $el[0].style.opacity = 1;
+ swiper.scrollbar.timeout = setTimeout(function () {
+ $el[0].style.opacity = 0;
+ $el.transition(400);
+ }, 1000);
+ }
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
+ swiper.scrollbar.$dragEl.transition(duration);
+ },
+ updateSize: function updateSize() {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }
+
+ var scrollbar = swiper.scrollbar;
+ var $dragEl = scrollbar.$dragEl;
+ var $el = scrollbar.$el;
+
+ $dragEl[0].style.width = '';
+ $dragEl[0].style.height = '';
+ var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
+
+ var divider = swiper.size / swiper.virtualSize;
+ var moveDivider = divider * (trackSize / swiper.size);
+ var dragSize;
+ if (swiper.params.scrollbar.dragSize === 'auto') {
+ dragSize = trackSize * divider;
+ } else {
+ dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
+ }
+
+ if (swiper.isHorizontal()) {
+ $dragEl[0].style.width = dragSize + "px";
+ } else {
+ $dragEl[0].style.height = dragSize + "px";
+ }
+
+ if (divider >= 1) {
+ $el[0].style.display = 'none';
+ } else {
+ $el[0].style.display = '';
+ }
+ if (swiper.params.scrollbar.hide) {
+ $el[0].style.opacity = 0;
+ }
+ Utils.extend(scrollbar, {
+ trackSize: trackSize,
+ divider: divider,
+ moveDivider: moveDivider,
+ dragSize: dragSize,
+ });
+ scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
+ },
+ setDragPosition: function setDragPosition(e) {
+ var swiper = this;
+ var scrollbar = swiper.scrollbar;
+ var rtl = swiper.rtlTranslate;
+ var $el = scrollbar.$el;
+ var dragSize = scrollbar.dragSize;
+ var trackSize = scrollbar.trackSize;
+
+ var pointerPosition;
+ if (swiper.isHorizontal()) {
+ pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);
+ } else {
+ pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);
+ }
+ var positionRatio;
+ positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);
+ positionRatio = Math.max(Math.min(positionRatio, 1), 0);
+ if (rtl) {
+ positionRatio = 1 - positionRatio;
+ }
+
+ var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);
+
+ swiper.updateProgress(position);
+ swiper.setTranslate(position);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ },
+ onDragStart: function onDragStart(e) {
+ var swiper = this;
+ var params = swiper.params.scrollbar;
+ var scrollbar = swiper.scrollbar;
+ var $wrapperEl = swiper.$wrapperEl;
+ var $el = scrollbar.$el;
+ var $dragEl = scrollbar.$dragEl;
+ swiper.scrollbar.isTouched = true;
+ e.preventDefault();
+ e.stopPropagation();
+
+ $wrapperEl.transition(100);
+ $dragEl.transition(100);
+ scrollbar.setDragPosition(e);
+
+ clearTimeout(swiper.scrollbar.dragTimeout);
+
+ $el.transition(0);
+ if (params.hide) {
+ $el.css('opacity', 1);
+ }
+ swiper.emit('scrollbarDragStart', e);
+ },
+ onDragMove: function onDragMove(e) {
+ var swiper = this;
+ var scrollbar = swiper.scrollbar;
+ var $wrapperEl = swiper.$wrapperEl;
+ var $el = scrollbar.$el;
+ var $dragEl = scrollbar.$dragEl;
+
+ if (!swiper.scrollbar.isTouched) { return; }
+ if (e.preventDefault) { e.preventDefault(); }
+ else { e.returnValue = false; }
+ scrollbar.setDragPosition(e);
+ $wrapperEl.transition(0);
+ $el.transition(0);
+ $dragEl.transition(0);
+ swiper.emit('scrollbarDragMove', e);
+ },
+ onDragEnd: function onDragEnd(e) {
+ var swiper = this;
+
+ var params = swiper.params.scrollbar;
+ var scrollbar = swiper.scrollbar;
+ var $el = scrollbar.$el;
+
+ if (!swiper.scrollbar.isTouched) { return; }
+ swiper.scrollbar.isTouched = false;
+ if (params.hide) {
+ clearTimeout(swiper.scrollbar.dragTimeout);
+ swiper.scrollbar.dragTimeout = Utils.nextTick(function () {
+ $el.css('opacity', 0);
+ $el.transition(400);
+ }, 1000);
+ }
+ swiper.emit('scrollbarDragEnd', e);
+ if (params.snapOnRelease) {
+ swiper.slideToClosest();
+ }
+ },
+ enableDraggable: function enableDraggable() {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el) { return; }
+ var scrollbar = swiper.scrollbar;
+ var touchEventsTouch = swiper.touchEventsTouch;
+ var touchEventsDesktop = swiper.touchEventsDesktop;
+ var params = swiper.params;
+ var $el = scrollbar.$el;
+ var target = $el[0];
+ var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
+ var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
+ if (!Support.touch) {
+ target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
+ doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
+ doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
+ } else {
+ target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
+ target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
+ target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
+ }
+ },
+ disableDraggable: function disableDraggable() {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el) { return; }
+ var scrollbar = swiper.scrollbar;
+ var touchEventsTouch = swiper.touchEventsTouch;
+ var touchEventsDesktop = swiper.touchEventsDesktop;
+ var params = swiper.params;
+ var $el = scrollbar.$el;
+ var target = $el[0];
+ var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;
+ var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;
+ if (!Support.touch) {
+ target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
+ doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
+ doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
+ } else {
+ target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
+ target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
+ target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
+ }
+ },
+ init: function init() {
+ var swiper = this;
+ if (!swiper.params.scrollbar.el) { return; }
+ var scrollbar = swiper.scrollbar;
+ var $swiperEl = swiper.$el;
+ var params = swiper.params.scrollbar;
+
+ var $el = $(params.el);
+ if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
+ $el = $swiperEl.find(params.el);
+ }
+
+ var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass)));
+ if ($dragEl.length === 0) {
+ $dragEl = $(("
"));
+ $el.append($dragEl);
+ }
+
+ Utils.extend(scrollbar, {
+ $el: $el,
+ el: $el[0],
+ $dragEl: $dragEl,
+ dragEl: $dragEl[0],
+ });
+
+ if (params.draggable) {
+ scrollbar.enableDraggable();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.scrollbar.disableDraggable();
+ },
+ };
+
+ var Scrollbar$1 = {
+ name: 'scrollbar',
+ params: {
+ scrollbar: {
+ el: null,
+ dragSize: 'auto',
+ hide: false,
+ draggable: false,
+ snapOnRelease: true,
+ lockClass: 'swiper-scrollbar-lock',
+ dragClass: 'swiper-scrollbar-drag',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ scrollbar: {
+ init: Scrollbar.init.bind(swiper),
+ destroy: Scrollbar.destroy.bind(swiper),
+ updateSize: Scrollbar.updateSize.bind(swiper),
+ setTranslate: Scrollbar.setTranslate.bind(swiper),
+ setTransition: Scrollbar.setTransition.bind(swiper),
+ enableDraggable: Scrollbar.enableDraggable.bind(swiper),
+ disableDraggable: Scrollbar.disableDraggable.bind(swiper),
+ setDragPosition: Scrollbar.setDragPosition.bind(swiper),
+ onDragStart: Scrollbar.onDragStart.bind(swiper),
+ onDragMove: Scrollbar.onDragMove.bind(swiper),
+ onDragEnd: Scrollbar.onDragEnd.bind(swiper),
+ isTouched: false,
+ timeout: null,
+ dragTimeout: null,
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ swiper.scrollbar.init();
+ swiper.scrollbar.updateSize();
+ swiper.scrollbar.setTranslate();
+ },
+ update: function update() {
+ var swiper = this;
+ swiper.scrollbar.updateSize();
+ },
+ resize: function resize() {
+ var swiper = this;
+ swiper.scrollbar.updateSize();
+ },
+ observerUpdate: function observerUpdate() {
+ var swiper = this;
+ swiper.scrollbar.updateSize();
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ swiper.scrollbar.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ swiper.scrollbar.setTransition(duration);
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.scrollbar.destroy();
+ },
+ },
+ };
+
+ var Parallax = {
+ setTransform: function setTransform(el, progress) {
+ var swiper = this;
+ var rtl = swiper.rtl;
+
+ var $el = $(el);
+ var rtlFactor = rtl ? -1 : 1;
+
+ var p = $el.attr('data-swiper-parallax') || '0';
+ var x = $el.attr('data-swiper-parallax-x');
+ var y = $el.attr('data-swiper-parallax-y');
+ var scale = $el.attr('data-swiper-parallax-scale');
+ var opacity = $el.attr('data-swiper-parallax-opacity');
+
+ if (x || y) {
+ x = x || '0';
+ y = y || '0';
+ } else if (swiper.isHorizontal()) {
+ x = p;
+ y = '0';
+ } else {
+ y = p;
+ x = '0';
+ }
+
+ if ((x).indexOf('%') >= 0) {
+ x = (parseInt(x, 10) * progress * rtlFactor) + "%";
+ } else {
+ x = (x * progress * rtlFactor) + "px";
+ }
+ if ((y).indexOf('%') >= 0) {
+ y = (parseInt(y, 10) * progress) + "%";
+ } else {
+ y = (y * progress) + "px";
+ }
+
+ if (typeof opacity !== 'undefined' && opacity !== null) {
+ var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));
+ $el[0].style.opacity = currentOpacity;
+ }
+ if (typeof scale === 'undefined' || scale === null) {
+ $el.transform(("translate3d(" + x + ", " + y + ", 0px)"));
+ } else {
+ var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));
+ $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")"));
+ }
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ var $el = swiper.$el;
+ var slides = swiper.slides;
+ var progress = swiper.progress;
+ var snapGrid = swiper.snapGrid;
+ $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
+ .each(function (index, el) {
+ swiper.parallax.setTransform(el, progress);
+ });
+ slides.each(function (slideIndex, slideEl) {
+ var slideProgress = slideEl.progress;
+ if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
+ slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));
+ }
+ slideProgress = Math.min(Math.max(slideProgress, -1), 1);
+ $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
+ .each(function (index, el) {
+ swiper.parallax.setTransform(el, slideProgress);
+ });
+ });
+ },
+ setTransition: function setTransition(duration) {
+ if ( duration === void 0 ) duration = this.params.speed;
+
+ var swiper = this;
+ var $el = swiper.$el;
+ $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')
+ .each(function (index, parallaxEl) {
+ var $parallaxEl = $(parallaxEl);
+ var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
+ if (duration === 0) { parallaxDuration = 0; }
+ $parallaxEl.transition(parallaxDuration);
+ });
+ },
+ };
+
+ var Parallax$1 = {
+ name: 'parallax',
+ params: {
+ parallax: {
+ enabled: false,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ parallax: {
+ setTransform: Parallax.setTransform.bind(swiper),
+ setTranslate: Parallax.setTranslate.bind(swiper),
+ setTransition: Parallax.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (!swiper.params.parallax.enabled) { return; }
+ swiper.params.watchSlidesProgress = true;
+ swiper.originalParams.watchSlidesProgress = true;
+ },
+ init: function init() {
+ var swiper = this;
+ if (!swiper.params.parallax.enabled) { return; }
+ swiper.parallax.setTranslate();
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (!swiper.params.parallax.enabled) { return; }
+ swiper.parallax.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (!swiper.params.parallax.enabled) { return; }
+ swiper.parallax.setTransition(duration);
+ },
+ },
+ };
+
+ var Zoom = {
+ // Calc Scale From Multi-touches
+ getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
+ if (e.targetTouches.length < 2) { return 1; }
+ var x1 = e.targetTouches[0].pageX;
+ var y1 = e.targetTouches[0].pageY;
+ var x2 = e.targetTouches[1].pageX;
+ var y2 = e.targetTouches[1].pageY;
+ var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));
+ return distance;
+ },
+ // Events
+ onGestureStart: function onGestureStart(e) {
+ var swiper = this;
+ var params = swiper.params.zoom;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ zoom.fakeGestureTouched = false;
+ zoom.fakeGestureMoved = false;
+ if (!Support.gestures) {
+ if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {
+ return;
+ }
+ zoom.fakeGestureTouched = true;
+ gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
+ }
+ if (!gesture.$slideEl || !gesture.$slideEl.length) {
+ gesture.$slideEl = $(e.target).closest('.swiper-slide');
+ if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }
+ gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
+ gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
+ gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
+ if (gesture.$imageWrapEl.length === 0) {
+ gesture.$imageEl = undefined;
+ return;
+ }
+ }
+ gesture.$imageEl.transition(0);
+ swiper.zoom.isScaling = true;
+ },
+ onGestureChange: function onGestureChange(e) {
+ var swiper = this;
+ var params = swiper.params.zoom;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ if (!Support.gestures) {
+ if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {
+ return;
+ }
+ zoom.fakeGestureMoved = true;
+ gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
+ }
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+ if (Support.gestures) {
+ zoom.scale = e.scale * zoom.currentScale;
+ } else {
+ zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;
+ }
+ if (zoom.scale > gesture.maxRatio) {
+ zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));
+ }
+ if (zoom.scale < params.minRatio) {
+ zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));
+ }
+ gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
+ },
+ onGestureEnd: function onGestureEnd(e) {
+ var swiper = this;
+ var params = swiper.params.zoom;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ if (!Support.gestures) {
+ if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
+ return;
+ }
+ if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {
+ return;
+ }
+ zoom.fakeGestureTouched = false;
+ zoom.fakeGestureMoved = false;
+ }
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+ zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
+ gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
+ zoom.currentScale = zoom.scale;
+ zoom.isScaling = false;
+ if (zoom.scale === 1) { gesture.$slideEl = undefined; }
+ },
+ onTouchStart: function onTouchStart(e) {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ var image = zoom.image;
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+ if (image.isTouched) { return; }
+ if (Device.android) { e.preventDefault(); }
+ image.isTouched = true;
+ image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ },
+ onTouchMove: function onTouchMove(e) {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ var image = zoom.image;
+ var velocity = zoom.velocity;
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+ swiper.allowClick = false;
+ if (!image.isTouched || !gesture.$slideEl) { return; }
+
+ if (!image.isMoved) {
+ image.width = gesture.$imageEl[0].offsetWidth;
+ image.height = gesture.$imageEl[0].offsetHeight;
+ image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
+ image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
+ gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
+ gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
+ gesture.$imageWrapEl.transition(0);
+ if (swiper.rtl) {
+ image.startX = -image.startX;
+ image.startY = -image.startY;
+ }
+ }
+ // Define if we need image drag
+ var scaledWidth = image.width * zoom.scale;
+ var scaledHeight = image.height * zoom.scale;
+
+ if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; }
+
+ image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
+ image.maxX = -image.minX;
+ image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
+ image.maxY = -image.minY;
+
+ image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (!image.isMoved && !zoom.isScaling) {
+ if (
+ swiper.isHorizontal()
+ && (
+ (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)
+ || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)
+ )
+ ) {
+ image.isTouched = false;
+ return;
+ } if (
+ !swiper.isHorizontal()
+ && (
+ (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)
+ || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)
+ )
+ ) {
+ image.isTouched = false;
+ return;
+ }
+ }
+ e.preventDefault();
+ e.stopPropagation();
+
+ image.isMoved = true;
+ image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;
+ image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;
+
+ if (image.currentX < image.minX) {
+ image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));
+ }
+ if (image.currentX > image.maxX) {
+ image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));
+ }
+
+ if (image.currentY < image.minY) {
+ image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));
+ }
+ if (image.currentY > image.maxY) {
+ image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 ));
+ }
+
+ // Velocity
+ if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; }
+ if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; }
+ if (!velocity.prevTime) { velocity.prevTime = Date.now(); }
+ velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
+ velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
+ if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; }
+ if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; }
+ velocity.prevPositionX = image.touchesCurrent.x;
+ velocity.prevPositionY = image.touchesCurrent.y;
+ velocity.prevTime = Date.now();
+
+ gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
+ },
+ onTouchEnd: function onTouchEnd() {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ var image = zoom.image;
+ var velocity = zoom.velocity;
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+ if (!image.isTouched || !image.isMoved) {
+ image.isTouched = false;
+ image.isMoved = false;
+ return;
+ }
+ image.isTouched = false;
+ image.isMoved = false;
+ var momentumDurationX = 300;
+ var momentumDurationY = 300;
+ var momentumDistanceX = velocity.x * momentumDurationX;
+ var newPositionX = image.currentX + momentumDistanceX;
+ var momentumDistanceY = velocity.y * momentumDurationY;
+ var newPositionY = image.currentY + momentumDistanceY;
+
+ // Fix duration
+ if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); }
+ if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); }
+ var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
+
+ image.currentX = newPositionX;
+ image.currentY = newPositionY;
+
+ // Define if we need image drag
+ var scaledWidth = image.width * zoom.scale;
+ var scaledHeight = image.height * zoom.scale;
+ image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);
+ image.maxX = -image.minX;
+ image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);
+ image.maxY = -image.minY;
+ image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
+ image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
+
+ gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)"));
+ },
+ onTransitionEnd: function onTransitionEnd() {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ var gesture = zoom.gesture;
+ if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
+ gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
+ gesture.$imageWrapEl.transform('translate3d(0,0,0)');
+
+ zoom.scale = 1;
+ zoom.currentScale = 1;
+
+ gesture.$slideEl = undefined;
+ gesture.$imageEl = undefined;
+ gesture.$imageWrapEl = undefined;
+ }
+ },
+ // Toggle Zoom
+ toggle: function toggle(e) {
+ var swiper = this;
+ var zoom = swiper.zoom;
+
+ if (zoom.scale && zoom.scale !== 1) {
+ // Zoom Out
+ zoom.out();
+ } else {
+ // Zoom In
+ zoom.in(e);
+ }
+ },
+ in: function in$1(e) {
+ var swiper = this;
+
+ var zoom = swiper.zoom;
+ var params = swiper.params.zoom;
+ var gesture = zoom.gesture;
+ var image = zoom.image;
+
+ if (!gesture.$slideEl) {
+ gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
+ gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
+ gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
+ }
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+
+ gesture.$slideEl.addClass(("" + (params.zoomedSlideClass)));
+
+ var touchX;
+ var touchY;
+ var offsetX;
+ var offsetY;
+ var diffX;
+ var diffY;
+ var translateX;
+ var translateY;
+ var imageWidth;
+ var imageHeight;
+ var scaledWidth;
+ var scaledHeight;
+ var translateMinX;
+ var translateMinY;
+ var translateMaxX;
+ var translateMaxY;
+ var slideWidth;
+ var slideHeight;
+
+ if (typeof image.touchesStart.x === 'undefined' && e) {
+ touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
+ touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
+ } else {
+ touchX = image.touchesStart.x;
+ touchY = image.touchesStart.y;
+ }
+
+ zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
+ zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
+ if (e) {
+ slideWidth = gesture.$slideEl[0].offsetWidth;
+ slideHeight = gesture.$slideEl[0].offsetHeight;
+ offsetX = gesture.$slideEl.offset().left;
+ offsetY = gesture.$slideEl.offset().top;
+ diffX = (offsetX + (slideWidth / 2)) - touchX;
+ diffY = (offsetY + (slideHeight / 2)) - touchY;
+
+ imageWidth = gesture.$imageEl[0].offsetWidth;
+ imageHeight = gesture.$imageEl[0].offsetHeight;
+ scaledWidth = imageWidth * zoom.scale;
+ scaledHeight = imageHeight * zoom.scale;
+
+ translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);
+ translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);
+ translateMaxX = -translateMinX;
+ translateMaxY = -translateMinY;
+
+ translateX = diffX * zoom.scale;
+ translateY = diffY * zoom.scale;
+
+ if (translateX < translateMinX) {
+ translateX = translateMinX;
+ }
+ if (translateX > translateMaxX) {
+ translateX = translateMaxX;
+ }
+
+ if (translateY < translateMinY) {
+ translateY = translateMinY;
+ }
+ if (translateY > translateMaxY) {
+ translateY = translateMaxY;
+ }
+ } else {
+ translateX = 0;
+ translateY = 0;
+ }
+ gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)"));
+ gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")"));
+ },
+ out: function out() {
+ var swiper = this;
+
+ var zoom = swiper.zoom;
+ var params = swiper.params.zoom;
+ var gesture = zoom.gesture;
+
+ if (!gesture.$slideEl) {
+ gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);
+ gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');
+ gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass)));
+ }
+ if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; }
+
+ zoom.scale = 1;
+ zoom.currentScale = 1;
+ gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
+ gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
+ gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass)));
+ gesture.$slideEl = undefined;
+ },
+ // Attach/Detach Events
+ enable: function enable() {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ if (zoom.enabled) { return; }
+ zoom.enabled = true;
+
+ var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
+
+ // Scale image
+ if (Support.gestures) {
+ swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
+ swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
+ swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
+ } else if (swiper.touchEvents.start === 'touchstart') {
+ swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
+ swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
+ swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
+ }
+
+ // Move image
+ swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
+ },
+ disable: function disable() {
+ var swiper = this;
+ var zoom = swiper.zoom;
+ if (!zoom.enabled) { return; }
+
+ swiper.zoom.enabled = false;
+
+ var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;
+
+ // Scale image
+ if (Support.gestures) {
+ swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);
+ swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);
+ swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);
+ } else if (swiper.touchEvents.start === 'touchstart') {
+ swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);
+ swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);
+ swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);
+ }
+
+ // Move image
+ swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove);
+ },
+ };
+
+ var Zoom$1 = {
+ name: 'zoom',
+ params: {
+ zoom: {
+ enabled: false,
+ maxRatio: 3,
+ minRatio: 1,
+ toggle: true,
+ containerClass: 'swiper-zoom-container',
+ zoomedSlideClass: 'swiper-slide-zoomed',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ var zoom = {
+ enabled: false,
+ scale: 1,
+ currentScale: 1,
+ isScaling: false,
+ gesture: {
+ $slideEl: undefined,
+ slideWidth: undefined,
+ slideHeight: undefined,
+ $imageEl: undefined,
+ $imageWrapEl: undefined,
+ maxRatio: 3,
+ },
+ image: {
+ isTouched: undefined,
+ isMoved: undefined,
+ currentX: undefined,
+ currentY: undefined,
+ minX: undefined,
+ minY: undefined,
+ maxX: undefined,
+ maxY: undefined,
+ width: undefined,
+ height: undefined,
+ startX: undefined,
+ startY: undefined,
+ touchesStart: {},
+ touchesCurrent: {},
+ },
+ velocity: {
+ x: undefined,
+ y: undefined,
+ prevPositionX: undefined,
+ prevPositionY: undefined,
+ prevTime: undefined,
+ },
+ };
+
+ ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {
+ zoom[methodName] = Zoom[methodName].bind(swiper);
+ });
+ Utils.extend(swiper, {
+ zoom: zoom,
+ });
+
+ var scale = 1;
+ Object.defineProperty(swiper.zoom, 'scale', {
+ get: function get() {
+ return scale;
+ },
+ set: function set(value) {
+ if (scale !== value) {
+ var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
+ var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
+ swiper.emit('zoomChange', value, imageEl, slideEl);
+ }
+ scale = value;
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.zoom.enabled) {
+ swiper.zoom.enable();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ swiper.zoom.disable();
+ },
+ touchStart: function touchStart(e) {
+ var swiper = this;
+ if (!swiper.zoom.enabled) { return; }
+ swiper.zoom.onTouchStart(e);
+ },
+ touchEnd: function touchEnd(e) {
+ var swiper = this;
+ if (!swiper.zoom.enabled) { return; }
+ swiper.zoom.onTouchEnd(e);
+ },
+ doubleTap: function doubleTap(e) {
+ var swiper = this;
+ if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
+ swiper.zoom.toggle(e);
+ }
+ },
+ transitionEnd: function transitionEnd() {
+ var swiper = this;
+ if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
+ swiper.zoom.onTransitionEnd();
+ }
+ },
+ },
+ };
+
+ var Lazy = {
+ loadInSlide: function loadInSlide(index, loadInDuplicate) {
+ if ( loadInDuplicate === void 0 ) loadInDuplicate = true;
+
+ var swiper = this;
+ var params = swiper.params.lazy;
+ if (typeof index === 'undefined') { return; }
+ if (swiper.slides.length === 0) { return; }
+ var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+
+ var $slideEl = isVirtual
+ ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]"))
+ : swiper.slides.eq(index);
+
+ var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")"));
+ if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
+ $images = $images.add($slideEl[0]);
+ }
+ if ($images.length === 0) { return; }
+
+ $images.each(function (imageIndex, imageEl) {
+ var $imageEl = $(imageEl);
+ $imageEl.addClass(params.loadingClass);
+
+ var background = $imageEl.attr('data-background');
+ var src = $imageEl.attr('data-src');
+ var srcset = $imageEl.attr('data-srcset');
+ var sizes = $imageEl.attr('data-sizes');
+
+ swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {
+ if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; }
+ if (background) {
+ $imageEl.css('background-image', ("url(\"" + background + "\")"));
+ $imageEl.removeAttr('data-background');
+ } else {
+ if (srcset) {
+ $imageEl.attr('srcset', srcset);
+ $imageEl.removeAttr('data-srcset');
+ }
+ if (sizes) {
+ $imageEl.attr('sizes', sizes);
+ $imageEl.removeAttr('data-sizes');
+ }
+ if (src) {
+ $imageEl.attr('src', src);
+ $imageEl.removeAttr('data-src');
+ }
+ }
+
+ $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
+ $slideEl.find(("." + (params.preloaderClass))).remove();
+ if (swiper.params.loop && loadInDuplicate) {
+ var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
+ if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
+ var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")"));
+ swiper.lazy.loadInSlide(originalSlide.index(), false);
+ } else {
+ var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]"));
+ swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
+ }
+ }
+ swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
+ });
+
+ swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
+ });
+ },
+ load: function load() {
+ var swiper = this;
+ var $wrapperEl = swiper.$wrapperEl;
+ var swiperParams = swiper.params;
+ var slides = swiper.slides;
+ var activeIndex = swiper.activeIndex;
+ var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
+ var params = swiperParams.lazy;
+
+ var slidesPerView = swiperParams.slidesPerView;
+ if (slidesPerView === 'auto') {
+ slidesPerView = 0;
+ }
+
+ function slideExist(index) {
+ if (isVirtual) {
+ if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) {
+ return true;
+ }
+ } else if (slides[index]) { return true; }
+ return false;
+ }
+ function slideIndex(slideEl) {
+ if (isVirtual) {
+ return $(slideEl).attr('data-swiper-slide-index');
+ }
+ return $(slideEl).index();
+ }
+
+ if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; }
+ if (swiper.params.watchSlidesVisibility) {
+ $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) {
+ var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();
+ swiper.lazy.loadInSlide(index);
+ });
+ } else if (slidesPerView > 1) {
+ for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
+ if (slideExist(i)) { swiper.lazy.loadInSlide(i); }
+ }
+ } else {
+ swiper.lazy.loadInSlide(activeIndex);
+ }
+ if (params.loadPrevNext) {
+ if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {
+ var amount = params.loadPrevNextAmount;
+ var spv = slidesPerView;
+ var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
+ var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
+ // Next Slides
+ for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {
+ if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }
+ }
+ // Prev Slides
+ for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {
+ if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }
+ }
+ } else {
+ var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass)));
+ if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }
+
+ var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass)));
+ if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }
+ }
+ }
+ },
+ };
+
+ var Lazy$1 = {
+ name: 'lazy',
+ params: {
+ lazy: {
+ enabled: false,
+ loadPrevNext: false,
+ loadPrevNextAmount: 1,
+ loadOnTransitionStart: false,
+
+ elementClass: 'swiper-lazy',
+ loadingClass: 'swiper-lazy-loading',
+ loadedClass: 'swiper-lazy-loaded',
+ preloaderClass: 'swiper-lazy-preloader',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ lazy: {
+ initialImageLoaded: false,
+ load: Lazy.load.bind(swiper),
+ loadInSlide: Lazy.loadInSlide.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
+ swiper.params.preloadImages = false;
+ }
+ },
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
+ swiper.lazy.load();
+ }
+ },
+ scroll: function scroll() {
+ var swiper = this;
+ if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
+ swiper.lazy.load();
+ }
+ },
+ resize: function resize() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled) {
+ swiper.lazy.load();
+ }
+ },
+ scrollbarDragMove: function scrollbarDragMove() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled) {
+ swiper.lazy.load();
+ }
+ },
+ transitionStart: function transitionStart() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled) {
+ if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {
+ swiper.lazy.load();
+ }
+ }
+ },
+ transitionEnd: function transitionEnd() {
+ var swiper = this;
+ if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
+ swiper.lazy.load();
+ }
+ },
+ },
+ };
+
+ /* eslint no-bitwise: ["error", { "allow": [">>"] }] */
+
+ var Controller = {
+ LinearSpline: function LinearSpline(x, y) {
+ var binarySearch = (function search() {
+ var maxIndex;
+ var minIndex;
+ var guess;
+ return function (array, val) {
+ minIndex = -1;
+ maxIndex = array.length;
+ while (maxIndex - minIndex > 1) {
+ guess = maxIndex + minIndex >> 1;
+ if (array[guess] <= val) {
+ minIndex = guess;
+ } else {
+ maxIndex = guess;
+ }
+ }
+ return maxIndex;
+ };
+ }());
+ this.x = x;
+ this.y = y;
+ this.lastIndex = x.length - 1;
+ // Given an x value (x2), return the expected y2 value:
+ // (x1,y1) is the known point before given value,
+ // (x3,y3) is the known point after given value.
+ var i1;
+ var i3;
+
+ this.interpolate = function interpolate(x2) {
+ if (!x2) { return 0; }
+
+ // Get the indexes of x1 and x3 (the array indexes before and after given x2):
+ i3 = binarySearch(this.x, x2);
+ i1 = i3 - 1;
+
+ // We have our indexes i1 & i3, so we can calculate already:
+ // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
+ return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];
+ };
+ return this;
+ },
+ // xxx: for now i will just save one spline function to to
+ getInterpolateFunction: function getInterpolateFunction(c) {
+ var swiper = this;
+ if (!swiper.controller.spline) {
+ swiper.controller.spline = swiper.params.loop
+ ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)
+ : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
+ }
+ },
+ setTranslate: function setTranslate(setTranslate$1, byController) {
+ var swiper = this;
+ var controlled = swiper.controller.control;
+ var multiplier;
+ var controlledTranslate;
+ function setControlledTranslate(c) {
+ // this will create an Interpolate function based on the snapGrids
+ // x is the Grid of the scrolled scroller and y will be the controlled scroller
+ // it makes sense to create this only once and recall it for the interpolation
+ // the function does a lot of value caching for performance
+ var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
+ if (swiper.params.controller.by === 'slide') {
+ swiper.controller.getInterpolateFunction(c);
+ // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
+ // but it did not work out
+ controlledTranslate = -swiper.controller.spline.interpolate(-translate);
+ }
+
+ if (!controlledTranslate || swiper.params.controller.by === 'container') {
+ multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
+ controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();
+ }
+
+ if (swiper.params.controller.inverse) {
+ controlledTranslate = c.maxTranslate() - controlledTranslate;
+ }
+ c.updateProgress(controlledTranslate);
+ c.setTranslate(controlledTranslate, swiper);
+ c.updateActiveIndex();
+ c.updateSlidesClasses();
+ }
+ if (Array.isArray(controlled)) {
+ for (var i = 0; i < controlled.length; i += 1) {
+ if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
+ setControlledTranslate(controlled[i]);
+ }
+ }
+ } else if (controlled instanceof Swiper && byController !== controlled) {
+ setControlledTranslate(controlled);
+ }
+ },
+ setTransition: function setTransition(duration, byController) {
+ var swiper = this;
+ var controlled = swiper.controller.control;
+ var i;
+ function setControlledTransition(c) {
+ c.setTransition(duration, swiper);
+ if (duration !== 0) {
+ c.transitionStart();
+ if (c.params.autoHeight) {
+ Utils.nextTick(function () {
+ c.updateAutoHeight();
+ });
+ }
+ c.$wrapperEl.transitionEnd(function () {
+ if (!controlled) { return; }
+ if (c.params.loop && swiper.params.controller.by === 'slide') {
+ c.loopFix();
+ }
+ c.transitionEnd();
+ });
+ }
+ }
+ if (Array.isArray(controlled)) {
+ for (i = 0; i < controlled.length; i += 1) {
+ if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
+ setControlledTransition(controlled[i]);
+ }
+ }
+ } else if (controlled instanceof Swiper && byController !== controlled) {
+ setControlledTransition(controlled);
+ }
+ },
+ };
+ var Controller$1 = {
+ name: 'controller',
+ params: {
+ controller: {
+ control: undefined,
+ inverse: false,
+ by: 'slide', // or 'container'
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ controller: {
+ control: swiper.params.controller.control,
+ getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),
+ setTranslate: Controller.setTranslate.bind(swiper),
+ setTransition: Controller.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ update: function update() {
+ var swiper = this;
+ if (!swiper.controller.control) { return; }
+ if (swiper.controller.spline) {
+ swiper.controller.spline = undefined;
+ delete swiper.controller.spline;
+ }
+ },
+ resize: function resize() {
+ var swiper = this;
+ if (!swiper.controller.control) { return; }
+ if (swiper.controller.spline) {
+ swiper.controller.spline = undefined;
+ delete swiper.controller.spline;
+ }
+ },
+ observerUpdate: function observerUpdate() {
+ var swiper = this;
+ if (!swiper.controller.control) { return; }
+ if (swiper.controller.spline) {
+ swiper.controller.spline = undefined;
+ delete swiper.controller.spline;
+ }
+ },
+ setTranslate: function setTranslate(translate, byController) {
+ var swiper = this;
+ if (!swiper.controller.control) { return; }
+ swiper.controller.setTranslate(translate, byController);
+ },
+ setTransition: function setTransition(duration, byController) {
+ var swiper = this;
+ if (!swiper.controller.control) { return; }
+ swiper.controller.setTransition(duration, byController);
+ },
+ },
+ };
+
+ var a11y = {
+ makeElFocusable: function makeElFocusable($el) {
+ $el.attr('tabIndex', '0');
+ return $el;
+ },
+ addElRole: function addElRole($el, role) {
+ $el.attr('role', role);
+ return $el;
+ },
+ addElLabel: function addElLabel($el, label) {
+ $el.attr('aria-label', label);
+ return $el;
+ },
+ disableEl: function disableEl($el) {
+ $el.attr('aria-disabled', true);
+ return $el;
+ },
+ enableEl: function enableEl($el) {
+ $el.attr('aria-disabled', false);
+ return $el;
+ },
+ onEnterKey: function onEnterKey(e) {
+ var swiper = this;
+ var params = swiper.params.a11y;
+ if (e.keyCode !== 13) { return; }
+ var $targetEl = $(e.target);
+ if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
+ if (!(swiper.isEnd && !swiper.params.loop)) {
+ swiper.slideNext();
+ }
+ if (swiper.isEnd) {
+ swiper.a11y.notify(params.lastSlideMessage);
+ } else {
+ swiper.a11y.notify(params.nextSlideMessage);
+ }
+ }
+ if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
+ if (!(swiper.isBeginning && !swiper.params.loop)) {
+ swiper.slidePrev();
+ }
+ if (swiper.isBeginning) {
+ swiper.a11y.notify(params.firstSlideMessage);
+ } else {
+ swiper.a11y.notify(params.prevSlideMessage);
+ }
+ }
+ if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) {
+ $targetEl[0].click();
+ }
+ },
+ notify: function notify(message) {
+ var swiper = this;
+ var notification = swiper.a11y.liveRegion;
+ if (notification.length === 0) { return; }
+ notification.html('');
+ notification.html(message);
+ },
+ updateNavigation: function updateNavigation() {
+ var swiper = this;
+
+ if (swiper.params.loop) { return; }
+ var ref = swiper.navigation;
+ var $nextEl = ref.$nextEl;
+ var $prevEl = ref.$prevEl;
+
+ if ($prevEl && $prevEl.length > 0) {
+ if (swiper.isBeginning) {
+ swiper.a11y.disableEl($prevEl);
+ } else {
+ swiper.a11y.enableEl($prevEl);
+ }
+ }
+ if ($nextEl && $nextEl.length > 0) {
+ if (swiper.isEnd) {
+ swiper.a11y.disableEl($nextEl);
+ } else {
+ swiper.a11y.enableEl($nextEl);
+ }
+ }
+ },
+ updatePagination: function updatePagination() {
+ var swiper = this;
+ var params = swiper.params.a11y;
+ if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
+ swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {
+ var $bulletEl = $(bulletEl);
+ swiper.a11y.makeElFocusable($bulletEl);
+ swiper.a11y.addElRole($bulletEl, 'button');
+ swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));
+ });
+ }
+ },
+ init: function init() {
+ var swiper = this;
+
+ swiper.$el.append(swiper.a11y.liveRegion);
+
+ // Navigation
+ var params = swiper.params.a11y;
+ var $nextEl;
+ var $prevEl;
+ if (swiper.navigation && swiper.navigation.$nextEl) {
+ $nextEl = swiper.navigation.$nextEl;
+ }
+ if (swiper.navigation && swiper.navigation.$prevEl) {
+ $prevEl = swiper.navigation.$prevEl;
+ }
+ if ($nextEl) {
+ swiper.a11y.makeElFocusable($nextEl);
+ swiper.a11y.addElRole($nextEl, 'button');
+ swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
+ $nextEl.on('keydown', swiper.a11y.onEnterKey);
+ }
+ if ($prevEl) {
+ swiper.a11y.makeElFocusable($prevEl);
+ swiper.a11y.addElRole($prevEl, 'button');
+ swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
+ $prevEl.on('keydown', swiper.a11y.onEnterKey);
+ }
+
+ // Pagination
+ if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
+ swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }
+
+ var $nextEl;
+ var $prevEl;
+ if (swiper.navigation && swiper.navigation.$nextEl) {
+ $nextEl = swiper.navigation.$nextEl;
+ }
+ if (swiper.navigation && swiper.navigation.$prevEl) {
+ $prevEl = swiper.navigation.$prevEl;
+ }
+ if ($nextEl) {
+ $nextEl.off('keydown', swiper.a11y.onEnterKey);
+ }
+ if ($prevEl) {
+ $prevEl.off('keydown', swiper.a11y.onEnterKey);
+ }
+
+ // Pagination
+ if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
+ swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey);
+ }
+ },
+ };
+ var A11y = {
+ name: 'a11y',
+ params: {
+ a11y: {
+ enabled: true,
+ notificationClass: 'swiper-notification',
+ prevSlideMessage: 'Previous slide',
+ nextSlideMessage: 'Next slide',
+ firstSlideMessage: 'This is the first slide',
+ lastSlideMessage: 'This is the last slide',
+ paginationBulletMessage: 'Go to slide {{index}}',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ a11y: {
+ liveRegion: $((" ")),
+ },
+ });
+ Object.keys(a11y).forEach(function (methodName) {
+ swiper.a11y[methodName] = a11y[methodName].bind(swiper);
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (!swiper.params.a11y.enabled) { return; }
+ swiper.a11y.init();
+ swiper.a11y.updateNavigation();
+ },
+ toEdge: function toEdge() {
+ var swiper = this;
+ if (!swiper.params.a11y.enabled) { return; }
+ swiper.a11y.updateNavigation();
+ },
+ fromEdge: function fromEdge() {
+ var swiper = this;
+ if (!swiper.params.a11y.enabled) { return; }
+ swiper.a11y.updateNavigation();
+ },
+ paginationUpdate: function paginationUpdate() {
+ var swiper = this;
+ if (!swiper.params.a11y.enabled) { return; }
+ swiper.a11y.updatePagination();
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (!swiper.params.a11y.enabled) { return; }
+ swiper.a11y.destroy();
+ },
+ },
+ };
+
+ var History = {
+ init: function init() {
+ var swiper = this;
+ if (!swiper.params.history) { return; }
+ if (!win.history || !win.history.pushState) {
+ swiper.params.history.enabled = false;
+ swiper.params.hashNavigation.enabled = true;
+ return;
+ }
+ var history = swiper.history;
+ history.initialized = true;
+ history.paths = History.getPathValues();
+ if (!history.paths.key && !history.paths.value) { return; }
+ history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
+ if (!swiper.params.history.replaceState) {
+ win.addEventListener('popstate', swiper.history.setHistoryPopState);
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (!swiper.params.history.replaceState) {
+ win.removeEventListener('popstate', swiper.history.setHistoryPopState);
+ }
+ },
+ setHistoryPopState: function setHistoryPopState() {
+ var swiper = this;
+ swiper.history.paths = History.getPathValues();
+ swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
+ },
+ getPathValues: function getPathValues() {
+ var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });
+ var total = pathArray.length;
+ var key = pathArray[total - 2];
+ var value = pathArray[total - 1];
+ return { key: key, value: value };
+ },
+ setHistory: function setHistory(key, index) {
+ var swiper = this;
+ if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }
+ var slide = swiper.slides.eq(index);
+ var value = History.slugify(slide.attr('data-history'));
+ if (!win.location.pathname.includes(key)) {
+ value = key + "/" + value;
+ }
+ var currentState = win.history.state;
+ if (currentState && currentState.value === value) {
+ return;
+ }
+ if (swiper.params.history.replaceState) {
+ win.history.replaceState({ value: value }, null, value);
+ } else {
+ win.history.pushState({ value: value }, null, value);
+ }
+ },
+ slugify: function slugify(text) {
+ return text.toString()
+ .replace(/\s+/g, '-')
+ .replace(/[^\w-]+/g, '')
+ .replace(/--+/g, '-')
+ .replace(/^-+/, '')
+ .replace(/-+$/, '');
+ },
+ scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
+ var swiper = this;
+ if (value) {
+ for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
+ var slide = swiper.slides.eq(i);
+ var slideHistory = History.slugify(slide.attr('data-history'));
+ if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
+ var index = slide.index();
+ swiper.slideTo(index, speed, runCallbacks);
+ }
+ }
+ } else {
+ swiper.slideTo(0, speed, runCallbacks);
+ }
+ },
+ };
+
+ var History$1 = {
+ name: 'history',
+ params: {
+ history: {
+ enabled: false,
+ replaceState: false,
+ key: 'slides',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ history: {
+ init: History.init.bind(swiper),
+ setHistory: History.setHistory.bind(swiper),
+ setHistoryPopState: History.setHistoryPopState.bind(swiper),
+ scrollToSlide: History.scrollToSlide.bind(swiper),
+ destroy: History.destroy.bind(swiper),
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.history.enabled) {
+ swiper.history.init();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.params.history.enabled) {
+ swiper.history.destroy();
+ }
+ },
+ transitionEnd: function transitionEnd() {
+ var swiper = this;
+ if (swiper.history.initialized) {
+ swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
+ }
+ },
+ },
+ };
+
+ var HashNavigation = {
+ onHashCange: function onHashCange() {
+ var swiper = this;
+ var newHash = doc.location.hash.replace('#', '');
+ var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
+ if (newHash !== activeSlideHash) {
+ var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index();
+ if (typeof newIndex === 'undefined') { return; }
+ swiper.slideTo(newIndex);
+ }
+ },
+ setHash: function setHash() {
+ var swiper = this;
+ if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }
+ if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {
+ win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));
+ } else {
+ var slide = swiper.slides.eq(swiper.activeIndex);
+ var hash = slide.attr('data-hash') || slide.attr('data-history');
+ doc.location.hash = hash || '';
+ }
+ },
+ init: function init() {
+ var swiper = this;
+ if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }
+ swiper.hashNavigation.initialized = true;
+ var hash = doc.location.hash.replace('#', '');
+ if (hash) {
+ var speed = 0;
+ for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
+ var slide = swiper.slides.eq(i);
+ var slideHash = slide.attr('data-hash') || slide.attr('data-history');
+ if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
+ var index = slide.index();
+ swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
+ }
+ }
+ }
+ if (swiper.params.hashNavigation.watchState) {
+ $(win).on('hashchange', swiper.hashNavigation.onHashCange);
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.params.hashNavigation.watchState) {
+ $(win).off('hashchange', swiper.hashNavigation.onHashCange);
+ }
+ },
+ };
+ var HashNavigation$1 = {
+ name: 'hash-navigation',
+ params: {
+ hashNavigation: {
+ enabled: false,
+ replaceState: false,
+ watchState: false,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ hashNavigation: {
+ initialized: false,
+ init: HashNavigation.init.bind(swiper),
+ destroy: HashNavigation.destroy.bind(swiper),
+ setHash: HashNavigation.setHash.bind(swiper),
+ onHashCange: HashNavigation.onHashCange.bind(swiper),
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.hashNavigation.enabled) {
+ swiper.hashNavigation.init();
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.params.hashNavigation.enabled) {
+ swiper.hashNavigation.destroy();
+ }
+ },
+ transitionEnd: function transitionEnd() {
+ var swiper = this;
+ if (swiper.hashNavigation.initialized) {
+ swiper.hashNavigation.setHash();
+ }
+ },
+ },
+ };
+
+ /* eslint no-underscore-dangle: "off" */
+
+ var Autoplay = {
+ run: function run() {
+ var swiper = this;
+ var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
+ var delay = swiper.params.autoplay.delay;
+ if ($activeSlideEl.attr('data-swiper-autoplay')) {
+ delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
+ }
+ swiper.autoplay.timeout = Utils.nextTick(function () {
+ if (swiper.params.autoplay.reverseDirection) {
+ if (swiper.params.loop) {
+ swiper.loopFix();
+ swiper.slidePrev(swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else if (!swiper.isBeginning) {
+ swiper.slidePrev(swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else if (!swiper.params.autoplay.stopOnLastSlide) {
+ swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else {
+ swiper.autoplay.stop();
+ }
+ } else if (swiper.params.loop) {
+ swiper.loopFix();
+ swiper.slideNext(swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else if (!swiper.isEnd) {
+ swiper.slideNext(swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else if (!swiper.params.autoplay.stopOnLastSlide) {
+ swiper.slideTo(0, swiper.params.speed, true, true);
+ swiper.emit('autoplay');
+ } else {
+ swiper.autoplay.stop();
+ }
+ }, delay);
+ },
+ start: function start() {
+ var swiper = this;
+ if (typeof swiper.autoplay.timeout !== 'undefined') { return false; }
+ if (swiper.autoplay.running) { return false; }
+ swiper.autoplay.running = true;
+ swiper.emit('autoplayStart');
+ swiper.autoplay.run();
+ return true;
+ },
+ stop: function stop() {
+ var swiper = this;
+ if (!swiper.autoplay.running) { return false; }
+ if (typeof swiper.autoplay.timeout === 'undefined') { return false; }
+
+ if (swiper.autoplay.timeout) {
+ clearTimeout(swiper.autoplay.timeout);
+ swiper.autoplay.timeout = undefined;
+ }
+ swiper.autoplay.running = false;
+ swiper.emit('autoplayStop');
+ return true;
+ },
+ pause: function pause(speed) {
+ var swiper = this;
+ if (!swiper.autoplay.running) { return; }
+ if (swiper.autoplay.paused) { return; }
+ if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); }
+ swiper.autoplay.paused = true;
+ if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
+ swiper.autoplay.paused = false;
+ swiper.autoplay.run();
+ } else {
+ swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);
+ swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
+ }
+ },
+ };
+
+ var Autoplay$1 = {
+ name: 'autoplay',
+ params: {
+ autoplay: {
+ enabled: false,
+ delay: 3000,
+ waitForTransition: true,
+ disableOnInteraction: true,
+ stopOnLastSlide: false,
+ reverseDirection: false,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ autoplay: {
+ running: false,
+ paused: false,
+ run: Autoplay.run.bind(swiper),
+ start: Autoplay.start.bind(swiper),
+ stop: Autoplay.stop.bind(swiper),
+ pause: Autoplay.pause.bind(swiper),
+ onTransitionEnd: function onTransitionEnd(e) {
+ if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; }
+ if (e.target !== this) { return; }
+ swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);
+ swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);
+ swiper.autoplay.paused = false;
+ if (!swiper.autoplay.running) {
+ swiper.autoplay.stop();
+ } else {
+ swiper.autoplay.run();
+ }
+ },
+ },
+ });
+ },
+ on: {
+ init: function init() {
+ var swiper = this;
+ if (swiper.params.autoplay.enabled) {
+ swiper.autoplay.start();
+ }
+ },
+ beforeTransitionStart: function beforeTransitionStart(speed, internal) {
+ var swiper = this;
+ if (swiper.autoplay.running) {
+ if (internal || !swiper.params.autoplay.disableOnInteraction) {
+ swiper.autoplay.pause(speed);
+ } else {
+ swiper.autoplay.stop();
+ }
+ }
+ },
+ sliderFirstMove: function sliderFirstMove() {
+ var swiper = this;
+ if (swiper.autoplay.running) {
+ if (swiper.params.autoplay.disableOnInteraction) {
+ swiper.autoplay.stop();
+ } else {
+ swiper.autoplay.pause();
+ }
+ }
+ },
+ destroy: function destroy() {
+ var swiper = this;
+ if (swiper.autoplay.running) {
+ swiper.autoplay.stop();
+ }
+ },
+ },
+ };
+
+ var Fade = {
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ var slides = swiper.slides;
+ for (var i = 0; i < slides.length; i += 1) {
+ var $slideEl = swiper.slides.eq(i);
+ var offset = $slideEl[0].swiperSlideOffset;
+ var tx = -offset;
+ if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }
+ var ty = 0;
+ if (!swiper.isHorizontal()) {
+ ty = tx;
+ tx = 0;
+ }
+ var slideOpacity = swiper.params.fadeEffect.crossFade
+ ? Math.max(1 - Math.abs($slideEl[0].progress), 0)
+ : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
+ $slideEl
+ .css({
+ opacity: slideOpacity,
+ })
+ .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)"));
+ }
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ var slides = swiper.slides;
+ var $wrapperEl = swiper.$wrapperEl;
+ slides.transition(duration);
+ if (swiper.params.virtualTranslate && duration !== 0) {
+ var eventTriggered = false;
+ slides.transitionEnd(function () {
+ if (eventTriggered) { return; }
+ if (!swiper || swiper.destroyed) { return; }
+ eventTriggered = true;
+ swiper.animating = false;
+ var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
+ for (var i = 0; i < triggerEvents.length; i += 1) {
+ $wrapperEl.trigger(triggerEvents[i]);
+ }
+ });
+ }
+ },
+ };
+
+ var EffectFade = {
+ name: 'effect-fade',
+ params: {
+ fadeEffect: {
+ crossFade: false,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ fadeEffect: {
+ setTranslate: Fade.setTranslate.bind(swiper),
+ setTransition: Fade.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (swiper.params.effect !== 'fade') { return; }
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "fade"));
+ var overwriteParams = {
+ slidesPerView: 1,
+ slidesPerColumn: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ spaceBetween: 0,
+ virtualTranslate: true,
+ };
+ Utils.extend(swiper.params, overwriteParams);
+ Utils.extend(swiper.originalParams, overwriteParams);
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (swiper.params.effect !== 'fade') { return; }
+ swiper.fadeEffect.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (swiper.params.effect !== 'fade') { return; }
+ swiper.fadeEffect.setTransition(duration);
+ },
+ },
+ };
+
+ var Cube = {
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ var $el = swiper.$el;
+ var $wrapperEl = swiper.$wrapperEl;
+ var slides = swiper.slides;
+ var swiperWidth = swiper.width;
+ var swiperHeight = swiper.height;
+ var rtl = swiper.rtlTranslate;
+ var swiperSize = swiper.size;
+ var params = swiper.params.cubeEffect;
+ var isHorizontal = swiper.isHorizontal();
+ var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+ var wrapperRotate = 0;
+ var $cubeShadowEl;
+ if (params.shadow) {
+ if (isHorizontal) {
+ $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
+ if ($cubeShadowEl.length === 0) {
+ $cubeShadowEl = $('
');
+ $wrapperEl.append($cubeShadowEl);
+ }
+ $cubeShadowEl.css({ height: (swiperWidth + "px") });
+ } else {
+ $cubeShadowEl = $el.find('.swiper-cube-shadow');
+ if ($cubeShadowEl.length === 0) {
+ $cubeShadowEl = $('
');
+ $el.append($cubeShadowEl);
+ }
+ }
+ }
+ for (var i = 0; i < slides.length; i += 1) {
+ var $slideEl = slides.eq(i);
+ var slideIndex = i;
+ if (isVirtual) {
+ slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
+ }
+ var slideAngle = slideIndex * 90;
+ var round = Math.floor(slideAngle / 360);
+ if (rtl) {
+ slideAngle = -slideAngle;
+ round = Math.floor(-slideAngle / 360);
+ }
+ var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
+ var tx = 0;
+ var ty = 0;
+ var tz = 0;
+ if (slideIndex % 4 === 0) {
+ tx = -round * 4 * swiperSize;
+ tz = 0;
+ } else if ((slideIndex - 1) % 4 === 0) {
+ tx = 0;
+ tz = -round * 4 * swiperSize;
+ } else if ((slideIndex - 2) % 4 === 0) {
+ tx = swiperSize + (round * 4 * swiperSize);
+ tz = swiperSize;
+ } else if ((slideIndex - 3) % 4 === 0) {
+ tx = -swiperSize;
+ tz = (3 * swiperSize) + (swiperSize * 4 * round);
+ }
+ if (rtl) {
+ tx = -tx;
+ }
+
+ if (!isHorizontal) {
+ ty = tx;
+ tx = 0;
+ }
+
+ var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
+ if (progress <= 1 && progress > -1) {
+ wrapperRotate = (slideIndex * 90) + (progress * 90);
+ if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); }
+ }
+ $slideEl.transform(transform);
+ if (params.slideShadows) {
+ // Set shadows
+ var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
+ var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
+ if (shadowBefore.length === 0) {
+ shadowBefore = $(("
"));
+ $slideEl.append(shadowBefore);
+ }
+ if (shadowAfter.length === 0) {
+ shadowAfter = $(("
"));
+ $slideEl.append(shadowAfter);
+ }
+ if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
+ if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
+ }
+ }
+ $wrapperEl.css({
+ '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
+ '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
+ '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
+ 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"),
+ });
+
+ if (params.shadow) {
+ if (isHorizontal) {
+ $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")"));
+ } else {
+ var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);
+ var multiplier = 1.5 - (
+ (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)
+ + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)
+ );
+ var scale1 = params.shadowScale;
+ var scale2 = params.shadowScale / multiplier;
+ var offset = params.shadowOffset;
+ $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)"));
+ }
+ }
+ var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;
+ $wrapperEl
+ .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)"));
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ var $el = swiper.$el;
+ var slides = swiper.slides;
+ slides
+ .transition(duration)
+ .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
+ .transition(duration);
+ if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
+ $el.find('.swiper-cube-shadow').transition(duration);
+ }
+ },
+ };
+
+ var EffectCube = {
+ name: 'effect-cube',
+ params: {
+ cubeEffect: {
+ slideShadows: true,
+ shadow: true,
+ shadowOffset: 20,
+ shadowScale: 0.94,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ cubeEffect: {
+ setTranslate: Cube.setTranslate.bind(swiper),
+ setTransition: Cube.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (swiper.params.effect !== 'cube') { return; }
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "cube"));
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
+ var overwriteParams = {
+ slidesPerView: 1,
+ slidesPerColumn: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ resistanceRatio: 0,
+ spaceBetween: 0,
+ centeredSlides: false,
+ virtualTranslate: true,
+ };
+ Utils.extend(swiper.params, overwriteParams);
+ Utils.extend(swiper.originalParams, overwriteParams);
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (swiper.params.effect !== 'cube') { return; }
+ swiper.cubeEffect.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (swiper.params.effect !== 'cube') { return; }
+ swiper.cubeEffect.setTransition(duration);
+ },
+ },
+ };
+
+ var Flip = {
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ var slides = swiper.slides;
+ var rtl = swiper.rtlTranslate;
+ for (var i = 0; i < slides.length; i += 1) {
+ var $slideEl = slides.eq(i);
+ var progress = $slideEl[0].progress;
+ if (swiper.params.flipEffect.limitRotation) {
+ progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
+ }
+ var offset = $slideEl[0].swiperSlideOffset;
+ var rotate = -180 * progress;
+ var rotateY = rotate;
+ var rotateX = 0;
+ var tx = -offset;
+ var ty = 0;
+ if (!swiper.isHorizontal()) {
+ ty = tx;
+ tx = 0;
+ rotateX = -rotateY;
+ rotateY = 0;
+ } else if (rtl) {
+ rotateY = -rotateY;
+ }
+
+ $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
+
+ if (swiper.params.flipEffect.slideShadows) {
+ // Set shadows
+ var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
+ var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
+ if (shadowBefore.length === 0) {
+ shadowBefore = $(("
"));
+ $slideEl.append(shadowBefore);
+ }
+ if (shadowAfter.length === 0) {
+ shadowAfter = $(("
"));
+ $slideEl.append(shadowAfter);
+ }
+ if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); }
+ if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); }
+ }
+ $slideEl
+ .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"));
+ }
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ var slides = swiper.slides;
+ var activeIndex = swiper.activeIndex;
+ var $wrapperEl = swiper.$wrapperEl;
+ slides
+ .transition(duration)
+ .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
+ .transition(duration);
+ if (swiper.params.virtualTranslate && duration !== 0) {
+ var eventTriggered = false;
+ // eslint-disable-next-line
+ slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
+ if (eventTriggered) { return; }
+ if (!swiper || swiper.destroyed) { return; }
+ // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
+ eventTriggered = true;
+ swiper.animating = false;
+ var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
+ for (var i = 0; i < triggerEvents.length; i += 1) {
+ $wrapperEl.trigger(triggerEvents[i]);
+ }
+ });
+ }
+ },
+ };
+
+ var EffectFlip = {
+ name: 'effect-flip',
+ params: {
+ flipEffect: {
+ slideShadows: true,
+ limitRotation: true,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ flipEffect: {
+ setTranslate: Flip.setTranslate.bind(swiper),
+ setTransition: Flip.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (swiper.params.effect !== 'flip') { return; }
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "flip"));
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
+ var overwriteParams = {
+ slidesPerView: 1,
+ slidesPerColumn: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ spaceBetween: 0,
+ virtualTranslate: true,
+ };
+ Utils.extend(swiper.params, overwriteParams);
+ Utils.extend(swiper.originalParams, overwriteParams);
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (swiper.params.effect !== 'flip') { return; }
+ swiper.flipEffect.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (swiper.params.effect !== 'flip') { return; }
+ swiper.flipEffect.setTransition(duration);
+ },
+ },
+ };
+
+ var Coverflow = {
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ var swiperWidth = swiper.width;
+ var swiperHeight = swiper.height;
+ var slides = swiper.slides;
+ var $wrapperEl = swiper.$wrapperEl;
+ var slidesSizesGrid = swiper.slidesSizesGrid;
+ var params = swiper.params.coverflowEffect;
+ var isHorizontal = swiper.isHorizontal();
+ var transform = swiper.translate;
+ var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);
+ var rotate = isHorizontal ? params.rotate : -params.rotate;
+ var translate = params.depth;
+ // Each slide offset from center
+ for (var i = 0, length = slides.length; i < length; i += 1) {
+ var $slideEl = slides.eq(i);
+ var slideSize = slidesSizesGrid[i];
+ var slideOffset = $slideEl[0].swiperSlideOffset;
+ var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;
+
+ var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
+ var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
+ // var rotateZ = 0
+ var translateZ = -translate * Math.abs(offsetMultiplier);
+
+ var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);
+ var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;
+
+ // Fix for ultra small values
+ if (Math.abs(translateX) < 0.001) { translateX = 0; }
+ if (Math.abs(translateY) < 0.001) { translateY = 0; }
+ if (Math.abs(translateZ) < 0.001) { translateZ = 0; }
+ if (Math.abs(rotateY) < 0.001) { rotateY = 0; }
+ if (Math.abs(rotateX) < 0.001) { rotateX = 0; }
+
+ var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)";
+
+ $slideEl.transform(slideTransform);
+ $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
+ if (params.slideShadows) {
+ // Set shadows
+ var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
+ var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
+ if ($shadowBeforeEl.length === 0) {
+ $shadowBeforeEl = $(("
"));
+ $slideEl.append($shadowBeforeEl);
+ }
+ if ($shadowAfterEl.length === 0) {
+ $shadowAfterEl = $(("
"));
+ $slideEl.append($shadowAfterEl);
+ }
+ if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; }
+ if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; }
+ }
+ }
+
+ // Set correct perspective for IE10
+ if (Support.pointerEvents || Support.prefixedPointerEvents) {
+ var ws = $wrapperEl[0].style;
+ ws.perspectiveOrigin = center + "px 50%";
+ }
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ swiper.slides
+ .transition(duration)
+ .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')
+ .transition(duration);
+ },
+ };
+
+ var EffectCoverflow = {
+ name: 'effect-coverflow',
+ params: {
+ coverflowEffect: {
+ rotate: 50,
+ stretch: 0,
+ depth: 100,
+ modifier: 1,
+ slideShadows: true,
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ coverflowEffect: {
+ setTranslate: Coverflow.setTranslate.bind(swiper),
+ setTransition: Coverflow.setTransition.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ if (swiper.params.effect !== 'coverflow') { return; }
+
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow"));
+ swiper.classNames.push(((swiper.params.containerModifierClass) + "3d"));
+
+ swiper.params.watchSlidesProgress = true;
+ swiper.originalParams.watchSlidesProgress = true;
+ },
+ setTranslate: function setTranslate() {
+ var swiper = this;
+ if (swiper.params.effect !== 'coverflow') { return; }
+ swiper.coverflowEffect.setTranslate();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ if (swiper.params.effect !== 'coverflow') { return; }
+ swiper.coverflowEffect.setTransition(duration);
+ },
+ },
+ };
+
+ var Thumbs = {
+ init: function init() {
+ var swiper = this;
+ var ref = swiper.params;
+ var thumbsParams = ref.thumbs;
+ var SwiperClass = swiper.constructor;
+ if (thumbsParams.swiper instanceof SwiperClass) {
+ swiper.thumbs.swiper = thumbsParams.swiper;
+ Utils.extend(swiper.thumbs.swiper.originalParams, {
+ watchSlidesProgress: true,
+ slideToClickedSlide: false,
+ });
+ Utils.extend(swiper.thumbs.swiper.params, {
+ watchSlidesProgress: true,
+ slideToClickedSlide: false,
+ });
+ } else if (Utils.isObject(thumbsParams.swiper)) {
+ swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {
+ watchSlidesVisibility: true,
+ watchSlidesProgress: true,
+ slideToClickedSlide: false,
+ }));
+ swiper.thumbs.swiperCreated = true;
+ }
+ swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
+ swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
+ },
+ onThumbClick: function onThumbClick() {
+ var swiper = this;
+ var thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper) { return; }
+ var clickedIndex = thumbsSwiper.clickedIndex;
+ var clickedSlide = thumbsSwiper.clickedSlide;
+ if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }
+ if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }
+ var slideToIndex;
+ if (thumbsSwiper.params.loop) {
+ slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
+ } else {
+ slideToIndex = clickedIndex;
+ }
+ if (swiper.params.loop) {
+ var currentIndex = swiper.activeIndex;
+ if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
+ swiper.loopFix();
+ // eslint-disable-next-line
+ swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
+ currentIndex = swiper.activeIndex;
+ }
+ var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
+ var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index();
+ if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; }
+ else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; }
+ else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; }
+ else { slideToIndex = prevIndex; }
+ }
+ swiper.slideTo(slideToIndex);
+ },
+ update: function update(initial) {
+ var swiper = this;
+ var thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper) { return; }
+
+ var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'
+ ? thumbsSwiper.slidesPerViewDynamic()
+ : thumbsSwiper.params.slidesPerView;
+
+ if (swiper.realIndex !== thumbsSwiper.realIndex) {
+ var currentThumbsIndex = thumbsSwiper.activeIndex;
+ var newThumbsIndex;
+ if (thumbsSwiper.params.loop) {
+ if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
+ thumbsSwiper.loopFix();
+ // eslint-disable-next-line
+ thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
+ currentThumbsIndex = thumbsSwiper.activeIndex;
+ }
+ // Find actual thumbs index to slide to
+ var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
+ var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index();
+ if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; }
+ else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; }
+ else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; }
+ else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; }
+ else { newThumbsIndex = prevThumbsIndex; }
+ } else {
+ newThumbsIndex = swiper.realIndex;
+ }
+ if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
+ if (thumbsSwiper.params.centeredSlides) {
+ if (newThumbsIndex > currentThumbsIndex) {
+ newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
+ } else {
+ newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
+ }
+ } else if (newThumbsIndex > currentThumbsIndex) {
+ newThumbsIndex = newThumbsIndex - slidesPerView + 1;
+ }
+ thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
+ }
+ }
+
+ // Activate thumbs
+ var thumbsToActivate = 1;
+ var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
+
+ if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
+ thumbsToActivate = swiper.params.slidesPerView;
+ }
+
+ thumbsSwiper.slides.removeClass(thumbActiveClass);
+ if (thumbsSwiper.params.loop) {
+ for (var i = 0; i < thumbsToActivate; i += 1) {
+ thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]")).addClass(thumbActiveClass);
+ }
+ } else {
+ for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {
+ thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);
+ }
+ }
+ },
+ };
+ var Thumbs$1 = {
+ name: 'thumbs',
+ params: {
+ thumbs: {
+ swiper: null,
+ slideThumbActiveClass: 'swiper-slide-thumb-active',
+ thumbsContainerClass: 'swiper-container-thumbs',
+ },
+ },
+ create: function create() {
+ var swiper = this;
+ Utils.extend(swiper, {
+ thumbs: {
+ swiper: null,
+ init: Thumbs.init.bind(swiper),
+ update: Thumbs.update.bind(swiper),
+ onThumbClick: Thumbs.onThumbClick.bind(swiper),
+ },
+ });
+ },
+ on: {
+ beforeInit: function beforeInit() {
+ var swiper = this;
+ var ref = swiper.params;
+ var thumbs = ref.thumbs;
+ if (!thumbs || !thumbs.swiper) { return; }
+ swiper.thumbs.init();
+ swiper.thumbs.update(true);
+ },
+ slideChange: function slideChange() {
+ var swiper = this;
+ if (!swiper.thumbs.swiper) { return; }
+ swiper.thumbs.update();
+ },
+ update: function update() {
+ var swiper = this;
+ if (!swiper.thumbs.swiper) { return; }
+ swiper.thumbs.update();
+ },
+ resize: function resize() {
+ var swiper = this;
+ if (!swiper.thumbs.swiper) { return; }
+ swiper.thumbs.update();
+ },
+ observerUpdate: function observerUpdate() {
+ var swiper = this;
+ if (!swiper.thumbs.swiper) { return; }
+ swiper.thumbs.update();
+ },
+ setTransition: function setTransition(duration) {
+ var swiper = this;
+ var thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper) { return; }
+ thumbsSwiper.setTransition(duration);
+ },
+ beforeDestroy: function beforeDestroy() {
+ var swiper = this;
+ var thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper) { return; }
+ if (swiper.thumbs.swiperCreated && thumbsSwiper) {
+ thumbsSwiper.destroy();
+ }
+ },
+ },
+ };
+
+ // Swiper Class
+
+ var components = [
+ Device$1,
+ Support$1,
+ Browser$1,
+ Resize,
+ Observer$1,
+ Virtual$1,
+ Keyboard$1,
+ Mousewheel$1,
+ Navigation$1,
+ Pagination$1,
+ Scrollbar$1,
+ Parallax$1,
+ Zoom$1,
+ Lazy$1,
+ Controller$1,
+ A11y,
+ History$1,
+ HashNavigation$1,
+ Autoplay$1,
+ EffectFade,
+ EffectCube,
+ EffectFlip,
+ EffectCoverflow,
+ Thumbs$1
+ ];
+
+ if (typeof Swiper.use === 'undefined') {
+ Swiper.use = Swiper.Class.use;
+ Swiper.installModule = Swiper.Class.installModule;
+ }
+
+ Swiper.use(components);
+
+ return Swiper;
+
+}));
diff --git a/src/views/FirstPages/FirstPage.vue b/src/views/FirstPages/FirstPage.vue
index fc5ab1f..0360d93 100644
--- a/src/views/FirstPages/FirstPage.vue
+++ b/src/views/FirstPages/FirstPage.vue
@@ -82,6 +82,7 @@
更多>
+
@@ -279,10 +280,11 @@