@@ -10,6 +10,7 @@ import windowListener from './decorators/windowListener'
1010import customEvent from './decorators/customEvent'
1111import isCapture from './decorators/isCapture'
1212import getEffect from './decorators/getEffect'
13+ import trackRemoval from './decorators/trackRemoval'
1314
1415/* Utils */
1516import getPosition from './utils/getPosition'
@@ -20,7 +21,12 @@ import nodeListToArray from './utils/nodeListToArray'
2021/* CSS */
2122import cssStyle from './style'
2223
23- @staticMethods @windowListener @customEvent @isCapture @getEffect
24+ @staticMethods
25+ @windowListener
26+ @customEvent
27+ @isCapture
28+ @getEffect
29+ @trackRemoval
2430class ReactTooltip extends Component {
2531
2632 static propTypes = {
@@ -163,6 +169,8 @@ class ReactTooltip extends Component {
163169 const { id, globalEventOff} = this . props
164170 let targetArray = this . getTargetArray ( id )
165171
172+ this . trackRemoval ( )
173+
166174 targetArray . forEach ( target => {
167175 const isCaptureMode = this . isCapture ( target )
168176 const effect = this . getEffect ( target )
@@ -181,7 +189,7 @@ class ReactTooltip extends Component {
181189 target . addEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
182190 }
183191 target . addEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
184- target . addEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
192+ this . attachRemovalTracker ( target )
185193 } )
186194
187195 // Global event to hide tooltip
@@ -203,6 +211,7 @@ class ReactTooltip extends Component {
203211 } )
204212
205213 if ( globalEventOff ) window . removeEventListener ( globalEventOff , this . hideTooltip )
214+ this . releaseRemovalTracker ( )
206215 }
207216
208217 /**
@@ -215,7 +224,6 @@ class ReactTooltip extends Component {
215224 target . removeEventListener ( 'mouseenter' , this . showTooltip , isCaptureMode )
216225 target . removeEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
217226 target . removeEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
218- target . removeEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
219227 }
220228
221229 /**
0 commit comments