@@ -359,50 +359,58 @@ modeBarButtons.hoverClosest3d = {
359
359
toggle : true ,
360
360
icon : Icons . tooltip_basic ,
361
361
gravity : 'ne' ,
362
- click : function ( gd , ev ) {
363
- var button = ev . currentTarget ,
364
- val = JSON . parse ( button . getAttribute ( 'data-val' ) ) || false ,
365
- fullLayout = gd . _fullLayout ,
366
- sceneIds = Plotly . Plots . getSubplotIds ( fullLayout , 'gl3d' ) ;
367
-
368
- var axes = [ 'xaxis' , 'yaxis' , 'zaxis' ] ,
369
- spikeAttrs = [ 'showspikes' , 'spikesides' , 'spikethickness' , 'spikecolor' ] ;
370
-
371
- // initialize 'current spike' object to be stored in the DOM
372
- var currentSpikes = { } ,
373
- axisSpikes = { } ,
374
- layoutUpdate = { } ;
375
-
376
- if ( val ) {
377
- layoutUpdate = val ;
378
- button . setAttribute ( 'data-val' , JSON . stringify ( null ) ) ;
379
- }
380
- else {
381
- layoutUpdate = { 'allaxes.showspikes' : false } ;
382
-
383
- for ( var i = 0 ; i < sceneIds . length ; i ++ ) {
384
- var sceneId = sceneIds [ i ] ,
385
- sceneLayout = fullLayout [ sceneId ] ,
386
- sceneSpikes = currentSpikes [ sceneId ] = { } ;
387
-
388
- // copy all the current spike attrs
389
- for ( var j = 0 ; j < 3 ; j ++ ) {
390
- var axis = axes [ j ] ;
391
- axisSpikes = sceneSpikes [ axis ] = { } ;
392
-
393
- for ( var k = 0 ; k < spikeAttrs . length ; k ++ ) {
394
- var spikeAttr = spikeAttrs [ k ] ;
395
- axisSpikes [ spikeAttr ] = sceneLayout [ axis ] [ spikeAttr ] ;
396
- }
362
+ click : handleHover3d
363
+ } ;
364
+
365
+ function handleHover3d ( gd , ev ) {
366
+ var button = ev . currentTarget ,
367
+ val = JSON . parse ( button . getAttribute ( 'data-val' ) ) || false ,
368
+ layout = gd . layout ,
369
+ fullLayout = gd . _fullLayout ,
370
+ sceneIds = Plotly . Plots . getSubplotIds ( fullLayout , 'gl3d' ) ;
371
+
372
+ var axes = [ 'xaxis' , 'yaxis' , 'zaxis' ] ,
373
+ spikeAttrs = [ 'showspikes' , 'spikesides' , 'spikethickness' , 'spikecolor' ] ;
374
+
375
+ // initialize 'current spike' object to be stored in the DOM
376
+ var currentSpikes = { } ,
377
+ axisSpikes = { } ,
378
+ layoutUpdate = { } ;
379
+
380
+ if ( val ) {
381
+ layoutUpdate = Lib . extendDeep ( layout , val ) ;
382
+ button . setAttribute ( 'data-val' , JSON . stringify ( null ) ) ;
383
+ }
384
+ else {
385
+ layoutUpdate = {
386
+ 'allaxes.showspikes' : false
387
+ } ;
388
+
389
+ for ( var i = 0 ; i < sceneIds . length ; i ++ ) {
390
+ var sceneId = sceneIds [ i ] ,
391
+ sceneLayout = fullLayout [ sceneId ] ,
392
+ sceneSpikes = currentSpikes [ sceneId ] = { } ;
393
+
394
+ sceneSpikes . hovermode = sceneLayout . hovermode ;
395
+ layoutUpdate [ sceneId + '.hovermode' ] = false ;
396
+
397
+ // copy all the current spike attrs
398
+ for ( var j = 0 ; j < 3 ; j ++ ) {
399
+ var axis = axes [ j ] ;
400
+ axisSpikes = sceneSpikes [ axis ] = { } ;
401
+
402
+ for ( var k = 0 ; k < spikeAttrs . length ; k ++ ) {
403
+ var spikeAttr = spikeAttrs [ k ] ;
404
+ axisSpikes [ spikeAttr ] = sceneLayout [ axis ] [ spikeAttr ] ;
397
405
}
398
406
}
399
-
400
- button . setAttribute ( 'data-val' , JSON . stringify ( currentSpikes ) ) ;
401
407
}
402
408
403
- Plotly . relayout ( gd , layoutUpdate ) ;
409
+ button . setAttribute ( 'data-val' , JSON . stringify ( currentSpikes ) ) ;
404
410
}
405
- } ;
411
+
412
+ Plotly . relayout ( gd , layoutUpdate ) ;
413
+ }
406
414
407
415
modeBarButtons . zoomInGeo = {
408
416
name : 'zoomInGeo' ,
0 commit comments