{-# LANGUAGE NoImplicitPrelude #-}

module UI.Draw.Main
    ( renderMain
    ) where

import ClassyPrelude

import Brick
import Control.Lens  ((^.))
import Data.Sequence (mapWithIndex)

import Events.State.Types     (lists)
import UI.Draw.Main.List      (renderList)
import UI.Draw.Main.Search    (renderSearch)
import UI.Draw.Main.StatusBar (renderStatusBar)
import UI.Draw.Types          (DSWidget, DrawState (..))
import UI.Types               (ResourceName (..))

renderMain :: DSWidget
renderMain = do
    ls <- (^. lists) <$> asks dsState
    listWidgets <- toList <$> sequence (renderList `mapWithIndex` ls)
    let mainWidget = viewport RNLists Horizontal . padTopBottom 1 $ hBox listWidgets
    statusBar <- renderStatusBar
    renderSearch (mainWidget <=> statusBar)