Files
terminal/tui/tree-expansion.go
2026-07-12 18:41:05 -04:00

64 lines
1.3 KiB
Go

package tui
// TreeExpansion manages expand/collapse state
type TreeExpansion struct {
State map[string]bool
}
// NewTreeExpansion creates initialized expansion state
func NewTreeExpansion() *TreeExpansion {
return &TreeExpansion{
State: make(map[string]bool),
}
}
// --- State queries ---
// IsExpanded returns expansion state for key
func (e *TreeExpansion) IsExpanded(key string) bool {
return e.State[key]
}
// --- State modification ---
// SetExpanded sets expansion state for key
func (e *TreeExpansion) SetExpanded(key string, expanded bool) {
e.State[key] = expanded
}
// Toggle toggles expansion state for key
func (e *TreeExpansion) Toggle(key string) bool {
e.State[key] = !e.State[key]
return e.State[key]
}
// Expand sets key to expanded
func (e *TreeExpansion) Expand(key string) {
e.State[key] = true
}
// Collapse sets key to collapsed
func (e *TreeExpansion) Collapse(key string) {
e.State[key] = false
}
// --- Bulk operations ---
// ExpandAll expands all provided keys
func (e *TreeExpansion) ExpandAll(keys []string) {
for _, k := range keys {
e.State[k] = true
}
}
// CollapseAll collapses all keys
func (e *TreeExpansion) CollapseAll() {
for k := range e.State {
e.State[k] = false
}
}
// Clear removes all expansion state
func (e *TreeExpansion) Clear() {
e.State = make(map[string]bool)
}