/
addswipe.min.js
7 lines (7 loc) · 2.13 KB
/
addswipe.min.js
1
2
3
4
5
6
7
// addSwipe :: adding swipe gesture support to a layer
// http://lazaworx.com/addswipe-plugin/
(function(b){b.extend(b.support,{touch:"ontouchend"in document});b.extend(jQuery.easing,{easeOutBack:function(b,d,e,i,a,c){void 0==c&&(c=1.70158);return i*((d=d/a-1)*d*((c+1)*d+c)+1)+e},easeOutQuad:function(b,d,e,i,a){return-i*(d/=a)*(d-2)+e}});b.fn.addSwipe=function(q,d,e){var e=b.extend({},b.fn.addSwipe.defaults,e),i=e.snapGrid?"easeOutBack":"easeOutQuad";return this.each(function(){var a=b(this),c,r=0,j=0,s=0,o,t,u;a.attr("draggable","true");var l=function(a){return r=a.touches&&0<a.touches.length?
a.touches[0].clientX:a.clientX?a.clientX:r},v=function(a){j=l(a)},g=function(){return!1},m=function(b){j?a.css({left:l(b)-j+o}):j=l(b);return!1},n=function(k){k=l(k)-j;s=a.position().left;b.support.touch?this.ontouchend=this.ontouchmove=null:b(document).off("mousemove",m).off("mouseup click",n);if(Math.abs(k)>e.minDist){var f,c=a.parent().width(),g=a.width(),h,p=i;u=1E3*k/((new Date).getTime()-t);f=s+Math.round(u/2);e.snapGrid&&(h=c/e.snapGrid,f=Math.round(Math.round(f/h)*h));e.keepWithin&&(0>f&&
g+f<c?(f=c-g,p="easeOutBack"):0<f&&g+f>c&&(f=0,p="easeOutBack"));a.animate({left:f},500,p);0>k?b.isFunction(q)&&q.call():b.isFunction(d)&&d.call()}else a.animate({left:o},200),a.trigger("click");return!1},w=function(b){if(("touchstart"===b.type||"touchmove"===b.type)&&(!b.touches||1<b.touches.length||a.is(":animated")))return!0;v(b);h(b)},h=function(c){a.stop(!0,!1);o=a.position().left;t=(new Date).getTime();if(b.support.touch)return this.ontouchmove=m,this.ontouchend=n,!0;a.off("click");a.click(g);
b(document).on({mousemove:m,mouseup:n});c.cancelBubble=!0;return!1};if(b.support.touch)this.ontouchstart=w;else a.on({dragstart:h,mousedown:v});c=a.position().left;a.on("resetswipe",function(){a.stop(!0,!1).animate({left:c},500,"easeOutBack");return!1});a.on("unswipe",function(){b.support.touch?this.ontouchstart=this.ontouchend=this.ontouchmove=null:(b.isFunction(a.noAction)&&a.off(g),b.isFunction(a.dragStart)&&a.off(h),b(document).off("mousemove",m).off("mouseup",n))});a.on("selectstart",g)})};b.fn.addSwipe.defaults=
{minDist:40,snapGrid:0,keepWithin:!0}})(jQuery);