Skip to content

Commit a5d4c42

Browse files
committed
shrink
1 parent b889a6d commit a5d4c42

File tree

1 file changed

+19
-20
lines changed
  • packages/svelte/src/compiler/phases/2-analyze/css

1 file changed

+19
-20
lines changed

packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,10 @@ function mark(relative_selector, element) {
216216
}
217217

218218
/**
219+
* Returns `true` if the relative selector is global, meaning
220+
* it's a `:global(...)` or `:host` or `:root` selector, or
221+
* is an `:is(...)` or `:where(...)` selector that contains
222+
* a global selector
219223
* @param {import('#compiler').Css.RelativeSelector} selector
220224
* @param {import('#compiler').Css.Rule} rule
221225
*/
@@ -225,35 +229,30 @@ function is_global(selector, rule) {
225229
}
226230

227231
for (const s of selector.selectors) {
232+
/** @type {import('#compiler').Css.SelectorList | null} */
233+
let selector_list = null;
234+
let owner = rule;
235+
228236
if (s.type === 'PseudoClassSelector') {
229237
if ((s.name === 'is' || s.name === 'where') && s.args) {
230-
const has_global_selectors = s.args.children.some((complex_selector) => {
231-
return complex_selector.children.every((relative_selector) =>
232-
is_global(relative_selector, rule)
233-
);
234-
});
235-
236-
if (has_global_selectors) {
237-
continue;
238-
}
238+
selector_list = s.args;
239239
}
240240
}
241241

242242
if (s.type === 'NestingSelector') {
243-
const parent_rule = /** @type {import('#compiler').Css.Rule} */ (rule.metadata.parent_rule);
243+
owner = /** @type {import('#compiler').Css.Rule} */ (rule.metadata.parent_rule);
244+
selector_list = owner.prelude;
245+
}
244246

245-
const has_global_selectors = parent_rule.prelude.children.some((complex_selector) => {
246-
return complex_selector.children.every((relative_selector) =>
247-
is_global(relative_selector, parent_rule)
248-
);
249-
});
247+
const has_global_selectors = selector_list?.children.some((complex_selector) => {
248+
return complex_selector.children.every((relative_selector) =>
249+
is_global(relative_selector, owner)
250+
);
251+
});
250252

251-
if (has_global_selectors) {
252-
continue;
253-
}
253+
if (!has_global_selectors) {
254+
return false;
254255
}
255-
256-
return false;
257256
}
258257

259258
return true;

0 commit comments

Comments
 (0)