@@ -20,13 +20,15 @@ function hasAtRule(css, atRule) {
2020 return foundAtRule
2121}
2222
23- function applyUtility ( rule , className , replaceWith ) {
23+ function applyUtility ( { rule, utilityName : className , classPosition } , replaceWith ) {
2424 const processedSelectors = rule . selectors . map ( selector => {
2525 const processor = selectorParser ( selectors => {
26+ let i = 0
2627 selectors . walkClasses ( c => {
27- if ( c . value === className ) {
28+ if ( c . value === className && classPosition === i ) {
2829 c . replaceWith ( selectorParser . attribute ( { attribute : '__TAILWIND-APPLY-PLACEHOLDER__' } ) )
2930 }
31+ i ++
3032 } )
3133 } )
3234
@@ -78,14 +80,15 @@ function buildUtilityMap(css) {
7880 css . walkRules ( rule => {
7981 const utilityNames = extractUtilityNames ( rule . selector )
8082
81- utilityNames . forEach ( utilityName => {
83+ utilityNames . forEach ( ( utilityName , i ) => {
8284 if ( utilityMap [ utilityName ] === undefined ) {
8385 utilityMap [ utilityName ] = [ ]
8486 }
8587
8688 utilityMap [ utilityName ] . push ( {
8789 index,
8890 utilityName,
91+ classPosition : i ,
8992 rule : rule . clone ( { parent : rule . parent } ) ,
9093 containsApply : hasAtRule ( rule , 'apply' ) ,
9194 } )
@@ -205,7 +208,7 @@ function processApplyAtRules(css, lookupTree, config) {
205208 // Get new rules with the utility portion of the selector replaced with the new selector
206209 const rulesToInsert = [
207210 ...injects . map ( injectUtility => {
208- return applyUtility ( injectUtility . rule , injectUtility . utilityName , rule . selector )
211+ return applyUtility ( injectUtility , rule . selector )
209212 } ) ,
210213 afterRule ,
211214 ]
0 commit comments