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}