SuperAPI AI 工具集

pi-tui

通用与其它

查看项目

更新于 10-16 06:22

技能介绍

pi-tui 是一个组件式终端 UI(TUI)框架,基于 @mariozechner/pi-tui,采用差分渲染与同步输出,目标是让终端界面无闪烁。适用于创建 TUI 屏幕、输入控件、浮层等场景。

基本用法:从包中导入 TUI 与 ProcessTerminal,创建实例后通过 addChild 添加任意 Component,调用 start() 启动渲染循环,stop() 停止并清空输入。

内置组件共 13 个,包括:Container(addChild/removeChild/clear)、Text 与 TruncatedText(setText)、Input(getValue/setValue)、Editor(setText/getText/getCursor)、Markdown(setText)、SelectList(setFilter、onSelect、onCancel)、SettingsList(updateValue)、Box(setBgFn)、Spacer(setLines)、Loader 与 CancellableLoader(start/stop/setMessage)、Image(getImageId,base64 渲染)。每个组件独立成文件,直接从包导入,无 barrel 再导出。

渲染规则:每行 render(width) 的可见列数不得超过 width,可用 truncateToWidth()、wrapTextWithAnsi() 或 visibleWidth() 约束;每行末尾会附加完整 SGR 重置,样式不跨行延续。

焦点:Input、Editor 实现 Focusable;带光标的自定义组件也需实现 Focusable,并在聚焦时于渲染输出中发出 CURSOR_MARKER。容器包裹 Input/Editor 时需将焦点传递给子组件,以保证 IME 候选窗口定位正确。

按键:用 matchesKey() 做原始检测,如 matchesKey(data, Key.enter)、Key.ctrl("c")、Key.shift("tab");可自定义绑定通过 getKeybindings() 使用全局 KeybindingsManager,Editor、Input、SelectList、SettingsList 等组件按命名绑定路由输入。

浮层:tui.showOverlay(component, options),定位优先级为 absolute > percentage > anchor;handle.hide() 永久隐藏,handle.setHidden() 临时隐藏。浮层支持 nonCapturing 模式(不抢占键盘焦点),并按 focusOrder 进行 z 序堆叠。

自定义组件:每个组件独立文件并实现 Component;缓存时保存 cachedLines 与 cachedWidth,在 invalidate() 中重置。完整 API 参考、自定义组件模式、自动补全提供者、终端图像 API、最佳实践与反模式见 references/。

限制:资料未提供收费、价格、平台支持范围与性能指标等信息。