using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Media;

namespace AxCopilot.ViewModels;

public class ColorRowModel : INotifyPropertyChanged
{
	private string _hex;

	public string Label { get; init; } = "";

	public string Property { get; init; } = "";

	public string Hex
	{
		get
		{
			return _hex;
		}
		set
		{
			_hex = value;
			OnPropertyChanged("Hex");
			OnPropertyChanged("Preview");
		}
	}

	public SolidColorBrush Preview
	{
		get
		{
			try
			{
				return new SolidColorBrush((Color)ColorConverter.ConvertFromString(Hex));
			}
			catch
			{
				return new SolidColorBrush(Colors.Transparent);
			}
		}
	}

	public event PropertyChangedEventHandler? PropertyChanged;

	public ColorRowModel(string label, string property, string hex)
	{
		Label = label;
		Property = property;
		_hex = hex;
	}

	protected void OnPropertyChanged([CallerMemberName] string? n = null)
	{
		this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(n));
	}
}
