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>
50 lines
989 B
Go
50 lines
989 B
Go
package app
|
|
|
|
import (
|
|
tea "charm.land/bubbletea/v2"
|
|
"charm.land/lipgloss/v2"
|
|
"github.com/anotherhadi/spilltea/internal/style"
|
|
)
|
|
|
|
func (m Model) View() tea.View {
|
|
if m.width == 0 {
|
|
v := tea.NewView("")
|
|
v.AltScreen = true
|
|
return v
|
|
}
|
|
|
|
normal := m.renderNormal()
|
|
|
|
if m.copyAs.IsOpen() {
|
|
v := tea.NewView(m.copyAs.View(normal))
|
|
v.AltScreen = true
|
|
v.MouseMode = tea.MouseModeCellMotion
|
|
return v
|
|
}
|
|
|
|
rendered := normal
|
|
if m.notifications.HasNotifications() {
|
|
rendered = m.notifications.View(normal)
|
|
}
|
|
|
|
v := tea.NewView(rendered)
|
|
v.AltScreen = true
|
|
v.MouseMode = tea.MouseModeCellMotion
|
|
return v
|
|
}
|
|
|
|
func (m Model) renderNormal() string {
|
|
sidebar := m.renderSidebar()
|
|
content := m.renderActivePage()
|
|
return lipgloss.JoinHorizontal(lipgloss.Top, sidebar, content)
|
|
}
|
|
|
|
func (m *Model) renderActivePage() string {
|
|
for _, e := range pageRegistry {
|
|
if e.id == m.page && e.render != nil {
|
|
return e.render(m)
|
|
}
|
|
}
|
|
return style.S.Faint.Render("Work in progress")
|
|
}
|