active_frontend 15.0.4 → 15.0.5
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 260d3d1b317cf4e1512d4a1026c39de7c48c9e18
|
4
|
+
data.tar.gz: 43d3c96c7505ad5b3a1272013397342627bbb14f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7630ea9d42a33d2dd4fa274e5b888357097fb0065b1835c520b049c604f4e59d8ede4e517494f94c172e1bf5425a7e4b0a2f40fe09e7351f2fc301f1f4cb174f
|
7
|
+
data.tar.gz: 529dea79fca3177a852c145b910b5e31d411560b068d431278d21f4a32bdad1dabc3d800b3f4b35fa9d736f73d3bb30eee218ca63a080c3b1ed7c3c7201becf9
|
@@ -0,0 +1,778 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
(function ($) {
|
4
|
+
$.attrFn = $.attrFn || {};
|
5
|
+
|
6
|
+
var touchCapable = ('ontouchstart' in window);
|
7
|
+
var settings = {
|
8
|
+
tap_pixel_range: 5,
|
9
|
+
swipe_h_threshold: 50,
|
10
|
+
swipe_v_threshold: 50,
|
11
|
+
taphold_threshold: 750,
|
12
|
+
doubletap_int: 500,
|
13
|
+
touch_capable: touchCapable,
|
14
|
+
orientation_support: ('orientation' in window && 'onorientationchange' in window),
|
15
|
+
startevent: (touchCapable) ? 'touchstart' : 'mousedown',
|
16
|
+
endevent: (touchCapable) ? 'touchend' : 'mouseup',
|
17
|
+
moveevent: (touchCapable) ? 'touchmove' : 'mousemove',
|
18
|
+
tapevent: (touchCapable) ? 'tap' : 'click',
|
19
|
+
scrollevent: (touchCapable) ? 'touchmove' : 'scroll',
|
20
|
+
hold_timer: null,
|
21
|
+
tap_timer: null
|
22
|
+
};
|
23
|
+
|
24
|
+
$.isTouchCapable = function() { return settings.touch_capable; };
|
25
|
+
$.getStartEvent = function() { return settings.startevent; };
|
26
|
+
$.getEndEvent = function() { return settings.endevent; };
|
27
|
+
$.getMoveEvent = function() { return settings.moveevent; };
|
28
|
+
$.getTapEvent = function() { return settings.tapevent; };
|
29
|
+
$.getScrollEvent = function() { return settings.scrollevent; };
|
30
|
+
|
31
|
+
$.each([
|
32
|
+
'tapstart', 'tapend', 'tapmove', 'tap', 'tap2', 'tap3', 'tap4', 'singletap', 'doubletap',
|
33
|
+
'taphold', 'swipe', 'swipeup', 'swiperight', 'swipedown', 'swipeleft', 'swipeend',
|
34
|
+
'scrollstart', 'scrollend', 'orientationchange'
|
35
|
+
], function (i, name) {
|
36
|
+
$.fn[name] = function (fn) {
|
37
|
+
return fn ? this.on(name, fn) : this.trigger(name);
|
38
|
+
};
|
39
|
+
|
40
|
+
$.attrFn[name] = true;
|
41
|
+
});
|
42
|
+
|
43
|
+
$.event.special.tapstart = {
|
44
|
+
setup: function () {
|
45
|
+
var thisObject = this;
|
46
|
+
var $this = $(thisObject);
|
47
|
+
|
48
|
+
$this.on(settings.startevent, function tapStartFunc(e) {
|
49
|
+
$this.data('callee', tapStartFunc);
|
50
|
+
if (e.which && e.which !== 1) return false;
|
51
|
+
|
52
|
+
var origEvent = e.originalEvent;
|
53
|
+
var touchData = {
|
54
|
+
'position': {
|
55
|
+
'x': ((settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX),
|
56
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
57
|
+
},
|
58
|
+
'offset': {
|
59
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
60
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
61
|
+
},
|
62
|
+
'time': Date.now(),
|
63
|
+
'target': e.target
|
64
|
+
};
|
65
|
+
|
66
|
+
triggerCustomEvent(thisObject, 'tapstart', e, touchData);
|
67
|
+
return true;
|
68
|
+
});
|
69
|
+
},
|
70
|
+
remove: function () {
|
71
|
+
$(this).off(settings.startevent, $(this).data.callee);
|
72
|
+
}
|
73
|
+
};
|
74
|
+
|
75
|
+
$.event.special.tapmove = {
|
76
|
+
setup: function() {
|
77
|
+
var thisObject = this;
|
78
|
+
var $this = $(thisObject);
|
79
|
+
|
80
|
+
$this.on(settings.moveevent, function tapMoveFunc(e) {
|
81
|
+
$this.data('callee', tapMoveFunc);
|
82
|
+
|
83
|
+
var origEvent = e.originalEvent;
|
84
|
+
var touchData = {
|
85
|
+
'position': {
|
86
|
+
'x': ((settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX),
|
87
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
88
|
+
},
|
89
|
+
'offset': {
|
90
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
91
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
92
|
+
},
|
93
|
+
'time': Date.now(),
|
94
|
+
'target': e.target
|
95
|
+
};
|
96
|
+
|
97
|
+
triggerCustomEvent(thisObject, 'tapmove', e, touchData);
|
98
|
+
return true;
|
99
|
+
});
|
100
|
+
},
|
101
|
+
remove: function() {
|
102
|
+
$(this).off(settings.moveevent, $(this).data.callee);
|
103
|
+
}
|
104
|
+
};
|
105
|
+
|
106
|
+
$.event.special.tapend = {
|
107
|
+
setup: function () {
|
108
|
+
var thisObject = this;
|
109
|
+
var $this = $(thisObject);
|
110
|
+
|
111
|
+
$this.on(settings.endevent, function tapEndFunc(e) {
|
112
|
+
$this.data('callee', tapEndFunc);
|
113
|
+
|
114
|
+
var origEvent = e.originalEvent;
|
115
|
+
var touchData = {
|
116
|
+
'position': {
|
117
|
+
'x': (settings.touch_capable) ? origEvent.changedTouches[0].screenX : e.screenX,
|
118
|
+
'y': (settings.touch_capable) ? origEvent.changedTouches[0].screenY : e.screenY
|
119
|
+
},
|
120
|
+
'offset': {
|
121
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
122
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
123
|
+
},
|
124
|
+
'time': Date.now(),
|
125
|
+
'target': e.target
|
126
|
+
};
|
127
|
+
triggerCustomEvent(thisObject, 'tapend', e, touchData);
|
128
|
+
return true;
|
129
|
+
});
|
130
|
+
},
|
131
|
+
remove: function () {
|
132
|
+
$(this).off(settings.endevent, $(this).data.callee);
|
133
|
+
}
|
134
|
+
};
|
135
|
+
|
136
|
+
$.event.special.taphold = {
|
137
|
+
setup: function () {
|
138
|
+
var thisObject = this;
|
139
|
+
var $this = $(thisObject);
|
140
|
+
var origTarget;
|
141
|
+
var start_pos = {
|
142
|
+
x: 0,
|
143
|
+
y: 0
|
144
|
+
};
|
145
|
+
var end_x = 0;
|
146
|
+
var end_y = 0;
|
147
|
+
|
148
|
+
$this.on(settings.startevent, function tapHoldFunc1(e) {
|
149
|
+
if (e.which && e.which !== 1) {
|
150
|
+
return false;
|
151
|
+
} else {
|
152
|
+
$this.data('tapheld', false);
|
153
|
+
origTarget = e.target;
|
154
|
+
|
155
|
+
var origEvent = e.originalEvent;
|
156
|
+
var start_time = Date.now();
|
157
|
+
var startPosition = {
|
158
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX,
|
159
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
160
|
+
};
|
161
|
+
var startOffset = {
|
162
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].pageX - origEvent.touches[0].target.offsetLeft : e.offsetX,
|
163
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].pageY - origEvent.touches[0].target.offsetTop : e.offsetY
|
164
|
+
};
|
165
|
+
|
166
|
+
start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
167
|
+
start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
168
|
+
|
169
|
+
end_x = start_pos.x;
|
170
|
+
end_y = start_pos.y;
|
171
|
+
|
172
|
+
var ele_threshold = ($this.parent().data('threshold')) ? $this.parent().data('threshold') : $this.data('threshold');
|
173
|
+
var threshold = (typeof ele_threshold !== 'undefined' && ele_threshold !== false && parseInt(ele_threshold)) ? parseInt(ele_threshold) : settings.taphold_threshold;
|
174
|
+
|
175
|
+
settings.hold_timer = window.setTimeout(function () {
|
176
|
+
var diff_x = (start_pos.x - end_x);
|
177
|
+
var diff_y = (start_pos.y - end_y);
|
178
|
+
|
179
|
+
if (e.target == origTarget && ((start_pos.x == end_x && start_pos.y == end_y) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
|
180
|
+
$this.data('tapheld', true);
|
181
|
+
|
182
|
+
var end_time = Date.now();
|
183
|
+
var endPosition = {
|
184
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX,
|
185
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
186
|
+
};
|
187
|
+
var endOffset = {
|
188
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
189
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
190
|
+
};
|
191
|
+
var duration = end_time - start_time;
|
192
|
+
var touchData = {
|
193
|
+
'startTime': start_time,
|
194
|
+
'endTime': end_time,
|
195
|
+
'startPosition': startPosition,
|
196
|
+
'startOffset': startOffset,
|
197
|
+
'endPosition': endPosition,
|
198
|
+
'endOffset': endOffset,
|
199
|
+
'duration': duration,
|
200
|
+
'target': e.target
|
201
|
+
};
|
202
|
+
|
203
|
+
$this.data('callee1', tapHoldFunc1);
|
204
|
+
triggerCustomEvent(thisObject, 'taphold', e, touchData);
|
205
|
+
}
|
206
|
+
}, threshold);
|
207
|
+
|
208
|
+
return true;
|
209
|
+
}
|
210
|
+
}).on(settings.endevent, function tapHoldFunc2() {
|
211
|
+
$this.data('callee2', tapHoldFunc2);
|
212
|
+
$this.data('tapheld', false);
|
213
|
+
window.clearTimeout(settings.hold_timer);
|
214
|
+
})
|
215
|
+
.on(settings.moveevent, function tapHoldFunc3(e) {
|
216
|
+
$this.data('callee3', tapHoldFunc3);
|
217
|
+
|
218
|
+
end_x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
219
|
+
end_y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
220
|
+
});
|
221
|
+
},
|
222
|
+
remove: function () {
|
223
|
+
$(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2).off(settings.moveevent, $(this).data.callee3);
|
224
|
+
}
|
225
|
+
};
|
226
|
+
|
227
|
+
$.event.special.doubletap = {
|
228
|
+
setup: function () {
|
229
|
+
var thisObject = this;
|
230
|
+
var $this = $(thisObject);
|
231
|
+
var origTarget;
|
232
|
+
var action;
|
233
|
+
var firstTap = null;
|
234
|
+
var origEvent;
|
235
|
+
var cooloff;
|
236
|
+
var cooling = false;
|
237
|
+
|
238
|
+
$this.on(settings.startevent, function doubleTapFunc1(e) {
|
239
|
+
if (e.which && e.which !== 1) return false;
|
240
|
+
|
241
|
+
$this.data('doubletapped', false);
|
242
|
+
origTarget = e.target;
|
243
|
+
|
244
|
+
$this.data('callee1', doubleTapFunc1);
|
245
|
+
origEvent = e.originalEvent;
|
246
|
+
|
247
|
+
if (!firstTap) {
|
248
|
+
firstTap = {
|
249
|
+
'position': {
|
250
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX,
|
251
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
252
|
+
},
|
253
|
+
'offset': {
|
254
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
255
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
256
|
+
},
|
257
|
+
'time': Date.now(),
|
258
|
+
'target': e.target,
|
259
|
+
'element': e.originalEvent.srcElement,
|
260
|
+
'index': $(e.target).index()
|
261
|
+
};
|
262
|
+
}
|
263
|
+
|
264
|
+
return true;
|
265
|
+
}).on(settings.endevent, function doubleTapFunc2(e) {
|
266
|
+
var now = Date.now();
|
267
|
+
var lastTouch = $this.data('lastTouch') || now + 1;
|
268
|
+
var delta = now - lastTouch;
|
269
|
+
|
270
|
+
window.clearTimeout(action);
|
271
|
+
$this.data('callee2', doubleTapFunc2);
|
272
|
+
|
273
|
+
if (delta < settings.doubletap_int && ($(e.target).index() == firstTap.index) && delta > 100) {
|
274
|
+
$this.data('doubletapped', true);
|
275
|
+
window.clearTimeout(settings.tap_timer);
|
276
|
+
|
277
|
+
var lastTap = {
|
278
|
+
'position': {
|
279
|
+
'x': (settings.touch_capable) ? e.originalEvent.changedTouches[0].screenX : e.screenX,
|
280
|
+
'y': (settings.touch_capable) ? e.originalEvent.changedTouches[0].screenY : e.screenY
|
281
|
+
},
|
282
|
+
'offset': {
|
283
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
284
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
285
|
+
},
|
286
|
+
'time': Date.now(),
|
287
|
+
'target': e.target,
|
288
|
+
'element': e.originalEvent.srcElement,
|
289
|
+
'index': $(e.target).index()
|
290
|
+
};
|
291
|
+
|
292
|
+
var touchData = {
|
293
|
+
'firstTap': firstTap,
|
294
|
+
'secondTap': lastTap,
|
295
|
+
'interval': lastTap.time - firstTap.time
|
296
|
+
};
|
297
|
+
|
298
|
+
if (!cooling) {
|
299
|
+
triggerCustomEvent(thisObject, 'doubletap', e, touchData);
|
300
|
+
firstTap = null;
|
301
|
+
}
|
302
|
+
|
303
|
+
cooling = true;
|
304
|
+
cooloff = window.setTimeout(function () {
|
305
|
+
cooling = false;
|
306
|
+
}, settings.doubletap_int);
|
307
|
+
} else {
|
308
|
+
$this.data('lastTouch', now);
|
309
|
+
action = window.setTimeout(function () {
|
310
|
+
firstTap = null;
|
311
|
+
window.clearTimeout(action);
|
312
|
+
}, settings.doubletap_int, [e]);
|
313
|
+
}
|
314
|
+
|
315
|
+
$this.data('lastTouch', now);
|
316
|
+
});
|
317
|
+
},
|
318
|
+
remove: function () {
|
319
|
+
$(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
|
320
|
+
}
|
321
|
+
};
|
322
|
+
|
323
|
+
$.event.special.singletap = {
|
324
|
+
setup: function () {
|
325
|
+
var thisObject = this;
|
326
|
+
var $this = $(thisObject);
|
327
|
+
var origTarget = null;
|
328
|
+
var startTime = null;
|
329
|
+
var start_pos = {
|
330
|
+
x: 0,
|
331
|
+
y: 0
|
332
|
+
};
|
333
|
+
|
334
|
+
$this.on(settings.startevent, function singleTapFunc1(e) {
|
335
|
+
if (e.which && e.which !== 1) {
|
336
|
+
return false;
|
337
|
+
} else {
|
338
|
+
startTime = Date.now();
|
339
|
+
origTarget = e.target;
|
340
|
+
$this.data('callee1', singleTapFunc1);
|
341
|
+
|
342
|
+
start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
343
|
+
start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
344
|
+
|
345
|
+
return true;
|
346
|
+
}
|
347
|
+
}).on(settings.endevent, function singleTapFunc2(e) {
|
348
|
+
$this.data('callee2', singleTapFunc2);
|
349
|
+
|
350
|
+
if (e.target == origTarget) {
|
351
|
+
var end_pos_x = (e.originalEvent.changedTouches) ? e.originalEvent.changedTouches[0].pageX : e.pageX;
|
352
|
+
var end_pos_y = (e.originalEvent.changedTouches) ? e.originalEvent.changedTouches[0].pageY : e.pageY;
|
353
|
+
|
354
|
+
settings.tap_timer = window.setTimeout(function () {
|
355
|
+
var diff_x = (start_pos.x - end_pos_x);
|
356
|
+
var diff_y = (start_pos.y - end_pos_y);
|
357
|
+
|
358
|
+
if (!$this.data('doubletapped') && !$this.data('tapheld') && (((start_pos.x == end_pos_x) && (start_pos.y == end_pos_y)) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
|
359
|
+
var origEvent = e.originalEvent;
|
360
|
+
var touchData = {
|
361
|
+
'position': {
|
362
|
+
'x': (settings.touch_capable) ? origEvent.changedTouches[0].screenX : e.screenX,
|
363
|
+
'y': (settings.touch_capable) ? origEvent.changedTouches[0].screenY : e.screenY
|
364
|
+
},
|
365
|
+
'offset': {
|
366
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
367
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
368
|
+
},
|
369
|
+
'time': Date.now(),
|
370
|
+
'target': e.target
|
371
|
+
};
|
372
|
+
|
373
|
+
if ((touchData.time - startTime) < settings.taphold_threshold) {
|
374
|
+
triggerCustomEvent(thisObject, 'singletap', e, touchData);
|
375
|
+
}
|
376
|
+
}
|
377
|
+
}, settings.doubletap_int);
|
378
|
+
}
|
379
|
+
});
|
380
|
+
},
|
381
|
+
remove: function () {
|
382
|
+
$(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
|
383
|
+
}
|
384
|
+
};
|
385
|
+
|
386
|
+
$.event.special.tap = {
|
387
|
+
setup: function () {
|
388
|
+
var thisObject = this;
|
389
|
+
var $this = $(thisObject);
|
390
|
+
var started = false;
|
391
|
+
var origTarget = null;
|
392
|
+
var start_time;
|
393
|
+
var start_pos = {
|
394
|
+
x: 0,
|
395
|
+
y: 0
|
396
|
+
};
|
397
|
+
var touches;
|
398
|
+
|
399
|
+
$this.on(settings.startevent, function tapFunc1(e) {
|
400
|
+
$this.data('callee1', tapFunc1);
|
401
|
+
|
402
|
+
if ( e.which && e.which !== 1 ) {
|
403
|
+
return false;
|
404
|
+
} else {
|
405
|
+
started = true;
|
406
|
+
start_pos.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
407
|
+
start_pos.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
408
|
+
start_time = Date.now();
|
409
|
+
origTarget = e.target;
|
410
|
+
|
411
|
+
touches = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches : [ e ];
|
412
|
+
return true;
|
413
|
+
}
|
414
|
+
}).on(settings.endevent, function tapFunc2(e) {
|
415
|
+
$this.data('callee2', tapFunc2);
|
416
|
+
|
417
|
+
var end_x = (e.originalEvent.targetTouches) ? e.originalEvent.changedTouches[0].pageX : e.pageX;
|
418
|
+
var end_y = (e.originalEvent.targetTouches) ? e.originalEvent.changedTouches[0].pageY : e.pageY;
|
419
|
+
var diff_x = (start_pos.x - end_x);
|
420
|
+
var diff_y = (start_pos.y - end_y);
|
421
|
+
var eventName;
|
422
|
+
|
423
|
+
if (origTarget == e.target && started && ((Date.now() - start_time) < settings.taphold_threshold) && ((start_pos.x == end_x && start_pos.y == end_y) || (diff_x >= -(settings.tap_pixel_range) && diff_x <= settings.tap_pixel_range && diff_y >= -(settings.tap_pixel_range) && diff_y <= settings.tap_pixel_range))) {
|
424
|
+
var origEvent = e.originalEvent;
|
425
|
+
var touchData = [];
|
426
|
+
|
427
|
+
for ( var i = 0; i < touches.length; i++) {
|
428
|
+
if (settings.touch_capable && !origEvent.changedTouches[i]) continue;
|
429
|
+
|
430
|
+
var touch = {
|
431
|
+
'position': {
|
432
|
+
'x': (settings.touch_capable) ? origEvent.changedTouches[i].screenX : e.screenX,
|
433
|
+
'y': (settings.touch_capable) ? origEvent.changedTouches[i].screenY : e.screenY
|
434
|
+
},
|
435
|
+
'offset': {
|
436
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
437
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[i].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
438
|
+
},
|
439
|
+
'time': Date.now(),
|
440
|
+
'target': e.target
|
441
|
+
};
|
442
|
+
|
443
|
+
touchData.push( touch );
|
444
|
+
}
|
445
|
+
|
446
|
+
triggerCustomEvent(thisObject, 'tap', e, touchData);
|
447
|
+
}
|
448
|
+
});
|
449
|
+
},
|
450
|
+
remove: function () {
|
451
|
+
$(this).off(settings.startevent, $(this).data.callee1).off(settings.endevent, $(this).data.callee2);
|
452
|
+
}
|
453
|
+
};
|
454
|
+
|
455
|
+
$.event.special.swipe = {
|
456
|
+
setup: function () {
|
457
|
+
var thisObject = this;
|
458
|
+
var $this = $(thisObject);
|
459
|
+
var started = false;
|
460
|
+
var hasSwiped = false;
|
461
|
+
var originalCoord = {
|
462
|
+
x: 0,
|
463
|
+
y: 0
|
464
|
+
};
|
465
|
+
var finalCoord = {
|
466
|
+
x: 0,
|
467
|
+
y: 0
|
468
|
+
};
|
469
|
+
var startEvnt;
|
470
|
+
|
471
|
+
function touchStart(e) {
|
472
|
+
$this = $(e.currentTarget);
|
473
|
+
$this.data('callee1', touchStart);
|
474
|
+
originalCoord.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
475
|
+
originalCoord.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
476
|
+
finalCoord.x = originalCoord.x;
|
477
|
+
finalCoord.y = originalCoord.y;
|
478
|
+
|
479
|
+
started = true;
|
480
|
+
var origEvent = e.originalEvent;
|
481
|
+
startEvnt = {
|
482
|
+
'position': {
|
483
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX,
|
484
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
485
|
+
},
|
486
|
+
'offset': {
|
487
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
488
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
489
|
+
},
|
490
|
+
'time': Date.now(),
|
491
|
+
'target': e.target
|
492
|
+
};
|
493
|
+
}
|
494
|
+
|
495
|
+
function touchMove(e) {
|
496
|
+
$this = $(e.currentTarget);
|
497
|
+
$this.data('callee2', touchMove);
|
498
|
+
finalCoord.x = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageX : e.pageX;
|
499
|
+
finalCoord.y = (e.originalEvent.targetTouches) ? e.originalEvent.targetTouches[0].pageY : e.pageY;
|
500
|
+
|
501
|
+
var swipedir;
|
502
|
+
|
503
|
+
var ele_x_threshold = ($this.parent().data('xthreshold')) ? $this.parent().data('xthreshold') : $this.data('xthreshold');
|
504
|
+
var ele_y_threshold = ($this.parent().data('ythreshold')) ? $this.parent().data('ythreshold') : $this.data('ythreshold');
|
505
|
+
var h_threshold = (typeof ele_x_threshold !== 'undefined' && ele_x_threshold !== false && parseInt(ele_x_threshold)) ? parseInt(ele_x_threshold) : settings.swipe_h_threshold;
|
506
|
+
var v_threshold = (typeof ele_y_threshold !== 'undefined' && ele_y_threshold !== false && parseInt(ele_y_threshold)) ? parseInt(ele_y_threshold) : settings.swipe_v_threshold;
|
507
|
+
|
508
|
+
if (originalCoord.y > finalCoord.y && (originalCoord.y - finalCoord.y > v_threshold)) {
|
509
|
+
swipedir = 'swipeup';
|
510
|
+
}
|
511
|
+
if (originalCoord.x < finalCoord.x && (finalCoord.x - originalCoord.x > h_threshold)) {
|
512
|
+
swipedir = 'swiperight';
|
513
|
+
}
|
514
|
+
if (originalCoord.y < finalCoord.y && (finalCoord.y - originalCoord.y > v_threshold)) {
|
515
|
+
swipedir = 'swipedown';
|
516
|
+
}
|
517
|
+
if (originalCoord.x > finalCoord.x && (originalCoord.x - finalCoord.x > h_threshold)) {
|
518
|
+
swipedir = 'swipeleft';
|
519
|
+
}
|
520
|
+
if (swipedir != undefined && started) {
|
521
|
+
originalCoord.x = 0;
|
522
|
+
originalCoord.y = 0;
|
523
|
+
finalCoord.x = 0;
|
524
|
+
finalCoord.y = 0;
|
525
|
+
started = false;
|
526
|
+
|
527
|
+
var origEvent = e.originalEvent;
|
528
|
+
var endEvnt = {
|
529
|
+
'position': {
|
530
|
+
'x': (settings.touch_capable) ? origEvent.touches[0].screenX : e.screenX,
|
531
|
+
'y': (settings.touch_capable) ? origEvent.touches[0].screenY : e.screenY
|
532
|
+
},
|
533
|
+
'offset': {
|
534
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
535
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
536
|
+
},
|
537
|
+
'time': Date.now(),
|
538
|
+
'target': e.target
|
539
|
+
};
|
540
|
+
|
541
|
+
var xAmount = Math.abs(startEvnt.position.x - endEvnt.position.x);
|
542
|
+
var yAmount = Math.abs(startEvnt.position.y - endEvnt.position.y);
|
543
|
+
|
544
|
+
var touchData = {
|
545
|
+
'startEvnt': startEvnt,
|
546
|
+
'endEvnt': endEvnt,
|
547
|
+
'direction': swipedir.replace('swipe', ''),
|
548
|
+
'xAmount': xAmount,
|
549
|
+
'yAmount': yAmount,
|
550
|
+
'duration': endEvnt.time - startEvnt.time
|
551
|
+
};
|
552
|
+
|
553
|
+
hasSwiped = true;
|
554
|
+
$this.trigger('swipe', touchData).trigger(swipedir, touchData);
|
555
|
+
}
|
556
|
+
}
|
557
|
+
|
558
|
+
function touchEnd(e) {
|
559
|
+
$this = $(e.currentTarget);
|
560
|
+
var swipedir = '';
|
561
|
+
|
562
|
+
$this.data('callee3', touchEnd);
|
563
|
+
|
564
|
+
if (hasSwiped) {
|
565
|
+
var ele_x_threshold = $this.data('xthreshold');
|
566
|
+
var ele_y_threshold = $this.data('ythreshold');
|
567
|
+
var h_threshold = (typeof ele_x_threshold !== 'undefined' && ele_x_threshold !== false && parseInt(ele_x_threshold)) ? parseInt(ele_x_threshold) : settings.swipe_h_threshold;
|
568
|
+
var v_threshold = (typeof ele_y_threshold !== 'undefined' && ele_y_threshold !== false && parseInt(ele_y_threshold)) ? parseInt(ele_y_threshold) : settings.swipe_v_threshold;
|
569
|
+
var origEvent = e.originalEvent;
|
570
|
+
var endEvnt = {
|
571
|
+
'position': {
|
572
|
+
'x': (settings.touch_capable) ? origEvent.changedTouches[0].screenX : e.screenX,
|
573
|
+
'y': (settings.touch_capable) ? origEvent.changedTouches[0].screenY : e.screenY
|
574
|
+
},
|
575
|
+
'offset': {
|
576
|
+
'x': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageX - ($this.offset() ? $this.offset().left : 0)) : Math.round(e.pageX - ($this.offset() ? $this.offset().left : 0)),
|
577
|
+
'y': (settings.touch_capable) ? Math.round(origEvent.changedTouches[0].pageY - ($this.offset() ? $this.offset().top : 0)) : Math.round(e.pageY - ($this.offset() ? $this.offset().top : 0))
|
578
|
+
},
|
579
|
+
'time': Date.now(),
|
580
|
+
'target': e.target
|
581
|
+
};
|
582
|
+
|
583
|
+
if (startEvnt.position.y > endEvnt.position.y && (startEvnt.position.y - endEvnt.position.y > v_threshold)) {
|
584
|
+
swipedir = 'swipeup';
|
585
|
+
}
|
586
|
+
if (startEvnt.position.x < endEvnt.position.x && (endEvnt.position.x - startEvnt.position.x > h_threshold)) {
|
587
|
+
swipedir = 'swiperight';
|
588
|
+
}
|
589
|
+
if (startEvnt.position.y < endEvnt.position.y && (endEvnt.position.y - startEvnt.position.y > v_threshold)) {
|
590
|
+
swipedir = 'swipedown';
|
591
|
+
}
|
592
|
+
if (startEvnt.position.x > endEvnt.position.x && (startEvnt.position.x - endEvnt.position.x > h_threshold)) {
|
593
|
+
swipedir = 'swipeleft';
|
594
|
+
}
|
595
|
+
|
596
|
+
var xAmount = Math.abs(startEvnt.position.x - endEvnt.position.x);
|
597
|
+
var yAmount = Math.abs(startEvnt.position.y - endEvnt.position.y);
|
598
|
+
|
599
|
+
var touchData = {
|
600
|
+
'startEvnt': startEvnt,
|
601
|
+
'endEvnt': endEvnt,
|
602
|
+
'direction': swipedir.replace('swipe', ''),
|
603
|
+
'xAmount': xAmount,
|
604
|
+
'yAmount': yAmount,
|
605
|
+
'duration': endEvnt.time - startEvnt.time
|
606
|
+
};
|
607
|
+
|
608
|
+
$this.trigger('swipeend', touchData);
|
609
|
+
}
|
610
|
+
|
611
|
+
started = false;
|
612
|
+
hasSwiped = false;
|
613
|
+
}
|
614
|
+
|
615
|
+
$this.on(settings.startevent, touchStart);
|
616
|
+
$this.on(settings.moveevent, touchMove);
|
617
|
+
$this.on(settings.endevent, touchEnd);
|
618
|
+
},
|
619
|
+
remove: function () {
|
620
|
+
$(this).off(settings.startevent, $(this).data.callee1).off(settings.moveevent, $(this).data.callee2).off(settings.endevent, $(this).data.callee3);
|
621
|
+
}
|
622
|
+
};
|
623
|
+
|
624
|
+
$.event.special.scrollstart = {
|
625
|
+
setup: function () {
|
626
|
+
var thisObject = this;
|
627
|
+
var $this = $(thisObject);
|
628
|
+
var scrolling;
|
629
|
+
var timer;
|
630
|
+
|
631
|
+
function trigger(event, state) {
|
632
|
+
scrolling = state;
|
633
|
+
triggerCustomEvent(thisObject, scrolling ? 'scrollstart' : 'scrollend', event);
|
634
|
+
}
|
635
|
+
|
636
|
+
$this.on(settings.scrollevent, function scrollFunc(event) {
|
637
|
+
$this.data('callee', scrollFunc);
|
638
|
+
|
639
|
+
if (!scrolling) trigger(event, true);
|
640
|
+
|
641
|
+
clearTimeout(timer);
|
642
|
+
timer = setTimeout(function () {
|
643
|
+
trigger(event, false);
|
644
|
+
}, 50);
|
645
|
+
});
|
646
|
+
},
|
647
|
+
remove: function () {
|
648
|
+
$(this).off(settings.scrollevent, $(this).data.callee);
|
649
|
+
}
|
650
|
+
};
|
651
|
+
|
652
|
+
var win = $(window);
|
653
|
+
var special_event;
|
654
|
+
var get_orientation;
|
655
|
+
var last_orientation;
|
656
|
+
var initial_orientation_is_landscape;
|
657
|
+
var initial_orientation_is_default;
|
658
|
+
var portrait_map = {
|
659
|
+
'0': true,
|
660
|
+
'180': true
|
661
|
+
};
|
662
|
+
|
663
|
+
if (settings.orientation_support) {
|
664
|
+
var ww = window.innerWidth || win.width();
|
665
|
+
var wh = window.innerHeight || win.height();
|
666
|
+
var landscape_threshold = 50;
|
667
|
+
|
668
|
+
initial_orientation_is_landscape = ww > wh && (ww - wh) > landscape_threshold;
|
669
|
+
initial_orientation_is_default = portrait_map[window.orientation];
|
670
|
+
|
671
|
+
if ((initial_orientation_is_landscape && initial_orientation_is_default) || (!initial_orientation_is_landscape && !initial_orientation_is_default)) {
|
672
|
+
portrait_map = {
|
673
|
+
'-90': true,
|
674
|
+
'90': true
|
675
|
+
};
|
676
|
+
}
|
677
|
+
}
|
678
|
+
|
679
|
+
$.event.special.orientationchange = special_event = {
|
680
|
+
setup: function () {
|
681
|
+
if (settings.orientation_support) return false;
|
682
|
+
|
683
|
+
last_orientation = get_orientation();
|
684
|
+
|
685
|
+
win.on('throttledresize', handler);
|
686
|
+
return true;
|
687
|
+
},
|
688
|
+
teardown: function () {
|
689
|
+
if (settings.orientation_support) return false;
|
690
|
+
|
691
|
+
win.off('throttledresize', handler);
|
692
|
+
return true;
|
693
|
+
},
|
694
|
+
add: function (handleObj) {
|
695
|
+
var old_handler = handleObj.handler;
|
696
|
+
|
697
|
+
handleObj.handler = function (event) {
|
698
|
+
event.orientation = get_orientation();
|
699
|
+
return old_handler.apply(this, arguments);
|
700
|
+
};
|
701
|
+
}
|
702
|
+
};
|
703
|
+
|
704
|
+
function handler() {
|
705
|
+
var orientation = get_orientation();
|
706
|
+
|
707
|
+
if (orientation !== last_orientation) {
|
708
|
+
last_orientation = orientation;
|
709
|
+
win.trigger('orientationchange');
|
710
|
+
}
|
711
|
+
}
|
712
|
+
|
713
|
+
$.event.special.orientationchange.orientation = get_orientation = function () {
|
714
|
+
var isPortrait = true;
|
715
|
+
var elem = document.documentElement;
|
716
|
+
|
717
|
+
if (settings.orientation_support) {
|
718
|
+
isPortrait = portrait_map[window.orientation];
|
719
|
+
} else {
|
720
|
+
isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1;
|
721
|
+
}
|
722
|
+
|
723
|
+
return isPortrait ? 'portrait' : 'landscape';
|
724
|
+
};
|
725
|
+
|
726
|
+
$.event.special.throttledresize = {
|
727
|
+
setup: function () {
|
728
|
+
$(this).on('resize', throttle_handler);
|
729
|
+
},
|
730
|
+
teardown: function () {
|
731
|
+
$(this).off('resize', throttle_handler);
|
732
|
+
}
|
733
|
+
};
|
734
|
+
|
735
|
+
var throttle = 250;
|
736
|
+
var throttle_handler = function () {
|
737
|
+
curr = Date.now();
|
738
|
+
diff = curr - lastCall;
|
739
|
+
|
740
|
+
if (diff >= throttle) {
|
741
|
+
lastCall = curr;
|
742
|
+
$(this).trigger('throttledresize');
|
743
|
+
} else {
|
744
|
+
if (heldCall) window.clearTimeout(heldCall);
|
745
|
+
|
746
|
+
heldCall = window.setTimeout(handler, throttle - diff);
|
747
|
+
}
|
748
|
+
};
|
749
|
+
var lastCall = 0;
|
750
|
+
var heldCall;
|
751
|
+
var curr;
|
752
|
+
var diff;
|
753
|
+
|
754
|
+
function triggerCustomEvent(obj, eventType, event, touchData) {
|
755
|
+
var originalType = event.type;
|
756
|
+
event.type = eventType;
|
757
|
+
|
758
|
+
$.event.dispatch.call(obj, event, touchData);
|
759
|
+
event.type = originalType;
|
760
|
+
}
|
761
|
+
|
762
|
+
$.each({
|
763
|
+
scrollend: 'scrollstart',
|
764
|
+
swipeup: 'swipe',
|
765
|
+
swiperight: 'swipe',
|
766
|
+
swipedown: 'swipe',
|
767
|
+
swipeleft: 'swipe',
|
768
|
+
swipeend: 'swipe',
|
769
|
+
tap2: 'tap'
|
770
|
+
}, function (e, srcE) {
|
771
|
+
$.event.special[e] = {
|
772
|
+
setup: function () {
|
773
|
+
$(this).on(srcE, $.noop);
|
774
|
+
}
|
775
|
+
};
|
776
|
+
});
|
777
|
+
|
778
|
+
}(jQuery));
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 15.0.
|
4
|
+
version: 15.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -496,6 +496,7 @@ files:
|
|
496
496
|
- vendor/assets/javascripts/extensions/_copy.js
|
497
497
|
- vendor/assets/javascripts/extensions/_funnel.js
|
498
498
|
- vendor/assets/javascripts/extensions/_map.js
|
499
|
+
- vendor/assets/javascripts/extensions/_mobile_events.js
|
499
500
|
- vendor/assets/javascripts/extensions/_push.js
|
500
501
|
- vendor/assets/javascripts/extensions/_wysiwyg.js
|
501
502
|
- vendor/assets/javascripts/extensions/_xpull.js
|