Add efficient and kick ass rendering of Aura
MODIFY
WalletWasabi.Fluent.Desktop/WalletWasabi.Fluent.Desktop.csproj
WalletWasabi.Fluent.Desktop/WalletWasabi.Fluent.Desktop.csproj
<PackageIcon>Assets\WasabiLogo.ico</PackageIcon>
<Product>Wasabi Wallet Fluent</Product>
<!-- owners is not supported in MSBuild -->
- <AvaloniaVersion>0.10.12</AvaloniaVersion>
+ <AvaloniaVersion>0.10.999-cibuild0018686-beta</AvaloniaVersion>
</PropertyGroup>
<ItemGroup>

MODIFY
WalletWasabi.Fluent.Desktop/packages.lock.json
WalletWasabi.Fluent.Desktop/packages.lock.json
"net6.0": {
"Avalonia.Desktop": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "wy4k1uarrmZJSJENCe1hjNpdCJWhup0gt6KA2TtZILfGG7imj+an5IuQZUSXtA7cl7A+6tF6lPQLo82gESUlXQ==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "z9bx5x6vSLsHwiDKh3fB6c75PgkV/+vKU5F++T7fMJFQdmwtgHR50T5Vnny0GLvdUaY6imgQzSuihgexD5CWNw==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Native": "0.10.12",
- "Avalonia.Skia": "0.10.12",
- "Avalonia.Win32": "0.10.12",
- "Avalonia.X11": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Native": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Skia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Win32": "0.10.999-cibuild0018686-beta",
+ "Avalonia.X11": "0.10.999-cibuild0018686-beta"
}
},
"Avalonia.ReactiveUI": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "ZAtsgt+MfTPf3F/bGmHHIhGApqGUqT4kyHfTpBUs4p9ND3fssGGCTsnRO6BMfDjRgQRbc6qZTz/I81REN33v8Q==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0"
}
},
"Avalonia": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "0lDCanc5b4ERaCGBfTk/g+Jtd94v7W0zredjcq4V6MfkZ/Qyra8cbY2u8w5UXaTaPD9SVQSzyw+BmeZHp3XWxA==",
"dependencies": {
- "Avalonia.Remote.Protocol": "0.10.12",
+ "Avalonia.Remote.Protocol": "0.10.999-cibuild0018686-beta",
"JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3",
},
"Avalonia.Controls.DataGrid": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "gyaISbfUqoPf/TXyzQMIMf4jITYwUPMKadnh9c+aUvsh0FqmB8vo7ZZ5R0fTFxrdPfT90pdfQID6ql8k6xpmag==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Remote.Protocol": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Remote.Protocol": "0.10.999-cibuild0018686-beta",
"JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.Diagnostics": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "Zh2bi5Wk04DYi6zCH62FfmgYmRRcnkDaM9gCIngEsUw5b/k2NOvXTop/AOSSJw0p/ALzy08IAdUNIok6HPPn2Q==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Controls.DataGrid": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Controls.DataGrid": "0.10.999-cibuild0018686-beta",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.FreeDesktop": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "j42uWCWkAfZchYPrdRccr4mjB0kppSby3TEMCuNrp9GcQi+JhEPEbBAohU7FpR4bkv5FF2KAlDX5WiG2T+04kg==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "arpxc7wymtn5S3tEwSxEIWKb0c1Vut9AxPSb1DNcFMJpirjls+VM8Xg1lJ05RqwnsD0ykosbu4/qqny7J2z37w==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"Tmds.DBus": "0.9.0"
}
},
"Avalonia.Native": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "fXkTcbmiumE1in91MFbJ15dt27JVM6SjUNamCrVPGGb/Mcckt5UPrVldS/3YjuK8X1DVP/Hvwl7GElRbqky46g==",
"dependencies": {
- "Avalonia": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta"
}
},
"Avalonia.Remote.Protocol": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "tVofPSeg70sw70AzJ51AZMW9FlGeMGsuQ08eBuc0ImbiBUoGsP9KcZKMhs89Ip83dK2B1nT1qSZ0AfSfXFWeOQ=="
},
"Avalonia.Skia": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "vFr1oH7Vt94cb1KmACRaLzmgTTz8OdptX+L6LSAsrsYrVNRkQQGKPGjW9nOb4gzdCmKTRT9F1xlBtJL5AdJstw==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
},
"Avalonia.Win32": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "CnC65T8ScMK23BB+qJuiMicWQ5QIEiinnRzPqvAGUGyQbjIGpA5uOCKwzsOjUmzkhGqt31iDR0/Y3ZFbi5Mjog==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "J4+127rEJB8P6oJ4Nfb5EwgjMkRUtqoM3SC2RatKJWPYRiRH4Vra/c5yn5hVLIQHvNLvWV90xpCcE16ymjBVfw==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0"
},
"Avalonia.X11": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "mUY1cF1p86/UgLl1cbSmY3nVIatKQsSCDOH4avssL07xmKlRfB2G7Gi8jlhWNkLJTLL7iQp/u3X6bv7bs+0zNQ==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "g6Sr65i89LYz8u6espqviaegFbVx+udifw7U0eW//j+9ulTbtavIjPGPC5rCMy+4CoIi5yLOYvfCxTSTzuT/Rg==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.FreeDesktop": "0.10.12",
- "Avalonia.Skia": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.FreeDesktop": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Skia": "0.10.999-cibuild0018686-beta"
}
},
"Avalonia.Xaml.Behaviors": {
"type": "Transitive",
- "resolved": "0.10.12.2",
- "contentHash": "EqfzwstvqQcWnTJnaBvezxKwBSddozXpkFi5WrzVe976zedE+A1NruFgnC19aG7Vvy0mTQdlWFTtbAInv6IQyg==",
+ "resolved": "0.10.11.5",
+ "contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Xaml.Interactions": "0.10.12.2",
- "Avalonia.Xaml.Interactivity": "0.10.12.2"
+ "Avalonia": "0.10.11",
+ "Avalonia.Xaml.Interactions": "0.10.11.5",
+ "Avalonia.Xaml.Interactivity": "0.10.11.5"
}
},
"Avalonia.Xaml.Interactions": {
"type": "Transitive",
- "resolved": "0.10.12.2",
- "contentHash": "01NGXHMbvpg1JcZ4tFAZXD6i55vHIQnJl3+HFi7RSP1jevkjkSaVM8qjwLsTSfREsJ2OoiWxx2LcyUQJvO5Kjw==",
+ "resolved": "0.10.11.5",
+ "contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Xaml.Interactivity": "0.10.12.2"
+ "Avalonia": "0.10.11",
+ "Avalonia.Xaml.Interactivity": "0.10.11.5"
}
},
"Avalonia.Xaml.Interactivity": {
"type": "Transitive",
- "resolved": "0.10.12.2",
- "contentHash": "AGAbT1I6XW1+9tweLHDMGX8+SijE111vNNIQy2gI3bpbLfPYTirLPyK0do2s9V6l7hHfQnNmiX2NA6JHC4WG4Q==",
+ "resolved": "0.10.11.5",
+ "contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==",
"dependencies": {
- "Avalonia": "0.10.12"
+ "Avalonia": "0.10.11"
}
},
"DataBox": {
"walletwasabi.fluent": {
"type": "Project",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Controls.DataGrid": "0.10.12",
- "Avalonia.Diagnostics": "0.10.12",
- "Avalonia.ReactiveUI": "0.10.12",
- "Avalonia.Xaml.Behaviors": "0.10.12.2",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Controls.DataGrid": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Diagnostics": "0.10.999-cibuild0018686-beta",
+ "Avalonia.ReactiveUI": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Skia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Xaml.Behaviors": "0.10.11.5",
"DataBox": "0.10.11.1",
"System.Drawing.Common": "6.0.0",
"System.Reactive": "5.0.0",
},
"Avalonia.Native": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "fXkTcbmiumE1in91MFbJ15dt27JVM6SjUNamCrVPGGb/Mcckt5UPrVldS/3YjuK8X1DVP/Hvwl7GElRbqky46g==",
"dependencies": {
- "Avalonia": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta"
}
},
"HarfBuzzSharp.NativeAssets.Linux": {
},
"Avalonia.Native": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "fXkTcbmiumE1in91MFbJ15dt27JVM6SjUNamCrVPGGb/Mcckt5UPrVldS/3YjuK8X1DVP/Hvwl7GElRbqky46g==",
"dependencies": {
- "Avalonia": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta"
}
},
"HarfBuzzSharp.NativeAssets.Linux": {
},
"Avalonia.Native": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "fXkTcbmiumE1in91MFbJ15dt27JVM6SjUNamCrVPGGb/Mcckt5UPrVldS/3YjuK8X1DVP/Hvwl7GElRbqky46g==",
"dependencies": {
- "Avalonia": "0.10.12"
+ "Avalonia": "0.10.999-cibuild0018686-beta"
}
},
"HarfBuzzSharp.NativeAssets.Linux": {

MODIFY
WalletWasabi.Fluent/Controls/Spectrum/SpectrumControl.cs
WalletWasabi.Fluent/Controls/Spectrum/SpectrumControl.cs
@@ -2,16 +2,21 @@ using System.Collections.Generic;
using Avalonia;
using Avalonia.Controls.Primitives;
using Avalonia.Media;
+using Avalonia.Media.Immutable;
+using Avalonia.Platform;
+using Avalonia.Rendering.SceneGraph;
+using Avalonia.Skia;
+using Avalonia.Skia.Helpers;
using Avalonia.Threading;
+using SkiaSharp;
namespace WalletWasabi.Fluent.Controls.Spectrum;
-public class SpectrumControl : TemplatedControl
+public class SpectrumControl : TemplatedControl, ICustomDrawOperation
{
- private Pen _linePen;
- private ISolidColorBrush _lineBrush;
- private IConicGradientBrush _gradientBrush;
+ private ImmutablePen _linePen;
+ private IBrush _lineBrush;
private readonly AuraSpectrumDataSource _auraSpectrumDataSource;
private readonly SplashEffectDataSource _splashEffectDataSource;
@@ -36,7 +41,7 @@ public class SpectrumControl : TemplatedControl
_sources = new SpectrumDataSource[] { _auraSpectrumDataSource, _splashEffectDataSource };
- _lineBrush = SolidColorBrush.Parse("#97D234");
+ _lineBrush = SolidColorBrush.Parse("#97D234").ToImmutable();
Background = new RadialGradientBrush()
{
@@ -89,7 +94,7 @@ public class SpectrumControl : TemplatedControl
protected override Size ArrangeOverride(Size finalSize)
{
- _linePen = new Pen(_lineBrush, finalSize.Width / NumBins);
+ _linePen = new Pen(_lineBrush, finalSize.Width / NumBins).ToImmutable();
return base.ArrangeOverride(finalSize);
}
@@ -98,11 +103,6 @@ public class SpectrumControl : TemplatedControl
{
base.Render(context);
- var thickness = Bounds.Width / NumBins;
- var center = (Bounds.Width / 2);
-
- double x = 0;
-
for (int i = 0; i < NumBins; i++)
{
_data[i] = 0;
@@ -113,19 +113,57 @@ public class SpectrumControl : TemplatedControl
source.Render(ref _data);
}
+ context.Custom(this);
+
+ Dispatcher.UIThread.Post(() => InvalidateVisual());
+ }
+
+ private void RenderBars(IDrawingContextImpl context)
+ {
+ var thickness = Bounds.Width / NumBins;
+ var center = (Bounds.Width / 2);
+
+ double x = 0;
+
for (int i = 0; i < NumBins; i++)
{
var dCenter = Math.Abs(x - center);
var multiplier = 1 - (dCenter / center);
context.DrawLine(_linePen, new Point(x, Bounds.Height),
- new Point(x, Bounds.Height - multiplier * _data[i] * (Bounds.Height * 0.95)));
+ new Point(x, Bounds.Height - multiplier * _data[i] * (Bounds.Height * 0.8)));
x += thickness;
}
+ }
- context.FillRectangle(Background, Bounds);
+ void IDisposable.Dispose()
+ {
+ }
- Dispatcher.UIThread.Post(() => InvalidateVisual());
+ bool IDrawOperation.HitTest(Point p) => Bounds.Contains(p);
+
+ void IDrawOperation.Render(IDrawingContextImpl context)
+ {
+ var bounds = Bounds;
+
+ if (context is not ISkiaDrawingContextImpl skia)
+ {
+ return;
}
+
+ using (var barsLayer =
+ DrawingContextHelper.CreateDrawingContext(bounds.Size, new Vector(96, 96), skia.GrContext))
+ {
+ RenderBars(barsLayer);
+
+ using (var filter = SKImageFilter.CreateBlur(24, 24, SKShaderTileMode.Clamp))
+ using (var paint = new SKPaint { ImageFilter = filter })
+ {
+ barsLayer.DrawTo(skia, paint);
+ }
+ }
+ }
+
+ bool IEquatable<ICustomDrawOperation>.Equals(ICustomDrawOperation? other) => false;
}
\ No newline at end of file

MODIFY
WalletWasabi.Fluent/WalletWasabi.Fluent.csproj
WalletWasabi.Fluent/WalletWasabi.Fluent.csproj
<InvariantGlobalization>true</InvariantGlobalization>
<RuntimeIdentifiers>win7-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<PathMap>$(MSBuildProjectDirectory)\=WalletWasabi.Fluent</PathMap>
- <AvaloniaVersion>0.10.12</AvaloniaVersion>
+ <AvaloniaVersion>0.10.999-cibuild0018686-beta</AvaloniaVersion>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>

MODIFY
WalletWasabi.Fluent/packages.lock.json
WalletWasabi.Fluent/packages.lock.json
"net6.0": {
"Avalonia": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "0lDCanc5b4ERaCGBfTk/g+Jtd94v7W0zredjcq4V6MfkZ/Qyra8cbY2u8w5UXaTaPD9SVQSzyw+BmeZHp3XWxA==",
"dependencies": {
- "Avalonia.Remote.Protocol": "0.10.12",
+ "Avalonia.Remote.Protocol": "0.10.999-cibuild0018686-beta",
"JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3",
},
"Avalonia.Controls.DataGrid": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "gyaISbfUqoPf/TXyzQMIMf4jITYwUPMKadnh9c+aUvsh0FqmB8vo7ZZ5R0fTFxrdPfT90pdfQID6ql8k6xpmag==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Remote.Protocol": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Remote.Protocol": "0.10.999-cibuild0018686-beta",
"JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.Diagnostics": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "Zh2bi5Wk04DYi6zCH62FfmgYmRRcnkDaM9gCIngEsUw5b/k2NOvXTop/AOSSJw0p/ALzy08IAdUNIok6HPPn2Q==",
"dependencies": {
- "Avalonia": "0.10.12",
- "Avalonia.Controls.DataGrid": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
+ "Avalonia.Controls.DataGrid": "0.10.999-cibuild0018686-beta",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0"
}
},
"Avalonia.ReactiveUI": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "ZAtsgt+MfTPf3F/bGmHHIhGApqGUqT4kyHfTpBUs4p9ND3fssGGCTsnRO6BMfDjRgQRbc6qZTz/I81REN33v8Q==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0"
}
},
"Avalonia.Skia": {
"type": "Direct",
- "requested": "[0.10.12, )",
- "resolved": "0.10.12",
- "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
+ "requested": "[0.10.999-cibuild0018686-beta, )",
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "vFr1oH7Vt94cb1KmACRaLzmgTTz8OdptX+L6LSAsrsYrVNRkQQGKPGjW9nOb4gzdCmKTRT9F1xlBtJL5AdJstw==",
"dependencies": {
- "Avalonia": "0.10.12",
+ "Avalonia": "0.10.999-cibuild0018686-beta",
"HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
},
"Avalonia.Remote.Protocol": {
"type": "Transitive",
- "resolved": "0.10.12",
- "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
+ "resolved": "0.10.999-cibuild0018686-beta",
+ "contentHash": "tVofPSeg70sw70AzJ51AZMW9FlGeMGsuQ08eBuc0ImbiBUoGsP9KcZKMhs89Ip83dK2B1nT1qSZ0AfSfXFWeOQ=="
},
"Avalonia.Xaml.Interactions": {
"type": "Transitive",

Add efficient and kick ass rendering of Aura