CssKeyframeRule
Represents a CSS @keyframe rule.
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssKeyframeRule : CssRule, ICssKeyframeRule, ICssRule
{
private readonly CssStyleDeclaration _style;
private IKeyframeSelector _selector;
public string KeyText {
get {
return _selector.Text;
}
set {
IKeyframeSelector keyframeSelector = CssParser.ParseKeyText(value, null);
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()
: base(CssRuleType.Keyframe)
{
_style = new CssStyleDeclaration(this);
}
protected override void ReplaceWith(ICssRule rule)
{
CssKeyframeRule cssKeyframeRule = (CssKeyframeRule)rule;
_selector = cssKeyframeRule._selector;
_style.Clear();
_style.SetDeclarations(cssKeyframeRule._style);
}
protected override string ToCss()
{
return KeyText + " " + _style.ToCssBlock();
}
}
}