CssKeyframeRule
Represents a CSS @keyframe rule.
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssKeyframeRule : CssRule, ICssKeyframeRule, ICssRule, IStyleFormattable
{
private readonly CssStyleDeclaration _style;
private IKeyframeSelector _selector;
public string KeyText {
get {
return _selector.Text;
}
set {
IKeyframeSelector keyframeSelector = base.Parser.ParseKeyframeSelector(value);
if (keyframeSelector == null)
throw new DomException(DomError.Syntax);
_selector = keyframeSelector;
}
}
public IKeyframeSelector Key {
get {
return _selector;
}
set {
_selector = value;
}
}
ICssStyleDeclaration ICssKeyframeRule.Style {
get {
return _style;
}
}
public CssStyleDeclaration Style => _style;
internal CssKeyframeRule(CssParser parser)
: base(CssRuleType.Keyframe, parser)
{
_style = new CssStyleDeclaration(this);
}
protected override void ReplaceWith(ICssRule rule)
{
CssKeyframeRule cssKeyframeRule = (CssKeyframeRule)rule;
_selector = cssKeyframeRule._selector;
_style.Clear();
_style.SetDeclarations(cssKeyframeRule._style.Declarations);
}
public override string ToCss(IStyleFormatter formatter)
{
string rules = _style.ToCss(formatter);
return formatter.Style(KeyText, rules);
}
}
}