AngleSharp by Florian Rappl

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

.NET API 1,168,384 bytes

 CssTransitionProperty

More information available at: https://developer.mozilla.org/en-US/docs/CSS/transition
using AngleSharp.Css; using AngleSharp.Extensions; using System; using System.Collections.Generic; using System.Linq; namespace AngleSharp.Dom.Css { internal sealed class CssTransitionProperty : CssShorthandProperty { internal static readonly IValueConverter<Tuple<ICssValue, ICssValue, ICssValue, ICssValue>[]> Converter = Converters.WithAny(Converters.AnimatableConverter.Val().Option(), Converters.TimeConverter.Val().Option(), Converters.TransitionConverter.Val().Option(), Converters.TimeConverter.Val().Option()).FromList(); internal CssTransitionProperty(CssStyleDeclaration rule) : base(PropertyNames.Transition, rule, PropertyFlags.None) { } protected override bool IsValid(ICssValue value) { return Converter.TryConvert(value, delegate(Tuple<ICssValue, ICssValue, ICssValue, ICssValue>[] t) { Get<CssTransitionPropertyProperty>().TrySetValue(Transform(from m in t select m.Item1)); Get<CssTransitionDurationProperty>().TrySetValue(Transform(from m in t select m.Item2)); Get<CssTransitionTimingFunctionProperty>().TrySetValue(Transform(from m in t select m.Item3)); Get<CssTransitionDelayProperty>().TrySetValue(Transform(from m in t select m.Item4)); }); } private ICssValue Transform(IEnumerable<ICssValue> values) { if (values.Count() > 1) return new CssValueList(values.ToList()); return values.FirstOrDefault(); } internal override string SerializeValue(IEnumerable<CssProperty> properties) { CssTransitionPropertyProperty cssTransitionPropertyProperty = properties.OfType<CssTransitionPropertyProperty>().FirstOrDefault(); CssTransitionDurationProperty cssTransitionDurationProperty = properties.OfType<CssTransitionDurationProperty>().FirstOrDefault(); CssTransitionTimingFunctionProperty cssTransitionTimingFunctionProperty = properties.OfType<CssTransitionTimingFunctionProperty>().FirstOrDefault(); CssTransitionDelayProperty cssTransitionDelayProperty = properties.OfType<CssTransitionDelayProperty>().FirstOrDefault(); if (cssTransitionPropertyProperty == null || cssTransitionDurationProperty == null) return string.Empty; List<string> list = new List<string>(); list.Add(cssTransitionPropertyProperty.SerializeValue()); list.Add(cssTransitionDurationProperty.SerializeValue()); if (cssTransitionTimingFunctionProperty != null && cssTransitionTimingFunctionProperty.HasValue) list.Add(cssTransitionTimingFunctionProperty.SerializeValue()); if (cssTransitionDelayProperty != null && cssTransitionDelayProperty.HasValue) list.Add(cssTransitionDelayProperty.SerializeValue()); return string.Join(" ", list); } } }