AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.8.7" />

.NET API 1,175,040 bytes

 CssKeyframesRule

Represents an @keyframes rule.
using AngleSharp.Parser.Css; using System; using System.Linq; namespace AngleSharp.Dom.Css { internal sealed class CssKeyframesRule : CssRule, ICssKeyframesRule, ICssRule, IStyleFormattable { private readonly CssRuleList _rules; private string _name; public string Name { get { return _name; } set { _name = value; } } public CssRuleList Rules => _rules; ICssRuleList ICssKeyframesRule.Rules { get { return _rules; } } internal CssKeyframesRule(CssParser parser) : base(CssRuleType.Keyframes, parser) { _rules = new CssRuleList(); } public void Add(string rule) { CssKeyframeRule value = base.Parser.ParseKeyframeRule(rule); _rules.Insert(value, _rules.Length, base.Owner, this); } public void Remove(string key) { ICssKeyframeRule cssKeyframeRule = Find(key); if (cssKeyframeRule != null) { int num = 0; while (true) { if (num >= _rules.Length) return; if (cssKeyframeRule == _rules[num]) break; num++; } _rules.RemoveAt(num); } } public ICssKeyframeRule Find(string key) { return _rules.OfType<ICssKeyframeRule>().FirstOrDefault((ICssKeyframeRule m) => m.KeyText.Equals(key, StringComparison.OrdinalIgnoreCase)); } protected override void ReplaceWith(ICssRule rule) { CssKeyframesRule cssKeyframesRule = rule as CssKeyframesRule; _name = cssKeyframesRule._name; _rules.Clear(); _rules.Import(cssKeyframesRule._rules, base.Owner, base.Parent); } public override string ToCss(IStyleFormatter formatter) { string rules = formatter.Block(Rules); return formatter.Rule("@keyframes", _name, rules); } } }