@@ -30,25 +30,52 @@ export function makeInlineStylesFor(
30
30
31
31
let residualClasses = [ ...classes ] ;
32
32
const styles : Record < string , string > = { } ;
33
+ const classesWithNonInlinableStyles = new Set < string > ( ) ;
34
+
35
+ tailwindStylesRoot . walkRules ( ( rule ) => {
36
+ const isInAtRule = rule . parent ?. type === 'atrule' ;
37
+
38
+ let hasPseudoSelectors = false ;
39
+ selectorParser ( ( selector ) => {
40
+ selector . walkPseudos ( ( ) => {
41
+ hasPseudoSelectors = true ;
42
+ } ) ;
43
+ } ) . processSync ( rule . selector ) ;
44
+
45
+ const isNonInlinable = isInAtRule || hasPseudoSelectors ;
46
+
47
+ if ( isNonInlinable ) {
48
+ selectorParser ( ( selector ) => {
49
+ selector . walkClasses ( ( v ) => {
50
+ classesWithNonInlinableStyles . add ( unescapeClass ( v . value ) ) ;
51
+ } ) ;
52
+ } ) . processSync ( rule . selector ) ;
53
+ }
54
+ } ) ;
55
+
56
+ const inlinableClasses = new Set < string > ( ) ;
33
57
34
58
walkInlinableRules ( tailwindStylesRoot , ( rule ) => {
35
- const classesOnSelector : string [ ] = [ ] ;
36
59
selectorParser ( ( selector ) => {
37
60
selector . walkClasses ( ( v ) => {
38
- classesOnSelector . push ( unescapeClass ( v . value ) ) ;
61
+ inlinableClasses . add ( unescapeClass ( v . value ) ) ;
39
62
} ) ;
40
63
} ) . processSync ( rule . selector ) ;
41
64
42
- residualClasses = residualClasses . filter ( ( singleClass ) => {
43
- return ! classesOnSelector . includes ( singleClass ) ;
44
- } ) ;
45
-
46
65
rule . walkDecls ( ( declaration ) => {
47
66
styles [ convertCssPropertyToReactProperty ( declaration . prop ) ] =
48
67
declaration . value + ( declaration . important ? '!important' : '' ) ;
49
68
} ) ;
50
69
} ) ;
51
70
71
+ residualClasses = residualClasses . filter ( ( singleClass ) => {
72
+ const isInlinable = inlinableClasses . has ( singleClass ) ;
73
+ const hasNonInlinableStyles =
74
+ classesWithNonInlinableStyles . has ( singleClass ) ;
75
+
76
+ return ! isInlinable || hasNonInlinableStyles ;
77
+ } ) ;
78
+
52
79
return {
53
80
styles,
54
81
residualClassName : residualClasses . join ( ' ' ) ,
0 commit comments