AngleSharp by Florian Rappl

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

.NET API 1,229,312 bytes

 CssAnimationProperty

More information available at: https://developer.mozilla.org/en-US/docs/CSS/animation
using AngleSharp.Css; using AngleSharp.Extensions; using System; using System.Collections.Generic; using System.Linq; namespace AngleSharp.Dom.Css { internal sealed class CssAnimationProperty : CssShorthandProperty { internal static readonly IValueConverter<Tuple<CssValue, CssValue, CssValue, CssValue, CssValue, CssValue, CssValue, Tuple<CssValue>>[]> Converter = Converters.WithAny(Converters.TimeConverter.Val().Option(), Converters.TransitionConverter.Val().Option(), Converters.TimeConverter.Val().Option(), Converters.PositiveOrInfiniteNumberConverter.Val().Option(), Converters.AnimationDirectionConverter.Val().Option(), Converters.AnimationFillStyleConverter.Val().Option(), Converters.PlayStateConverter.Val().Option(), Converters.IdentifierConverter.Val().Option()).FromList(); internal CssAnimationProperty(CssStyleDeclaration rule) : base(PropertyNames.Animation, rule, PropertyFlags.None) { } protected override bool IsValid(CssValue value) { return Converter.TryConvert(value, delegate(Tuple<CssValue, CssValue, CssValue, CssValue, CssValue, CssValue, CssValue, Tuple<CssValue>>[] t) { Get<CssAnimationDurationProperty>().TrySetValue(Transform(from m in t select m.Item1)); Get<CssAnimationTimingFunctionProperty>().TrySetValue(Transform(from m in t select m.Item2)); Get<CssAnimationDelayProperty>().TrySetValue(Transform(from m in t select m.Item3)); Get<CssAnimationIterationCountProperty>().TrySetValue(Transform(from m in t select m.Item4)); Get<CssAnimationDirectionProperty>().TrySetValue(Transform(from m in t select m.Item5)); Get<CssAnimationFillModeProperty>().TrySetValue(Transform(from m in t select m.Item6)); Get<CssAnimationPlayStateProperty>().TrySetValue(Transform(from m in t select m.Item7)); Get<CssAnimationNameProperty>().TrySetValue(Transform(from m in t select m.Rest.Item1)); }); } private CssValue Transform(IEnumerable<CssValue> values) { return values.FirstOrDefault(); } internal override string SerializeValue(IEnumerable<CssProperty> properties) { CssAnimationNameProperty cssAnimationNameProperty = properties.OfType<CssAnimationNameProperty>().FirstOrDefault(); CssAnimationDurationProperty cssAnimationDurationProperty = properties.OfType<CssAnimationDurationProperty>().FirstOrDefault(); CssAnimationTimingFunctionProperty cssAnimationTimingFunctionProperty = properties.OfType<CssAnimationTimingFunctionProperty>().FirstOrDefault(); CssAnimationDelayProperty cssAnimationDelayProperty = properties.OfType<CssAnimationDelayProperty>().FirstOrDefault(); CssAnimationIterationCountProperty cssAnimationIterationCountProperty = properties.OfType<CssAnimationIterationCountProperty>().FirstOrDefault(); CssAnimationDirectionProperty cssAnimationDirectionProperty = properties.OfType<CssAnimationDirectionProperty>().FirstOrDefault(); CssAnimationFillModeProperty cssAnimationFillModeProperty = properties.OfType<CssAnimationFillModeProperty>().FirstOrDefault(); CssAnimationPlayStateProperty cssAnimationPlayStateProperty = properties.OfType<CssAnimationPlayStateProperty>().FirstOrDefault(); if (cssAnimationNameProperty == null || cssAnimationDurationProperty == null) return string.Empty; List<string> list = new List<string>(); list.Add(cssAnimationNameProperty.SerializeValue()); list.Add(cssAnimationDurationProperty.SerializeValue()); if (cssAnimationTimingFunctionProperty != null && cssAnimationTimingFunctionProperty.HasValue) list.Add(cssAnimationTimingFunctionProperty.SerializeValue()); if (cssAnimationDelayProperty != null && cssAnimationDelayProperty.HasValue) list.Add(cssAnimationDelayProperty.SerializeValue()); if (cssAnimationIterationCountProperty != null && cssAnimationIterationCountProperty.HasValue) list.Add(cssAnimationIterationCountProperty.SerializeValue()); if (cssAnimationDirectionProperty != null && cssAnimationDirectionProperty.HasValue) list.Add(cssAnimationDirectionProperty.SerializeValue()); if (cssAnimationFillModeProperty != null && cssAnimationFillModeProperty.HasValue) list.Add(cssAnimationFillModeProperty.SerializeValue()); if (cssAnimationPlayStateProperty != null && cssAnimationPlayStateProperty.HasValue) list.Add(cssAnimationPlayStateProperty.SerializeValue()); return string.Join(" ", list); } } }