keys.go

 1package dialogs
 2
 3import (
 4	"github.com/charmbracelet/bubbles/v2/key"
 5	"github.com/charmbracelet/crush/internal/tui/layout"
 6)
 7
 8// KeyMap defines keyboard bindings for dialog management.
 9type KeyMap struct {
10	Close key.Binding
11}
12
13func DefaultKeyMap() KeyMap {
14	return KeyMap{
15		Close: key.NewBinding(
16			key.WithKeys("esc"),
17		),
18	}
19}
20
21// FullHelp implements help.KeyMap.
22func (k KeyMap) FullHelp() [][]key.Binding {
23	m := [][]key.Binding{}
24	slice := layout.KeyMapToSlice(k)
25	for i := 0; i < len(slice); i += 4 {
26		end := min(i+4, len(slice))
27		m = append(m, slice[i:end])
28	}
29	return m
30}
31
32// ShortHelp implements help.KeyMap.
33func (k KeyMap) ShortHelp() []key.Binding {
34	return []key.Binding{
35		k.Close,
36	}
37}