@@ -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
7366import Prelude
7467
7568import Control.Monad.Eff (kind Effect , Eff )
7669import Control.Monad.Eff.Exception (Error )
7770import Control.Monad.Eff.Uncurried (EffFn2 , runEffFn2 )
71+
7872import Data.Nullable (Nullable )
73+
74+ import React.SyntheticEvent (preventDefault , isDefaultPrevented , stopPropagation , isPropagationStopped , persist ) as SyntheticEvent
75+
7976import Unsafe.Coerce (unsafeCoerce )
8077
8178-- | Name of a tag.
@@ -91,7 +88,7 @@ foreign import data ReactComponent :: Type
9188foreign 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.
9794foreign 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.
117114foreign 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.
357330foreign 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
360333class ReactPropFields (required :: # Type ) (given :: # Type )
361334
362335type 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.
424397foreign 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-
430399class IsReactElement a where
431400 toElement :: a -> ReactElement
432401
0 commit comments