Documentation
¶
Overview ¶
Package tui — фреймворк терминального UI с дифференциальным рендерингом.
Публичный импорт — `github.com/stelmakhdigital/stell-tui`; реализация разложена по подпакетам (component, diff, editor, keys, overlay, terminal, wrap), реэкспорт — в export.go.
Два режима хоста:
- Standalone: NewWithTerminal + Start/Stop (см. examples/chat_simple)
- Hosted: New + RenderNow — цикл событий и raw mode у вызывающего кода
Интерактивный UI coding-agent живёт в github.com/stelmakhdigital/stell-coding/internal/tui и реэкспортирует этот пакет через type aliases.
Index ¶
- Constants
- Variables
- type Autocomplete
- type Box
- type CancellableLoader
- type CompleteItem
- type Completer
- type Component
- type Container
- type DiffEngine
- type DiffStrategy
- type Editor
- type Focusable
- type Image
- type ImageProtocol
- type ImageRenderOptions
- type Input
- type InputHandler
- type InputListener
- type Invalidatable
- type KeyAction
- type KeyDef
- type KeyMap
- type KeybindingsManager
- type KillRing
- type Loader
- type Markdown
- type MarkdownTheme
- type OverlayAnchor
- type OverlayHandle
- type OverlayMargin
- type OverlayOptions
- type ProcessTerminal
- type SelectList
- type SettingsItem
- type SettingsList
- type Spacer
- type StaticCompleter
- type StdinBuffer
- type StdinBufferOptions
- type TUI
- func (t *TUI) AddChild(c component.Component)
- func (t *TUI) AddInputListener(fn InputListener)
- func (t *TUI) CellDimensions() (w, h int)
- func (t *TUI) ClearOverlay()
- func (t *TUI) Close() error
- func (t *TUI) ForceFullRedraw()
- func (t *TUI) HandleInput(data string)
- func (t *TUI) HasOverlay() bool
- func (t *TUI) HideOverlay()
- func (t *TUI) OnResize(fn func(w, h int))
- func (t *TUI) RemoveChild(c component.Component)
- func (t *TUI) RenderNow() error
- func (t *TUI) RequestRender()
- func (t *TUI) Root() *component.Container
- func (t *TUI) SetCellDimensions(w, h int)
- func (t *TUI) SetDiffStrategy(s diff.DiffStrategy)
- func (t *TUI) SetFocus(f component.Focusable)
- func (t *TUI) SetOverlay(c component.Component)
- func (t *TUI) SetRoot(c *component.Container)
- func (t *TUI) SetShowHardwareCursor(on bool)
- func (t *TUI) SetShowImages(on bool)
- func (t *TUI) SetSize(w, h int)
- func (t *TUI) SetTerminal(term terminal.Terminal)
- func (t *TUI) ShowImages() bool
- func (t *TUI) ShowOverlay(c component.Component, opts ...overlay.OverlayOptions) *OverlayHandle
- func (t *TUI) Start()
- func (t *TUI) Stop()
- type Terminal
- type TerminalCapabilities
- type Text
- type TruncatedText
- type UnfocusOptions
Constants ¶
const ( DiffFull = diff.DiffFull DiffPatch = diff.DiffPatch DiffScroll = diff.DiffScroll ImageNone = terminal.ImageNone ImageKitty = terminal.ImageKitty ImageITerm = terminal.ImageITerm OverlayAnchorTop = overlay.OverlayAnchorTop OverlayAnchorCenter = overlay.OverlayAnchorCenter OverlayAnchorBottom = overlay.OverlayAnchorBottom OverlayAnchorTopLeft = overlay.OverlayAnchorTopLeft OverlayAnchorTopRight = overlay.OverlayAnchorTopRight OverlayAnchorBottomLeft = overlay.OverlayAnchorBottomLeft OverlayAnchorBottomRight = overlay.OverlayAnchorBottomRight OverlayAnchorTopCenter = overlay.OverlayAnchorTopCenter OverlayAnchorBottomCenter = overlay.OverlayAnchorBottomCenter OverlayAnchorLeftCenter = overlay.OverlayAnchorLeftCenter OverlayAnchorRightCenter = overlay.OverlayAnchorRightCenter CursorMarker = wrap.CursorMarker )
Variables ¶
var ( NewContainer = component.NewContainer NewSelectList = component.NewSelectList NewSettingsList = component.NewSettingsList NewMarkdown = component.NewMarkdown DefaultMarkdownTheme = component.DefaultMarkdownTheme NewImage = component.NewImage NewDiffEngine = diff.NewDiffEngine NewEditor = editor.NewEditor NewInput = editor.NewInput NewKillRing = editor.NewKillRing NewKeyMap = keys.NewKeyMap NewKeybindingsManager = keys.NewKeybindingsManager DefaultTUIKeybindings = keys.DefaultTUIKeybindings ParseKey = keys.ParseKey MatchesKey = keys.MatchesKey NormalizeKeyChord = keys.NormalizeKeyChord NormalizeKey = keys.NormalizeKey DecodePrintableKey = keys.DecodePrintableKey IsKeyRelease = keys.IsKeyRelease NewStdinBuffer = keys.NewStdinBuffer SetKittyProtocolActive = keys.SetKittyProtocolActive KittyProtocolActive = keys.KittyProtocolActive NewProcessTerminal = terminal.NewProcessTerminal DetectCapabilities = terminal.DetectCapabilities EnableRawMode = terminal.EnableRawMode EnableTerminalFeatures = terminal.EnableTerminalFeatures EnableTerminalFeaturesWriter = terminal.EnableTerminalFeaturesWriter TermSize = terminal.TermSize QueryCellSize = terminal.QueryCellSize QueryCellSizeWriter = terminal.QueryCellSizeWriter WatchResize = terminal.WatchResize EncodeTerminalImage = terminal.EncodeTerminalImage ImageStub = terminal.ImageStub ClampOverlayLines = overlay.ClampOverlayLines CompositeOverlayLines = overlay.CompositeOverlayLines VisibleLen = wrap.VisibleLen Truncate = wrap.Truncate FuzzyFilter = wrap.FuzzyFilter FuzzyScore = wrap.FuzzyScore )
Functions ¶
This section is empty.
Types ¶
type Autocomplete ¶
type Autocomplete = editor.Autocomplete
type CancellableLoader ¶
type CancellableLoader = component.CancellableLoader
type CompleteItem ¶
type CompleteItem = editor.CompleteItem
type DiffEngine ¶
type DiffEngine = diff.DiffEngine
type DiffStrategy ¶
type DiffStrategy = diff.DiffStrategy
type ImageProtocol ¶
type ImageProtocol = terminal.ImageProtocol
type ImageRenderOptions ¶
type ImageRenderOptions = terminal.ImageRenderOptions
type InputHandler ¶
type InputHandler = component.InputHandler
type InputListener ¶
InputListener получает сырой ввод до маршрутизации фокуса. Верните true, чтобы поглотить событие (не отдавать компоненту).
type Invalidatable ¶
type Invalidatable = component.Invalidatable
type KeybindingsManager ¶
type KeybindingsManager = keys.KeybindingsManager
type MarkdownTheme ¶
type MarkdownTheme = component.MarkdownTheme
type OverlayAnchor ¶
type OverlayAnchor = overlay.OverlayAnchor
type OverlayHandle ¶
type OverlayHandle struct {
// contains filtered or unexported fields
}
OverlayHandle управляет показанным оверлеем.
func (*OverlayHandle) Focus ¶
func (h *OverlayHandle) Focus()
Focus фокусирует оверлей и поднимает его визуально наверх.
func (*OverlayHandle) IsFocused ¶
func (h *OverlayHandle) IsFocused() bool
IsFocused сообщает, есть ли сейчас фокус у этого оверлея.
func (*OverlayHandle) IsHidden ¶
func (h *OverlayHandle) IsHidden() bool
IsHidden сообщает, временно ли скрыт оверлей.
func (*OverlayHandle) SetHidden ¶
func (h *OverlayHandle) SetHidden(hidden bool)
SetHidden временно скрывает или показывает оверлей, не удаляя его.
func (*OverlayHandle) Unfocus ¶
func (h *OverlayHandle) Unfocus(opts ...UnfocusOptions)
Unfocus снимает фокус с оверлея.
type OverlayMargin ¶
type OverlayMargin = overlay.OverlayMargin
type OverlayOptions ¶
type OverlayOptions = overlay.OverlayOptions
type ProcessTerminal ¶
type ProcessTerminal = terminal.ProcessTerminal
type SelectList ¶
type SelectList = component.SelectList
type SettingsItem ¶
type SettingsItem = component.SettingsItem
type SettingsList ¶
type SettingsList = component.SettingsList
type StaticCompleter ¶
type StaticCompleter = editor.StaticCompleter
type StdinBuffer ¶
type StdinBuffer = keys.StdinBuffer
type StdinBufferOptions ¶
type StdinBufferOptions = keys.StdinBufferOptions
type TUI ¶
type TUI struct {
// contains filtered or unexported fields
}
TUI — корневой контейнер с фокусом, оверлеями и циклом отрисовки.
func NewWithTerminal ¶
NewWithTerminal создаёт TUI, привязанный к Terminal (standalone Start/Stop).
func (*TUI) AddInputListener ¶
func (t *TUI) AddInputListener(fn InputListener)
AddInputListener регистрирует обработчик ввода до фокуса.
func (*TUI) CellDimensions ¶
CellDimensions возвращает последний известный размер ячейки в пикселях (0 если неизвестен).
func (*TUI) ForceFullRedraw ¶
func (t *TUI) ForceFullRedraw()
ForceFullRedraw инвалидирует DiffEngine, чтобы следующий кадр был полной перерисовкой.
func (*TUI) HandleInput ¶
HandleInput маршрутизирует ввод слушателям, оверлею или фокусу.
func (*TUI) HasOverlay ¶
HasOverlay сообщает, есть ли видимый активный оверлей.
func (*TUI) RemoveChild ¶
RemoveChild удаляет первое совпадение компонента из корневого контейнера.
func (*TUI) SetCellDimensions ¶
SetCellDimensions сохраняет размер ячейки в пикселях (CSI 16 t) для масштаба картинок.
func (*TUI) SetDiffStrategy ¶
func (t *TUI) SetDiffStrategy(s diff.DiffStrategy)
SetDiffStrategy выбирает DiffFull / DiffPatch / DiffScroll.
func (*TUI) SetOverlay ¶
SetOverlay заменяет верхний оверлей (или показывает новый).
func (*TUI) SetShowHardwareCursor ¶
SetShowHardwareCursor включает позиционирование аппаратного курсора по CursorMarker.
func (*TUI) SetShowImages ¶
SetShowImages включает инлайн-изображения терминала.
func (*TUI) SetTerminal ¶
SetTerminal привязывает Terminal для Start/Stop (hosted-приложениям можно не вызывать).
func (*TUI) ShowImages ¶
ShowImages сообщает, включены ли инлайн-изображения.
func (*TUI) ShowOverlay ¶
func (t *TUI) ShowOverlay(c component.Component, opts ...overlay.OverlayOptions) *OverlayHandle
ShowOverlay показывает компонент как оверлей.
type TerminalCapabilities ¶
type TerminalCapabilities = terminal.TerminalCapabilities
type TruncatedText ¶
type TruncatedText = component.TruncatedText
type UnfocusOptions ¶
UnfocusOptions настраивает OverlayHandle.Unfocus.
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
chat_simple
command
Простое демо чата на github.com/stelmakhdigital/stell-tui (standalone Start/Stop).
|
Простое демо чата на github.com/stelmakhdigital/stell-tui (standalone Start/Stop). |
|
Package overlay — раскладка и композитинг оверлеев TUI.
|
Package overlay — раскладка и композитинг оверлеев TUI. |
|
Package wrap — утилиты визуальной ширины строк с учётом ANSI/OSC.
|
Package wrap — утилиты визуальной ширины строк с учётом ANSI/OSC. |