@@ -218,16 +218,32 @@ function panCategoryScale(scale, delta, panOptions) {
218218
219219function panNumericalScale ( scale , delta , panOptions ) {
220220 var tickOpts = scale . options . ticks ;
221- var start = scale . min ;
222- var end = scale . max ;
223-
221+ var prevStart = scale . min ;
222+ var prevEnd = scale . max ;
223+ var newMin = scale . getValueForPixel ( scale . getPixelForValue ( prevStart ) - delta ) ;
224+ var newMax = scale . getValueForPixel ( scale . getPixelForValue ( prevEnd ) - delta ) ;
225+ var rangeMin , rangeMax , diff ;
226+
227+ if ( panOptions . scaleAxes && panOptions . rangeMin &&
228+ ! helpers . isNullOrUndef ( panOptions . rangeMin [ panOptions . scaleAxes ] ) ) {
229+ rangeMin = panOptions . rangeMin [ panOptions . scaleAxes ] ;
230+ }
231+ if ( panOptions . scaleAxes && panOptions . rangeMax &&
232+ ! helpers . isNullOrUndef ( panOptions . rangeMax [ panOptions . scaleAxes ] ) ) {
233+ rangeMax = panOptions . rangeMax [ panOptions . scaleAxes ] ;
234+ }
224235
225- if ( tickOpts . reverse ) {
226- tickOpts . min = rangeMinLimiter ( panOptions , scale . getValueForPixel ( scale . getPixelForValue ( end ) - delta ) ) ;
227- tickOpts . max = rangeMaxLimiter ( panOptions , scale . getValueForPixel ( scale . getPixelForValue ( start ) - delta ) ) ;
228- } else {
229- tickOpts . min = rangeMinLimiter ( panOptions , scale . getValueForPixel ( scale . getPixelForValue ( start ) - delta ) ) ;
230- tickOpts . max = rangeMaxLimiter ( panOptions , scale . getValueForPixel ( scale . getPixelForValue ( end ) - delta ) ) ;
236+ if ( newMin >= rangeMin && newMax <= rangeMax ) {
237+ tickOpts . min = newMin ;
238+ tickOpts . max = newMax ;
239+ } else if ( newMin < rangeMin ) {
240+ diff = prevStart - rangeMin ;
241+ tickOpts . min = rangeMin ;
242+ tickOpts . max = prevEnd - diff ;
243+ } else if ( newMax > rangeMax ) {
244+ diff = rangeMax - prevEnd ;
245+ tickOpts . max = rangeMax ;
246+ tickOpts . min = prevStart + diff ;
231247 }
232248}
233249
0 commit comments