UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

86 lines (84 loc) 2.79 kB
/** * DevExtreme (cjs/__internal/viz/funnel/tracker.js) * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.plugin = void 0; var _type = require("../../../core/utils/type"); var _tracker = require("../../viz/components/tracker"); var _funnel = _interopRequireDefault(require("../../viz/funnel/funnel")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DATA_KEY_BASE = "__funnel_data_"; let dataKeyModifier = 0; const proto = _funnel.default.prototype; proto._eventsMap.onItemClick = { name: "itemClick" }; proto._eventsMap.onLegendClick = { name: "legendClick" }; const getDataKey = function() { return DATA_KEY_BASE + dataKeyModifier++ }; const plugin = exports.plugin = { name: "tracker", init() { const that = this; const dataKey = getDataKey(); const getProxyData = function(e) { const rootOffset = that._renderer.getRootOffset(); const x = Math.floor(e.pageX - rootOffset.left); const y = Math.floor(e.pageY - rootOffset.top); return that._hitTestTargets(x, y) }; that._tracker = new _tracker.Tracker({ widget: that, root: that._renderer.root, getData(e, tooltipData) { const target = e.target; const data = target[dataKey]; if ((0, _type.isDefined)(data)) { return data } const proxyData = getProxyData(e); if (tooltipData && proxyData && "inside-label" !== proxyData.type) { return } return proxyData && proxyData.id }, getNode: index => that._items[index], click(e) { const proxyData = getProxyData(e.event); const dataType = proxyData && proxyData.type; const event = "legend" === dataType ? "legendClick" : "itemClick"; that._eventTrigger(event, { item: e.node, event: e.event }) } }); this._dataKey = dataKey }, dispose() { this._tracker.dispose() }, extenders: { _change_TILING() { const dataKey = this._dataKey; this._items.forEach(((item, index) => { item.element.data(dataKey, index) })) } } };