11import isEqual from 'lodash/isEqual' ;
22import React , { Component } from 'react' ;
33import ReactDOM from 'react-dom' ;
4+ import { isVisible } from './utilities' ;
45
56const style = {
67 width : '100%' ,
@@ -66,16 +67,10 @@ class ComponentWrapper extends Component {
6667 this . handleDragEnter = this . handleDragEnter . bind ( this ) ;
6768 this . handleDragLeave = this . handleDragLeave . bind ( this ) ;
6869 this . handleDrop = this . handleDrop . bind ( this ) ;
69-
70- const { elementKey, onComponentInstanceInitialize } = this . props ;
71- if ( onComponentInstanceInitialize ) {
72- onComponentInstanceInitialize ( elementKey , this ) ;
73- }
74-
7570 }
7671
7772 initDOMNode ( ) {
78- this . $DOMNode = this . $DOMNode || ReactDOM . findDOMNode ( this ) ;
73+ this . $DOMNode = ReactDOM . findDOMNode ( this ) ;
7974 if ( this . $DOMNode ) {
8075 this . $DOMNode . addEventListener ( 'mousedown' , this . handleMouseDown , false ) ;
8176 this . $DOMNode . addEventListener ( 'mouseover' , this . handleMouseOver , false ) ;
@@ -87,8 +82,25 @@ class ComponentWrapper extends Component {
8782 }
8883 }
8984
85+ clearDOMNode ( ) {
86+ if ( this . $DOMNode ) {
87+ this . $DOMNode . removeEventListener ( 'mousedown' , this . handleMouseDown ) ;
88+ this . $DOMNode . removeEventListener ( 'mouseover' , this . handleMouseOver ) ;
89+ this . $DOMNode . removeEventListener ( 'mouseout' , this . handleMouseOut ) ;
90+ this . $DOMNode . removeEventListener ( 'click' , this . handleNoop ) ;
91+ this . $DOMNode . removeEventListener ( 'doubleclick' , this . handleNoop ) ;
92+ this . $DOMNode . removeEventListener ( 'mouseup' , this . handleNoop ) ;
93+ this . $DOMNode . removeEventListener ( 'contextmenu' , this . handleContextMenu ) ;
94+ }
95+ this . $DOMNode = undefined ;
96+ }
97+
9098 componentDidMount ( ) {
9199 this . initDOMNode ( ) ;
100+ const { elementKey, onComponentInstanceInitialize } = this . props ;
101+ if ( onComponentInstanceInitialize ) {
102+ onComponentInstanceInitialize ( elementKey , this ) ;
103+ }
92104 }
93105
94106 componentDidUpdate ( prevProps , prevState , snapshot ) {
@@ -122,30 +134,23 @@ class ComponentWrapper extends Component {
122134 }
123135
124136 componentWillUnmount ( ) {
125- if ( this . $DOMNode ) {
126- this . $DOMNode . removeEventListener ( 'mousedown' , this . handleMouseDown ) ;
127- this . $DOMNode . removeEventListener ( 'mouseover' , this . handleMouseOver ) ;
128- this . $DOMNode . removeEventListener ( 'mouseout' , this . handleMouseOut ) ;
129- this . $DOMNode . removeEventListener ( 'click' , this . handleNoop ) ;
130- this . $DOMNode . removeEventListener ( 'doubleclick' , this . handleNoop ) ;
131- this . $DOMNode . removeEventListener ( 'mouseup' , this . handleNoop ) ;
132- this . $DOMNode . removeEventListener ( 'contextmenu' , this . handleContextMenu ) ;
133- }
134- this . $DOMNode = undefined ;
137+ this . clearDOMNode ( ) ;
135138 const { elementKey, onComponentInstanceDestroy } = this . props ;
136139 if ( onComponentInstanceDestroy ) {
137- onComponentInstanceDestroy ( elementKey ) ;
140+ onComponentInstanceDestroy ( elementKey , this ) ;
138141 }
139142 }
140143
141144 selectComponent ( ) {
142145 const { elementKey} = this . props ;
143- window . dispatchEvent ( new CustomEvent ( 'selectComponentWrapper' , {
144- detail : {
145- elementKey,
146- domNode : this . $DOMNode
147- }
148- } ) ) ;
146+ if ( isVisible ( this . $DOMNode ) ) {
147+ window . dispatchEvent ( new CustomEvent ( 'selectComponentWrapper' , {
148+ detail : {
149+ elementKey,
150+ domNode : this . $DOMNode
151+ }
152+ } ) ) ;
153+ }
149154 } ;
150155
151156 handleMouseDown ( e ) {
0 commit comments