mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-20 09:42:34 +02:00
e8e64eff12
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package docs
|
|
|
|
import (
|
|
"charm.land/bubbles/v2/key"
|
|
tea "charm.land/bubbletea/v2"
|
|
"github.com/anotherhadi/spilltea/internal/keys"
|
|
)
|
|
|
|
func (e Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
g := keys.Keys.Global
|
|
switch msg := msg.(type) {
|
|
case tea.MouseWheelMsg:
|
|
switch msg.Button {
|
|
case tea.MouseWheelUp:
|
|
e.viewport.SetYOffset(e.viewport.YOffset() - 1)
|
|
case tea.MouseWheelDown:
|
|
e.viewport.SetYOffset(e.viewport.YOffset() + 1)
|
|
}
|
|
|
|
case tea.KeyPressMsg:
|
|
switch {
|
|
case key.Matches(msg, g.Up):
|
|
e.viewport.SetYOffset(e.viewport.YOffset() - 1)
|
|
case key.Matches(msg, g.Down):
|
|
e.viewport.SetYOffset(e.viewport.YOffset() + 1)
|
|
case key.Matches(msg, g.ScrollUp):
|
|
step := e.viewport.Height() / 2
|
|
if step < 1 {
|
|
step = 1
|
|
}
|
|
e.viewport.SetYOffset(e.viewport.YOffset() - step)
|
|
case key.Matches(msg, g.ScrollDown):
|
|
step := e.viewport.Height() / 2
|
|
if step < 1 {
|
|
step = 1
|
|
}
|
|
e.viewport.SetYOffset(e.viewport.YOffset() + step)
|
|
}
|
|
}
|
|
return e, nil
|
|
}
|
|
|
|
func (m *Model) SetSize(w, h int) {
|
|
frameW := windowStyle().GetHorizontalFrameSize()
|
|
frameH := windowStyle().GetVerticalFrameSize()
|
|
|
|
m.viewport.SetWidth(w - frameW)
|
|
m.viewport.SetHeight(h - frameH)
|
|
m.renderMarkdown()
|
|
}
|