Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ink 模块 — 5 个子目录详解

路径: src/ink/ 子目录: layout/, events/, hooks/, components/, termio/


1. layout/ — Flexbox 布局引擎(4 文件)

文件行数说明
yoga.ts309Yoga 布局引擎 TS 移植,createYogaNode 工厂
node.ts153LayoutNode 接口定义(几何 + 样式属性)
geometry.ts98几何原语(Rect, Point, Size, Edges)
engine.ts6布局节点工厂函数

2. events/ — DOM 风格事件系统(10 文件)

文件行数说明
event.ts12基础 Event 类
terminal-event.ts108TerminalEvent 基类,DOM 风格传播 API(capture/bubble)
dispatcher.ts234事件分发系统,capture/bubble 两阶段
keyboard-event.ts52KeyboardEvent 实现
focus-event.ts22FocusEvent(带 relatedTarget)
click-event.ts39ClickEvent(带本地坐标)
input-event.ts206输入解析,支持 Kitty 键盘协议
emitter.ts40自定义 EventEmitter(stopImmediatePropagation)
event-handlers.ts74事件处理器类型定义
terminal-focus-event.ts终端焦点事件

3. termio/ — 终端 IO 协议栈(9 文件)

原始字节流 → tokenize.ts → parser.ts → 结构化事件
文件行数说明
ansi.ts76C0 控制字符和 ESC_TYPE 常量
types.ts237语义类型(Color, TextStyle, Action)
tokenize.ts320流式令牌化器,X10 鼠标支持
parser.ts395语义动作生成器,grapheme 分割
sgr.ts309SGR 参数解析(颜色/样式),扩展色支持
csi.ts320CSI 序列类型和生成器
osc.ts494OSC 序列解析(剪贴板、超链接、标题)
esc.ts68ESC 序列解析
dec.ts61DEC 私有模式序列

4. components/ — 基础 UI 组件(18 文件)

文件行数说明
App.tsx657应用根组件(React Compiler 优化)
Text.tsx254核心文本渲染(样式、颜色、粗体等)
Box.tsx213盒模型布局容器(Flexbox 属性)
ScrollBox.tsx237滚动容器(命令式 API,视口裁剪)
Button.tsx192交互按钮(focus/hover/active 状态)
AlternateScreen.tsx80备用屏幕缓冲管理
Link.tsx42超链接(OSC 8 终端超链接)
Newline.tsx39换行插入
Spacer.tsx20弹性间距
RawAnsi.tsx~50原始 ANSI 输出
NoSelect.tsx~30不可选择区域
ErrorOverview.tsx~100错误概览
AppContext.ts~20应用上下文
StdinContext.ts~20stdin 上下文
ClockContext.tsx时钟上下文(定时刷新)
CursorDeclarationContext.ts光标声明上下文
TerminalFocusContext.tsx终端焦点上下文
TerminalSizeContext.tsx终端尺寸上下文

5. hooks/ — React Hooks(12 文件)

文件行数说明
use-input.ts93键盘输入处理
use-app.ts8应用上下文访问
use-stdin.ts~30stdin 访问
use-selection.ts~50选择状态管理
use-interval.ts~30定时器 Hook
use-animation-frame.ts~40动画帧 Hook
use-terminal-viewport.ts~50终端视口尺寸
use-terminal-title.ts~30终端标题设置
use-terminal-focus.ts~30终端焦点追踪
use-declared-cursor.ts~40声明式光标位置
use-tab-status.ts~30Tab 状态
use-search-highlight.ts~50搜索高亮