using System.Linq.Expressions; using TerminalUI.Controls; namespace TerminalUI.Extensions; public static class ViewExtensions { public static T? GetExtension(this IView view) => (T?) view.Extensions.FirstOrDefault(e => e is T); public static IView WithExtension(this IView view, object extension) { view.Extensions.Add(extension); return view; } public static ChildWithDataContextMapper WithDataContextMapper( this IView view, Func dataContextMapper) => new(view, dataContextMapper); public static TView Setup(this TView view, Action action) { action(view); return view; } public static TItem WithPropertyChangedHandler( this TItem dataSource, Expression> dataSourceExpression, Action handler) { new PropertyChangedHandler ( dataSource, dataSourceExpression, handler ); return dataSource; } }