devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
57 lines (46 loc) • 1.79 kB
JavaScript
var BaseStrategy = require("./base"),
Observer = require("./observer"),
windowUtils = require("../../core/utils/window"),
extend = require("../../core/utils/extend").extend,
onlyMSPointerSupport = !windowUtils.hasProperty("PointerEvent") && windowUtils.hasProperty("MSPointerEvent");
var eventMap = {
"dxpointerdown": onlyMSPointerSupport ? "MSPointerDown" : "pointerdown",
"dxpointermove": onlyMSPointerSupport ? "MSPointerMove" : "pointermove",
"dxpointerup": onlyMSPointerSupport ? "MSPointerUp" : "pointerup",
"dxpointercancel": onlyMSPointerSupport ? "MSPointerCancel" : "pointercancel",
"dxpointerover": onlyMSPointerSupport ? "MSPointerOver" : "pointerover",
"dxpointerout": onlyMSPointerSupport ? "MSPointerOut" : "pointerout",
"dxpointerenter": onlyMSPointerSupport ? "mouseenter" : "pointerenter",
"dxpointerleave": onlyMSPointerSupport ? "mouseleave" : "pointerleave"
};
var observer;
var activated = false;
var activateStrategy = function activateStrategy() {
if (activated) {
return;
}
observer = new Observer(eventMap, function (a, b) {
return a.pointerId === b.pointerId;
}, function (e) {
if (e.isPrimary) observer.reset();
});
activated = true;
};
var MsPointerStrategy = BaseStrategy.inherit({
ctor: function ctor() {
this.callBase.apply(this, arguments);
activateStrategy();
},
_fireEvent: function _fireEvent(args) {
return this.callBase(extend({
pointers: observer.pointers(),
pointerId: args.originalEvent.pointerId
}, args));
}
});
MsPointerStrategy.map = eventMap;
MsPointerStrategy.resetObserver = function () {
observer.reset();
};
module.exports = MsPointerStrategy;
;