-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathreact-haskell.cabal
103 lines (98 loc) · 2.85 KB
/
react-haskell.cabal
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
name: react-haskell
version: 2.0.1
synopsis: Haskell React bindings
description:
This package provides high level bindings to Facebook's <http://facebook.github.io/react/ React> library, meant for use with GHCJS.
.
React is a JavaScript library for building user interfaces. React (and React-Haskell) is focused on just UI - it's not a framework.
.
Currently React-Haskell can render simple stateful components, but not what React calls classes. Put another way, React-Haskell doesn't support lifecycle methods yet.
.
Here's a simple example which demonstrates basic elements, attributes, state, and handling events.
.
> page_ :: ReactNode Void
> page_ =
> let cls = smartClass
> -- this is a record and these should really be curly braces,
> -- but haddock breaks on them.
> [ name = "page"
>
> -- initially the input is empty
> , initialState = ""
>
> -- always transition to the input's new value
> , transition = \(_, value) -> (value, Nothing)
>
> , renderFn = \_ str -> div_ [ class_ "container" ] $ do
> input_ [ value_ str, onChange (Just . value . target) ]
> ]
> in classLeaf cls ()
>
> main :: IO ()
> main = do
> Just doc <- currentDocument
> Just elem <- documentGetElementById doc ("elem" :: JSString)
> render page_ elem
license: MIT
license-file: LICENSE
author: Joel Burget
maintainer: [email protected]
category: Web
build-type: Simple
cabal-version: >=1.10
homepage: https://github.com/joelburget/react-haskell
bug-reports: https://github.com/joelburget/react-haskell/issues
data-dir: lib
data-files: stubs.js, react.js
source-repository head
type: git
location: https://github.com/joelburget/react-haskell.git
flag ghcjs
description: tell cabal we're using ghcjs
default: True
library
exposed-modules:
React,
React.DOM,
React.GHCJS,
React.Rebindable
other-modules:
React.Attrs,
React.Class,
React.Elements,
React.Events,
React.Imports,
React.Interpret,
React.Local,
React.PropTypes,
React.Registry,
React.Render,
React.Types
other-extensions:
CPP,
FlexibleInstances,
FlexibleContexts,
ForeignFunctionInterface,
GADTs,
GeneralizedNewtypeDeriving,
LambdaCase,
MultiParamTypeClasses,
NamedFieldPuns,
OverloadedStrings
build-depends:
base >= 4.5 && < 5,
transformers,
monads-tf,
deepseq,
lens-family,
void == 0.7,
aeson,
text,
unordered-containers
if flag(ghcjs)
build-depends:
ghcjs-base >= 0.1,
ghcjs-prim >= 0.1.0.0,
ghcjs-dom >= 0.1
hs-source-dirs: src
default-language: Haskell2010