{-# LANGUAGE NoImplicitPrelude #-} module Events.Actions.Search ( event ) where import ClassyPrelude import Control.Lens ((&), (.~), (^.)) import Events.State import Events.State.Types (Stateful, mode) import Events.State.Types.Mode (Mode (Search)) import Graphics.Vty.Input.Events import qualified UI.Field as F (event) import qualified Events.Actions.Normal as Normal search :: Event -> Stateful search (EvKey KEnter _) s = searchEntered s search e s = pure $ case s ^. mode of Search ent field -> s & mode .~ Search ent (F.event e field) _ -> s event :: Event -> Stateful event (EvKey KEsc _) s = normalMode s event e s = case s ^. mode of Search ent _ -> (if ent then search else Normal.event) e s _ -> pure s