cascadeMatchedStyleRules function

CSSStyleDeclaration cascadeMatchedStyleRules(
  1. List<CSSStyleRule> rules
)

Implementation

CSSStyleDeclaration cascadeMatchedStyleRules(List<CSSStyleRule> rules) {
  final declaration = CSSStyleDeclaration();
  if (rules.isEmpty) return declaration;

  final normalOrder = List<CSSStyleRule>.from(rules)
    ..sort((a, b) => compareStyleRulesForCascade(a, b, important: false));
  for (final r in normalOrder) {
    declaration.unionByImportance(r.declaration, important: false);
  }

  final importantOrder = List<CSSStyleRule>.from(rules)
    ..sort((a, b) => compareStyleRulesForCascade(a, b, important: true));
  for (final r in importantOrder) {
    declaration.unionByImportance(r.declaration, important: true);
  }

  return declaration;
}