@@ -366,13 +366,21 @@ function handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, doTransiti
366
366
}
367
367
368
368
function setActive ( gd , sliderGroup , sliderOpts , index , doCallback , doTransition ) {
369
+ var previousActive = sliderOpts . active ;
369
370
sliderOpts . _input . active = sliderOpts . active = index ;
370
371
371
372
var step = sliderOpts . steps [ sliderOpts . active ] ;
372
373
373
374
sliderGroup . call ( setGripPosition , sliderOpts , sliderOpts . active / ( sliderOpts . steps . length - 1 ) , doTransition ) ;
374
375
sliderGroup . call ( drawCurrentValue , sliderOpts ) ;
375
376
377
+ gd . emit ( 'plotly_sliderchange' , {
378
+ slider : sliderOpts ,
379
+ step : sliderOpts . steps [ sliderOpts . active ] ,
380
+ interaction : doCallback ,
381
+ previousActive : previousActive
382
+ } ) ;
383
+
376
384
if ( step && step . method && doCallback ) {
377
385
if ( sliderGroup . _nextMethod ) {
378
386
// If we've already queued up an update, just overwrite it with the most recent:
@@ -399,6 +407,8 @@ function attachGripEvents(item, gd, sliderGroup, sliderOpts) {
399
407
var $gd = d3 . select ( gd ) ;
400
408
401
409
item . on ( 'mousedown' , function ( ) {
410
+ gd . emit ( 'plotly_sliderstart' , { slider : sliderOpts } ) ;
411
+
402
412
var grip = sliderGroup . select ( '.' + constants . gripRectClass ) ;
403
413
404
414
d3 . event . stopPropagation ( ) ;
@@ -419,6 +429,11 @@ function attachGripEvents(item, gd, sliderGroup, sliderOpts) {
419
429
grip . call ( Color . fill , sliderOpts . bgcolor ) ;
420
430
$gd . on ( 'mouseup' , null ) ;
421
431
$gd . on ( 'mousemove' , null ) ;
432
+
433
+ gd . emit ( 'plotly_sliderend' , {
434
+ slider : sliderOpts ,
435
+ step : sliderOpts . steps [ sliderOpts . active ]
436
+ } ) ;
422
437
} ) ;
423
438
} ) ;
424
439
}
0 commit comments