module Escoger.Internal where

import Control.Monad.State.Strict
import Control.Monad.Reader
import Data.ByteString (ByteString)
import Data.Vector (Vector)
import Graphics.Vty (Vty)

data SearchState = SearchState { _matches :: Vector ByteString
                               , _term    :: ByteString
                               , _index   :: Int
                               } deriving (Show)

data SearchData = SearchData { _content :: Vector ByteString
                             , _vty     :: Vty
                             }

type SearchM a = ReaderT SearchData (StateT SearchState IO) a

type Index = Int

maxRows :: Int
maxRows = 100