UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

58 lines (56 loc) 2.15 kB
/** * DevExtreme (cjs/__internal/integration/knockout/clean_node.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"; var _m_element_data = require("../../core/m_element_data"); var _m_version = require("../../core/utils/m_version"); var _knockout = _interopRequireDefault(require("knockout")); var _utils = require("./utils"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } if (_knockout.default) { const originalKOCleanExternalData = _knockout.default.utils.domNodeDisposal.cleanExternalData; const patchCleanData = () => { (0, _m_element_data.afterCleanData)((nodes => { for (let i = 0; i < nodes.length; i += 1) { nodes[i].cleanedByJquery = true } for (let i = 0; i < nodes.length; i += 1) { if (!nodes[i].cleanedByKo) { _knockout.default.cleanNode(nodes[i]) } delete nodes[i].cleanedByKo } for (let i = 0; i < nodes.length; i += 1) { delete nodes[i].cleanedByJquery } })); _knockout.default.utils.domNodeDisposal.cleanExternalData = node => { node.cleanedByKo = true; if ((0, _utils.getClosestNodeWithKoCreation)(node)) { if (!node.cleanedByJquery) { (0, _m_element_data.cleanData)([node]) } } } }; const restoreOriginCleanData = () => { (0, _m_element_data.afterCleanData)((() => {})); _knockout.default.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData }; patchCleanData(); _m_element_data.strategyChanging.add((strategy => { const isJQuery = !!strategy.fn; if (isJQuery && (0, _m_version.compare)(strategy.fn.jquery, [2, 0]) < 0) { restoreOriginCleanData() } })) }