From 9401ebbb83da308c61aacca0073ce130443978f6 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Mon, 10 Jan 2022 18:02:49 -0500 Subject: [PATCH] Viewport New() is now optional to ease the upgrade process --- viewport/viewport.go | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/viewport/viewport.go b/viewport/viewport.go index d6b07a2..ee89208 100644 --- a/viewport/viewport.go +++ b/viewport/viewport.go @@ -9,16 +9,13 @@ import ( "github.com/charmbracelet/lipgloss" ) -// NewModel returns a new model with the given width and height as well as -// default keymappings. -func NewModel(width, height int) Model { - return Model{ - Width: width, - Height: height, - KeyMap: DefaultKeyMap(), - MouseWheelEnabled: true, - MouseWheelDelta: 3, - } +// New returns a new model with the given width and height as well as default +// keymappings. +func New(width, height int) (m Model) { + m.Width = width + m.Height = height + m.setInitialValues() + return m } // Model is the Bubble Tea model for this viewport element. @@ -55,7 +52,15 @@ type Model struct { // which is usually via the alternate screen buffer. HighPerformanceRendering bool - lines []string + initialized bool + lines []string +} + +func (m *Model) setInitialValues() { + m.KeyMap = DefaultKeyMap() + m.MouseWheelEnabled = true + m.MouseWheelDelta = 3 + m.initialized = true } // Init exists to satisfy the tea.Model interface for composability purposes. @@ -263,6 +268,10 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { // Author's note: this method has been broken out to make it easier to // potentially transition Update to satisfy tea.Model. func (m Model) updateAsModel(msg tea.Msg) (Model, tea.Cmd) { + if !m.initialized { + m.setInitialValues() + } + var cmd tea.Cmd switch msg := msg.(type) {