@@ -243,7 +243,6 @@ export default class DraggableCore extends React.Component {
243243 removeEvent ( document , eventsFor . touch . move , this . handleDrag ) ;
244244 removeEvent ( document , eventsFor . mouse . stop , this . handleDragStop ) ;
245245 removeEvent ( document , eventsFor . touch . stop , this . handleDragStop ) ;
246- removeEvent ( document , 'scroll' , this . handleScroll ) ;
247246 if ( this . props . enableUserSelectHack ) removeUserSelectStyles ( ) ;
248247 }
249248
@@ -273,10 +272,10 @@ export default class DraggableCore extends React.Component {
273272 if ( this . props . enableUserSelectHack ) addUserSelectStyles ( ) ;
274273
275274 // Get the current drag point from the event. This is used as the offset.
276- let { clientX , clientY } = getControlPosition ( e ) ;
275+ let { x , y } = getControlPosition ( e , this ) ;
277276
278277 // Create an event object with all the data parents need to make a decision here.
279- let coreEvent = createCoreEvent ( this , clientX , clientY ) ;
278+ let coreEvent = createCoreEvent ( this , x , y ) ;
280279
281280 log ( 'DraggableCore: handleDragStart: %j' , coreEvent . position ) ;
282281
@@ -292,15 +291,10 @@ export default class DraggableCore extends React.Component {
292291 this . setState ( {
293292 dragging : true ,
294293
295- lastX : clientX ,
296- lastY : clientY ,
297- // Stored so we can adjust our offset if scrolled.
298- scrollX : document . body . scrollLeft ,
299- scrollY : document . body . scrollTop
294+ lastX : x ,
295+ lastY : y
300296 } ) ;
301297
302- // Translate el on page scroll.
303- addEvent ( document , 'scroll' , this . handleScroll ) ;
304298 // Add events to the document directly so we catch when the user's mouse/touch moves outside of
305299 // this element. We use different events depending on whether or not we have detected that this
306300 // is a touch-capable device.
@@ -312,21 +306,20 @@ export default class DraggableCore extends React.Component {
312306 // Return if this is a touch event, but not the correct one for this element
313307 if ( e . targetTouches && ( e . targetTouches [ 0 ] . identifier !== this . state . touchIdentifier ) ) return ;
314308
315- let { clientX , clientY } = getControlPosition ( e ) ;
309+ let { x , y } = getControlPosition ( e , this ) ;
316310
317311 // Snap to grid if prop has been provided
318312 if ( Array . isArray ( this . props . grid ) ) {
319- let deltaX = clientX - this . state . lastX , deltaY = clientY - this . state . lastY ;
313+ let deltaX = x - this . state . lastX , deltaY = y - this . state . lastY ;
320314 [ deltaX , deltaY ] = snapToGrid ( this . props . grid , deltaX , deltaY ) ;
321315 if ( ! deltaX && ! deltaY ) return ; // skip useless drag
322- clientX = this . state . lastX + deltaX , clientY = this . state . lastY + deltaY ;
316+ x = this . state . lastX + deltaX , y = this . state . lastY + deltaY ;
323317 }
324318
325- const coreEvent = createCoreEvent ( this , clientX , clientY ) ;
319+ const coreEvent = createCoreEvent ( this , x , y ) ;
326320
327321 log ( 'DraggableCore: handleDrag: %j' , coreEvent . position ) ;
328322
329-
330323 // Call event handler. If it returns explicit false, trigger end.
331324 const shouldUpdate = this . props . onDrag ( e , coreEvent ) ;
332325 if ( shouldUpdate === false ) {
@@ -335,8 +328,8 @@ export default class DraggableCore extends React.Component {
335328 }
336329
337330 this . setState ( {
338- lastX : clientX ,
339- lastY : clientY
331+ lastX : x ,
332+ lastY : y
340333 } ) ;
341334 } ;
342335
@@ -350,8 +343,8 @@ export default class DraggableCore extends React.Component {
350343 // Remove user-select hack
351344 if ( this . props . enableUserSelectHack ) removeUserSelectStyles ( ) ;
352345
353- let { clientX , clientY } = getControlPosition ( e ) ;
354- const coreEvent = createCoreEvent ( this , clientX , clientY ) ;
346+ let { x , y } = getControlPosition ( e , this ) ;
347+ const coreEvent = createCoreEvent ( this , x , y ) ;
355348
356349 log ( 'DraggableCore: handleDragStop: %j' , coreEvent . position ) ;
357350
@@ -367,31 +360,10 @@ export default class DraggableCore extends React.Component {
367360
368361 // Remove event handlers
369362 log ( 'DraggableCore: Removing handlers' ) ;
370- removeEvent ( document , 'scroll' , this . handleScroll ) ;
371363 removeEvent ( document , dragEventFor . move , this . handleDrag ) ;
372364 removeEvent ( document , dragEventFor . stop , this . handleDragStop ) ;
373365 } ;
374366
375- // When the user scrolls, adjust internal state so the draggable moves along the page properly.
376- // This only fires when a drag is active.
377- handleScroll : EventHandler = ( e ) => {
378- const s = this . state , x = document . body . scrollLeft , y = document . body . scrollTop ;
379-
380- // Create the usual event, but make the scroll offset our deltas.
381- let coreEvent = createCoreEvent ( this ) ;
382- coreEvent . position . deltaX = x - s . scrollX ;
383- coreEvent . position . deltaY = y - s . scrollY ;
384-
385- this . setState ( {
386- lastX : s . lastX + coreEvent . position . deltaX ,
387- lastY : s . lastY + coreEvent . position . deltaY ,
388- scrollX : x ,
389- scrollY : y
390- } ) ;
391-
392- this . props . onDrag ( e , coreEvent ) ;
393- } ;
394-
395367 onMouseDown : EventHandler = ( e ) => {
396368 dragEventFor = eventsFor . mouse ; // on touchscreen laptops we could switch back to mouse
397369
0 commit comments