@@ -4,17 +4,22 @@ const selectorProcessor = selectorParser(selectors => {
4
4
let hoverSelectors = [ ]
5
5
6
6
selectors . walk ( selector => {
7
- if ( selector . type === 'pseudo' && `${ selector } ` === ':hover' ) {
8
- hoverSelectors . push ( `${ selector . parent } ` )
7
+ if (
8
+ selector . type === 'pseudo' &&
9
+ selector . toString ( ) === ':hover' &&
10
+ selector . parent . value !== ':not' &&
11
+ selector . parent . toString ( ) !== ':hover'
12
+ ) {
13
+ hoverSelectors . push ( selector . parent . toString ( ) )
9
14
}
10
15
} )
11
16
12
17
let nonHoverSelectors = selectors . reduce ( ( acc , selector ) => {
13
- if ( hoverSelectors . includes ( ` ${ selector } ` ) ) {
18
+ if ( hoverSelectors . includes ( selector . toString ( ) ) ) {
14
19
return acc
15
20
}
16
21
17
- return [ ...acc , ` ${ selector } ` ]
22
+ return [ ...acc , selector . toString ( ) ]
18
23
} , [ ] )
19
24
20
25
return { hoverSelectors, nonHoverSelectors }
@@ -69,6 +74,10 @@ module.exports = ({
69
74
nonHoverSelectors = [ ]
70
75
} = selectorProcessor . transformSync ( rule . selector , { lossless : false } )
71
76
77
+ if ( hoverSelectors . length === 0 ) {
78
+ return
79
+ }
80
+
72
81
let mediaQuery = createMediaQuery (
73
82
rule . clone ( { selectors : hoverSelectors } ) ,
74
83
{ AtRule }
@@ -93,7 +102,7 @@ module.exports = ({
93
102
)
94
103
}
95
104
96
- if ( nonHoverSelectors . length ) {
105
+ if ( nonHoverSelectors . length > 0 ) {
97
106
rule . replaceWith ( rule . clone ( { selectors : nonHoverSelectors } ) )
98
107
99
108
return
0 commit comments