AngleSharp by Florian Rappl

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

.NET API 1,172,480 bytes

 CssKeyframesRule

Represents an @keyframes rule.
using AngleSharp.Extensions; using AngleSharp.Parser.Css; using System; using System.Linq; namespace AngleSharp.Dom.Css { internal sealed class CssKeyframesRule : CssRule, ICssKeyframesRule, ICssRule { 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() : base(CssRuleType.Keyframes) { _rules = new CssRuleList(); } public void Add(string rule) { CssKeyframeRule value = CssParser.ParseKeyframeRule(rule, null); _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); } protected override string ToCss() { return "@keyframes " + _name + " " + _rules.ToCssBlock(); } } }