UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

48 lines (45 loc) 1.71 kB
/** * 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/ */ "use strict"; 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;