UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

64 lines (63 loc) 1.98 kB
/** * DevExtreme (esm/events/pointer/touch.js) * Version: 21.1.4 * Build date: Mon Jun 21 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import devices from "../../core/devices"; import { extend } from "../../core/utils/extend"; import { each } from "../../core/utils/iterator"; import BaseStrategy from "./base"; var eventMap = { dxpointerdown: "touchstart", dxpointermove: "touchmove", dxpointerup: "touchend", dxpointercancel: "touchcancel", dxpointerover: "", dxpointerout: "", dxpointerenter: "", dxpointerleave: "" }; var normalizeTouchEvent = function(e) { var pointers = []; each(e.touches, (function(_, touch) { pointers.push(extend({ pointerId: touch.identifier }, touch)) })); return { pointers: pointers, pointerId: e.changedTouches[0].identifier } }; var skipTouchWithSameIdentifier = function(pointerEvent) { return "ios" === devices.real().platform && ("dxpointerdown" === pointerEvent || "dxpointerup" === pointerEvent) }; var TouchStrategy = BaseStrategy.inherit({ ctor: function() { this.callBase.apply(this, arguments); this._pointerId = 0 }, _handler: function(e) { if (skipTouchWithSameIdentifier(this._eventName)) { var touch = e.changedTouches[0]; if (this._pointerId === touch.identifier && 0 !== this._pointerId) { return } this._pointerId = touch.identifier } return this.callBase.apply(this, arguments) }, _fireEvent: function(args) { return this.callBase(extend(normalizeTouchEvent(args.originalEvent), args)) } }); TouchStrategy.map = eventMap; TouchStrategy.normalize = normalizeTouchEvent; export default TouchStrategy;