0 | module Rhone.JS.Event
 1 |
 2 | import JS
 3 | import Text.Html.Event
 4 | import Web.Dom
 5 | import Web.Raw.UIEvents
 6 |
 7 | %default total
 8 |
 9 | %foreign "browser:lambda:x=>x.target.value || x.target.innerHTML || ''"
10 | prim__input : Event -> PrimIO String
11 |
12 | %foreign "browser:lambda:x=>x.target.checked?1:0"
13 | prim__checked : Event -> PrimIO Bits8
14 |
15 | export
16 | mouseInfo : MouseEvent -> JSIO MouseInfo
17 | mouseInfo e =
18 |   [| MkMouseInfo
19 |        (button e)
20 |        (buttons e)
21 |        (clientX e)
22 |        (clientY e)
23 |        (offsetX e)
24 |        (offsetY e)
25 |        (pageX e)
26 |        (pageY e)
27 |        (screenX e)
28 |        (screenY e)
29 |        (altKey e)
30 |        (ctrlKey e)
31 |        (metaKey e)
32 |        (shiftKey e)
33 |   |]
34 |
35 | export
36 | keyInfo : KeyboardEvent -> JSIO KeyInfo
37 | keyInfo e =
38 |   [| MkKeyInfo
39 |        (key e)
40 |        (code e)
41 |        (location e)
42 |        (isComposing e)
43 |        (altKey e)
44 |        (ctrlKey e)
45 |        (metaKey e)
46 |        (shiftKey e)
47 |   |]
48 |
49 | export
50 | inputInfo : InputEvent -> JSIO InputInfo
51 | inputInfo e =
52 |   [| MkInputInfo
53 |        (primIO (prim__input $ up e))
54 |        ((1 ==) <$> primIO (prim__checked $ up e))
55 |   |]
56 |
57 | export
58 | changeInfo : Event -> JSIO InputInfo
59 | changeInfo e =
60 |   [| MkInputInfo
61 |        (primIO (prim__input e))
62 |        ((1 ==) <$> primIO (prim__checked e))
63 |   |]
64 |
65 | export
66 | wheelInfo : WheelEvent -> JSIO WheelInfo
67 | wheelInfo e =
68 |   [| MkWheelInfo
69 |      (deltaMode e)
70 |      (deltaX e)
71 |      (deltaY e)
72 |      (deltaZ e)
73 |   |]
74 |