using CommunityToolkit.Mvvm.ComponentModel; namespace Toolkit.Foundation; public partial class ComponentConfigurationViewModel : ValueViewModel, IComponentConfigurationViewModel, INotificationHandler> where TConfiguration : class { public ComponentConfigurationViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscriber subscriber, IDisposer disposer, THeader header, TDescription description, TAction action) : base(provider, factory, mediator, publisher, subscriber, disposer) { } public Task Handle(Changed args, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } } public partial class ComponentConfigurationViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscriber subscriber, IDisposer disposer, TAction action, TConfiguration configuration, Func valueDelegate, object header, object description) : ValueViewModel(provider, factory, mediator, publisher, subscriber, disposer), IComponentConfigurationViewModel, INotificationHandler> where TConfiguration : class { [ObservableProperty] private TAction action = action; [ObservableProperty] private object header = header; [ObservableProperty] private object description = description; public override Task Activated() { Value = valueDelegate.Invoke(configuration); return base.Activated(); } public Task Handle(Changed args, CancellationToken cancellationToken = default) { if (args.Value is TConfiguration configuration) { Value = valueDelegate.Invoke(configuration); } return Task.CompletedTask; } } public partial class ComponentConfigurationViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscriber subscriber, IDisposer disposer, TAction action, TDescription description, TConfiguration configuration, Func valueDelegate, object header) : ValueViewModel(provider, factory, mediator, publisher, subscriber, disposer), IComponentConfigurationViewModel, INotificationHandler> where TConfiguration : class { [ObservableProperty] private TAction action = action; [ObservableProperty] private object header = header; [ObservableProperty] private TDescription description = description; public override Task Activated() { Value = valueDelegate.Invoke(configuration); return base.Activated(); } public Task Handle(Changed args, CancellationToken cancellationToken = default) { if (args.Value is TConfiguration configuration) { Value = valueDelegate.Invoke(configuration); } return Task.CompletedTask; } }