| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- * DevExtreme (events/pointer/mouse_and_touch.js)
- * Version: 19.1.16
- * Build date: Tue Oct 18 2022
- *
- * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
- */
- "use strict";
- var extend = require("../../core/utils/extend").extend;
- var BaseStrategy = require("./base");
- var MouseStrategy = require("./mouse");
- var TouchStrategy = require("./touch");
- var 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() {
- if (activated) {
- return
- }
- MouseStrategy.activate();
- activated = true
- };
- var MouseAndTouchStrategy = BaseStrategy.inherit({
- EVENT_LOCK_TIMEOUT: 100,
- ctor: function() {
- this.callBase.apply(this, arguments);
- activateStrategy()
- },
- _handler: function(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(args) {
- var isMouseEvent = eventUtils.isMouseEvent(args.originalEvent);
- var normalizer = isMouseEvent ? MouseStrategy.normalize : TouchStrategy.normalize;
- return this.callBase(extend(normalizer(args.originalEvent), args))
- },
- dispose: function() {
- this.callBase();
- this._skipNextEvents = false;
- this._mouseLocked = false;
- clearTimeout(this._unlockMouseTimer)
- }
- });
- MouseAndTouchStrategy.map = eventMap;
- MouseAndTouchStrategy.resetObserver = MouseStrategy.resetObserver;
- module.exports = MouseAndTouchStrategy;
|