package tui type ScrollState struct { at string offset int absolute int atFirst bool atLast bool NoSnap bool } func (s *ScrollState) ToStart() { *s = ScrollState {} } func (s *ScrollState) AtFirst() bool { return s.atFirst } func (s *ScrollState) AtLast() bool { return s.atLast } func (s *ScrollState) Scroll(amnt int) { s.offset += amnt s.absolute += amnt } func (s *ScrollState) To(id string) { s.at = id } func (s *ScrollState) ByMouse(ev MouseEvent, reverse bool) { scroll := ev.Scroll * 5 if reverse { scroll *= -1 } s.Scroll(scroll) } func (s *ScrollState) Get() int { return s.absolute } func (s *ScrollState) Set(amnt int) { s.at = "" s.absolute = amnt }