module Graphics.UI.Threepenny.Events ( -- * Synopsis -- | Common DOM events, for convenience. -- * Documentation click, mousemove, hover, blur, leave, keyup, keydown, ) where import Graphics.UI.Threepenny.Core silence = fmap (const ()) -- | Mouse click. click :: Element -> Event () click = silence . domEvent "click" -- | Mouse hovering over an element. hover :: Element -> Event () hover = silence . domEvent "mouseenter" -- | Event that periodically occurs while the mouse is moving over an element. -- -- The event value represents the mouse coordinates -- relative to the upper left corner of the entire page. -- -- Note: The @@ element responds to mouse move events, -- but only in the area occupied by actual content, -- not the whole browser window. mousemove :: Element -> Event (Int,Int) mousemove = fmap readPair . domEvent "mousemove" where readPair (EventData (Just x:Just y:_)) = (read x, read y) -- | Mouse leaving an element. leave :: Element -> Event () leave = silence . domEvent "mouseleave" -- | Element loses focus. blur :: Element -> Event () blur = silence . domEvent "blur" type KeyCode = Int -- | Key pressed while element has focus. keydown :: Element -> Event KeyCode keydown = fmap read1 . domEvent "keydown" -- | Key released while element has focus. keyup :: Element -> Event KeyCode keyup = fmap read1 . domEvent "keyup" read1 (EventData (Just s:_)) = read s