@@ -455,20 +455,26 @@ var zoomPlugin = {
455455
456456 var chartArea = chartInstance . chartArea ;
457457
458+ var zoomOptions = chartInstance . $zoom . _options . zoom ;
458459 var chartDistanceX = chartArea . right - chartArea . left ;
459- var xEnabled = directionEnabled ( chartInstance . $zoom . _options . zoom . mode , 'x' ) ;
460+ var xEnabled = directionEnabled ( zoomOptions . mode , 'x' ) ;
460461 var zoomX = xEnabled && dragDistanceX ? 1 + ( ( chartDistanceX - dragDistanceX ) / chartDistanceX ) : 1 ;
461462
462463 var chartDistanceY = chartArea . bottom - chartArea . top ;
463- var yEnabled = directionEnabled ( chartInstance . $zoom . _options . zoom . mode , 'y' ) ;
464+ var yEnabled = directionEnabled ( zoomOptions . mode , 'y' ) ;
464465 var zoomY = yEnabled && dragDistanceY ? 1 + ( ( chartDistanceY - dragDistanceY ) / chartDistanceY ) : 1 ;
465466
466467 doZoom ( chartInstance , zoomX , zoomY , {
467468 x : ( startX - chartArea . left ) / ( 1 - dragDistanceX / chartDistanceX ) + chartArea . left ,
468469 y : ( startY - chartArea . top ) / ( 1 - dragDistanceY / chartDistanceY ) + chartArea . top
469470 } ) ;
471+
472+ if ( typeof zoomOptions . onZoomComplete === 'function' ) {
473+ zoomOptions . onZoomComplete ( { chart : chartInstance } ) ;
474+ }
470475 } ;
471476
477+ var _scrollTimeout = null ;
472478 chartInstance . $zoom . _wheelHandler = function ( event ) {
473479 var rect = event . target . getBoundingClientRect ( ) ;
474480 var offsetX = event . clientX - rect . left ;
@@ -479,13 +485,21 @@ var zoomPlugin = {
479485 y : offsetY
480486 } ;
481487
482- var speedPercent = chartInstance . $zoom . _options . zoom . speed ;
488+ var zoomOptions = chartInstance . $zoom . _options . zoom ;
489+ var speedPercent = zoomOptions . speed ;
483490
484491 if ( event . deltaY >= 0 ) {
485492 speedPercent = - speedPercent ;
486493 }
487494 doZoom ( chartInstance , 1 + speedPercent , 1 + speedPercent , center ) ;
488495
496+ clearTimeout ( _scrollTimeout ) ;
497+ _scrollTimeout = setTimeout ( function ( ) {
498+ if ( typeof zoomOptions . onZoomComplete === 'function' ) {
499+ zoomOptions . onZoomComplete ( { chart : chartInstance } ) ;
500+ }
501+ } , 250 ) ;
502+
489503 // Prevent the event from triggering the default behavior (eg. Content scrolling).
490504 if ( event . cancelable ) {
491505 event . preventDefault ( ) ;
@@ -569,6 +583,11 @@ var zoomPlugin = {
569583 setTimeout ( function ( ) {
570584 panning = false ;
571585 } , 500 ) ;
586+
587+ var panOptions = chartInstance . $zoom . _options . pan ;
588+ if ( typeof panOptions . onPanComplete === 'function' ) {
589+ panOptions . onPanComplete ( { chart : chartInstance } ) ;
590+ }
572591 } ) ;
573592
574593 chartInstance . $zoom . _ghostClickHandler = function ( e ) {
0 commit comments