diff --git a/MyMoney.Tests/packages.lock.json b/MyMoney.Tests/packages.lock.json index 550ec06d..cebcbe5b 100644 --- a/MyMoney.Tests/packages.lock.json +++ b/MyMoney.Tests/packages.lock.json @@ -67,22 +67,22 @@ }, "HarfBuzzSharp": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "rwLpl+W6uqu0DuvzqNhTMuFcXfy1Vc0uq0YXgPEmtTSfeUSAye1FcARrm2YIPOSiCBwBOGu3cLvMX5Fp6OKe2g==", + "resolved": "8.3.1.1", + "contentHash": "tLZN66oe/uiRPTZfrCU4i8ScVGwqHNh5MHrXj0yVf4l7Mz0FhTGnQ71RGySROTmdognAs0JtluHkL41pIabWuQ==", "dependencies": { - "HarfBuzzSharp.NativeAssets.Win32": "8.3.0.1", - "HarfBuzzSharp.NativeAssets.macOS": "8.3.0.1" + "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.1", + "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.1" } }, "HarfBuzzSharp.NativeAssets.macOS": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "2o6U05LAmK+rwX7TvmJ2X0anXJG2hSE7kHVmCshhHy0tKfByJ5ykBacvhmmooHchlOwq15KBZeROGafCT8nN+g==" + "resolved": "8.3.1.1", + "contentHash": "jbtCsgftcaFLCA13tVKo5iWdElJScrulLTKJre36O4YQTIlwDtPPqhRZNk+Y0vv4D1gxbscasGRucUDfS44ofQ==" }, "HarfBuzzSharp.NativeAssets.Win32": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "ow0DtGEUjo65qhiI22of7qiVbN1xDFsZ5P5xJljRmGZ5WSxNy+1batLNJFGxahqhB1MTHYV8kAXf0GqC8WaevQ==" + "resolved": "8.3.1.1", + "contentHash": "UsJtQsfAJoFDZrXc4hCUfRPMqccfKZ0iumJ/upcUjz/cmsTgVFGNEL5yaJWmkqsuFYdMWbj/En5/kS4PFl9hBA==" }, "LiteDB": { "type": "Transitive", @@ -91,27 +91,27 @@ }, "LiveChartsCore": { "type": "Transitive", - "resolved": "2.0.0-rc5.4", - "contentHash": "1hEEvMndEP5urodx+Epu2lwvJr0ZG246FR7jMYtE9/snYwbUKoItq6a4cTzyeyFPi9fcBsjtgwAWA8uL/2s73g==" + "resolved": "2.0.0", + "contentHash": "6ck/dztjwNAlVxOQeD57tlbpfSk0LBxRH15fn8QK/cWz2Wn6D8WX0be+e241snbDQPTuWYZDhE9cZnrfA6EkIQ==" }, "LiveChartsCore.SkiaSharpView": { "type": "Transitive", - "resolved": "2.0.0-rc5.4", - "contentHash": "lpylapUJHvAagM4pmcwCvx3ObfL2FlITtI0u8LkKlLEnzhJYg17Tcxcgd6R/mItQlCdICG0PFDVNUDnZEwhFuw==", + "resolved": "2.0.0", + "contentHash": "BHdfDJp8QgMVjOP/kXLvkP50I5UUHft4x+7hwNg4pI6jvlnSKl1X1PAytsJ3OguQU3sJ7PsZt+/UKMEO7yszfQ==", "dependencies": { - "LiveChartsCore": "2.0.0-rc5.4", + "LiveChartsCore": "2.0.0", "SkiaSharp": "2.88.9", "SkiaSharp.HarfBuzz": "2.88.9" } }, "LiveChartsCore.SkiaSharpView.WPF": { "type": "Transitive", - "resolved": "2.0.0-rc5.4", - "contentHash": "TXlnj+wbmt4dXq21uFFPRg+lTjFhmMqo1Gqi+IAkNsy/UFB4cyynCmZzVFAgEzfqQ/dJ4ZKwfsXWMqbtI28NHQ==", + "resolved": "2.0.0", + "contentHash": "TR6QWQG2ZJ9pJ+B4UVizmpIQMhfr06Ea+XS8PJ27KHgddeQTCfTwisDxerIFYMpg30ib3SWLtBlmpZwaVuLuVQ==", "dependencies": { - "LiveChartsCore.SkiaSharpView": "2.0.0-rc5.4", - "SkiaSharp.HarfBuzz": "3.116.1", - "SkiaSharp.Views.WPF": "3.116.1" + "LiveChartsCore.SkiaSharpView": "2.0.0", + "SkiaSharp.HarfBuzz": "3.119.0", + "SkiaSharp.Views.WPF": "3.119.0" } }, "Microsoft.ApplicationInsights": { @@ -483,49 +483,49 @@ }, "SkiaSharp": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "DNDwbRjP+aMo27dV2h/uHCVTcWubWWxHnPLiePNyl24f4Pv43mQ8AQQeseOrKR+J3AOCEs6t0sUjo0aa3j3RWQ==", + "resolved": "3.119.0", + "contentHash": "gR9yVoOta2Mc1Rxt15LD65AckfHMfwjIs/3kkD59C9bT2nYYISsE6uz3t4aMPNHA6CgsIL0Ssn+jE5OVilZ1yw==", "dependencies": { - "SkiaSharp.NativeAssets.Win32": "3.116.1", - "SkiaSharp.NativeAssets.macOS": "3.116.1" + "SkiaSharp.NativeAssets.Win32": "3.119.0", + "SkiaSharp.NativeAssets.macOS": "3.119.0" } }, "SkiaSharp.HarfBuzz": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "ibDG1+quN86vBd9ztjDAC9wnvS1nRZ6ydTUOSod4NsRHWdLLGzWYn1IOF4Cg9iJh5cQHdpzhUZBQE0JMKznrow==", + "resolved": "3.119.0", + "contentHash": "5ocGzl+RYEZFnUPUbModshnEFvKTku4hTtOBsLvy5MCK2KAHjq5Nw2+uAVUx79Rjh0z8fTojT6ZVav8MJgW0ug==", "dependencies": { - "HarfBuzzSharp": "8.3.0.1", - "SkiaSharp": "3.116.1" + "HarfBuzzSharp": "8.3.1.1", + "SkiaSharp": "3.119.0" } }, "SkiaSharp.NativeAssets.macOS": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "3KPvpKysDmEMt0NnAZPX5U6KFk0LmG/72/IjAIJemIksIZ0Tjs9pGpr3L+zboVCv1MLVoJLKl3nJDXUG6Jda6A==" + "resolved": "3.119.0", + "contentHash": "YE1vNn0Nyw2PWtv7hw1PYkKJO0itFiQp9vSqGppZUKzQJqwp28a2jgdCMPfYtOiR8KCnDgZqQoynqJRRaE2ZVg==" }, "SkiaSharp.NativeAssets.Win32": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "dRQ75MCI8oz6zAs2Y1w6pq6ARs4MhdNG+gf3doOxOxdnueDXffQLGQIxON54GDoxc0WjKOoHMKBR4DhaduwwQw==" + "resolved": "3.119.0", + "contentHash": "IwC9yx36lOdXVT2DjgmWHl1qkVspfj8ctd4+li8CNnvqdfaTolXCOh6TLznURcPAvzatx9K/tLOB7zT6T8EA9w==" }, "SkiaSharp.Views.Desktop.Common": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "/ZDg00zVgjN/N5ghDCnP0+9TfOSmMZkMtnoQpaigsBc4Ghg9Qe+iimZuA5nrEWgaygW64LnVan+p8T1wDtS+kQ==", + "resolved": "3.119.0", + "contentHash": "KST7Q3n+X5BhDj1aKTJXk9tITWWznveka9n+pBjOtE53Omc+wlZR0s4fQStybWCVVaWG9eaeOMaw93J3zEMklA==", "dependencies": { - "SkiaSharp": "3.116.1" + "SkiaSharp": "3.119.0" } }, "SkiaSharp.Views.WPF": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "28vXtX/56h1RCmTNubJQcrVNxmx2aV8wGbyUjZOnkocNRHHfG7zoChYHTjwBt7R7TCojTo3RbLBkcP/CLtJLNw==", + "resolved": "3.119.0", + "contentHash": "1Dmj9RlBW/gvmJwSUER+N9plA/kcWOgiL5g3q2DB+USVQav8rQtfOZIQZ1Wt/AqhwepOacv1M6pZKDWtXmwDAg==", "dependencies": { "OpenTK": "3.3.1", "OpenTK.GLWpfControl": "3.3.0", - "SkiaSharp": "3.116.1", - "SkiaSharp.Views.Desktop.Common": "3.116.1" + "SkiaSharp": "3.119.0", + "SkiaSharp.Views.Desktop.Common": "3.119.0" } }, "System.Diagnostics.EventLog": { @@ -551,7 +551,7 @@ "dependencies": { "CommunityToolkit.Mvvm": "[8.4.2, )", "LiteDB": "[5.0.21, )", - "LiveChartsCore.SkiaSharpView.WPF": "[2.0.0-rc5.4, )", + "LiveChartsCore.SkiaSharpView.WPF": "[2.0.0, )", "Microsoft.Extensions.Hosting": "[10.0.5, )", "MyMoney.Core": "[1.0.0, )", "WPF-UI": "[4.2.0, )", diff --git a/MyMoney/MyMoney.csproj b/MyMoney/MyMoney.csproj index dc79fc4e..9b44dd1f 100644 --- a/MyMoney/MyMoney.csproj +++ b/MyMoney/MyMoney.csproj @@ -25,7 +25,7 @@ - + diff --git a/MyMoney/ViewModels/Pages/BudgetReportsViewModel.cs b/MyMoney/ViewModels/Pages/BudgetReportsViewModel.cs index 76efcfa4..eaebd981 100644 --- a/MyMoney/ViewModels/Pages/BudgetReportsViewModel.cs +++ b/MyMoney/ViewModels/Pages/BudgetReportsViewModel.cs @@ -83,34 +83,12 @@ public partial class BudgetReportsViewModel : ObservableObject, INavigationAware [ObservableProperty] private ISeries[] _actualIncomeSeries = []; - /// - /// Title for the income chart - /// - [ObservableProperty] - private LabelVisual _actualIncomeTitle = new() - { - Text = "Actual Income", - TextSize = 25, - Padding = new LiveChartsCore.Drawing.Padding(15), - }; - /// /// Series data for the expense chart /// [ObservableProperty] private ISeries[] _actualExpenseSeries = []; - /// - /// Title for the expense chart - /// - [ObservableProperty] - private LabelVisual _actualExpensesTitle = new() - { - Text = "Actual Expenses", - TextSize = 25, - Padding = new LiveChartsCore.Drawing.Padding(15), - }; - /// /// Current text color for charts, changes with theme /// @@ -208,7 +186,7 @@ private async Task LoadBudgets() int index = Budgets.IndexOf(budget); if (index != SelectedBudgetIndex) { - SelectedBudgetIndex = index; + SelectedBudget = budget; } else { @@ -364,10 +342,6 @@ private void UpdateChartsTheme() { ChartTextColor = ApplicationThemeManager.GetAppTheme() == ApplicationTheme.Light ? LightTextColor : DarkTextColor; - - var textPaint = new SolidColorPaint(ChartTextColor); - ActualIncomeTitle.Paint = textPaint; - ActualExpensesTitle.Paint = textPaint; } #endregion diff --git a/MyMoney/ViewModels/Pages/BudgetViewModel.cs b/MyMoney/ViewModels/Pages/BudgetViewModel.cs index f7763d3a..4941dd54 100644 --- a/MyMoney/ViewModels/Pages/BudgetViewModel.cs +++ b/MyMoney/ViewModels/Pages/BudgetViewModel.cs @@ -41,22 +41,6 @@ public partial class BudgetViewModel : ObservableObject, INavigationAware [ObservableProperty] private ISeries[] _expensePercentagesSeries = []; - [ObservableProperty] - private LabelVisual _incomePercentagesTitle = new() - { - Text = "Income", - TextSize = 25, - Padding = new LiveChartsCore.Drawing.Padding(15), - }; - - [ObservableProperty] - private LabelVisual _expensePercentagesTitle = new() - { - Text = "Expenses", - TextSize = 25, - Padding = new LiveChartsCore.Drawing.Padding(15), - }; - // Colors for chart text (changes in light and dark modes) [ObservableProperty] private SKColor _chartTextColor = new(0x33, 0x33, 0x33); @@ -259,9 +243,6 @@ private void UpdateChartTheme() ApplicationThemeManager.GetAppTheme() == ApplicationTheme.Light ? new SKColor(0x33, 0x33, 0x33) : new SKColor(0xff, 0xff, 0xff); - - IncomePercentagesTitle.Paint = new SolidColorPaint(ChartTextColor); - ExpensePercentagesTitle.Paint = new SolidColorPaint(ChartTextColor); } [RelayCommand] diff --git a/MyMoney/ViewModels/Pages/DashboardViewModel.cs b/MyMoney/ViewModels/Pages/DashboardViewModel.cs index baa90ddd..48c149f8 100644 --- a/MyMoney/ViewModels/Pages/DashboardViewModel.cs +++ b/MyMoney/ViewModels/Pages/DashboardViewModel.cs @@ -65,14 +65,6 @@ public partial class DashboardViewModel : ObservableObject, INavigationAware [ObservableProperty] private SKColor _chartTextColor = new(0x33, 0x33, 0x33); - [ObservableProperty] - private LabelVisual _chartTitle = new() - { - Text = "Income vs. Expenses", - TextSize = 25, - Padding = new LiveChartsCore.Drawing.Padding(15), - }; - [ObservableProperty] private Axis[] _xAxes = [ @@ -499,7 +491,6 @@ private void UpdateChartTheme() XAxes[0].LabelsPaint = textPaint; YAxes[0].LabelsPaint = textPaint; YAxes[0].NamePaint = textPaint; - ChartTitle.Paint = textPaint; ExpenseBreakdownForeColor = ApplicationThemeManager.GetAppTheme() == ApplicationTheme.Light diff --git a/MyMoney/Views/Pages/BudgetPage.xaml b/MyMoney/Views/Pages/BudgetPage.xaml index ab24a4e5..cf2138e1 100644 --- a/MyMoney/Views/Pages/BudgetPage.xaml +++ b/MyMoney/Views/Pages/BudgetPage.xaml @@ -437,7 +437,8 @@ - + @@ -456,7 +457,8 @@ - + diff --git a/MyMoney/Views/Pages/BudgetReportsPage.xaml b/MyMoney/Views/Pages/BudgetReportsPage.xaml index cdec5353..dc6acd65 100644 --- a/MyMoney/Views/Pages/BudgetReportsPage.xaml +++ b/MyMoney/Views/Pages/BudgetReportsPage.xaml @@ -2,83 +2,128 @@ x:Class="MyMoney.Views.Pages.BudgetReportsPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:Controls="clr-namespace:MyMoney.Views.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:MyMoney.Views.Pages" - xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" - xmlns:Controls="clr-namespace:MyMoney.Views.Controls" xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF" - d:DataContext="{d:DesignInstance {x:Type local:BudgetReportsPage}, IsDesignTimeCreatable=False}" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" + Title="BudgetReportsPage" + d:DataContext="{d:DesignInstance {x:Type local:BudgetReportsPage}, + IsDesignTimeCreatable=False}" + d:DesignHeight="450" + d:DesignWidth="800" ui:Design.Background="{DynamicResource ApplicationBackgroundBrush}" ui:Design.Foreground="{DynamicResource TextFillColorPrimaryBrush}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" - mc:Ignorable="d" - d:DesignHeight="450" - d:DesignWidth="800" - Title="BudgetReportsPage" - SizeChanged="Page_SizeChanged" -> + ScrollViewer.CanContentScroll="False" + mc:Ignorable="d"> - - - - + + + VerticalAlignment="Stretch" + VerticalContentAlignment="Stretch"> + SelectedItem="{Binding ViewModel.SelectedBudget, Mode=TwoWay}"> - + - + Margin="0,0,-42,0" + VerticalScrollBarVisibility="Auto" + PanningMode="VerticalOnly" + PanningRatio="1.5" + PanningDeceleration="0.001" + PreviewMouseWheel="ScrollViewer_PreviewMouseWheel"> + + + + + + + + + + + + + + + + + Actual Income + + + + + + + + + Actual Expenses + + + + + + - - - - - - diff --git a/MyMoney/Views/Pages/BudgetReportsPage.xaml.cs b/MyMoney/Views/Pages/BudgetReportsPage.xaml.cs index ce8b2a80..ac1e47c1 100644 --- a/MyMoney/Views/Pages/BudgetReportsPage.xaml.cs +++ b/MyMoney/Views/Pages/BudgetReportsPage.xaml.cs @@ -1,17 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; +using System.ComponentModel; using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; +using MyMoney.Helpers; using MyMoney.ViewModels.Pages; using Wpf.Ui.Abstractions.Controls; @@ -24,14 +14,6 @@ public partial class BudgetReportsPage : INavigableView { public BudgetReportsViewModel ViewModel { get; private set; } - private readonly Thickness _narrowBudgetsMargin = new(0, 0, 0, 24); - private readonly Thickness _narrowReportMargin = new(0, 0, 0, 8); - private readonly Thickness _narrowIncomeChartMargin = new(0, 8, 8, 24); - - private Thickness _wideBudgetsMargin; - private Thickness _wideReportMargin; - private Thickness _wideIncomeChartMargin; - public BudgetReportsPage(BudgetReportsViewModel viewModel) { InitializeComponent(); @@ -39,53 +21,40 @@ public BudgetReportsPage(BudgetReportsViewModel viewModel) ViewModel = viewModel; DataContext = this; - _wideBudgetsMargin = BudgetsCard.Margin; - _wideReportMargin = BudgetReport.Margin; - _wideIncomeChartMargin = IncomeChart.Margin; + // Listen for MouseWheel on *all* column headers inside this page + AddHandler( + GridViewColumnHeader.PreviewMouseWheelEvent, + new MouseWheelEventHandler(GridViewColumnHeader_PreviewMouseWheel), + handledEventsToo: true + ); } - private void Page_SizeChanged(object sender, SizeChangedEventArgs e) + private void GridViewColumnHeader_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e) { - if (e.NewSize.Width < 750) - { - // Switch to narrow layout - Col0.Width = new GridLength(0); - Row1.Height = new GridLength(0, GridUnitType.Auto); - Row2.Height = new GridLength(0, GridUnitType.Auto); - Grid.SetColumn(BudgetsCard, 1); - Grid.SetRowSpan(BudgetsCard, 1); - Grid.SetColumnSpan(BudgetsCard, 2); - Grid.SetRow(BudgetsCard, 0); - Grid.SetRow(BudgetReport, 1); - Grid.SetRow(IncomeChart, 2); - Grid.SetRow(ExpenseChart, 2); - BudgetsListView.MaxHeight = 300; + // Don't let the header eat the scroll event + e.Handled = false; - // Adjust margins - BudgetsCard.Margin = _narrowBudgetsMargin; - BudgetReport.Margin = _narrowReportMargin; - IncomeChart.Margin = _narrowIncomeChartMargin; - } - else + var scrollViewer = (sender as DependencyObject)?.FindAncestor(); + if (scrollViewer != null) { - // Switch to wide layout - Col0.Width = new GridLength(200); - Row1.Height = new GridLength(1, GridUnitType.Star); - Row2.Height = new GridLength(0); - Grid.SetColumn(BudgetsCard, 0); - Grid.SetRow(BudgetsCard, 0); - Grid.SetRowSpan(BudgetsCard, 2); - Grid.SetColumnSpan(BudgetsCard, 1); - Grid.SetRow(BudgetReport, 0); - Grid.SetRow(IncomeChart, 1); - Grid.SetRow(ExpenseChart, 1); - BudgetsListView.MaxHeight = double.PositiveInfinity; - - // Adjust margins - BudgetsCard.Margin = _wideBudgetsMargin; - BudgetReport.Margin = _wideReportMargin; - IncomeChart.Margin = _wideIncomeChartMargin; + scrollViewer.RaiseEvent( + new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta) + { + RoutedEvent = UIElement.MouseWheelEvent, + Source = sender, + } + ); } } + + private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e) + { + var scrollViewer = (ScrollViewer)sender; + + scrollViewer.ScrollToVerticalOffset( + scrollViewer.VerticalOffset - e.Delta / 3.0); + + e.Handled = true; + } } } diff --git a/MyMoney/Views/Pages/DashboardPage.xaml b/MyMoney/Views/Pages/DashboardPage.xaml index 37ca806f..7df0b278 100644 --- a/MyMoney/Views/Pages/DashboardPage.xaml +++ b/MyMoney/Views/Pages/DashboardPage.xaml @@ -99,6 +99,7 @@ XAxes="{Binding ViewModel.NetWorthXAxes}" YAxes="{Binding ViewModel.NetWorthYAxes}" TooltipPosition="Hidden" + Background="Transparent" /> @@ -369,14 +370,18 @@ - + + Income vs. Expenses + + + @@ -393,6 +398,7 @@ LegendPosition="Bottom" Grid.Row="1" LegendTextPaint="{Binding ViewModel.ExpenseBreakdownForeColor}" + Background="Transparent" /> diff --git a/MyMoney/Views/Pages/ReportsPage.xaml b/MyMoney/Views/Pages/ReportsPage.xaml index aacc4481..dd5edcf9 100644 --- a/MyMoney/Views/Pages/ReportsPage.xaml +++ b/MyMoney/Views/Pages/ReportsPage.xaml @@ -34,6 +34,7 @@ LegendPosition="Bottom" YAxes="{Binding ViewModel.IncomeExpense12MonthYAxes}" LegendTextPaint="{Binding ViewModel.IncomeExpense12MonthLegendPaint}" + Background="Transparent" > @@ -78,6 +79,7 @@ Series="{Binding ViewModel.NetWorthSeries}" XAxes="{Binding ViewModel.NetWorthXAxes}" YAxes="{Binding ViewModel.NetWorthYAxes}" + Background="Transparent" /> diff --git a/MyMoney/packages.lock.json b/MyMoney/packages.lock.json index fc94b2ec..882893ec 100644 --- a/MyMoney/packages.lock.json +++ b/MyMoney/packages.lock.json @@ -22,13 +22,13 @@ }, "LiveChartsCore.SkiaSharpView.WPF": { "type": "Direct", - "requested": "[2.0.0-rc5.4, )", - "resolved": "2.0.0-rc5.4", - "contentHash": "TXlnj+wbmt4dXq21uFFPRg+lTjFhmMqo1Gqi+IAkNsy/UFB4cyynCmZzVFAgEzfqQ/dJ4ZKwfsXWMqbtI28NHQ==", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "TR6QWQG2ZJ9pJ+B4UVizmpIQMhfr06Ea+XS8PJ27KHgddeQTCfTwisDxerIFYMpg30ib3SWLtBlmpZwaVuLuVQ==", "dependencies": { - "LiveChartsCore.SkiaSharpView": "2.0.0-rc5.4", - "SkiaSharp.HarfBuzz": "3.116.1", - "SkiaSharp.Views.WPF": "3.116.1" + "LiveChartsCore.SkiaSharpView": "2.0.0", + "SkiaSharp.HarfBuzz": "3.119.0", + "SkiaSharp.Views.WPF": "3.119.0" } }, "Microsoft.Extensions.Hosting": { @@ -72,34 +72,34 @@ }, "HarfBuzzSharp": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "rwLpl+W6uqu0DuvzqNhTMuFcXfy1Vc0uq0YXgPEmtTSfeUSAye1FcARrm2YIPOSiCBwBOGu3cLvMX5Fp6OKe2g==", + "resolved": "8.3.1.1", + "contentHash": "tLZN66oe/uiRPTZfrCU4i8ScVGwqHNh5MHrXj0yVf4l7Mz0FhTGnQ71RGySROTmdognAs0JtluHkL41pIabWuQ==", "dependencies": { - "HarfBuzzSharp.NativeAssets.Win32": "8.3.0.1", - "HarfBuzzSharp.NativeAssets.macOS": "8.3.0.1" + "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.1", + "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.1" } }, "HarfBuzzSharp.NativeAssets.macOS": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "2o6U05LAmK+rwX7TvmJ2X0anXJG2hSE7kHVmCshhHy0tKfByJ5ykBacvhmmooHchlOwq15KBZeROGafCT8nN+g==" + "resolved": "8.3.1.1", + "contentHash": "jbtCsgftcaFLCA13tVKo5iWdElJScrulLTKJre36O4YQTIlwDtPPqhRZNk+Y0vv4D1gxbscasGRucUDfS44ofQ==" }, "HarfBuzzSharp.NativeAssets.Win32": { "type": "Transitive", - "resolved": "8.3.0.1", - "contentHash": "ow0DtGEUjo65qhiI22of7qiVbN1xDFsZ5P5xJljRmGZ5WSxNy+1batLNJFGxahqhB1MTHYV8kAXf0GqC8WaevQ==" + "resolved": "8.3.1.1", + "contentHash": "UsJtQsfAJoFDZrXc4hCUfRPMqccfKZ0iumJ/upcUjz/cmsTgVFGNEL5yaJWmkqsuFYdMWbj/En5/kS4PFl9hBA==" }, "LiveChartsCore": { "type": "Transitive", - "resolved": "2.0.0-rc5.4", - "contentHash": "1hEEvMndEP5urodx+Epu2lwvJr0ZG246FR7jMYtE9/snYwbUKoItq6a4cTzyeyFPi9fcBsjtgwAWA8uL/2s73g==" + "resolved": "2.0.0", + "contentHash": "6ck/dztjwNAlVxOQeD57tlbpfSk0LBxRH15fn8QK/cWz2Wn6D8WX0be+e241snbDQPTuWYZDhE9cZnrfA6EkIQ==" }, "LiveChartsCore.SkiaSharpView": { "type": "Transitive", - "resolved": "2.0.0-rc5.4", - "contentHash": "lpylapUJHvAagM4pmcwCvx3ObfL2FlITtI0u8LkKlLEnzhJYg17Tcxcgd6R/mItQlCdICG0PFDVNUDnZEwhFuw==", + "resolved": "2.0.0", + "contentHash": "BHdfDJp8QgMVjOP/kXLvkP50I5UUHft4x+7hwNg4pI6jvlnSKl1X1PAytsJ3OguQU3sJ7PsZt+/UKMEO7yszfQ==", "dependencies": { - "LiveChartsCore": "2.0.0-rc5.4", + "LiveChartsCore": "2.0.0", "SkiaSharp": "2.88.9", "SkiaSharp.HarfBuzz": "2.88.9" } @@ -368,49 +368,49 @@ }, "SkiaSharp": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "DNDwbRjP+aMo27dV2h/uHCVTcWubWWxHnPLiePNyl24f4Pv43mQ8AQQeseOrKR+J3AOCEs6t0sUjo0aa3j3RWQ==", + "resolved": "3.119.0", + "contentHash": "gR9yVoOta2Mc1Rxt15LD65AckfHMfwjIs/3kkD59C9bT2nYYISsE6uz3t4aMPNHA6CgsIL0Ssn+jE5OVilZ1yw==", "dependencies": { - "SkiaSharp.NativeAssets.Win32": "3.116.1", - "SkiaSharp.NativeAssets.macOS": "3.116.1" + "SkiaSharp.NativeAssets.Win32": "3.119.0", + "SkiaSharp.NativeAssets.macOS": "3.119.0" } }, "SkiaSharp.HarfBuzz": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "ibDG1+quN86vBd9ztjDAC9wnvS1nRZ6ydTUOSod4NsRHWdLLGzWYn1IOF4Cg9iJh5cQHdpzhUZBQE0JMKznrow==", + "resolved": "3.119.0", + "contentHash": "5ocGzl+RYEZFnUPUbModshnEFvKTku4hTtOBsLvy5MCK2KAHjq5Nw2+uAVUx79Rjh0z8fTojT6ZVav8MJgW0ug==", "dependencies": { - "HarfBuzzSharp": "8.3.0.1", - "SkiaSharp": "3.116.1" + "HarfBuzzSharp": "8.3.1.1", + "SkiaSharp": "3.119.0" } }, "SkiaSharp.NativeAssets.macOS": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "3KPvpKysDmEMt0NnAZPX5U6KFk0LmG/72/IjAIJemIksIZ0Tjs9pGpr3L+zboVCv1MLVoJLKl3nJDXUG6Jda6A==" + "resolved": "3.119.0", + "contentHash": "YE1vNn0Nyw2PWtv7hw1PYkKJO0itFiQp9vSqGppZUKzQJqwp28a2jgdCMPfYtOiR8KCnDgZqQoynqJRRaE2ZVg==" }, "SkiaSharp.NativeAssets.Win32": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "dRQ75MCI8oz6zAs2Y1w6pq6ARs4MhdNG+gf3doOxOxdnueDXffQLGQIxON54GDoxc0WjKOoHMKBR4DhaduwwQw==" + "resolved": "3.119.0", + "contentHash": "IwC9yx36lOdXVT2DjgmWHl1qkVspfj8ctd4+li8CNnvqdfaTolXCOh6TLznURcPAvzatx9K/tLOB7zT6T8EA9w==" }, "SkiaSharp.Views.Desktop.Common": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "/ZDg00zVgjN/N5ghDCnP0+9TfOSmMZkMtnoQpaigsBc4Ghg9Qe+iimZuA5nrEWgaygW64LnVan+p8T1wDtS+kQ==", + "resolved": "3.119.0", + "contentHash": "KST7Q3n+X5BhDj1aKTJXk9tITWWznveka9n+pBjOtE53Omc+wlZR0s4fQStybWCVVaWG9eaeOMaw93J3zEMklA==", "dependencies": { - "SkiaSharp": "3.116.1" + "SkiaSharp": "3.119.0" } }, "SkiaSharp.Views.WPF": { "type": "Transitive", - "resolved": "3.116.1", - "contentHash": "28vXtX/56h1RCmTNubJQcrVNxmx2aV8wGbyUjZOnkocNRHHfG7zoChYHTjwBt7R7TCojTo3RbLBkcP/CLtJLNw==", + "resolved": "3.119.0", + "contentHash": "1Dmj9RlBW/gvmJwSUER+N9plA/kcWOgiL5g3q2DB+USVQav8rQtfOZIQZ1Wt/AqhwepOacv1M6pZKDWtXmwDAg==", "dependencies": { "OpenTK": "3.3.1", "OpenTK.GLWpfControl": "3.3.0", - "SkiaSharp": "3.116.1", - "SkiaSharp.Views.Desktop.Common": "3.116.1" + "SkiaSharp": "3.119.0", + "SkiaSharp.Views.Desktop.Common": "3.119.0" } }, "WPF-UI.Abstractions": {