PageSourceSearch

https://www.psafe.com/wp-content/themes/tonykuehn/assets/card_slider/js/jquery.event.swipe.js

js psafe.com collected 2026-09-24 09:54:45 UTC 3,437 bytes, 132 lines download raw bytes

1// jQuery.event.swipe
2// 0.5
3// Stephen Band
4
5// Dependencies
6// jQuery.event.move 1.2
7
8// One of swipeleft, swiperight, swipeup or swipedown is triggered on
9// moveend, when the move has covered a threshold ratio of the dimension
10// of the target node, or has gone really fast. Threshold and velocity
11// sensitivity changed with:
12//
13// jQuery.event.special.swipe.settings.threshold
14// jQuery.event.special.swipe.settings.sensitivity
15
16(function (thisModule) {
17	if (typeof define === 'function' && define.amd) {
18        // AMD. Register as an anonymous module.
19        define(['jquery', undefined, 'jquery.event.move'], thisModule);
20    } else if ((typeof module !== "undefined" && module !== null) && module.exports) {
21        module.exports = thisModule;
22	} else {
23		// Browser globals
24        thisModule(jQuery);
25	}
26})(function(jQuery, undefined){
27	var add = jQuery.event.add,
28	   
29	    remove = jQuery.event.remove,
30
31	    // Just sugar, so we can have arguments in the same order as
32	    // add and remove.
33	    trigger = function(node, type, data) {
34	    	jQuery.event.trigger(type, data, node);
35	    },
36
37	    settings = {
38	    	// Ratio of distance over target finger must travel to be
39	    	// considered a swipe.
40	    	threshold: 0.4,
41	    	// Faster fingers can travel shorter distances to be considered
42	    	// swipes. 'sensitivity' controls how much. Bigger is shorter.
43	    	sensitivity: 6
44	    };
45
46	function moveend(e) {
47		var w, h, event;
48
49		w = e.currentTarget.offsetWidth;
50		h = e.currentTarget.offsetHeight;
51
52		// Copy over some useful properties from the move event
53		event = {
54			distX: e.distX,
55			distY: e.distY,
56			velocityX: e.velocityX,
57			velocityY: e.velocityY,
58			finger: e.finger
59		};
60
61		// Find out which of the four directions was swiped
62		if (e.distX > e.distY) {
63			if (e.distX > -e.distY) {
64				if (e.distX/w > settings.threshold || e.velocityX * e.distX/w * settings.sensitivity > 1) {
65					event.type = 'swiperight';
66					trigger(e.currentTarget, event);
67				}
68			}
69			else {
70				if (-e.distY/h > settings.threshold || e.velocityY * e.distY/w * settings.sensitivity > 1) {
71					event.type = 'swipeup';
72					trigger(e.currentTarget, event);
73				}
74			}
75		}
76		else {
77			if (e.distX > -e.distY) {
78				if (e.distY/h > settings.threshold || e.velocityY * e.distY/w * settings.sensitivity > 1) {
79					event.type = 'swipedown';
80					trigger(e.currentTarget, event);
81				}
82			}
83			else {
84				if (-e.distX/w > settings.threshold || e.velocityX * e.distX/w * settings.sensitivity > 1) {
85					event.type = 'swipeleft';
86					trigger(e.currentTarget, event);
87				}
88			}
89		}
90	}
91
92	function getData(node) {
93		var data = jQuery.data(node, 'event_swipe');
94		
95		if (!data) {
96			data = { count: 0 };
97			jQuery.data(node, 'event_swipe', data);
98		}
99		
100		return data;
101	}
102
103	jQuery.event.special.swipe =
104	jQuery.event.special.swipeleft =
105	jQuery.event.special.swiperight =
106	jQuery.event.special.swipeup =
107	jQuery.event.special.swipedown = {
108		setup: function( data, namespaces, eventHandle ) {
109			var data = getData(this);
110
111			// If another swipe event is already setup, don't setup again.
112			if (data.count++ > 0) { return; }
113
114			add(this, 'moveend', moveend);
115
116			return true;
117		},
118
119		teardown: function() {
120			var data = getData(this);
121
122			// If another swipe event is still setup, don't teardown.
123			if (--data.count > 0) { return; }
124
125			remove(this, 'moveend', moveend);
126
127			return true;
128		},
129
130		settings: settings
131	};
132});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.