pull/15450/head
Rich Harris 1 year ago
parent 77befcfb75
commit 227729e016

@ -113,10 +113,12 @@ const css_visitors = {
node.metadata.rule = context.state.rule;
node.metadata.used ||= node.children.every(
node.metadata.is_global = node.children.every(
({ metadata }) => metadata.is_global || metadata.is_global_like
);
node.metadata.used ||= node.metadata.is_global;
if (
node.metadata.rule?.metadata.parent_rule &&
node.children[0]?.selectors[0]?.type === 'NestingSelector'
@ -262,13 +264,10 @@ const css_visitors = {
// visit selector list first, to populate child selector metadata
context.visit(node.prelude, state);
node.metadata.has_global_selectors = node.prelude.children.some((selector) =>
selector.children.every(({ metadata }) => metadata.is_global || metadata.is_global_like)
);
node.metadata.has_local_selectors = node.prelude.children.some((selector) =>
selector.children.some(({ metadata }) => !metadata.is_global && !metadata.is_global_like)
);
for (const selector of node.prelude.children) {
node.metadata.has_global_selectors ||= selector.metadata.is_global;
node.metadata.has_local_selectors ||= !selector.metadata.is_global;
}
// if this rule has a ComplexSelector whose RelativeSelector children are all
// `:global(...)`, and the rule contains declarations (rather than just

@ -68,6 +68,7 @@ export namespace _CSS {
/** @internal */
metadata: {
rule: null | Rule;
is_global: boolean;
/** True if this selector applies to an element. For global selectors, this is defined in css-analyze, for others in css-prune while scoping */
used: boolean;
};

Loading…
Cancel
Save