| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package permissions
- import (
- "github.com/charmbracelet/bubbles/v2/key"
- )
- type KeyMap struct {
- Left,
- Right,
- Tab,
- Select,
- Allow,
- AllowSession,
- Deny,
- ToggleDiffMode,
- ScrollDown,
- ScrollUp key.Binding
- ScrollLeft,
- ScrollRight key.Binding
- }
- func DefaultKeyMap() KeyMap {
- return KeyMap{
- Left: key.NewBinding(
- key.WithKeys("left", "h"),
- key.WithHelp("←", "previous"),
- ),
- Right: key.NewBinding(
- key.WithKeys("right", "l"),
- key.WithHelp("→", "next"),
- ),
- Tab: key.NewBinding(
- key.WithKeys("tab"),
- key.WithHelp("tab", "switch"),
- ),
- Allow: key.NewBinding(
- key.WithKeys("a", "A", "ctrl+a"),
- key.WithHelp("a", "allow"),
- ),
- AllowSession: key.NewBinding(
- key.WithKeys("s", "S", "ctrl+s"),
- key.WithHelp("s", "allow session"),
- ),
- Deny: key.NewBinding(
- key.WithKeys("d", "D", "ctrl+d", "esc"),
- key.WithHelp("d", "deny"),
- ),
- Select: key.NewBinding(
- key.WithKeys("enter"),
- key.WithHelp("enter", "confirm"),
- ),
- ToggleDiffMode: key.NewBinding(
- key.WithKeys("t"),
- key.WithHelp("t", "toggle diff mode"),
- ),
- ScrollDown: key.NewBinding(
- key.WithKeys("shift+down", "J"),
- key.WithHelp("shift+↓", "scroll down"),
- ),
- ScrollUp: key.NewBinding(
- key.WithKeys("shift+up", "K"),
- key.WithHelp("shift+↑", "scroll up"),
- ),
- ScrollLeft: key.NewBinding(
- key.WithKeys("shift+left", "H"),
- key.WithHelp("shift+←", "scroll left"),
- ),
- ScrollRight: key.NewBinding(
- key.WithKeys("shift+right", "L"),
- key.WithHelp("shift+→", "scroll right"),
- ),
- }
- }
- // KeyBindings implements layout.KeyMapProvider
- func (k KeyMap) KeyBindings() []key.Binding {
- return []key.Binding{
- k.Left,
- k.Right,
- k.Tab,
- k.Select,
- k.Allow,
- k.AllowSession,
- k.Deny,
- k.ToggleDiffMode,
- k.ScrollDown,
- k.ScrollUp,
- k.ScrollLeft,
- k.ScrollRight,
- }
- }
- // FullHelp implements help.KeyMap.
- func (k KeyMap) FullHelp() [][]key.Binding {
- m := [][]key.Binding{}
- slice := k.KeyBindings()
- for i := 0; i < len(slice); i += 4 {
- end := min(i+4, len(slice))
- m = append(m, slice[i:end])
- }
- return m
- }
- // ShortHelp implements help.KeyMap.
- func (k KeyMap) ShortHelp() []key.Binding {
- return []key.Binding{
- k.ToggleDiffMode,
- key.NewBinding(
- key.WithKeys("shift+left", "shift+down", "shift+up", "shift+right"),
- key.WithHelp("shift+←↓↑→", "scroll"),
- ),
- }
- }
|