feat: buffer terminal input sequences
- add stdin buffer for escape sequences and bracketed paste - parse control keys and CSI modifier combinations - simplify example to focus on interactive components
This commit is contained in:
+5
-21
@@ -19,18 +19,9 @@ var done = new ManualResetEventSlim();
|
||||
var eventsText = new Text("最近事件:\n- 无");
|
||||
var statusText = new Text();
|
||||
var loader = new Loader(textMeasurer) { Message = "运行中" };
|
||||
var selectPreview = new SelectList(textMeasurer) { Height = 4 };
|
||||
var markdownPreview = new Markdown(
|
||||
"# Markdown 预览\n" +
|
||||
"## 二级标题会转成大写\n" +
|
||||
"- 列表项会转成星号前缀\n" +
|
||||
"> 引用会转成竖线前缀\n" +
|
||||
"支持 **粗体标记清理** 和 `行内代码标记清理`");
|
||||
using var loaderCancellation = new CancellationTokenSource();
|
||||
var input = new TinyTUI.Components.Input(textMeasurer) { Prompt = "请输入: " };
|
||||
|
||||
selectPreview.SetItems(["Text", "Input", "Editor", "SelectList", "Markdown", "Loader", "Overlay"]);
|
||||
|
||||
input.OnChanged = value => UpdateStatus(statusText, value, textMeasurer, renderer);
|
||||
input.OnSubmitted = value =>
|
||||
{
|
||||
@@ -67,9 +58,8 @@ AddAll(
|
||||
page,
|
||||
new Text("TinyTUI 基础组件示例"),
|
||||
new Text("======================"),
|
||||
new Markdown(
|
||||
"# 操作说明\n" +
|
||||
"- Markdown Loader SelectList 预览会在页面启动时直接显示\n" +
|
||||
new Text(
|
||||
"操作说明\n" +
|
||||
"- 输入文本后 Enter 提交\n" +
|
||||
"- /help 打开帮助弹层\n" +
|
||||
"- /select 打开可交互选择列表\n" +
|
||||
@@ -78,13 +68,7 @@ AddAll(
|
||||
new Text(),
|
||||
new Box(statusText, textMeasurer) { Title = "状态" },
|
||||
new Text(),
|
||||
new Box(markdownPreview, textMeasurer) { Title = "Markdown 预览" },
|
||||
new Text(),
|
||||
new Box(loader, textMeasurer) { Title = "Loader" },
|
||||
new Text(),
|
||||
new Box(selectPreview, textMeasurer) { Title = "SelectList 预览" },
|
||||
new Text(),
|
||||
new Box(input, textMeasurer) { Title = "Input" },
|
||||
new Box(new Container { Children = { loader, input } }, textMeasurer) { Title = "Input" },
|
||||
new Text(),
|
||||
new Box(eventsText, textMeasurer) { Title = "事件" });
|
||||
|
||||
@@ -160,8 +144,8 @@ static void AddAll(Container container, params IComponent[] components)
|
||||
file sealed class HelpOverlay(ITuiRuntime runtime, ITextMeasurer textMeasurer) : IInputComponent
|
||||
{
|
||||
private readonly Box _box = new(
|
||||
new Markdown(
|
||||
"# Overlay 示例\n" +
|
||||
new Text(
|
||||
"Overlay 示例\n" +
|
||||
"\n" +
|
||||
"- 这个弹层由 Runtime 显示\n" +
|
||||
"- OverlayManager 会把它合成到基础页面上\n" +
|
||||
|
||||
Reference in New Issue
Block a user