feat: update bubbles, enable mousewheel on pager

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos Alexandro Becker 2025-03-28 15:14:52 -03:00
commit 0fca68e8fe
No known key found for this signature in database
4 changed files with 19 additions and 18 deletions

View file

@ -309,7 +309,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
m.viewport.SetWidth(msg.Width)
if m.reverse {
m.viewport.YOffset = clamp(0, len(m.matches), len(m.matches)-m.viewport.Height())
m.viewport.SetYOffset(clamp(0, len(m.matches), len(m.matches)-m.viewport.Height()))
}
case tea.KeyMsg:
km := m.keymap
@ -371,7 +371,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
// in the reverse layout.
var yOffsetFromBottom int
if m.reverse {
yOffsetFromBottom = max(0, len(m.matches)-m.viewport.YOffset)
yOffsetFromBottom = max(0, len(m.matches)-m.viewport.YOffset())
}
// A character was entered, this likely means that the text input has
@ -401,7 +401,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
// it remains at a constant position relative to the cursor.
if m.reverse {
maxYOffset := max(0, len(m.matches)-m.viewport.Height())
m.viewport.YOffset = clamp(0, maxYOffset, len(m.matches)-yOffsetFromBottom)
m.viewport.SetYOffset(clamp(0, maxYOffset, len(m.matches)-yOffsetFromBottom))
}
}
}
@ -432,18 +432,18 @@ func (m *model) CursorUp() {
}
if m.reverse { //nolint:nestif
m.cursor = (m.cursor + 1) % len(m.matches)
if len(m.matches)-m.cursor <= m.viewport.YOffset {
m.viewport.LineUp(1)
if len(m.matches)-m.cursor <= m.viewport.YOffset() {
m.viewport.ScrollUp(1)
}
if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset {
if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset() {
m.viewport.SetYOffset(len(m.matches) - m.viewport.Height())
}
} else {
m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches)
if m.cursor < m.viewport.YOffset {
m.viewport.LineUp(1)
if m.cursor < m.viewport.YOffset() {
m.viewport.ScrollUp(1)
}
if m.cursor >= m.viewport.YOffset+m.viewport.Height() {
if m.cursor >= m.viewport.YOffset()+m.viewport.Height() {
m.viewport.SetYOffset(len(m.matches) - m.viewport.Height())
}
}
@ -455,18 +455,18 @@ func (m *model) CursorDown() {
}
if m.reverse { //nolint:nestif
m.cursor = (m.cursor - 1 + len(m.matches)) % len(m.matches)
if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset {
m.viewport.LineDown(1)
if len(m.matches)-m.cursor > m.viewport.Height()+m.viewport.YOffset() {
m.viewport.ScrollDown(1)
}
if len(m.matches)-m.cursor <= m.viewport.YOffset {
if len(m.matches)-m.cursor <= m.viewport.YOffset() {
m.viewport.GotoTop()
}
} else {
m.cursor = (m.cursor + 1) % len(m.matches)
if m.cursor >= m.viewport.YOffset+m.viewport.Height() {
m.viewport.LineDown(1)
if m.cursor >= m.viewport.YOffset()+m.viewport.Height() {
m.viewport.ScrollDown(1)
}
if m.cursor < m.viewport.YOffset {
if m.cursor < m.viewport.YOffset() {
m.viewport.GotoTop()
}
}

2
go.mod
View file

@ -9,7 +9,7 @@ require (
github.com/alecthomas/kong v1.9.0
github.com/alecthomas/mango-kong v0.1.0
github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e
github.com/charmbracelet/glamour/v2 v2.0.0-20250327175542-c0a9b8dab672
github.com/charmbracelet/lipgloss/v2 v2.0.0-beta1
github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706

4
go.sum
View file

@ -22,8 +22,8 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1 h1:swACzss0FjnyPz1enfX56GKkLiuKg5FlyVmOLIlU2kE=
github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw=
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1 h1:yaxFt97mvofGY7bYZn8U/aSVoamXGE3O4AEvWhshUDI=
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta1/go.mod h1:qbcZLI5z8R49v9xBdU5V5Dh5D2uccx8wSwBqxQyErqc=
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e h1:0kRhGpsFiFVPOx75o8pYUBaCjDrrcGrvtLYh6kKaeRs=
github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.1.0.20250328000255-bf331300c52e/go.mod h1:hYsjyXwOT3RiI2CI4WQYPUg4vg2O1TNTpk8TQTavCPI=
github.com/charmbracelet/colorprofile v0.3.0 h1:KtLh9uuu1RCt+Hml4s6Hz+kB1PfV3wi++1h5ia65yKQ=
github.com/charmbracelet/colorprofile v0.3.0/go.mod h1:oHJ340RS2nmG1zRGPmhJKJ/jf4FPNNk0P39/wBPA1G0=
github.com/charmbracelet/glamour/v2 v2.0.0-20250327175542-c0a9b8dab672 h1:DF8za137pUh5LAXAdXISh0bhS6zU0mHl+cLxyivZjuI=

View file

@ -66,6 +66,7 @@ func (o Options) Run() error {
m,
tea.WithAltScreen(),
tea.WithReportFocus(),
tea.WithMouseAllMotion(),
tea.WithContext(ctx),
).Run()
if err != nil {