| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * DevExtreme (events/double_click.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 eventsEngine = require("../events/core/events_engine");
- var domUtils = require("../core/utils/dom");
- var domAdapter = require("../core/dom_adapter");
- var Class = require("../core/class");
- var registerEvent = require("./core/event_registrator");
- var clickEvent = require("./click");
- var eventUtils = require("./utils");
- var DBLCLICK_EVENT_NAME = "dxdblclick";
- var DBLCLICK_NAMESPACE = "dxDblClick";
- var NAMESPACED_CLICK_EVENT = eventUtils.addNamespace(clickEvent.name, DBLCLICK_NAMESPACE);
- var DBLCLICK_TIMEOUT = 300;
- var DblClick = Class.inherit({
- ctor: function() {
- this._handlerCount = 0;
- this._forgetLastClick()
- },
- _forgetLastClick: function() {
- this._firstClickTarget = null;
- this._lastClickTimeStamp = -DBLCLICK_TIMEOUT
- },
- add: function() {
- if (this._handlerCount <= 0) {
- eventsEngine.on(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))
- }
- this._handlerCount++
- },
- _clickHandler: function(e) {
- var timeStamp = e.timeStamp || Date.now();
- if (timeStamp - this._lastClickTimeStamp < DBLCLICK_TIMEOUT) {
- eventUtils.fireEvent({
- type: DBLCLICK_EVENT_NAME,
- target: domUtils.closestCommonParent(this._firstClickTarget, e.target),
- originalEvent: e
- });
- this._forgetLastClick()
- } else {
- this._firstClickTarget = e.target;
- this._lastClickTimeStamp = timeStamp
- }
- },
- remove: function() {
- this._handlerCount--;
- if (this._handlerCount <= 0) {
- this._forgetLastClick();
- eventsEngine.off(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT)
- }
- }
- });
- registerEvent(DBLCLICK_EVENT_NAME, new DblClick);
- exports.name = DBLCLICK_EVENT_NAME;
|