PageSourceSearch

https://turebergfriidrott.se/js/fancybox/source/jquery.event.swipe.js

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

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.