module Data.DOM.EventTarget (addEventListener, removeEventListener, dispatchEvent) where import Data.DOM.Events import Control.Monad import BrownPLT.JavaScript import Data.DOM.WBTypes import Data.DOM.Views import Data.DOM.Dom import Data.DOM.Document (createElement) addEventListener :: (Monad mn, CEventTarget this, CEventListener listener) => Expression String -> Expression listener -> Expression Bool -> Expression this -> mn (Expression ()) addEventListener a b c thisp = do let et = undefined :: () let r = DotRef et (thisp /\ et) (Id et "addEventListener") return (CallExpr et r [a /\ et, b /\ et, c /\ et]) removeEventListener :: (Monad mn, CEventTarget this, CEventListener listener) => Expression String -> Expression listener -> Expression Bool -> Expression this -> mn (Expression ()) removeEventListener a b c thisp = do let et = undefined :: () let r = DotRef et (thisp /\ et) (Id et "removeEventListener") return (CallExpr et r [a /\ et, b /\ et, c /\ et]) dispatchEvent :: (Monad mn, CEventTarget this, CEvent evt) => Expression evt -> Expression this -> mn (Expression Bool) dispatchEvent a thisp = do let et = undefined :: Bool let r = DotRef et (thisp /\ et) (Id et "dispatchEvent") return (CallExpr et r [a /\ et])