CssAnimationIterationCountProperty
sealed class CssAnimationIterationCountProperty : CssProperty, ICssAnimationIterationCountProperty, ICssProperty
More information available at:
https://developer.mozilla.org/en-US/docs/CSS/animation-iteration-count
using AngleSharp.Css;
using AngleSharp.Extensions;
using System.Collections.Generic;
namespace AngleSharp.Dom.Css
{
internal sealed class CssAnimationIterationCountProperty : CssProperty, ICssAnimationIterationCountProperty, ICssProperty
{
internal static readonly IValueConverter<float> SingleConverter = Converters.NumberConverter.Constraint((float m) => m >= 0).Or(Keywords.Infinite, Infinity);
internal static readonly IValueConverter<float[]> Converter = SingleConverter.FromList();
internal static readonly float Default = 1;
private readonly List<float> _iterations;
public IEnumerable<float> Iterations => _iterations;
internal CssAnimationIterationCountProperty(CssStyleDeclaration rule)
: base(PropertyNames.AnimationIterationCount, rule, PropertyFlags.None)
{
_iterations = new List<float>();
Reset();
}
public void SetIterations(IEnumerable<float> iterations)
{
_iterations.Clear();
_iterations.AddRange(iterations);
}
internal override void Reset()
{
_iterations.Clear();
_iterations.Add(Default);
}
protected override bool IsValid(ICssValue value)
{
return Converter.TryConvert(value, SetIterations);
}
}
}