devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
48 lines (45 loc) • 1.71 kB
JavaScript
/**
* DevExtreme (cjs/__internal/events/utils/m_event_nodes_disposing.js)
* Version: 25.2.7
* Build date: Tue May 05 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.unsubscribeNodesDisposing = exports.subscribeNodesDisposing = void 0;
var _events_engine = _interopRequireDefault(require("../../../common/core/events/core/events_engine"));
var _remove = require("../../../common/core/events/remove");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function nodesByEvent(event) {
return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].reduce((res, node) => {
if (!!node && !res.includes(node)) {
res.push(node)
}
return res
}, [])
}
const subscribeNodesDisposing = (event, callback) => {
const nodes = nodesByEvent(event);
const onceCallback = function() {
_events_engine.default.off(nodes, _remove.removeEvent, onceCallback);
return callback(...arguments)
};
_events_engine.default.on(nodes, _remove.removeEvent, onceCallback);
return {
onceCallback: onceCallback,
nodes: nodes
}
};
exports.subscribeNodesDisposing = subscribeNodesDisposing;
const unsubscribeNodesDisposing = (event, callback, nodes) => {
_events_engine.default.off(nodes || nodesByEvent(event), _remove.removeEvent, callback)
};
exports.unsubscribeNodesDisposing = unsubscribeNodesDisposing;