/
MouseEvent.purs
80 lines (58 loc) · 1.68 KB
/
MouseEvent.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
module Web.UIEvent.MouseEvent
( MouseEvent
, fromUIEvent
, fromEvent
, toUIEvent
, toEvent
, screenX
, screenY
, clientX
, clientY
, pageX
, pageY
, ctrlKey
, shiftKey
, altKey
, metaKey
, button
, relatedTarget
, buttons
, getModifierState
) where
import Prelude
import Data.Maybe (Maybe)
import Data.Nullable (Nullable, toMaybe)
import Effect (Effect)
import Unsafe.Coerce (unsafeCoerce)
import Web.Event.Event (Event)
import Web.Event.EventTarget (EventTarget)
import Web.Internal.FFI (unsafeReadProtoTagged)
import Web.UIEvent.UIEvent (UIEvent)
foreign import data MouseEvent :: Type
fromUIEvent :: UIEvent -> Maybe MouseEvent
fromUIEvent = unsafeReadProtoTagged "MouseEvent"
fromEvent :: Event -> Maybe MouseEvent
fromEvent = unsafeReadProtoTagged "MouseEvent"
toUIEvent :: MouseEvent -> UIEvent
toUIEvent = unsafeCoerce
toEvent :: MouseEvent -> Event
toEvent = unsafeCoerce
foreign import screenX :: MouseEvent -> Int
foreign import screenY :: MouseEvent -> Int
foreign import clientX :: MouseEvent -> Int
foreign import clientY :: MouseEvent -> Int
foreign import pageX :: MouseEvent -> Int
foreign import pageY :: MouseEvent -> Int
foreign import ctrlKey :: MouseEvent -> Boolean
foreign import shiftKey :: MouseEvent -> Boolean
foreign import altKey :: MouseEvent -> Boolean
foreign import metaKey :: MouseEvent -> Boolean
foreign import button :: MouseEvent -> Int
foreign import _relatedTarget :: MouseEvent -> Nullable EventTarget
relatedTarget :: MouseEvent -> Maybe EventTarget
relatedTarget = toMaybe <$> _relatedTarget
foreign import buttons :: MouseEvent -> Int
foreign import getModifierState
:: String
-> MouseEvent
-> Effect Boolean