UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

86 lines (65 loc) 2.23 kB
"use strict"; var extend = require("../../core/utils/extend").extend, BaseStrategy = require("./base"), MouseStrategy = require("./mouse"), TouchStrategy = require("./touch"), eventUtils = require("../utils"); var eventMap = { "dxpointerdown": "touchstart mousedown", "dxpointermove": "touchmove mousemove", "dxpointerup": "touchend mouseup", "dxpointercancel": "touchcancel", "dxpointerover": "mouseover", "dxpointerout": "mouseout", "dxpointerenter": "mouseenter", "dxpointerleave": "mouseleave" }; var activated = false; var activateStrategy = function activateStrategy() { if (activated) { return; } MouseStrategy.activate(); activated = true; }; var MouseAndTouchStrategy = BaseStrategy.inherit({ EVENT_LOCK_TIMEOUT: 100, ctor: function ctor() { this.callBase.apply(this, arguments); activateStrategy(); }, _handler: function _handler(e) { var isMouseEvent = eventUtils.isMouseEvent(e); if (!isMouseEvent) { this._skipNextEvents = true; } if (isMouseEvent && this._mouseLocked) { return; } if (isMouseEvent && this._skipNextEvents) { this._skipNextEvents = false; this._mouseLocked = true; clearTimeout(this._unlockMouseTimer); var that = this; this._unlockMouseTimer = setTimeout(function () { that._mouseLocked = false; }, this.EVENT_LOCK_TIMEOUT); return; } return this.callBase(e); }, _fireEvent: function _fireEvent(args) { var isMouseEvent = eventUtils.isMouseEvent(args.originalEvent), normalizer = isMouseEvent ? MouseStrategy.normalize : TouchStrategy.normalize; return this.callBase(extend(normalizer(args.originalEvent), args)); }, dispose: function dispose() { this.callBase(); this._skipNextEvents = false; this._mouseLocked = false; clearTimeout(this._unlockMouseTimer); } }); MouseAndTouchStrategy.map = eventMap; MouseAndTouchStrategy.resetObserver = MouseStrategy.resetObserver; module.exports = MouseAndTouchStrategy;