@@ -37,7 +37,7 @@ function groupn(
3737 inputs = { } // input channels and options
3838) {
3939 reduceData = maybeReduce ( reduceData , identity ) ;
40- outputs = maybeGroupOutputs ( outputs , inputs ) ;
40+ outputs = maybeOutputs ( outputs , inputs ) ;
4141
4242 // Produce x and y output channels as appropriate.
4343 const [ GX , setGX ] = maybeLazyChannel ( x ) ;
@@ -67,7 +67,7 @@ function groupn(
6767 const Z = valueof ( data , z ) ;
6868 const F = valueof ( data , vfill ) ;
6969 const S = valueof ( data , vstroke ) ;
70- const G = firstof ( Z , F , S ) ;
70+ const G = maybeSubgroup ( outputs , Z , F , S ) ;
7171 const groupFacets = [ ] ;
7272 const groupData = [ ] ;
7373 const GX = X && setGX ( [ ] ) ;
@@ -102,7 +102,7 @@ function groupn(
102102 } ;
103103}
104104
105- export function maybeGroupOutputs ( outputs , inputs ) {
105+ export function maybeOutputs ( outputs , inputs ) {
106106 return Object . entries ( outputs ) . map ( ( [ name , reduce ] ) => {
107107 const value = maybeInput ( name , inputs ) ;
108108 const reducer = maybeReduce ( reduce , value ) ;
@@ -155,6 +155,14 @@ export function maybeReduce(reduce, value) {
155155 throw new Error ( "invalid reduce" ) ;
156156}
157157
158+ export function maybeSubgroup ( outputs , Z , F , S ) {
159+ return firstof (
160+ outputs . some ( o => o . name === "z" ) ? undefined : Z ,
161+ outputs . some ( o => o . name === "fill" ) ? undefined : F ,
162+ outputs . some ( o => o . name === "stroke" ) ? undefined : S
163+ ) ;
164+ }
165+
158166function reduceFunction ( f ) {
159167 return {
160168 reduce ( I , X ) {
0 commit comments