Skip to content

Commit eb6f216

Browse files
committed
inlined disposal callback invocations
1 parent 0775377 commit eb6f216

File tree

3 files changed

+17
-29
lines changed

3 files changed

+17
-29
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "knockout-esnext",
33
"description": "A modernized fork of Knockout.js intended for ES6+ browsers only",
44
"homepage": "http://knockoutjs.com/",
5-
"version": "3.5.1-mod24",
5+
"version": "3.5.1-mod25-pre",
66
"license": "MIT",
77
"author": "The Knockout.js team",
88
"main": "build/output/knockout-latest.js",

src/utils.domData.js

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,3 @@ export const getCurriedDomDataArrayItemAddFunctionForArrayDomDataKey = (itemArra
6060
dataForNode[itemArrayDomDataKey] = [itemToAdd];
6161
}
6262
};
63-
64-
/**
65-
* Returns a function that will
66-
* (1) run all (function-)items of an array located under the node's domData[itemArrayDomDataKey], passing the node as parameter
67-
* (2) clear the node's DOM data
68-
* @param {string} itemArrayDomDataKey
69-
* @return {function(Node): void}
70-
*/
71-
export const getCurriedDomDataArrayInvokeEachAndClearDomDataFunctionForArrayDomDataKey = (itemArrayDomDataKey) => (node) => {
72-
let dataForNode = node[DOM_DATASTORE_PROP];
73-
if (dataForNode) {
74-
let itemArray = dataForNode[itemArrayDomDataKey];
75-
if (itemArray) {
76-
for (let i = 0, _fns = itemArray.slice(0), len = _fns.length; i < len; i++) {
77-
_fns[i](node);
78-
}
79-
}
80-
delete node[DOM_DATASTORE_PROP];
81-
}
82-
};

src/utils.domNodeDisposal.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import {nextDomDataKey,
2-
getCurriedDomDataArrayInvokeEachAndClearDomDataFunctionForArrayDomDataKey,
3-
getCurriedDomDataArrayItemAddFunctionForArrayDomDataKey,
4-
getCurriedDomDataArrayItemRemovalFunctionForArrayDomDataKey} from './utils.domData';
1+
import {DOM_DATASTORE_PROP,
2+
nextDomDataKey,
3+
getCurriedDomDataArrayItemAddFunctionForArrayDomDataKey,
4+
getCurriedDomDataArrayItemRemovalFunctionForArrayDomDataKey, getDomData
5+
} from './utils.domData';
56
import {ignoreDependencyDetectionNoArgs} from './subscribables/dependencyDetection';
67

78
const DISPOSE_CALLBACKS_DOM_DATA_KEY = nextDomDataKey();
@@ -15,12 +16,19 @@ const _isNodeTypeCleanableWithDescendents = nodeType => nodeType === 1 || nodeTy
1516
export let _cleanExternalData = null;
1617
export const _overrideCleanExternalData = (fn) => _cleanExternalData = fn;
1718

18-
const _runDisposalCallbacksAndClearDomData = getCurriedDomDataArrayInvokeEachAndClearDomDataFunctionForArrayDomDataKey(DISPOSE_CALLBACKS_DOM_DATA_KEY);
19-
2019
const _cleanSingleNode = (node) => {
2120
// Run all the dispose callbacks & ease the DOM data
22-
_runDisposalCallbacksAndClearDomData(node);
23-
21+
let domData = node[DOM_DATASTORE_PROP];
22+
if (domData) {
23+
let disposeCallbackFns = domData[DISPOSE_CALLBACKS_DOM_DATA_KEY];
24+
if (disposeCallbackFns) {
25+
for (let fn of disposeCallbackFns.slice(0)) {
26+
fn(node);
27+
}
28+
}
29+
delete node[DOM_DATASTORE_PROP];
30+
}
31+
2432
// Perform cleanup needed by external libraries (currently only jQuery, but can be extended)
2533
if (_cleanExternalData) {
2634
_cleanExternalData(node);

0 commit comments

Comments
 (0)