viewport.go

 1package viewport
 2
 3import (
 4	"github.com/charmbracelet/bubbles/viewport"
 5	tea "github.com/charmbracelet/bubbletea"
 6)
 7
 8// Viewport represents a viewport component.
 9type Viewport struct {
10	Viewport *viewport.Model
11}
12
13func New() *Viewport {
14	return &Viewport{
15		Viewport: &viewport.Model{
16			MouseWheelEnabled: true,
17		},
18	}
19}
20
21// SetSize implements common.Component.
22func (v *Viewport) SetSize(width, height int) {
23	v.Viewport.Width = width
24	v.Viewport.Height = height
25}
26
27// Init implements tea.Model.
28func (v *Viewport) Init() tea.Cmd {
29	return nil
30}
31
32// Update implements tea.Model.
33func (v *Viewport) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
34	vp, cmd := v.Viewport.Update(msg)
35	v.Viewport = &vp
36	return v, cmd
37}
38
39// View implements tea.Model.
40func (v *Viewport) View() string {
41	return v.Viewport.View()
42}
43
44// SetContent sets the viewport's content.
45func (v *Viewport) SetContent(content string) {
46	v.Viewport.SetContent(content)
47}
48
49// GotoTop moves the viewport to the top of the log.
50func (v *Viewport) GotoTop() {
51	v.Viewport.GotoTop()
52}
53
54// GotoBottom moves the viewport to the bottom of the log.
55func (v *Viewport) GotoBottom() {
56	v.Viewport.GotoBottom()
57}
58
59// HalfViewDown moves the viewport down by half the viewport height.
60func (v *Viewport) HalfViewDown() {
61	v.Viewport.HalfViewDown()
62}
63
64// HalfViewUp moves the viewport up by half the viewport height.
65func (v *Viewport) HalfViewUp() {
66	v.Viewport.HalfViewUp()
67}
68
69// ViewUp moves the viewport up by a page.
70func (v *Viewport) ViewUp() []string {
71	return v.Viewport.ViewUp()
72}
73
74// ViewDown moves the viewport down by a page.
75func (v *Viewport) ViewDown() []string {
76	return v.Viewport.ViewDown()
77}
78
79// LineUp moves the viewport up by the given number of lines.
80func (v *Viewport) LineUp(n int) []string {
81	return v.Viewport.LineUp(n)
82}
83
84// LineDown moves the viewport down by the given number of lines.
85func (v *Viewport) LineDown(n int) []string {
86	return v.Viewport.LineDown(n)
87}
88
89// ScrollPercent returns the viewport's scroll percentage.
90func (v *Viewport) ScrollPercent() float64 {
91	return v.Viewport.ScrollPercent()
92}