static.go

 1package anim
 2
 3import (
 4	"cmp"
 5	"image/color"
 6
 7	tea "github.com/charmbracelet/bubbletea/v2"
 8	"github.com/charmbracelet/lipgloss/v2"
 9)
10
11type noAnim struct {
12	Color    color.Color
13	rendered string
14	id       int
15}
16
17func newStatic(label string, foreground color.Color) Spinner {
18	a := &noAnim{Color: foreground}
19	a.SetLabel(label)
20	a.id = nextID()
21	return a
22}
23
24func (s *noAnim) SetLabel(label string) {
25	s.rendered = lipgloss.NewStyle().
26		Foreground(s.Color).
27		Render(cmp.Or(label, "Working") + ellipsisFrames[2])
28}
29
30func (s noAnim) Init() tea.Cmd { return stepCmd(s.id) }
31func (s *noAnim) View() string { return s.rendered }
32func (s *noAnim) Update(msg tea.Msg) (Spinner, tea.Cmd) {
33	switch msg := msg.(type) {
34	case StepMsg:
35		if msg.id != s.id {
36			// Reject messages that are not for this instance.
37			return s, nil
38		}
39		return s, stepCmd(s.id)
40	default:
41		return s, nil
42	}
43}