UNPKG

mn-touch

Version:

Ultrafast AngularJS touch events directive (tap, hold and swipe)

11 lines 2.95 kB
/** * * @name: mnTouch * @version: 1.3.2 * @description: Ultrafast AngularJS touch events directive (tap, hold and swipe) * @author: Alessandro Bellini - ilmente * @license: MIT * */ "use strict";angular.module("mn",[]).directive("mnTouch",["$timeout",function(e){var t=function(t,n,o){t.$event={name:"",isSecure:!1,isRunning:!1,target:n[0],threshold:o.threshold?o.threshold:10,holdfor:o.holdfor?o.holdfor:500,types:{start:"mousedown",move:"mousemove",end:"mouseup",cancel:""},time:{},coords:{},events:{},directionX:0,directionY:0,offsetX:0,offsetY:0};var v=function(e){t.$event.name=e,o[e]&&(t.$eval(o[e]),t.$apply())},s=function(e){return{x:e.pageX||0,y:e.pageY||0}};if("undefined"!=typeof window.ontouchstart&&"undefined"!=typeof window.ontouchend&&"undefined"!=typeof window.ontouchcancel?(t.$event.types.start="touchstart",t.$event.types.move="touchmove",t.$event.types.end="touchend",t.$event.types.cancel="touchcancel",s=function(e){var t=e&&e.changedTouches&&!!e.changedTouches.length>0?e.changedTouches[0]:{};return{x:t.pageX||e.pageX||0,y:t.pageY||e.pageY||0}}):window.navigator.pointerEnabled?(t.$event.types.start="pointerdown",t.$event.types.move="pointermove",t.$event.types.end="pointerup"):window.navigator.msPointerEnabled&&(t.$event.types.start="MSPointerDown",t.$event.types.move="MSPointerMove",t.$event.types.end="MSPointerUp",t.$event.types.cancel="MSPointerOut"),o.tap){t.$event.isSecure=!1,t.$event.isRunning=!1;var i=function(e){t.$event.events.start=e,t.$event.coords.start=s(e),v("tap")};t.$event.target.addEventListener(t.$event.types.start,i,!1)}else{t.$event.isSecure=!0;var r=null,i=function(n){t.$event.isRunning=!0,t.$event.time.start=(new Date).getTime(),t.$event.events.start=n,t.$event.coords.start=s(n),o.hold&&(r=e(function(){a(t.$event.events.move||n)},t.$event.holdfor,!1))},d=function(e){t.$event.isRunning&&(t.$event.events.move=e)},a=function(n){r&&e.cancel(r),t.$event.isRunning&&(t.$event.isRunning=!1,t.$event.time.end=(new Date).getTime(),t.$event.time.duration=t.$event.time.end-t.$event.time.start,t.$event.events.end=n,t.$event.coords.end=s(n),t.$event.directionX=t.$event.coords.end.x-t.$event.coords.start.x,t.$event.directionY=t.$event.coords.end.y-t.$event.coords.start.y,t.$event.offsetX=Math.abs(t.$event.directionX),t.$event.offsetY=Math.abs(t.$event.directionY),v(t.$event.offsetX<=t.$event.threshold&&t.$event.offsetY<=t.$event.threshold?o.hold&&t.$event.time.duration>=t.$event.holdfor?"hold":"secureTap":t.$event.offsetX>=t.$event.offsetY?t.$event.directionX>0?"swipeRight":"swipeLeft":t.$event.directionY>0?"swipeDown":"swipeUp"))};t.$event.target.addEventListener(t.$event.types.start,i,!1),t.$event.target.addEventListener(t.$event.types.end,a,!1),t.$event.types.cancel&&t.$event.target.addEventListener(t.$event.types.cancel,a,!1),o.hold&&t.$event.target.addEventListener(t.$event.types.move,d,!1)}};return{restrict:"A",link:t}}]); //# sourceMappingURL=./mn-touch.min.js.map