UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

60 lines (59 loc) 1.94 kB
/** * DevExtreme (esm/integration/knockout/clean_node.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/ */ import { afterCleanData, strategyChanging, cleanData } from "../../core/element_data"; import ko from "knockout"; import { compare as compareVersion } from "../../core/utils/version"; import { getClosestNodeWithKoCreation } from "./utils"; if (ko) { const originalKOCleanExternalData = ko.utils.domNodeDisposal.cleanExternalData; const patchCleanData = function() { afterCleanData((function(nodes) { let i; for (i = 0; i < nodes.length; i++) { nodes[i].cleanedByJquery = true } for (i = 0; i < nodes.length; i++) { if (!nodes[i].cleanedByKo) { ko.cleanNode(nodes[i]) } delete nodes[i].cleanedByKo } for (i = 0; i < nodes.length; i++) { delete nodes[i].cleanedByJquery } })); ko.utils.domNodeDisposal.cleanExternalData = function(node) { node.cleanedByKo = true; if (getClosestNodeWithKoCreation(node)) { if (!node.cleanedByJquery) { cleanData([node]) } } } }; const restoreOriginCleanData = function() { afterCleanData((function() {})); ko.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData }; patchCleanData(); strategyChanging.add((function(strategy) { const isJQuery = !!strategy.fn; if (isJQuery && compareVersion(strategy.fn.jquery, [2, 0]) < 0) { restoreOriginCleanData() } })) }