@@ -237,31 +237,39 @@ function is_global(selector, rule) {
237
237
return true ;
238
238
}
239
239
240
- if ( selector . selectors . every ( ( s ) => s . type === 'NestingSelector' ) ) {
241
- const parent_rule = /** @type {import('#compiler').Css.Rule } */ ( rule . metadata . parent_rule ) ;
242
- for ( const complex_selector of parent_rule . prelude . children ) {
243
- for ( const relative_selector of complex_selector . children ) {
244
- if ( is_global ( relative_selector , parent_rule ) ) {
245
- return true ; // we only need one for it to be considered a match
240
+ for ( const s of selector . selectors ) {
241
+ if ( s . type === 'PseudoClassSelector' ) {
242
+ if ( ( s . name === 'is' || s . name === 'where' ) && s . args ) {
243
+ const has_global_selectors = s . args . children . some ( ( complex_selector ) => {
244
+ return complex_selector . children . every ( ( relative_selector ) =>
245
+ is_global ( relative_selector , rule )
246
+ ) ;
247
+ } ) ;
248
+
249
+ if ( has_global_selectors ) {
250
+ continue ;
246
251
}
247
252
}
248
253
}
249
- }
250
254
251
- if ( selector . selectors . length === 1 ) {
252
- const s = selector . selectors [ 0 ] ;
253
- if ( s . type === 'PseudoClassSelector' && ( s . name === 'is' || s . name === 'where' ) && s . args ) {
254
- for ( const complex_selector of s . args . children ) {
255
- for ( const relative_selector of complex_selector . children ) {
256
- if ( is_global ( relative_selector , rule ) ) {
257
- return true ; // we only need one for it to be considered a match
258
- }
259
- }
255
+ if ( s . type === 'NestingSelector' ) {
256
+ const parent_rule = /** @type {import('#compiler').Css.Rule } */ ( rule . metadata . parent_rule ) ;
257
+
258
+ const has_global_selectors = parent_rule . prelude . children . some ( ( complex_selector ) => {
259
+ return complex_selector . children . every ( ( relative_selector ) =>
260
+ is_global ( relative_selector , parent_rule )
261
+ ) ;
262
+ } ) ;
263
+
264
+ if ( has_global_selectors ) {
265
+ continue ;
260
266
}
261
267
}
268
+
269
+ return false ;
262
270
}
263
271
264
- return false ;
272
+ return true ;
265
273
}
266
274
267
275
const regex_backslash_and_following_character = / \\ ( .) / g;
0 commit comments