@@ -48,15 +48,15 @@ export function Interpolator(interpolate) {
48
48
}
49
49
50
50
export function ScaleQ ( key , scale , channels , {
51
+ type,
51
52
nice,
52
53
clamp,
53
54
zero,
54
55
domain = ( registry . get ( key ) === radius || registry . get ( key ) === opacity ? inferZeroDomain : inferDomain ) ( channels ) ,
55
56
unknown,
56
57
round,
57
- range = registry . get ( key ) === radius ? inferRadialRange ( channels , domain ) : registry . get ( key ) === opacity ? unit : undefined ,
58
- type,
59
58
scheme,
59
+ range = registry . get ( key ) === radius ? inferRadialRange ( channels , domain ) : registry . get ( key ) === opacity ? unit : undefined ,
60
60
interpolate = registry . get ( key ) === color ? ( scheme == null && range !== undefined ? interpolateRgb : quantitativeScheme ( scheme !== undefined ? scheme : type === "cyclical" ? "rainbow" : "turbo" ) ) : round ? interpolateRound : interpolateNumber ,
61
61
reverse,
62
62
inset = 0
@@ -70,25 +70,21 @@ export function ScaleQ(key, scale, channels, {
70
70
// is used in conjunction with the range. And other times the interpolate
71
71
// function is a “fixed” interpolator on the [0, 1] interval, as when a
72
72
// color scheme such as interpolateRdBu is used.
73
- if ( interpolate !== undefined ) {
74
- if ( typeof interpolate !== "function" ) {
75
- interpolate = Interpolator ( interpolate ) ;
73
+ if ( typeof interpolate !== "function" ) {
74
+ interpolate = Interpolator ( interpolate ) ;
75
+ }
76
+ if ( interpolate . length === 1 ) {
77
+ if ( reverse ) {
78
+ interpolate = flip ( interpolate ) ;
79
+ reverse = false ;
76
80
}
77
- if ( interpolate . length === 1 ) {
78
- if ( reverse ) {
79
- interpolate = flip ( interpolate ) ;
80
- reverse = false ;
81
- }
82
- if ( range === undefined ) {
83
- range = Float64Array . from ( domain , ( _ , i ) => i / ( domain . length - 1 ) ) ;
84
- if ( range . length === 2 ) range = unit ; // optimize common case of [0, 1]
85
- }
86
- scale . interpolate ( ( range === unit ? constant : interpolatePiecewise ) ( interpolate ) ) ;
87
- } else {
88
- scale . interpolate ( interpolate ) ;
81
+ if ( range === undefined ) {
82
+ range = Float64Array . from ( domain , ( _ , i ) => i / ( domain . length - 1 ) ) ;
83
+ if ( range . length === 2 ) range = unit ; // optimize common case of [0, 1]
89
84
}
85
+ scale . interpolate ( ( range === unit ? constant : interpolatePiecewise ) ( interpolate ) ) ;
90
86
} else {
91
- interpolate = scale . interpolate ( ) ;
87
+ scale . interpolate ( interpolate ) ;
92
88
}
93
89
94
90
// If a zero option is specified, we assume that the domain is numeric, and we
@@ -205,6 +201,6 @@ function inferQuantileDomain(channels) {
205
201
return domain ;
206
202
}
207
203
208
- function interpolatePiecewise ( interpolate ) {
204
+ export function interpolatePiecewise ( interpolate ) {
209
205
return ( i , j ) => t => interpolate ( i + t * ( j - i ) ) ;
210
206
}
0 commit comments