File: /var/www/html/wp-content/plugins/advanced-ads-slider/src/js/jquery.event.swipe.js
// jQuery.event.swipe
// 0.5
// Stephen Band
// Dependencies
// jQuery.event.move 1.2
// One of swipeleft, swiperight, swipeup or swipedown is triggered on
// moveend, when the move has covered a threshold ratio of the dimension
// of the target node, or has gone really fast. Threshold and velocity
// sensitivity changed with:
//
// jQuery.event.special.swipe.settings.threshold
// jQuery.event.special.swipe.settings.sensitivity
( function ( thisModule ) {
if ( typeof define === 'function' && define.amd ) {
// AMD. Register as an anonymous module.
define( [ 'jquery', undefined, 'jquery.event.move' ], thisModule );
} else if (
typeof module !== 'undefined' &&
module !== null &&
module.exports
) {
module.exports = thisModule;
} else {
// Browser globals
thisModule( jQuery );
}
} )( function ( jQuery, undefined ) {
var add = jQuery.event.add,
remove = jQuery.event.remove,
// Just sugar, so we can have arguments in the same order as
// add and remove.
trigger = function ( node, type, data ) {
jQuery.event.trigger( type, data, node );
},
settings = {
// Ratio of distance over target finger must travel to be
// considered a swipe.
threshold: 0.4,
// Faster fingers can travel shorter distances to be considered
// swipes. 'sensitivity' controls how much. Bigger is shorter.
sensitivity: 6,
};
function moveend( e ) {
var w, h, event;
w = e.currentTarget.offsetWidth;
h = e.currentTarget.offsetHeight;
// Copy over some useful properties from the move event
event = {
distX: e.distX,
distY: e.distY,
velocityX: e.velocityX,
velocityY: e.velocityY,
finger: e.finger,
};
// Find out which of the four directions was swiped
if ( e.distX > e.distY ) {
if ( e.distX > -e.distY ) {
if (
e.distX / w > settings.threshold ||
( ( e.velocityX * e.distX ) / w ) * settings.sensitivity > 1
) {
event.type = 'swiperight';
trigger( e.currentTarget, event );
}
} else {
if (
-e.distY / h > settings.threshold ||
( ( e.velocityY * e.distY ) / w ) * settings.sensitivity > 1
) {
event.type = 'swipeup';
trigger( e.currentTarget, event );
}
}
} else {
if ( e.distX > -e.distY ) {
if (
e.distY / h > settings.threshold ||
( ( e.velocityY * e.distY ) / w ) * settings.sensitivity > 1
) {
event.type = 'swipedown';
trigger( e.currentTarget, event );
}
} else {
if (
-e.distX / w > settings.threshold ||
( ( e.velocityX * e.distX ) / w ) * settings.sensitivity > 1
) {
event.type = 'swipeleft';
trigger( e.currentTarget, event );
}
}
}
}
function getData( node ) {
var data = jQuery.data( node, 'event_swipe' );
if ( ! data ) {
data = { count: 0 };
jQuery.data( node, 'event_swipe', data );
}
return data;
}
jQuery.event.special.swipe =
jQuery.event.special.swipeleft =
jQuery.event.special.swiperight =
jQuery.event.special.swipeup =
jQuery.event.special.swipedown =
{
setup: function ( data, namespaces, eventHandle ) {
var data = getData( this );
// If another swipe event is already setup, don't setup again.
if ( data.count++ > 0 ) {
return;
}
add( this, 'moveend', moveend );
return true;
},
teardown: function () {
var data = getData( this );
// If another swipe event is still setup, don't teardown.
if ( --data.count > 0 ) {
return;
}
remove( this, 'moveend', moveend );
return true;
},
settings: settings,
};
} );