devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
122 lines (113 loc) • 3.41 kB
JavaScript
var support = require("../core/utils/support"),
each = require("../core/utils/iterator").each,
devices = require("../core/devices"),
registerEvent = require("./core/event_registrator"),
domAdapter = require("../core/dom_adapter"),
TouchStrategy = require("./pointer/touch"),
MsPointerStrategy = require("./pointer/mspointer"),
MouseStrategy = require("./pointer/mouse"),
MouseAndTouchStrategy = require("./pointer/mouse_and_touch");
/**
* @name ui events.dxpointerdown
* @publicName dxpointerdown
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointermove
* @publicName dxpointermove
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointerup
* @publicName dxpointerup
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointercancel
* @publicName dxpointercancel
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointerover
* @publicName dxpointerover
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointerout
* @publicName dxpointerout
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointerenter
* @publicName dxpointerenter
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
/**
* @name ui events.dxpointerleave
* @publicName dxpointerleave
* @type eventType
* @type_function_param1 event:event
* @type_function_param1_field1 pointerType:string
* @module events/pointer
*/
var EventStrategy = function () {
if (support.pointerEvents) {
return MsPointerStrategy;
}
var device = devices.real();
if (support.touch && !(device.tablet || device.phone)) {
return MouseAndTouchStrategy;
}
if (support.touch) {
return TouchStrategy;
}
return MouseStrategy;
}();
each(EventStrategy.map, function (pointerEvent, originalEvents) {
registerEvent(pointerEvent, new EventStrategy(pointerEvent, originalEvents));
});
if (support.touch) {
each([TouchStrategy.map["dxpointerdown"], TouchStrategy.map["dxpointermove"]], function (_, eventName) {
registerEvent(eventName, {
setup: function setup(element, data, namespaces, handler) {
if (namespaces.indexOf(TouchStrategy.POINTER_EVENTS_NAMESPACE) > -1) {
domAdapter.listen(element, eventName, handler, { passive: false });
return true;
}
return false;
}
});
});
}
module.exports = {
down: "dxpointerdown",
up: "dxpointerup",
move: "dxpointermove",
cancel: "dxpointercancel",
enter: "dxpointerenter",
leave: "dxpointerleave",
over: "dxpointerover",
out: "dxpointerout"
};
;