/
dom.clj
146 lines (139 loc) · 1.78 KB
/
dom.clj
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
(ns om.dom
(:refer-clojure :exclude [map meta time]))
(def tags
'[a
abbr
address
area
article
aside
audio
b
base
bdi
bdo
big
blockquote
body
br
button
canvas
caption
cite
code
col
colgroup
data
datalist
dd
del
dfn
div
dl
dt
em
embed
fieldset
figcaption
figure
footer
form
h1
h2
h3
h4
h5
h6
head
header
hr
html
i
iframe
img
ins
kbd
keygen
label
legend
li
link
main
map
mark
marquee
menu
menuitem
meta
meter
nav
noscript
object
ol
optgroup
output
p
param
pre
progress
q
rp
rt
ruby
s
samp
script
section
select
small
source
span
strong
style
sub
summary
sup
table
tbody
td
tfoot
th
thead
time
title
tr
track
u
ul
var
video
wbr
;; svg
circle
ellipse
g
line
path
polyline
rect
svg
text
defs
linearGradient
polygon
radialGradient
stop
tspan])
(defn ^:private gen-react-dom-inline-fn [tag]
`(defmacro ~tag [opts# & children#]
`(~'~(symbol "js" (str "React.DOM." (name tag))) ~opts# ~@children#)))
(defmacro ^:private gen-react-dom-inline-fns []
`(do
~@(clojure.core/map gen-react-dom-inline-fn tags)))
(gen-react-dom-inline-fns)
(defn ^:private gen-react-dom-fn [tag]
`(defn ~tag [opts# & children#]
(.apply ~(symbol "js" (str "React.DOM." (name tag))) nil (cljs.core/into-array (cons opts# children#)))))
(defmacro ^:private gen-react-dom-fns []
`(do
~@(clojure.core/map gen-react-dom-fn tags)))