1package util
2
3import (
4 "time"
5
6 tea "github.com/charmbracelet/bubbletea"
7)
8
9func CmdHandler(msg tea.Msg) tea.Cmd {
10 return func() tea.Msg {
11 return msg
12 }
13}
14
15func ReportError(err error) tea.Cmd {
16 return CmdHandler(InfoMsg{
17 Type: InfoTypeError,
18 Msg: err.Error(),
19 })
20}
21
22type InfoType int
23
24const (
25 InfoTypeInfo InfoType = iota
26 InfoTypeWarn
27 InfoTypeError
28)
29
30func ReportInfo(info string) tea.Cmd {
31 return CmdHandler(InfoMsg{
32 Type: InfoTypeInfo,
33 Msg: info,
34 })
35}
36
37func ReportWarn(warn string) tea.Cmd {
38 return CmdHandler(InfoMsg{
39 Type: InfoTypeWarn,
40 Msg: warn,
41 })
42}
43
44type (
45 InfoMsg struct {
46 Type InfoType
47 Msg string
48 TTL time.Duration
49 }
50 ClearStatusMsg struct{}
51)
52
53func Clamp(v, low, high int) int {
54 if high < low {
55 low, high = high, low
56 }
57 return min(high, max(low, v))
58}