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' ;
5
6
import { ignoreDependencyDetectionNoArgs } from './subscribables/dependencyDetection' ;
6
7
7
8
const DISPOSE_CALLBACKS_DOM_DATA_KEY = nextDomDataKey ( ) ;
@@ -15,12 +16,19 @@ const _isNodeTypeCleanableWithDescendents = nodeType => nodeType === 1 || nodeTy
15
16
export let _cleanExternalData = null ;
16
17
export const _overrideCleanExternalData = ( fn ) => _cleanExternalData = fn ;
17
18
18
- const _runDisposalCallbacksAndClearDomData = getCurriedDomDataArrayInvokeEachAndClearDomDataFunctionForArrayDomDataKey ( DISPOSE_CALLBACKS_DOM_DATA_KEY ) ;
19
-
20
19
const _cleanSingleNode = ( node ) => {
21
20
// 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
+
24
32
// Perform cleanup needed by external libraries (currently only jQuery, but can be extended)
25
33
if ( _cleanExternalData ) {
26
34
_cleanExternalData ( node ) ;
0 commit comments