parseRules method
Implementation
List<CSSRule> parseRules(
{double? windowWidth, double? windowHeight, bool? isDarkMode}) {
List<CSSRule> expandMedia(CSSRule rule) {
if (rule is CSSMediaDirective) {
final List<CSSRule> expanded = <CSSRule>[];
final List<CSSRule>? mediaRules = rule.getValidMediaRules(
windowWidth, windowHeight, isDarkMode ?? false);
if (mediaRules == null) {
return expanded;
}
for (final CSSRule child in mediaRules) {
expanded.addAll(expandMedia(child));
}
return expanded;
}
if (rule is CSSLayerBlockRule) {
final List<CSSRule> expandedChildren = <CSSRule>[];
for (final CSSRule child in rule.cssRules) {
expandedChildren.addAll(expandMedia(child));
}
return <CSSRule>[
CSSLayerBlockRule(
name: rule.name,
layerNamePath: List<String>.from(rule.layerNamePath),
cssRules: expandedChildren,
)
];
}
return <CSSRule>[rule];
}
var rules = <CSSRule>[];
while (!_maybeEat(TokenKind.END_OF_FILE)) {
final data = processRule();
if (data != null) {
for (CSSRule cssRule in data) {
rules.addAll(expandMedia(cssRule));
}
} else {
_next();
}
}
checkEndOfFile();
return rules;
}