@@ -70,26 +70,34 @@ let getSelector = (prefix, attributeName, attributeValue) => {
70
70
}
71
71
} ;
72
72
73
+ let mapSelector = ( selector , fn ) => {
74
+ if ( Array . isArray ( selector ) ) {
75
+ return selector . map ( fn ) ;
76
+ } else {
77
+ return fn ( selector ) ;
78
+ }
79
+ } ;
80
+
73
81
module . exports = plugin . withOptions ( ( options ) => ( ( { addVariant} ) => {
74
82
let prefix = options ?. prefix ? `${ options . prefix } -` : '' ;
75
83
attributes . boolean . forEach ( ( attribute ) => {
76
84
let variantName = Array . isArray ( attribute ) ? attribute [ 0 ] : attribute ;
77
85
variantName = `${ prefix } ${ variantName } ` ;
78
86
let attributeName = Array . isArray ( attribute ) ? attribute [ 1 ] : attribute ;
79
- let selector = getSelector ( prefix , attributeName ) ;
80
- addVariant ( variantName , selector ) ;
81
- addVariant ( `group-${ variantName } ` , `:merge(.group)${ selector . slice ( 1 ) } &` ) ;
82
- addVariant ( `peer-${ variantName } ` , `:merge(.peer)${ selector . slice ( 1 ) } ~ &` ) ;
87
+ let selectors = getSelector ( prefix , attributeName ) ;
88
+ addVariant ( variantName , selectors ) ;
89
+ addVariant ( `group-${ variantName } ` , mapSelector ( selectors , selector => `:merge(.group)${ selector . slice ( 1 ) } &` ) ) ;
90
+ addVariant ( `peer-${ variantName } ` , mapSelector ( selectors , selector => `:merge(.peer)${ selector . slice ( 1 ) } ~ &` ) ) ;
83
91
} ) ;
84
92
Object . keys ( attributes . enum ) . forEach ( ( attributeName ) => {
85
93
attributes . enum [ attributeName ] . forEach (
86
94
( attributeValue ) => {
87
95
let name = shortNames [ attributeName ] || attributeName ;
88
96
let variantName = `${ prefix } ${ name } -${ attributeValue } ` ;
89
- let selector = getSelector ( prefix , attributeName , attributeValue ) ;
90
- addVariant ( variantName , selector ) ;
91
- addVariant ( `group-${ variantName } ` , `:merge(.group)${ selector . slice ( 1 ) } &` ) ;
92
- addVariant ( `peer-${ variantName } ` , `:merge(.peer)${ selector . slice ( 1 ) } ~ &` ) ;
97
+ let selectors = getSelector ( prefix , attributeName , attributeValue ) ;
98
+ addVariant ( variantName , selectors ) ;
99
+ addVariant ( `group-${ variantName } ` , mapSelector ( selectors , selector => `:merge(.group)${ selector . slice ( 1 ) } &` ) ) ;
100
+ addVariant ( `peer-${ variantName } ` , mapSelector ( selectors , selector => `:merge(.peer)${ selector . slice ( 1 ) } ~ &` ) ) ;
93
101
}
94
102
) ;
95
103
} ) ;
0 commit comments