tui

package
v0.0.0-...-c6df125 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ClearInputEvent = &Event{
	Keys: []string{"ctrl+x"},
	Cb: func(_ string, m *Model) (tea.Model, tea.Cmd) {
		m.Inputs = []string{}
		m.InputCursor = 0
		m.FreshList()
		return m, nil
	},
}
View Source
var EnterEvent = &Event{
	Keys: []string{"enter"},
	Cb: func(_ string, m *Model) (tea.Model, tea.Cmd) {
		if m.lm.ShowingHelp {
			m.lm.ShowingHelp = false
			return m, nil
		}
		if menus := m.menuFetcher(m.Modifying); m.ShowMenu && len(menus) > 0 {
			if menu := menus[m.MenuIndex]; menu.Cb != nil {
				return m, menu.Cb(m)
			}
		} else {
			m.ShowMenu = true
		}
		return m, nil
	},
}
View Source
var MoveEvent = &Event{
	Keys: []string{"up", "ctrl+j", "down", "ctrl+k"},
	Cb: func(key string, m *Model) (tea.Model, tea.Cmd) {
		list := m.lm.List()
		currIndex := &m.lm.currIndex
		if m.ShowMenu && m.CurrMenu().Name == "Add" {
			list = m.lm.files
			currIndex = &m.lm.fileIndex
		}
		switch key {
		case "up", "ctrl+k":
			if *currIndex < len(list)-1 {
				*currIndex++
			}
		case "down", "ctrl+j":
			if *currIndex > 0 {
				*currIndex--
			}
		}
		return m, nil
	},
}

Functions

func ExitMenuCmd

func ExitMenuCmd() tea.Msg

func FreshListCmd

func FreshListCmd() tea.Msg

Types

type Event

type Event struct {
	Cb   func(key string, m *Model) (tea.Model, tea.Cmd)
	Keys []string
}

type EventManager

type EventManager struct {
	// contains filtered or unexported fields
}

func NewEventManager

func NewEventManager(events ...*Event) *EventManager

func (*EventManager) Add

func (e *EventManager) Add(events ...*Event)

func (*EventManager) Find

func (e *EventManager) Find(key string) *Event

type ExitMenuMsg

type ExitMenuMsg int

type FreshListMsg

type FreshListMsg int

type ItemRender

type ItemRender interface {
	String() string
	Order() int
}

type ListManager

type ListManager struct {
	SearchChan chan<- string

	ShowingHelp bool
	// contains filtered or unexported fields
}

func NewListManager

func NewListManager(searchChan chan<- string) *ListManager

func (*ListManager) AppendList

func (l *ListManager) AppendList(rs []ItemRender)

func (*ListManager) Curr

func (l *ListManager) Curr() (ItemRender, error)

func (*ListManager) CurrIndex

func (l *ListManager) CurrIndex() int

func (*ListManager) Files

func (l *ListManager) Files() []ItemRender

func (*ListManager) Helps

func (l *ListManager) Helps() []ItemRender

func (*ListManager) List

func (l *ListManager) List() []ItemRender

func (*ListManager) NewList

func (l *ListManager) NewList()

func (*ListManager) ReSort

func (l *ListManager) ReSort()

func (*ListManager) SetFiles

func (l *ListManager) SetFiles(files []ItemRender)

func (*ListManager) SetIndex

func (l *ListManager) SetIndex(index int)
type Menu struct {
	Cb   func(m *Model) tea.Cmd
	Name string
}

type Model

type Model struct {
	Inputs    []string
	MenuIndex int

	InputCursor int
	ShowMenu    bool
	Modifying   bool
	// contains filtered or unexported fields
}

func NewModel

func NewModel(lm *ListManager, menuFetcher func(bool) []*Menu, events ...*Event) *Model

func (*Model) CurrFile

func (m *Model) CurrFile() (ItemRender, error)

func (*Model) CurrItem

func (m *Model) CurrItem() (ItemRender, error)

func (*Model) CurrMenu

func (m *Model) CurrMenu() *Menu

func (*Model) FreshList

func (m *Model) FreshList()

func (*Model) Init

func (m *Model) Init() tea.Cmd

func (*Model) Update

func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*Model) View

func (m *Model) View() string

type StringRender

type StringRender string

func (StringRender) Order

func (h StringRender) Order() int

func (StringRender) String

func (h StringRender) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳