@@ -361,18 +361,28 @@ function handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, doTransiti
361
361
var quantizedPosition = Math . round ( normalizedPosition * ( sliderOpts . steps . length - 1 ) ) ;
362
362
363
363
if ( quantizedPosition !== sliderOpts . active ) {
364
+ var ret = { previousActive : sliderOpts . active } ;
365
+
364
366
setActive ( gd , sliderGroup , sliderOpts , quantizedPosition , true , doTransition ) ;
367
+
368
+ return ret ;
365
369
}
366
370
}
367
371
368
372
function setActive ( gd , sliderGroup , sliderOpts , index , doCallback , doTransition ) {
373
+ var previousActive = sliderOpts . active ;
369
374
sliderOpts . _input . active = sliderOpts . active = index ;
370
375
371
376
var step = sliderOpts . steps [ sliderOpts . active ] ;
372
377
373
378
sliderGroup . call ( setGripPosition , sliderOpts , sliderOpts . active / ( sliderOpts . steps . length - 1 ) , doTransition ) ;
374
379
sliderGroup . call ( drawCurrentValue , sliderOpts ) ;
375
380
381
+ gd . emit ( 'plotly_sliderchange' , {
382
+ slider : sliderOpts ,
383
+ previousActive : previousActive
384
+ } ) ;
385
+
376
386
if ( step && step . method && doCallback ) {
377
387
if ( sliderGroup . _nextMethod ) {
378
388
// If we've already queued up an update, just overwrite it with the most recent:
@@ -405,20 +415,31 @@ function attachGripEvents(item, gd, sliderGroup, sliderOpts) {
405
415
d3 . event . preventDefault ( ) ;
406
416
grip . call ( Color . fill , sliderOpts . activebgcolor ) ;
407
417
418
+ gd . emit ( 'plotly_sliderdragstart' , { slider : sliderOpts } ) ;
419
+
408
420
var normalizedPosition = positionToNormalizedValue ( sliderOpts , d3 . mouse ( node ) [ 0 ] ) ;
409
421
handleInput ( gd , sliderGroup , sliderOpts , normalizedPosition , true ) ;
410
422
sliderOpts . _dragging = true ;
411
423
412
424
$gd . on ( 'mousemove' , function ( ) {
413
425
var normalizedPosition = positionToNormalizedValue ( sliderOpts , d3 . mouse ( node ) [ 0 ] ) ;
414
- handleInput ( gd , sliderGroup , sliderOpts , normalizedPosition , false ) ;
426
+ var changes = handleInput ( gd , sliderGroup , sliderOpts , normalizedPosition , false ) ;
427
+
428
+ if ( changes ) {
429
+ gd . emit ( 'plotly_sliderdragmove' , {
430
+ slider : sliderOpts ,
431
+ previousActive : changes . previousActive
432
+ } ) ;
433
+ }
415
434
} ) ;
416
435
417
436
$gd . on ( 'mouseup' , function ( ) {
418
437
sliderOpts . _dragging = false ;
419
438
grip . call ( Color . fill , sliderOpts . bgcolor ) ;
420
439
$gd . on ( 'mouseup' , null ) ;
421
440
$gd . on ( 'mousemove' , null ) ;
441
+
442
+ gd . emit ( 'plotly_sliderdragend' , { slider : sliderOpts } ) ;
422
443
} ) ;
423
444
} ) ;
424
445
}
0 commit comments