AngleSharp by Florian Rappl

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

.NET API 1,189,376 bytes

 CssCursorProperty

Information can be found on MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/cursor
using AngleSharp.Css; using AngleSharp.Css.Values; using AngleSharp.Extensions; using System; namespace AngleSharp.Dom.Css { internal sealed class CssCursorProperty : CssProperty { private struct CustomCursor { public IImageSource Image; public float X; public float Y; } private static readonly IValueConverter<Tuple<CustomCursor[], SystemCursor>> Converter = Converters.ImageSourceConverter.To(delegate(IImageSource m) { CustomCursor result2 = default(CustomCursor); result2.Image = m; return result2; }).Or(Converters.WithOrder(Converters.ImageSourceConverter.Required(), Converters.NumberConverter.Required(), Converters.NumberConverter.Required()).To(delegate(Tuple<IImageSource, float, float> v) { CustomCursor result = default(CustomCursor); result.Image = v.Item1; result.X = v.Item2; result.Y = v.Item3; return result; })).FromList() .RequiresEnd(Map.Cursors.ToConverter()); internal CssCursorProperty(CssStyleDeclaration rule) : base(PropertyNames.Cursor, rule, PropertyFlags.Inherited) { } protected override object GetDefault(IElement element) { return SystemCursor.Auto; } protected override object Compute(IElement element) { return Converter.Convert(base.Value).Item2; } protected override bool IsValid(ICssValue value) { return Converter.Validate(value); } } }