@@ -321,38 +321,35 @@ module.exports = function draw(gd) {
321
321
}
322
322
323
323
if ( gd . _context . editable ) {
324
- var xf ,
325
- yf ,
326
- x0 ,
327
- y0 ,
328
- lw ,
329
- lh ;
324
+ var xf , yf , x0 , y0 ;
325
+
326
+ legend . classed ( 'cursor-move' , true ) ;
330
327
331
328
dragElement . init ( {
332
329
element : legend . node ( ) ,
333
330
prepFn : function ( ) {
334
- x0 = Number ( legend . attr ( 'x' ) ) ;
335
- y0 = Number ( legend . attr ( 'y' ) ) ;
336
- lw = Number ( legend . attr ( 'width' ) ) ;
337
- lh = Number ( legend . attr ( 'height' ) ) ;
338
- setCursor ( legend ) ;
331
+ // regex pattern for 'translate(123.45px, 543.21px)'
332
+ var re = / ( .* \( ) ( \d * \. ? \d * ) ( [ ^ \d ] * ) ( \d * \. ? \d * ) ( [ ^ \d ] * ) / ,
333
+ transform = legend . attr ( 'transform' )
334
+ . replace ( re , function ( match , p1 , p2 , p3 , p4 ) {
335
+ return [ p2 , p4 ] . join ( ' ' ) ;
336
+ } )
337
+ . split ( ' ' ) ;
338
+
339
+ x0 = + transform [ 0 ] || 0 ;
340
+ y0 = + transform [ 1 ] || 0 ;
339
341
} ,
340
342
moveFn : function ( dx , dy ) {
341
- var gs = gd . _fullLayout . _size ;
342
-
343
- legend . call ( Drawing . setPosition , x0 + dx , y0 + dy ) ;
343
+ var newX = x0 + dx ,
344
+ newY = y0 + dy ;
344
345
345
- xf = dragElement . align ( x0 + dx , lw , gs . l , gs . l + gs . w ,
346
- opts . xanchor ) ;
347
- yf = dragElement . align ( y0 + dy + lh , - lh , gs . t + gs . h , gs . t ,
348
- opts . yanchor ) ;
346
+ var transform = 'translate(' + newX + ', ' + newY + ')' ;
347
+ legend . attr ( 'transform' , transform ) ;
349
348
350
- var csr = dragElement . getCursor ( xf , yf ,
351
- opts . xanchor , opts . yanchor ) ;
352
- setCursor ( legend , csr ) ;
349
+ xf = dragElement . align ( newX , 0 , gs . l , gs . l + gs . w , opts . xanchor ) ;
350
+ yf = dragElement . align ( newY , 0 , gs . t + gs . h , gs . t , opts . yanchor ) ;
353
351
} ,
354
352
doneFn : function ( dragged ) {
355
- setCursor ( legend ) ;
356
353
if ( dragged && xf !== undefined && yf !== undefined ) {
357
354
Plotly . relayout ( gd , { 'legend.x' : xf , 'legend.y' : yf } ) ;
358
355
}
0 commit comments