namespace Spectre.Console; /// /// A console capable of writing ANSI escape sequences. /// public static partial class AnsiConsole { private static Recorder? _recorder; private static Lazy _console = new Lazy( () => { var console = Create(new AnsiConsoleSettings { Ansi = AnsiSupport.Detect, ColorSystem = ColorSystemSupport.Detect, Out = new AnsiConsoleOutput(System.Console.Out), }); Created = true; return console; }); /// /// Gets or sets the underlying . /// public static IAnsiConsole Console { get { return _recorder ?? _console.Value; } set { _console = new Lazy(() => value); if (_recorder != null) { // Recreate the recorder _recorder = _recorder.Clone(value); } Created = true; } } /// /// Gets the . /// public static IAnsiConsoleCursor Cursor => _recorder?.Cursor ?? _console.Value.Cursor; /// /// Gets the console profile. /// public static Profile Profile => Console.Profile; /// /// Creates a new instance /// from the provided settings. /// /// The settings to use. /// An instance. public static IAnsiConsole Create(AnsiConsoleSettings settings) { var factory = new AnsiConsoleFactory(); return factory.Create(settings); } /// /// Clears the console. /// public static void Clear() { Console.Clear(); } }