@@ -17,24 +17,25 @@ export const sanitizeNonInlinableClasses = (root: Root) => {
17
17
const sanitizedRules : ( Rule | AtRule ) [ ] = [ ] ;
18
18
const nonInlinableClasses : string [ ] = [ ] ;
19
19
20
+ const selectorProcessor = selectorParser ( ) ;
21
+
20
22
// Process rules within at-rules (like media queries)
21
23
root . walkAtRules ( ( atRule ) => {
22
24
const sanitizedAtRule = atRule . clone ( ) ;
23
25
24
26
sanitizedAtRule . walkRules ( ( rule ) => {
25
- const processedSelector = selectorParser ( ( selectorRoot ) => {
26
- selectorRoot . walkClasses ( ( className ) => {
27
- sanitizeSelectorClassName ( className ) ;
28
- nonInlinableClasses . push ( className . value ) ;
29
- } ) ;
30
- } ) . processSync ( rule . selector ) ;
31
-
32
- const processedRule = rule . clone ( { selector : processedSelector } ) ;
27
+ const selectorRoot = selectorProcessor . astSync ( rule . selector ) ;
28
+ selectorRoot . walkClasses ( ( className ) => {
29
+ nonInlinableClasses . push ( className . value ) ;
30
+ sanitizeSelectorClassName ( className ) ;
31
+ } ) ;
32
+
33
+ const processedRule = rule . clone ( { selector : selectorRoot . toString ( ) } ) ;
33
34
processedRule . walkDecls ( ( decl ) => {
34
35
decl . important = true ;
35
36
} ) ;
36
37
37
- sanitizedAtRule . append ( processedRule ) ;
38
+ rule . replaceWith ( processedRule ) ;
38
39
} ) ;
39
40
40
41
const equivalentRule = sanitizedRules . find (
@@ -52,23 +53,22 @@ export const sanitizeNonInlinableClasses = (root: Root) => {
52
53
root . walkRules ( ( rule ) => {
53
54
if ( rule . parent && rule . parent . type !== 'root' ) return ;
54
55
55
- let hasPseudoSelector = false as boolean ;
56
+ const selectorRoot = selectorProcessor . astSync ( rule . selector ) ;
56
57
57
- const processedSelector = selectorParser ( ( selectorRoot ) => {
58
- selectorRoot . walkPseudos ( ( ) => {
59
- hasPseudoSelector = true ;
60
- } ) ;
58
+ let hasPseudoSelector = false as boolean ;
59
+ selectorRoot . walkPseudos ( ( ) => {
60
+ hasPseudoSelector = true ;
61
+ } ) ;
61
62
62
- if ( ! hasPseudoSelector ) return ;
63
+ if ( ! hasPseudoSelector ) return ;
63
64
64
- selectorRoot . walkClasses ( ( className ) => {
65
- sanitizeSelectorClassName ( className ) ;
66
- nonInlinableClasses . push ( className . value ) ;
67
- } ) ;
68
- } ) . processSync ( rule . selector ) ;
65
+ selectorRoot . walkClasses ( ( className ) => {
66
+ nonInlinableClasses . push ( className . value ) ;
67
+ sanitizeSelectorClassName ( className ) ;
68
+ } ) ;
69
69
70
70
if ( hasPseudoSelector ) {
71
- const processedRule = rule . clone ( { selector : processedSelector } ) ;
71
+ const processedRule = rule . clone ( { selector : selectorRoot . toString ( ) } ) ;
72
72
processedRule . walkDecls ( ( decl ) => {
73
73
decl . important = true ;
74
74
} ) ;
0 commit comments