UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

77 lines (60 loc) 1.71 kB
"use strict"; var eventUtils = require("./utils"), Emitter = require("./core/emitter"), registerEmitter = require("./core/emitter_registrator"), abs = Math.abs; var HOLD_EVENT_NAME = "dxhold", HOLD_TIMEOUT = 750, TOUCH_BOUNDARY = 5; var HoldEmitter = Emitter.inherit({ start: function start(e) { this._startEventData = eventUtils.eventData(e); this._startTimer(e); }, _startTimer: function _startTimer(e) { var holdTimeout = "timeout" in this ? this.timeout : HOLD_TIMEOUT; this._holdTimer = setTimeout(function () { this._requestAccept(e); this._fireEvent(HOLD_EVENT_NAME, e, { target: e.target }); this._forgetAccept(); }.bind(this), holdTimeout); }, move: function move(e) { if (this._touchWasMoved(e)) { this._cancel(e); } }, _touchWasMoved: function _touchWasMoved(e) { var delta = eventUtils.eventDelta(this._startEventData, eventUtils.eventData(e)); return abs(delta.x) > TOUCH_BOUNDARY || abs(delta.y) > TOUCH_BOUNDARY; }, end: function end() { this._stopTimer(); }, _stopTimer: function _stopTimer() { clearTimeout(this._holdTimer); }, cancel: function cancel() { this._stopTimer(); }, dispose: function dispose() { this._stopTimer(); } }); /** * @name ui events.dxhold * @publicName dxhold * @type eventType * @type_function_param1 event:event * @module events/hold */ registerEmitter({ emitter: HoldEmitter, bubble: true, events: [HOLD_EVENT_NAME] }); module.exports = { name: HOLD_EVENT_NAME };