-
Notifications
You must be signed in to change notification settings - Fork 65
Expand file tree
/
Copy pathTypes.purs
More file actions
57 lines (40 loc) · 1.57 KB
/
Types.purs
File metadata and controls
57 lines (40 loc) · 1.57 KB
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
module React.Types
( ReactClass
, ReactElement
, class IsReactElement
, toElement
, Children
, childrenToArray
, childrenCount
) where
import Prelude
import Unsafe.Coerce (unsafeCoerce)
-- | React class for components.
foreign import data ReactClass :: Type -> Type
-- | A virtual DOM node, or component.
foreign import data ReactElement :: Type
instance semigroupReactElement :: Semigroup ReactElement where
append a b = toElement [ a, b ]
instance monoidReactElement :: Monoid ReactElement where
mempty = toElement ([] :: Array ReactElement)
class IsReactElement a where
toElement :: a -> ReactElement
instance isReactElementString :: IsReactElement String where
toElement = unsafeCoerce
instance isReactElementNumber :: IsReactElement Number where
toElement = unsafeCoerce
instance isReactElementInt :: IsReactElement Int where
toElement = unsafeCoerce
instance isReactElementChildren :: IsReactElement Children where
toElement = unsafeCoerce
instance isReactElementReactElement :: IsReactElement ReactElement where
toElement = identity
instance isReactElementArray :: IsReactElement (Array ReactElement) where
toElement = toElementArray
foreign import toElementArray :: Array ReactElement -> ReactElement
-- | Internal representation for the children elements passed to a component
foreign import data Children :: Type
-- | Internal conversion function from children elements to an array of React elements
foreign import childrenToArray :: Children -> Array ReactElement
-- | Returns the number of children.
foreign import childrenCount :: Children -> Int