devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
104 lines (95 loc) • 3.43 kB
JavaScript
/**
* DevExtreme (cjs/viz/components/tracker.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/
*/
;
exports.Tracker = Tracker;
var _index = require("../../common/core/events/utils/index");
var _dom_adapter = _interopRequireDefault(require("../../core/dom_adapter"));
var _click = require("../../common/core/events/click");
var _pointer = _interopRequireDefault(require("../../common/core/events/pointer"));
var _events_engine = _interopRequireDefault(require("../../common/core/events/core/events_engine"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const downPointerEventName = _pointer.default.down;
const movePointerEventName = _pointer.default.move;
function Tracker(parameters) {
this._initHandlers(parameters)
}
Tracker.prototype = {
constructor: Tracker,
_initHandlers: function(parameters) {
const document = _dom_adapter.default.getDocument();
parameters.getCoords = function(e) {
const data = (0, _index.eventData)(e);
const offset = parameters.widget._renderer.getRootOffset();
return [data.x - offset.left, data.y - offset.top]
};
parameters.root.on(_click.name, clickHandler);
parameters.root.on(downPointerEventName, downHandler);
_events_engine.default.on(document, downPointerEventName, downHandler);
_events_engine.default.on(document, movePointerEventName, moveHandler);
this._disposeHandlers = function() {
parameters.root.off(_click.name, clickHandler);
parameters.root.off(downPointerEventName, downHandler);
_events_engine.default.off(document, downPointerEventName, downHandler);
_events_engine.default.off(document, movePointerEventName, moveHandler)
};
function clickHandler(e) {
processClick(e, parameters)
}
let isRootDown = false;
function downHandler(e) {
if (isRootDown) {
isRootDown = false
} else {
if (void 0 !== parameters.getData(e)) {
isRootDown = true
}
moveHandler(e)
}
}
function moveHandler(e) {
processHover(e, parameters);
parameters.widget._getOption("tooltip").enabled && processTooltip(e, parameters)
}
},
dispose: function() {
this._disposeHandlers()
}
};
function processClick(e, params) {
const id = params.getData(e);
if (id >= 0) {
params.click({
node: params.getNode(id),
coords: params.getCoords(e),
event: e
})
}
}
function processHover(e, params) {
const id = params.getData(e);
if (id >= 0) {
params.getNode(id).setHover()
} else {
params.widget.clearHover()
}
}
function processTooltip(e, params) {
const id = params.getData(e, true);
let coords;
if (id >= 0) {
coords = (0, _index.eventData)(e);
params.getNode(id).showTooltip([coords.x, coords.y])
} else {
params.widget.hideTooltip()
}
}