module Rasa.Internal.Listeners
( beforeEveryRender
, beforeEveryRender_
, dispatchBeforeRender
, onEveryRender
, onEveryRender_
, dispatchOnRender
, afterEveryRender
, afterEveryRender_
, dispatchAfterRender
, onExit
, onKeypress
, dispatchKeypress
) where
import Eve
import Rasa.Internal.Events
import Control.Monad
onKeypress :: (Keypress -> App result) -> App ListenerId
onKeypress actionF = addListener (void <$> actionF)
dispatchKeypress :: Keypress -> App ()
dispatchKeypress = dispatchEvent
beforeEveryRender :: App a -> App ListenerId
beforeEveryRender action = addListener (const (void action) :: BeforeRender -> App ())
beforeEveryRender_ :: App a -> App ()
beforeEveryRender_ = void . beforeEveryRender
dispatchBeforeRender :: App ()
dispatchBeforeRender = dispatchEvent BeforeRender
onEveryRender :: App a -> App ListenerId
onEveryRender action = addListener (const $ void action :: OnRender -> App ())
onEveryRender_ :: App a -> App ()
onEveryRender_ = void . onEveryRender
dispatchOnRender :: App ()
dispatchOnRender = dispatchEvent OnRender
afterEveryRender :: App a -> App ListenerId
afterEveryRender action = addListener (const $ void action :: AfterRender -> App ())
afterEveryRender_ :: App a -> App ()
afterEveryRender_ = void . afterEveryRender
dispatchAfterRender :: App ()
dispatchAfterRender = dispatchEvent AfterRender