devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
68 lines (52 loc) • 1.78 kB
JavaScript
var each = require("../../core/utils/iterator").each,
readyCallbacks = require("../../core/utils/ready_callbacks"),
domAdapter = require("../../core/dom_adapter");
var addEventsListener = function addEventsListener(events, handler) {
readyCallbacks.add(function () {
events.split(" ").forEach(function (event) {
domAdapter.listen(domAdapter.getDocument(), event, handler, true);
});
});
};
var Observer = function Observer(eventMap, pointerEquals, onPointerAdding) {
onPointerAdding = onPointerAdding || function () {};
var pointers = [];
var getPointerIndex = function getPointerIndex(e) {
var index = -1;
each(pointers, function (i, pointer) {
if (!pointerEquals(e, pointer)) {
return true;
}
index = i;
return false;
});
return index;
};
var addPointer = function addPointer(e) {
if (getPointerIndex(e) === -1) {
onPointerAdding(e);
pointers.push(e);
}
};
var removePointer = function removePointer(e) {
var index = getPointerIndex(e);
if (index > -1) {
pointers.splice(index, 1);
}
};
var updatePointer = function updatePointer(e) {
pointers[getPointerIndex(e)] = e;
};
addEventsListener(eventMap["dxpointerdown"], addPointer);
addEventsListener(eventMap["dxpointermove"], updatePointer);
addEventsListener(eventMap["dxpointerup"], removePointer);
addEventsListener(eventMap["dxpointercancel"], removePointer);
this.pointers = function () {
return pointers;
};
this.reset = function () {
pointers = [];
};
};
module.exports = Observer;
;