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}