Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit 2a93d41

Browse files
committed
Move events to appropriate places
1 parent 3b66568 commit 2a93d41

21 files changed

+264
-768
lines changed

src/DOM/CSS/Event/Types.purs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module DOM.CSS.Event.Types
2+
( TransitionEvent
3+
, transitionEventToEvent
4+
, readTransitionEvent
5+
) where
6+
7+
import Data.Foreign (Foreign, F, unsafeReadTagged)
8+
import Data.Foreign.Class (class IsForeign)
9+
import DOM.Event.Types (Event)
10+
import Unsafe.Coerce as U
11+
12+
foreign import data TransitionEvent :: *
13+
14+
transitionEventToEvent :: TransitionEvent -> Event
15+
transitionEventToEvent = U.unsafeCoerce
16+
17+
readTransitionEvent :: Foreign -> F TransitionEvent
18+
readTransitionEvent = unsafeReadTagged "TransitionEvent"
19+
20+
instance isForeignTransitionEvent :: IsForeign TransitionEvent where
21+
read = readTransitionEvent

src/DOM/Event/Event.purs

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
11
module DOM.Event.Event
2-
( bubbles
3-
, cancelable
4-
, currentTarget
5-
, defaultPrevented
6-
, eventPhase
7-
, eventPhaseIndex
8-
, target
9-
, timeStamp
10-
, type_
11-
, preventDefault
12-
, stopImmediatePropagation
13-
, stopPropagation
2+
( module DOM.Event.Event
3+
, module T
144
) where
155

166
import Prelude
@@ -20,6 +10,7 @@ import Data.Maybe (fromJust)
2010
import DOM (DOM)
2111
import DOM.Event.EventPhase (EventPhase)
2212
import DOM.Event.Types (Event, EventType)
13+
import DOM.Event.Types (Event) as T
2314
import DOM.Node.Types (Node)
2415

2516
-- | The event type.
@@ -41,11 +32,17 @@ foreign import eventPhaseIndex :: Event -> Int
4132

4233
-- | Prevents the event from bubbling up to futher event listeners. Other event
4334
-- | listeners on the current target will still fire.
44-
foreign import stopPropagation :: forall eff. Event -> Eff (dom :: DOM | eff) Unit
35+
foreign import stopPropagation
36+
:: forall eff
37+
. Event
38+
-> Eff (dom :: DOM | eff) Unit
4539

4640
-- | Prevents all other listeners for the event from being called. This includes
4741
-- | event listeners added to the current target after the current listener.
48-
foreign import stopImmediatePropagation :: forall eff. Event -> Eff (dom :: DOM | eff) Unit
42+
foreign import stopImmediatePropagation
43+
:: forall eff
44+
. Event
45+
-> Eff (dom :: DOM | eff) Unit
4946

5047
-- | Indicates whether the event will bubble up through the DOM or not.
5148
foreign import bubbles :: Event -> Boolean
@@ -54,7 +51,10 @@ foreign import bubbles :: Event -> Boolean
5451
foreign import cancelable :: Event -> Boolean
5552

5653
-- | Cancels the event if it can be cancelled.
57-
foreign import preventDefault :: forall eff. Event -> Eff (dom :: DOM | eff) Unit
54+
foreign import preventDefault
55+
:: forall eff
56+
. Event
57+
-> Eff (dom :: DOM | eff) Unit
5858

5959
-- | Indicates whether `preventDefault` was called on the event.
6060
foreign import defaultPrevented :: Event -> Boolean

src/DOM/Event/EventPhase.purs

+15-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module DOM.Event.EventPhase (EventPhase(..)) where
1+
module DOM.Event.EventPhase where
22

33
import Prelude
44
import Data.Enum (class Enum, class BoundedEnum, Cardinality(..), defaultSucc, defaultPred)
@@ -11,9 +11,7 @@ data EventPhase
1111
| Bubbling
1212

1313
derive instance eqEventPhase :: Eq EventPhase
14-
15-
instance ordEventPhase :: Ord EventPhase where
16-
compare x y = compare (fromEnumEventPhase x) (fromEnumEventPhase y)
14+
derive instance ordEventPhase :: Ord EventPhase
1715

1816
instance boundedEventPhase :: Bounded EventPhase where
1917
bottom = None
@@ -29,14 +27,18 @@ instance boundedEnumEventPhase :: BoundedEnum EventPhase where
2927
fromEnum = fromEnumEventPhase
3028

3129
toEnumEventPhase :: Int -> Maybe EventPhase
32-
toEnumEventPhase 0 = Just None
33-
toEnumEventPhase 1 = Just Capturing
34-
toEnumEventPhase 2 = Just AtTarget
35-
toEnumEventPhase 3 = Just Bubbling
36-
toEnumEventPhase _ = Nothing
30+
toEnumEventPhase =
31+
case _ of
32+
0 -> Just None
33+
1 -> Just Capturing
34+
2 -> Just AtTarget
35+
3 -> Just Bubbling
36+
_ -> Nothing
3737

3838
fromEnumEventPhase :: EventPhase -> Int
39-
fromEnumEventPhase None = 0
40-
fromEnumEventPhase Capturing = 1
41-
fromEnumEventPhase AtTarget = 2
42-
fromEnumEventPhase Bubbling = 3
39+
fromEnumEventPhase =
40+
case _ of
41+
None -> 0
42+
Capturing -> 1
43+
AtTarget -> 2
44+
Bubbling -> 3

src/DOM/Event/EventTarget.purs

+23-4
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,34 @@ import DOM.Event.Types (EventTarget, Event, EventType)
1111
foreign import data EventListener :: # ! -> *
1212

1313
-- | Creates an EventListener from a normal PureScript Eff function.
14-
foreign import eventListener :: forall eff a. (Event -> Eff eff a) -> EventListener eff
14+
foreign import eventListener
15+
:: forall eff a
16+
. (Event -> Eff eff a)
17+
-> EventListener eff
1518

1619
-- | Adds a listener to an event target. The boolean argument indicates whether
1720
-- | the listener should be added for the "capture" phase.
18-
foreign import addEventListener :: forall eff. EventType -> EventListener (dom :: DOM | eff) -> Boolean -> EventTarget -> Eff (dom :: DOM | eff) Unit
21+
foreign import addEventListener
22+
:: forall eff
23+
. EventType
24+
-> EventListener (dom :: DOM | eff)
25+
-> Boolean
26+
-> EventTarget
27+
-> Eff (dom :: DOM | eff) Unit
1928

2029
-- | Removes a listener to an event target. The boolean argument indicates
2130
-- | whether the listener should be removed for the "capture" phase.
22-
foreign import removeEventListener :: forall eff. EventType -> EventListener (dom :: DOM | eff) -> Boolean -> EventTarget -> Eff (dom :: DOM | eff) Unit
31+
foreign import removeEventListener
32+
:: forall eff
33+
. EventType
34+
-> EventListener (dom :: DOM | eff)
35+
-> Boolean
36+
-> EventTarget
37+
-> Eff (dom :: DOM | eff) Unit
2338

2439
-- | Dispatches an event from an event target.
25-
foreign import dispatchEvent :: forall eff. Event -> EventTarget -> Eff (dom :: DOM, err :: EXCEPTION | eff) Boolean
40+
foreign import dispatchEvent
41+
:: forall eff
42+
. Event
43+
-> EventTarget
44+
-> Eff (dom :: DOM, err :: EXCEPTION | eff) Boolean

src/DOM/Event/Types.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
exports._readEventTarget = function (left) {
55
return function (right) {
66
return function (foreign) {
7-
return foreign instanceof EventTarget
8-
? left("Value is not an EventTarget")
9-
: right(foreign);
7+
return foreign instanceof EventTarget ? left("Value is not an EventTarget") : right(foreign);
108
};
119
};
1210
};

0 commit comments

Comments
 (0)