@@ -4,7 +4,7 @@ import {ascendingDefined} from "../defined.js";
44import  { maybeSymbol }  from  "../options.js" ; 
55import  { none }  from  "../style.js" ; 
66import  { registry ,  color ,  symbol }  from  "./index.js" ; 
7- import  { ordinalScheme ,  quantitativeScheme }  from  "./schemes.js" ; 
7+ import  { maybeBooleanRange ,   ordinalScheme ,  quantitativeScheme }  from  "./schemes.js" ; 
88
99export  function  ScaleO ( scale ,  channels ,  { 
1010  type, 
@@ -26,26 +26,34 @@ export function ScaleO(scale, channels, {
2626
2727export  function  ScaleOrdinal ( key ,  channels ,  { 
2828  type, 
29+   domain =  inferDomain ( channels ) , 
2930  range, 
30-   scheme  =   range   ===   undefined  ?  type   ===   "ordinal"  ?  "turbo"  :  "tableau10"  :  undefined , 
31+   scheme, 
3132  unknown, 
3233  ...options 
3334} )  { 
3435  let  hint ; 
3536  if  ( registry . get ( key )  ===  symbol )  { 
3637    hint  =  inferSymbolHint ( channels ) ; 
3738    range  =  range  ===  undefined  ? inferSymbolRange ( hint )  : Array . from ( range ,  maybeSymbol ) ; 
38-   }  else  if  ( registry . get ( key )  ===  color  &&  scheme  !==  undefined )  { 
39-     if  ( range  !==  undefined )  { 
40-       const  interpolate  =  quantitativeScheme ( scheme ) ; 
41-       const  t0  =  range [ 0 ] ,  d  =  range [ 1 ]  -  range [ 0 ] ; 
42-       range  =  ( { length : n } )  =>  quantize ( t  =>  interpolate ( t0  +  d  *  t ) ,  n ) ; 
43-     }  else  { 
44-       range  =  ordinalScheme ( scheme ) ; 
39+   }  else  if  ( registry . get ( key )  ===  color )  { 
40+     if  ( scheme  ===  undefined 
41+         &&  range  ===  undefined 
42+         &&  ( range  =  maybeBooleanRange ( domain ,  "greys" ) )  ===  undefined )  { 
43+       scheme  =  type  ===  "ordinal"  ? "turbo"  : "tableau10" ; 
44+     } 
45+     if  ( scheme  !==  undefined )  { 
46+       if  ( range  !==  undefined )  { 
47+         const  interpolate  =  quantitativeScheme ( scheme ) ; 
48+         const  t0  =  range [ 0 ] ,  d  =  range [ 1 ]  -  range [ 0 ] ; 
49+         range  =  ( { length : n } )  =>  quantize ( t  =>  interpolate ( t0  +  d  *  t ) ,  n ) ; 
50+       }  else  { 
51+         range  =  ordinalScheme ( scheme ) ; 
52+       } 
4553    } 
4654  } 
4755  if  ( unknown  ===  scaleImplicit )  throw  new  Error ( "implicit unknown is not supported" ) ; 
48-   return  ScaleO ( scaleOrdinal ( ) . unknown ( unknown ) ,  channels ,  { ...options ,  type,  range,  hint} ) ; 
56+   return  ScaleO ( scaleOrdinal ( ) . unknown ( unknown ) ,  channels ,  { ...options ,  type,  domain ,   range,  hint} ) ; 
4957} 
5058
5159export  function  ScalePoint ( key ,  channels ,  { 
0 commit comments