mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-07-06 20:42:33 +02:00
1aa4b92bb3
Signed-off-by: Hadi <hadi@example.com>
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package app
|
|
|
|
import (
|
|
tea "charm.land/bubbletea/v2"
|
|
"charm.land/lipgloss/v2"
|
|
ilovetui "github.com/anotherhadi/ilovetui"
|
|
)
|
|
|
|
func (m Model) newView(content string) tea.View {
|
|
v := tea.NewView(content)
|
|
v.AltScreen = true
|
|
v.WindowTitle = "Spilltea: " + m.projectName
|
|
return v
|
|
}
|
|
|
|
func (m Model) View() tea.View {
|
|
if m.width == 0 {
|
|
return m.newView("")
|
|
}
|
|
|
|
normal := m.renderNormal()
|
|
|
|
if m.copyAs.IsOpen() {
|
|
v := m.newView(m.copyAs.View(normal))
|
|
v.MouseMode = tea.MouseModeCellMotion
|
|
return v
|
|
}
|
|
|
|
if m.copy.IsOpen() {
|
|
v := m.newView(m.copy.View(normal))
|
|
v.MouseMode = tea.MouseModeCellMotion
|
|
return v
|
|
}
|
|
|
|
rendered := normal
|
|
if m.notifications.HasNotifications() {
|
|
rendered = m.notifications.View(normal)
|
|
}
|
|
|
|
v := m.newView(rendered)
|
|
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 ilovetui.S.Faint.Render("Work in progress")
|
|
}
|