UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

66 lines (65 loc) 1.72 kB
/** * DevExtreme (esm/__internal/events/m_hold.js) * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import Emitter from "../../common/core/events/core/emitter"; import registerEmitter from "../../common/core/events/core/emitter_registrator"; import { eventData, eventDelta } from "../../common/core/events/utils/index"; const { abs: abs } = Math; const HOLD_EVENT_NAME = "dxhold"; const HOLD_TIMEOUT = 750; const TOUCH_BOUNDARY = 5; const HoldEmitter = Emitter.inherit({ start(e) { this._startEventData = eventData(e); this._startTimer(e) }, _startTimer(e) { const holdTimeout = "timeout" in this ? this.timeout : 750; this._holdTimer = setTimeout((() => { this._requestAccept(e); this._fireEvent("dxhold", e, { target: e.target }); this._forgetAccept() }), holdTimeout) }, move(e) { if (this._touchWasMoved(e)) { this._cancel(e) } }, _touchWasMoved(e) { const delta = eventDelta(this._startEventData, eventData(e)); return abs(delta.x) > 5 || abs(delta.y) > 5 }, end() { this._stopTimer() }, _stopTimer() { clearTimeout(this._holdTimer) }, cancel() { this._stopTimer() }, dispose() { this._stopTimer() } }); registerEmitter({ emitter: HoldEmitter, bubble: true, events: ["dxhold"] }); export default { name: "dxhold" };