module Dingo.Internal.Event
( onEvent
, emitEvent
) where
import Dingo.Internal.Base (Command(..))
import Dingo.Internal.EventTypes (Event(..))
import Dingo.Internal.WidgetTypes (Widget(..))
import Dingo.Internal.Callback (CallbackM, addCommand, registerCallback)
import Dingo.Selector (ToSelector(..))
emitEvent :: Widget w s => w -> Event -> CallbackM ()
emitEvent w e =
addCommand $ TriggerEvent (getWidgetId w) e
onEvent :: ToSelector a => a -> Event -> CallbackM () -> CallbackM ()
onEvent s e callback = do
callbackId <- registerCallback callback
addCommand $ CallbackBySelector e (toSelector s) callbackId