| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package util
- import (
- "log/slog"
- "time"
- tea "github.com/charmbracelet/bubbletea/v2"
- )
- type Cursor interface {
- Cursor() *tea.Cursor
- }
- type Model interface {
- tea.Model
- tea.ViewModel
- }
- func CmdHandler(msg tea.Msg) tea.Cmd {
- return func() tea.Msg {
- return msg
- }
- }
- func ReportError(err error) tea.Cmd {
- slog.Error("Error reported", "error", err)
- return CmdHandler(InfoMsg{
- Type: InfoTypeError,
- Msg: err.Error(),
- })
- }
- type InfoType int
- const (
- InfoTypeInfo InfoType = iota
- InfoTypeWarn
- InfoTypeError
- )
- func ReportInfo(info string) tea.Cmd {
- return CmdHandler(InfoMsg{
- Type: InfoTypeInfo,
- Msg: info,
- })
- }
- func ReportWarn(warn string) tea.Cmd {
- return CmdHandler(InfoMsg{
- Type: InfoTypeWarn,
- Msg: warn,
- })
- }
- type (
- InfoMsg struct {
- Type InfoType
- Msg string
- TTL time.Duration
- }
- ClearStatusMsg struct{}
- )
- func Clamp(v, low, high int) int {
- if high < low {
- low, high = high, low
- }
- return min(high, max(low, v))
- }
|