update Event.js library to latest version
https://github.com/mudcube/Event.js
This commit is contained in:
parent
59028c871f
commit
b6092ff039
1 changed files with 70 additions and 33 deletions
|
@ -181,7 +181,7 @@
|
||||||
});
|
});
|
||||||
// "Swipe" :: fingers, minFingers, maxFingers, snap, threshold.
|
// "Swipe" :: fingers, minFingers, maxFingers, snap, threshold.
|
||||||
Event.add(window, "swipe", function(event, self) {
|
Event.add(window, "swipe", function(event, self) {
|
||||||
console.log(self.gesture, self.fingers, self.velocity, self.angle);
|
console.log(self.gesture, self.fingers, self.velocity, self.angle, self.start, self.x, self.y);
|
||||||
});
|
});
|
||||||
// "Tap" :: fingers, minFingers, maxFingers, timeout.
|
// "Tap" :: fingers, minFingers, maxFingers, timeout.
|
||||||
Event.add(window, "tap", function(event, self) {
|
Event.add(window, "tap", function(event, self) {
|
||||||
|
@ -315,10 +315,11 @@ var eventManager = function(target, type, listener, configure, trigger, fromOver
|
||||||
target = target[0];
|
target = target[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle multiple targets.
|
/// Handle multiple targets.
|
||||||
var event;
|
var event;
|
||||||
var events = {};
|
var events = {};
|
||||||
if (target.length > 0) {
|
if (target.length > 0 && target !== window) {
|
||||||
for (var n0 = 0, length0 = target.length; n0 < length0; n0 ++) {
|
for (var n0 = 0, length0 = target.length; n0 < length0; n0 ++) {
|
||||||
event = eventManager(target[n0], type, listener, clone(configure), trigger);
|
event = eventManager(target[n0], type, listener, clone(configure), trigger);
|
||||||
if (event) events[n0] = event;
|
if (event) events[n0] = event;
|
||||||
|
@ -491,12 +492,15 @@ root.createPointerEvent = function (event, self, preventRecord) {
|
||||||
var newEvent = document.createEvent("Event");
|
var newEvent = document.createEvent("Event");
|
||||||
newEvent.initEvent(eventName, true, true);
|
newEvent.initEvent(eventName, true, true);
|
||||||
newEvent.originalEvent = event;
|
newEvent.originalEvent = event;
|
||||||
for (var k in self) newEvent[k] = self[k];
|
for (var k in self) {
|
||||||
|
if (k === "target") continue;
|
||||||
|
newEvent[k] = self[k];
|
||||||
|
}
|
||||||
target.dispatchEvent(newEvent);
|
target.dispatchEvent(newEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Allows *EventListener to use custom event proxies.
|
/// Allows *EventListener to use custom event proxies.
|
||||||
if (root.modifyEventListener) (function() {
|
if (root.modifyEventListener && window.HTMLElement) (function() {
|
||||||
var augmentEventListener = function(proto) {
|
var augmentEventListener = function(proto) {
|
||||||
var recall = function(trigger) { // overwrite native *EventListener's
|
var recall = function(trigger) { // overwrite native *EventListener's
|
||||||
var handle = trigger + "EventListener";
|
var handle = trigger + "EventListener";
|
||||||
|
@ -594,6 +598,7 @@ root.pointerSetup = function(conf, self) {
|
||||||
conf.minFingers = conf.minFingers || conf.fingers || 1; // Minimum required fingers.
|
conf.minFingers = conf.minFingers || conf.fingers || 1; // Minimum required fingers.
|
||||||
conf.maxFingers = conf.maxFingers || conf.fingers || Infinity; // Maximum allowed fingers.
|
conf.maxFingers = conf.maxFingers || conf.fingers || Infinity; // Maximum allowed fingers.
|
||||||
conf.position = conf.position || "relative"; // Determines what coordinate system points are returned.
|
conf.position = conf.position || "relative"; // Determines what coordinate system points are returned.
|
||||||
|
delete conf.fingers; //-
|
||||||
/// Convenience data.
|
/// Convenience data.
|
||||||
self = self || {};
|
self = self || {};
|
||||||
self.gesture = conf.gesture;
|
self.gesture = conf.gesture;
|
||||||
|
@ -604,25 +609,36 @@ root.pointerSetup = function(conf, self) {
|
||||||
/// Convenience commands.
|
/// Convenience commands.
|
||||||
var fingers = 0;
|
var fingers = 0;
|
||||||
var type = self.gesture.indexOf("pointer") === 0 && Event.modifyEventListener ? "pointer" : "mouse";
|
var type = self.gesture.indexOf("pointer") === 0 && Event.modifyEventListener ? "pointer" : "mouse";
|
||||||
|
self.listener = conf.listener;
|
||||||
self.proxy = function(listener) {
|
self.proxy = function(listener) {
|
||||||
self.defaultListener = conf.listener;
|
self.defaultListener = conf.listener;
|
||||||
conf.listener = listener;
|
conf.listener = listener;
|
||||||
listener(conf.event, self);
|
listener(conf.event, self);
|
||||||
};
|
};
|
||||||
|
self.attach = function() {
|
||||||
|
if (conf.onPointerDown) Event.add(conf.target, type + "down", conf.onPointerDown);
|
||||||
|
if (conf.onPointerMove) Event.add(conf.doc, type + "move", conf.onPointerMove);
|
||||||
|
if (conf.onPointerUp) Event.add(conf.doc, type + "up", conf.onPointerUp);
|
||||||
|
};
|
||||||
self.remove = function() {
|
self.remove = function() {
|
||||||
if (conf.onPointerDown) Event.remove(conf.target, type + "down", conf.onPointerDown);
|
if (conf.onPointerDown) Event.remove(conf.target, type + "down", conf.onPointerDown);
|
||||||
if (conf.onPointerMove) Event.remove(conf.doc, type + "move", conf.onPointerMove);
|
if (conf.onPointerMove) Event.remove(conf.doc, type + "move", conf.onPointerMove);
|
||||||
if (conf.onPointerUp) Event.remove(conf.doc, type + "up", conf.onPointerUp);
|
if (conf.onPointerUp) Event.remove(conf.doc, type + "up", conf.onPointerUp);
|
||||||
|
self.reset();
|
||||||
|
};
|
||||||
|
self.pause = function(opt) {
|
||||||
|
if (conf.onPointerMove && (!opt || opt.move)) Event.remove(conf.doc, type + "move", conf.onPointerMove);
|
||||||
|
if (conf.onPointerUp && (!opt || opt.up)) Event.remove(conf.doc, type + "up", conf.onPointerUp);
|
||||||
|
fingers = conf.fingers;
|
||||||
|
conf.fingers = 0;
|
||||||
};
|
};
|
||||||
self.resume = function(opt) {
|
self.resume = function(opt) {
|
||||||
if (conf.onPointerMove && (!opt || opt.move)) Event.add(conf.doc, type + "move", conf.onPointerMove);
|
if (conf.onPointerMove && (!opt || opt.move)) Event.add(conf.doc, type + "move", conf.onPointerMove);
|
||||||
if (conf.onPointerUp && (!opt || opt.move)) Event.add(conf.doc, type + "up", conf.onPointerUp);
|
if (conf.onPointerUp && (!opt || opt.up)) Event.add(conf.doc, type + "up", conf.onPointerUp);
|
||||||
conf.fingers = fingers;
|
conf.fingers = fingers;
|
||||||
};
|
};
|
||||||
self.pause = function(opt) {
|
self.reset = function() {
|
||||||
fingers = conf.fingers;
|
delete conf.tracker;
|
||||||
if (conf.onPointerMove && (!opt || opt.move)) Event.remove(conf.doc, type + "move", conf.onPointerMove);
|
|
||||||
if (conf.onPointerUp && (!opt || opt.up)) Event.remove(conf.doc, type + "up", conf.onPointerUp);
|
|
||||||
conf.fingers = 0;
|
conf.fingers = 0;
|
||||||
};
|
};
|
||||||
///
|
///
|
||||||
|
@ -737,37 +753,48 @@ root.pointerEnd = function(event, self, conf, onPointerUp) {
|
||||||
var exists = {};
|
var exists = {};
|
||||||
for (var i = 0; i < length; i ++) {
|
for (var i = 0; i < length; i ++) {
|
||||||
var touch = touches[i];
|
var touch = touches[i];
|
||||||
exists[touch.identifier || Infinity] = true;
|
var sid = touch.identifier;
|
||||||
|
exists[sid || Infinity] = true;
|
||||||
}
|
}
|
||||||
for (var key in conf.tracker) {
|
for (var sid in conf.tracker) {
|
||||||
var track = conf.tracker[key];
|
var track = conf.tracker[sid];
|
||||||
if (!exists[key] && !track.up) {
|
if (exists[sid] || track.up) continue;
|
||||||
if (onPointerUp) { // add changedTouches to mouse.
|
if (onPointerUp) { // add changedTouches to mouse.
|
||||||
event.changedTouches = [{
|
onPointerUp({
|
||||||
|
pageX: track.pageX,
|
||||||
|
pageY: track.pageY,
|
||||||
|
changedTouches: [{
|
||||||
pageX: track.pageX,
|
pageX: track.pageX,
|
||||||
pageY: track.pageY,
|
pageY: track.pageY,
|
||||||
identifier: key === "Infinity" ? Infinity : key
|
identifier: sid === "Infinity" ? Infinity : sid
|
||||||
}];
|
}]
|
||||||
onPointerUp(event, "up");
|
}, "up");
|
||||||
}
|
|
||||||
conf.tracker[key].up = true;
|
|
||||||
conf.fingers --;
|
|
||||||
}
|
}
|
||||||
|
track.up = true;
|
||||||
|
conf.fingers --;
|
||||||
}
|
}
|
||||||
/*
|
/* // This should work but fails in Safari on iOS4 so not using it.
|
||||||
// This should work but fails in Safari on iOS4 so not using it.
|
|
||||||
var touches = event.changedTouches || root.getCoords(event);
|
var touches = event.changedTouches || root.getCoords(event);
|
||||||
var length = touches.length;
|
var length = touches.length;
|
||||||
// Record changed touches have ended (this should work).
|
// Record changed touches have ended (this should work).
|
||||||
for (var i = 0; i < length; i ++) {
|
for (var i = 0; i < length; i ++) {
|
||||||
var touch = touches[i];
|
var touch = touches[i];
|
||||||
var sid = touch.identifier || Infinity;
|
var sid = touch.identifier || Infinity;
|
||||||
if (conf.tracker[sid]) {
|
var track = conf.tracker[sid];
|
||||||
conf.tracker[sid].up = true;
|
if (track && !track.up) {
|
||||||
|
if (onPointerUp) { // add changedTouches to mouse.
|
||||||
|
onPointerUp({
|
||||||
|
changedTouches: [{
|
||||||
|
pageX: track.pageX,
|
||||||
|
pageY: track.pageY,
|
||||||
|
identifier: sid === "Infinity" ? Infinity : sid
|
||||||
|
}]
|
||||||
|
}, "up");
|
||||||
|
}
|
||||||
|
track.up = true;
|
||||||
conf.fingers --;
|
conf.fingers --;
|
||||||
}
|
}
|
||||||
}
|
} */
|
||||||
*/
|
|
||||||
// Wait for all fingers to be released.
|
// Wait for all fingers to be released.
|
||||||
if (conf.fingers !== 0) return false;
|
if (conf.fingers !== 0) return false;
|
||||||
// Record total number of fingers gesture used.
|
// Record total number of fingers gesture used.
|
||||||
|
@ -1116,6 +1143,7 @@ root.dragElement = function(that, event) {
|
||||||
listener: function(event, self) {
|
listener: function(event, self) {
|
||||||
that.style.left = self.x + "px";
|
that.style.left = self.x + "px";
|
||||||
that.style.top = self.y + "px";
|
that.style.top = self.y + "px";
|
||||||
|
Event.prevent(event);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -1124,13 +1152,16 @@ root.drag = function(conf) {
|
||||||
conf.gesture = "drag";
|
conf.gesture = "drag";
|
||||||
conf.onPointerDown = function (event) {
|
conf.onPointerDown = function (event) {
|
||||||
if (root.pointerStart(event, self, conf)) {
|
if (root.pointerStart(event, self, conf)) {
|
||||||
Event.add(conf.doc, "mousemove", conf.onPointerMove);
|
if (!conf.monitor) {
|
||||||
Event.add(conf.doc, "mouseup", conf.onPointerUp);
|
Event.add(conf.doc, "mousemove", conf.onPointerMove);
|
||||||
|
Event.add(conf.doc, "mouseup", conf.onPointerUp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Process event listener.
|
// Process event listener.
|
||||||
conf.onPointerMove(event, "down");
|
conf.onPointerMove(event, "down");
|
||||||
};
|
};
|
||||||
conf.onPointerMove = function (event, state) {
|
conf.onPointerMove = function (event, state) {
|
||||||
|
if (!conf.tracker) return conf.onPointerDown(event);
|
||||||
var bbox = conf.bbox;
|
var bbox = conf.bbox;
|
||||||
var touches = event.changedTouches || root.getCoords(event);
|
var touches = event.changedTouches || root.getCoords(event);
|
||||||
var length = touches.length;
|
var length = touches.length;
|
||||||
|
@ -1146,7 +1177,7 @@ root.drag = function(conf) {
|
||||||
self.state = state || "move";
|
self.state = state || "move";
|
||||||
self.identifier = identifier;
|
self.identifier = identifier;
|
||||||
self.start = pt.start;
|
self.start = pt.start;
|
||||||
self.fingers = 1; // TODO(mud): option to track as single set, or individually.
|
self.fingers = conf.fingers;
|
||||||
if (conf.position === "relative") {
|
if (conf.position === "relative") {
|
||||||
self.x = (pt.pageX + bbox.scrollLeft - pt.offsetX) * bbox.scaleX;
|
self.x = (pt.pageX + bbox.scrollLeft - pt.offsetX) * bbox.scaleX;
|
||||||
self.y = (pt.pageY + bbox.scrollTop - pt.offsetY) * bbox.scaleY;
|
self.y = (pt.pageY + bbox.scrollTop - pt.offsetY) * bbox.scaleY;
|
||||||
|
@ -1161,8 +1192,10 @@ root.drag = function(conf) {
|
||||||
conf.onPointerUp = function(event) {
|
conf.onPointerUp = function(event) {
|
||||||
// Remove tracking for touch.
|
// Remove tracking for touch.
|
||||||
if (root.pointerEnd(event, self, conf, conf.onPointerMove)) {
|
if (root.pointerEnd(event, self, conf, conf.onPointerMove)) {
|
||||||
Event.remove(conf.doc, "mousemove", conf.onPointerMove);
|
if (!conf.monitor) {
|
||||||
Event.remove(conf.doc, "mouseup", conf.onPointerUp);
|
Event.remove(conf.doc, "mousemove", conf.onPointerMove);
|
||||||
|
Event.remove(conf.doc, "mouseup", conf.onPointerUp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// Generate maintenance commands, and other configurations.
|
// Generate maintenance commands, and other configurations.
|
||||||
|
@ -1170,8 +1203,12 @@ root.drag = function(conf) {
|
||||||
// Attach events.
|
// Attach events.
|
||||||
if (conf.event) {
|
if (conf.event) {
|
||||||
conf.onPointerDown(conf.event);
|
conf.onPointerDown(conf.event);
|
||||||
} else {
|
} else { //
|
||||||
Event.add(conf.target, "mousedown", conf.onPointerDown);
|
Event.add(conf.target, "mousedown", conf.onPointerDown);
|
||||||
|
if (conf.monitor) {
|
||||||
|
Event.add(conf.doc, "mousemove", conf.onPointerMove);
|
||||||
|
Event.add(conf.doc, "mouseup", conf.onPointerUp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Return this object.
|
// Return this object.
|
||||||
return self;
|
return self;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue