@@ -28,34 +28,36 @@ function closeToCovering(v, vAdjacent) { return v * (1 - snapClose) + vAdjacent
2828function ordinalScaleSnapLo ( a , v , existingRanges ) {
2929 if ( overlappingExisting ( v , existingRanges ) ) return v ;
3030
31- var aPrev = a [ 0 ] ;
32- var aPrevPrev = aPrev ;
33- for ( var i = 1 ; i < a . length ; i ++ ) {
34- var aNext = a [ i ] ;
31+ var aHere = a [ 0 ] ;
32+ var aPrev = aHere ;
33+ for ( var i = 0 ; i < a . length - 1 ; i ++ ) {
34+ var nextI = i + 1 ;
35+ var aNext = a [ nextI ] ;
3536
3637 // very close to the previous - snap down to it
37- if ( v < closeToCovering ( aPrev , aNext ) ) return snapOvershoot ( aPrev , aPrevPrev ) ;
38- if ( v < aNext || i === a . length - 1 ) return snapOvershoot ( aNext , aPrev ) ;
38+ if ( v < closeToCovering ( aHere , aNext ) ) return snapOvershoot ( aHere , aPrev ) ;
39+ if ( v < aNext || nextI === a . length - 1 ) return snapOvershoot ( aNext , aHere ) ;
3940
40- aPrevPrev = aPrev ;
41- aPrev = aNext ;
41+ aPrev = aHere ;
42+ aHere = aNext ;
4243 }
4344}
4445
4546function ordinalScaleSnapHi ( a , v , existingRanges ) {
4647 if ( overlappingExisting ( v , existingRanges ) ) return v ;
4748
48- var aPrev = a [ a . length - 1 ] ;
49- var aPrevPrev = aPrev ;
50- for ( var i = a . length - 2 ; i >= 0 ; i -- ) {
51- var aNext = a [ i ] ;
49+ var aHere = a [ a . length - 1 ] ;
50+ var aPrev = aHere ;
51+ for ( var i = a . length - 1 ; i > 0 ; i -- ) {
52+ var nextI = i - 1 ;
53+ var aNext = a [ nextI ] ;
5254
5355 // very close to the previous - snap down to it
54- if ( v > closeToCovering ( aPrev , aNext ) ) return snapOvershoot ( aPrev , aPrevPrev ) ;
55- if ( v > aNext || i === a . length - 1 ) return snapOvershoot ( aNext , aPrev ) ;
56+ if ( v > closeToCovering ( aHere , aNext ) ) return snapOvershoot ( aHere , aPrev ) ;
57+ if ( v > aNext || nextI === 0 ) return snapOvershoot ( aNext , aHere ) ;
5658
57- aPrevPrev = aPrev ;
58- aPrev = aNext ;
59+ aPrev = aHere ;
60+ aHere = aNext ;
5961 }
6062}
6163
0 commit comments