Skip to content

Commit dcfbad0

Browse files
committed
Event refactoring
Resolves #85 Resolves #135 Resolves #136
1 parent 523f5a0 commit dcfbad0

File tree

5 files changed

+687
-102
lines changed

5 files changed

+687
-102
lines changed

src/React.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,3 @@ function createElementDynamic(class_) {
149149
};
150150
exports.createElementDynamicImpl = createElementDynamic;
151151
exports.createElementTagNameDynamic = createElementDynamic;
152-
153-
function preventDefault(event) {
154-
return function() {
155-
event.preventDefault();
156-
};
157-
};
158-
exports.preventDefault = preventDefault;
159-
160-
function stopPropagation(event) {
161-
return function() {
162-
event.stopPropagation();
163-
};
164-
};
165-
exports.stopPropagation = stopPropagation;

src/React.purs

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ module React
66
, ReactThis
77
, TagName
88

9-
, EventHandler
10-
119
, Read
1210
, Write
1311
, Disallowed
@@ -30,18 +28,11 @@ module React
3028
, ReactClass
3129
, Ref
3230

33-
, Event
34-
, MouseEvent
35-
, KeyboardEvent
36-
37-
, EventHandlerContext
38-
3931
, component
4032
, pureComponent
4133
, statelessComponent
4234

4335
, getProps
44-
4536
, readState
4637
, writeState
4738
, writeStateWithCallback
@@ -50,16 +41,16 @@ module React
5041
, forceUpdate
5142
, forceUpdateCb
5243

53-
, handle
54-
, preventDefault
55-
, stopPropagation
56-
5744
, createElement
5845
, createElementDynamic
5946
, createElementTagName
6047
, createElementTagNameDynamic
6148
, createLeafElement
6249

50+
, SyntheticEventHandler
51+
, SyntheticEventHandlerContext
52+
, handle
53+
6354
, Children
6455
, childrenToArray
6556
, childrenCount
@@ -68,14 +59,20 @@ module React
6859
, class IsReactElement
6960
, toElement
7061
, fragmentWithKey
62+
63+
, module SyntheticEvent
7164
) where
7265

7366
import Prelude
7467

7568
import Control.Monad.Eff (kind Effect, Eff)
7669
import Control.Monad.Eff.Exception (Error)
7770
import Control.Monad.Eff.Uncurried (EffFn2, runEffFn2)
71+
7872
import Data.Nullable (Nullable)
73+
74+
import React.SyntheticEvent (preventDefault, isDefaultPrevented, stopPropagation, isPropagationStopped, persist) as SyntheticEvent
75+
7976
import Unsafe.Coerce (unsafeCoerce)
8077

8178
-- | Name of a tag.
@@ -91,7 +88,7 @@ foreign import data ReactComponent :: Type
9188
foreign import data ReactThis :: Type -> Type -> Type
9289

9390
-- | An event handler. The type argument represents the type of the event.
94-
foreign import data EventHandler :: Type -> Type
91+
foreign import data SyntheticEventHandler :: Type -> Type
9592

9693
-- | This phantom type indicates that read access to a resource is allowed.
9794
foreign import data Read :: Effect
@@ -116,32 +113,8 @@ foreign import data ReactState :: # Effect -> Effect
116113
-- | This effect indicates that a computation may read the component props.
117114
foreign import data ReactProps :: Effect
118115

119-
-- | The type of DOM events.
120-
foreign import data Event :: Type
121-
122-
-- | The type of mouse events.
123-
type MouseEvent =
124-
{ pageX :: Number
125-
, pageY :: Number
126-
}
127-
128-
-- | The type of keyboard events.
129-
type KeyboardEvent =
130-
{ altKey :: Boolean
131-
, ctrlKey :: Boolean
132-
, charCode :: Int
133-
, key :: String
134-
, keyCode :: Int
135-
, locale :: String
136-
, location :: Int
137-
, metaKey :: Boolean
138-
, repeat :: Boolean
139-
, shiftKey :: Boolean
140-
, which :: Int
141-
}
142-
143116
-- | A function which handles events.
144-
type EventHandlerContext eff props state result =
117+
type SyntheticEventHandlerContext eff props state result =
145118
Eff
146119
( props :: ReactProps
147120
, state :: ReactState ReadWrite
@@ -355,13 +328,13 @@ forceUpdateCb this m = runEffFn2 forceUpdateCbImpl this m
355328

356329
-- | Create an event handler.
357330
foreign import handle :: forall eff ev props state result.
358-
(ev -> EventHandlerContext eff props state result) -> EventHandler ev
331+
(ev -> SyntheticEventHandlerContext eff props state result) -> SyntheticEventHandler ev
359332

360333
class ReactPropFields (required :: # Type) (given :: # Type)
361334

362335
type ReservedReactPropFields r =
363336
( key :: String
364-
, ref :: EventHandler (Nullable Ref)
337+
, ref :: SyntheticEventHandler (Nullable Ref)
365338
| r
366339
)
367340

@@ -423,10 +396,6 @@ foreign import childrenToArray :: Children -> Array ReactElement
423396
-- | Returns the number of children.
424397
foreign import childrenCount :: Children -> Int
425398

426-
foreign import preventDefault :: forall eff. Event -> Eff eff Unit
427-
428-
foreign import stopPropagation :: forall eff. Event -> Eff eff Unit
429-
430399
class IsReactElement a where
431400
toElement :: a -> ReactElement
432401

0 commit comments

Comments
 (0)