@@ -114,43 +114,44 @@ var DataSheet = function (_PureComponent) {
114114 } , {
115115 key : 'handleCopy' ,
116116 value : function handleCopy ( e ) {
117- e . preventDefault ( ) ;
118- var _props = this . props ,
119- dataRenderer = _props . dataRenderer ,
120- valueRenderer = _props . valueRenderer ,
121- data = _props . data ;
122- var _state = this . state ,
123- start = _state . start ,
124- end = _state . end ;
125-
126-
127- var text = range ( start . i , end . i ) . map ( function ( i ) {
128- return range ( start . j , end . j ) . map ( function ( j ) {
129- return data [ i ] [ j ] ;
130- } ) . map ( function ( cell ) {
131- var value = dataRenderer ? dataRenderer ( cell ) : null ;
132- if ( value === '' || value === null || typeof value === 'undefined' ) {
133- return valueRenderer ( cell ) ;
134- }
135- return value ;
136- } ) . join ( '\t' ) ;
137- } ) . join ( '\n' ) ;
138- e . clipboardData . setData ( 'text/plain' , text ) ;
139- document . removeEventListener ( 'copy' , this . handlePaste ) ;
117+ if ( isEmpty ( this . state . editing ) ) {
118+ e . preventDefault ( ) ;
119+ var _props = this . props ,
120+ dataRenderer = _props . dataRenderer ,
121+ valueRenderer = _props . valueRenderer ,
122+ data = _props . data ;
123+ var _state = this . state ,
124+ start = _state . start ,
125+ end = _state . end ;
126+
127+
128+ var text = range ( start . i , end . i ) . map ( function ( i ) {
129+ return range ( start . j , end . j ) . map ( function ( j ) {
130+ return data [ i ] [ j ] ;
131+ } ) . map ( function ( cell ) {
132+ var value = dataRenderer ? dataRenderer ( cell ) : null ;
133+ if ( value === '' || value === null || typeof value === 'undefined' ) {
134+ return valueRenderer ( cell ) ;
135+ }
136+ return value ;
137+ } ) . join ( '\t' ) ;
138+ } ) . join ( '\n' ) ;
139+ e . clipboardData . setData ( 'text/plain' , text ) ;
140+ }
140141 }
141142 } , {
142143 key : 'handlePaste' ,
143144 value : function handlePaste ( e ) {
144145 var _this2 = this ;
145146
146- this . dgDom . removeEventListener ( 'paste' , this . handlePaste ) ;
147-
148147 if ( isEmpty ( this . state . editing ) ) {
149148 var start = this . state . start ;
149+
150150 var pastedMap = [ ] ;
151151 var pasteData = e . clipboardData . getData ( 'text/plain' ) . split ( / \n | \r / ) . map ( function ( row ) {
152152 return row . split ( '\t' ) ;
153153 } ) ;
154+ var end = { } ;
154155
155156 pasteData . map ( function ( row , i ) {
156157 var rowData = [ ] ;
@@ -159,12 +160,13 @@ var DataSheet = function (_PureComponent) {
159160 rowData . push ( { cell : cell , data : pastedData } ) ;
160161 if ( cell && ! cell . readOnly && ! _this2 . props . onPaste ) {
161162 _this2 . onChange ( start . i + i , start . j + j , pastedData ) ;
163+ end = { i : start . i + i , j : start . j + j } ;
162164 }
163165 } ) ;
164166 pastedMap . push ( rowData ) ;
165167 } ) ;
166168 this . props . onPaste && this . props . onPaste ( pastedMap ) ;
167- this . setState ( this . defaultState ) ;
169+ this . setState ( { end : end } ) ;
168170 }
169171 }
170172 } , {
0 commit comments