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