File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,13 +13,13 @@ clean:
1313 rm -f lib/React.js example/app.js
1414 rm -rf example/bower_components/
1515
16- lib/React.js : src/React.purs
16+ lib/React.js : src/React.purs src/React/DOM.purs
1717 mkdir -p $(@D )
18- psc $(PSC_OPTS ) $< \
18+ psc $(PSC_OPTS ) $^ \
1919 --output $@ \
20- --module React
20+ --module React --module React.DOM
2121
22- example/app.js : src/React.purs example/app.purs
22+ example/app.js : src/React.purs src/React/DOM.purs example/app.purs
2323 psc $(PSC_OPTS ) $^ \
2424 --output $@ \
2525 --main --module Main
Original file line number Diff line number Diff line change 11module Main where
22
33import React
4+ import qualified React.DOM as DOM
45
56hello = mkUI \props ->
6- div {className: " Hello" } [text " Hello, " , text props.name]
7+ DOM .div {className: " Hello" } [
8+ DOM .text " Hello, " ,
9+ DOM .text props.name
10+ ]
711
812incrementCounter = do
913 val <- readState
1014 writeState (val + 1 )
1115
1216counter = mkStatefulUI 0 \props -> do
1317 val <- readState
14- return (div {className: " Counter" , onClick: handle incrementCounter} [text (show val), text " Click me to increment!" ])
18+ return $ DOM .div {className: " Counter" , onClick: handle incrementCounter} [
19+ DOM .text (show val),
20+ DOM .text " Click me to increment!"
21+ ]
1522
1623main = do
17- let component = div {} [counter {}, hello {name: " World" }, counter {}]
24+ let component = DOM . div {} [counter {}, hello {name: " World" }, counter {}]
1825 renderToBody component
Original file line number Diff line number Diff line change @@ -8,23 +8,6 @@ foreign import data WriteReactState :: * -> !
88foreign import data UI :: *
99foreign import data EventHandler :: * -> *
1010
11- foreign import mkDOM
12- " function mkDOM(tagName) { \
13- \ var ctor = React.DOM[tagName]; \
14- \ return function(props) { \
15- \ return function(children) { \
16- \ return ctor.apply(ctor, [props].concat(children)); \
17- \ } \
18- \ } \
19- \ }"
20- :: forall props . String -> props -> [UI ] -> UI
21-
22- foreign import text
23- " function text(text) { \
24- \ return text; \
25- \}"
26- :: String -> UI
27-
2811foreign import mkUI
2912 " function mkUI(render) { \
3013 \ return React.createClass({ \
@@ -131,14 +114,3 @@ foreign import renderToElementById
131114 \ } \
132115 \ }"
133116 :: forall eff . String -> UI -> Eff (dom :: DOM | eff ) UI
134-
135- div = mkDOM " div"
136- span = mkDOM " span"
137- html = mkDOM " html"
138- body = mkDOM " body"
139- a = mkDOM " a"
140- section = mkDOM " section"
141- ul = mkDOM " ul"
142- li = mkDOM " li"
143- ol = mkDOM " ol"
144- footer = mkDOM " footer"
Original file line number Diff line number Diff line change 1+ module React.DOM where
2+
3+ import React
4+
5+ foreign import mkDOM
6+ " function mkDOM(tagName) { \
7+ \ var ctor = React.DOM[tagName]; \
8+ \ return function(props) { \
9+ \ return function(children) { \
10+ \ return ctor.apply(ctor, [props].concat(children)); \
11+ \ } \
12+ \ } \
13+ \ }"
14+ :: forall props b . String -> props -> [UI ] -> UI
15+
16+ foreign import text
17+ " function text(text) { \
18+ \ return text; \
19+ \}"
20+ :: String -> UI
21+
22+ a = mkDOM " a"
23+ abbr = mkDOM " abbr"
24+ address = mkDOM " address"
25+ area = mkDOM " area"
26+ article = mkDOM " article"
27+ aside = mkDOM " aside"
28+ audio = mkDOM " audio"
29+ b = mkDOM " b"
30+ base = mkDOM " base"
31+ base = mkDOM " base"
32+ bdi = mkDOM " bdi"
33+ bdo = mkDOM " bdo"
34+ big = mkDOM " big"
35+ blockquote = mkDOM " blockquote"
36+ body = mkDOM " body"
37+ br = mkDOM " br"
38+ button = mkDOM " button"
39+ canvas = mkDOM " canvas"
40+ caption = mkDOM " caption"
41+ cite = mkDOM " cite"
42+ code = mkDOM " code"
43+ col = mkDOM " col"
44+ colgroup = mkDOM " colgroup"
45+ dd = mkDOM " dd"
46+ del = mkDOM " del"
47+ details = mkDOM " details"
48+ dfn = mkDOM " dfn"
49+ div = mkDOM " div"
50+ dl = mkDOM " dl"
51+ dt = mkDOM " dt"
52+ em = mkDOM " em"
53+ embed = mkDOM " embed"
54+ fieldset = mkDOM " fieldset"
55+ figcaption = mkDOM " figcaption"
56+ figure = mkDOM " figure"
57+ footer = mkDOM " footer"
58+ form = mkDOM " form"
59+ h1 = mkDOM " h1"
60+ h2 = mkDOM " h2"
61+ h3 = mkDOM " h3"
62+ h4 = mkDOM " h4"
63+ h5 = mkDOM " h5"
64+ h6 = mkDOM " h6"
65+ head = mkDOM " head"
66+ header = mkDOM " header"
67+ hr = mkDOM " hr"
68+ html = mkDOM " html"
69+ i = mkDOM " i"
70+ iframe = mkDOM " iframe"
71+ iframe = mkDOM " iframe"
72+ img = mkDOM " img"
73+ input = mkDOM " input"
74+ ins = mkDOM " ins"
75+ kbd = mkDOM " kbd"
76+ keygen = mkDOM " keygen"
77+ label = mkDOM " label"
78+ legend = mkDOM " legend"
79+ li = mkDOM " li"
80+ link = mkDOM " link"
81+ main = mkDOM " main"
82+ map = mkDOM " map"
83+ mark = mkDOM " mark"
84+ menu = mkDOM " menu"
85+ menuitem = mkDOM " menuitem"
86+ meta = mkDOM " meta"
87+ meter = mkDOM " meter"
88+ nav = mkDOM " nav"
89+ noscript = mkDOM " noscript"
90+ object = mkDOM " object"
91+ ol = mkDOM " ol"
92+ optgroup = mkDOM " optgroup"
93+ option = mkDOM " option"
94+ output = mkDOM " output"
95+ p = mkDOM " p"
96+ param = mkDOM " param"
97+ param = mkDOM " param"
98+ pre = mkDOM " pre"
99+ progress = mkDOM " progress"
100+ q = mkDOM " q"
101+ rp = mkDOM " rp"
102+ rp = mkDOM " rp"
103+ rt = mkDOM " rt"
104+ ruby = mkDOM " ruby"
105+ s = mkDOM " s"
106+ samp = mkDOM " samp"
107+ samp = mkDOM " samp"
108+ script = mkDOM " script"
109+ section = mkDOM " section"
110+ select = mkDOM " select"
111+ small = mkDOM " small"
112+ source = mkDOM " source"
113+ span = mkDOM " span"
114+ strong = mkDOM " strong"
115+ style = mkDOM " style"
116+ sub = mkDOM " sub"
117+ summary = mkDOM " summary"
118+ sup = mkDOM " sup"
119+ table = mkDOM " table"
120+ tbody = mkDOM " tbody"
121+ td = mkDOM " td"
122+ textarea = mkDOM " textarea"
123+ tfoot = mkDOM " tfoot"
124+ th = mkDOM " th"
125+ thead = mkDOM " thead"
126+ time = mkDOM " time"
127+ title = mkDOM " title"
128+ tr = mkDOM " tr"
129+ track = mkDOM " track"
130+ u = mkDOM " u"
131+ ul = mkDOM " ul"
132+ ul = mkDOM " ul"
133+ var = mkDOM " var"
134+ video = mkDOM " video"
135+ wbr = mkDOM " wbr"
136+ circle = mkDOM " circle"
137+ defs = mkDOM " defs"
138+ g = mkDOM " g"
139+ line = mkDOM " line"
140+ line = mkDOM " line"
141+ linearGradient = mkDOM " linearGradient"
142+ path = mkDOM " path"
143+ polygon = mkDOM " polygon"
144+ polyline = mkDOM " polyline"
145+ radialGradient = mkDOM " radialGradient"
146+ rect = mkDOM " rect"
147+ stop = mkDOM " stop"
148+ svg = mkDOM " svg"
You can’t perform that action at this time.
0 commit comments