module Halogen.HTML.Elements where
import DOM.HTML.Indexed qualified as I
import Data.Coerce
import HPrelude hiding (div, head, map)
import Halogen.HTML.Core (HTML (..))
import Halogen.HTML.Properties hiding (style, title)
import Halogen.VDom qualified as VDom
import Halogen.VDom.Types
type Node r w msg = [IProp r msg] -> [HTML w msg] -> HTML w msg
type Leaf r w msg = [IProp r msg] -> HTML w msg
type Array a = [a]
-- | Creates an HTML element that expects indexed properties.
element :: forall r w i. ElemName -> Array (IProp r i) -> Array (HTML w i) -> HTML w i
element en props htmls =
HTML $ VDom.Elem Nothing en (coerce props) (fmap (.unHTML) htmls)
-- | Creates a Namespaced HTML element that expects indexed properties.
elementNS :: forall r w i. Namespace -> ElemName -> Array (IProp r i) -> Array (HTML w i) -> HTML w i
elementNS ns en props htmls =
HTML $ VDom.Elem (Just ns) en (coerce props) (fmap (.unHTML) htmls)
-- | Creates an HTML element that expects indexed properties, with keyed
-- | children.
keyed :: forall r w i. ElemName -> Array (IProp r i) -> Array (Text, HTML w i) -> HTML w i
keyed _name props children =
HTML $ VDom.Keyed Nothing _name (coerce props) (fmap (second (.unHTML)) children)
-- | Creates a Namespaced HTML element that expects indexed properties, with
-- | keyed children.
keyedNS :: forall r w i. Namespace -> ElemName -> Array (IProp r i) -> Array (Text, HTML w i) -> HTML w i
keyedNS ns _name props children =
HTML $ VDom.Keyed (Just ns) _name (coerce props) (fmap (second (.unHTML)) children)
withKeys :: forall r w i. (Array (IProp r i) -> Array (HTML w i) -> HTML w i) -> Array (IProp r i) -> Array (Text, HTML w i) -> HTML w i
withKeys ctor props children =
case ctor props [] of
HTML (VDom.Elem x y z _) -> HTML (VDom.Keyed x y z (coerce children))
h -> h
withKeys_ :: forall w i. (Array (HTML w i) -> HTML w i) -> Array (Text, HTML w i) -> HTML w i
withKeys_ ctor children =
case ctor [] of
HTML (VDom.Elem x y z _) -> HTML (VDom.Keyed x y z (coerce children))
h -> h
a :: forall w i. Node I.HTMLa w i
a = element (ElemName "a")
a_ :: forall w i. Array (HTML w i) -> HTML w i
a_ = a []
abbr :: forall w i. Node I.HTMLabbr w i
abbr = element (ElemName "abbr")
abbr_ :: forall w i. Array (HTML w i) -> HTML w i
abbr_ = abbr []
address :: forall w i. Node I.HTMLaddress w i
address = element (ElemName "address")
address_ :: forall w i. Array (HTML w i) -> HTML w i
address_ = address []
area :: forall w i. Leaf I.HTMLarea w i
area props = element (ElemName "area") props []
article :: forall w i. Node I.HTMLarticle w i
article = element (ElemName "article")
article_ :: forall w i. Array (HTML w i) -> HTML w i
article_ = article []
aside :: forall w i. Node I.HTMLaside w i
aside = element (ElemName "aside")
aside_ :: forall w i. Array (HTML w i) -> HTML w i
aside_ = aside []
audio :: forall w i. Node I.HTMLaudio w i
audio = element (ElemName "audio")
audio_ :: forall w i. Array (HTML w i) -> HTML w i
audio_ = audio []
b :: forall w i. Node I.HTMLb w i
b = element (ElemName "b")
b_ :: forall w i. Array (HTML w i) -> HTML w i
b_ = b []
base :: forall w i. Leaf I.HTMLbase w i
base props = element (ElemName "base") props []
bdi :: forall w i. Node I.HTMLbdi w i
bdi = element (ElemName "bdi")
bdi_ :: forall w i. Array (HTML w i) -> HTML w i
bdi_ = bdi []
bdo :: forall w i. Node I.HTMLbdo w i
bdo = element (ElemName "bdo")
bdo_ :: forall w i. Array (HTML w i) -> HTML w i
bdo_ = bdo []
blockquote :: forall w i. Node I.HTMLblockquote w i
blockquote = element (ElemName "blockquote")
blockquote_ :: forall w i. Array (HTML w i) -> HTML w i
blockquote_ = blockquote []
body :: forall w i. Node I.HTMLbody w i
body = element (ElemName "body")
body_ :: forall w i. Array (HTML w i) -> HTML w i
body_ = body []
br :: forall w i. Leaf I.HTMLbr w i
br props = element (ElemName "br") props []
br_ :: forall w i. HTML w i
br_ = br []
button :: forall w i. Node I.HTMLbutton w i
button = element (ElemName "button")
button_ :: forall w i. Array (HTML w i) -> HTML w i
button_ = button []
canvas :: forall w i. Leaf I.HTMLcanvas w i
canvas props = element (ElemName "canvas") props []
caption :: forall w i. Node I.HTMLcaption w i
caption = element (ElemName "caption")
caption_ :: forall w i. Array (HTML w i) -> HTML w i
caption_ = caption []
cite :: forall w i. Node I.HTMLcite w i
cite = element (ElemName "cite")
cite_ :: forall w i. Array (HTML w i) -> HTML w i
cite_ = cite []
code :: forall w i. Node I.HTMLcode w i
code = element (ElemName "code")
code_ :: forall w i. Array (HTML w i) -> HTML w i
code_ = code []
col :: forall w i. Leaf I.HTMLcol w i
col props = element (ElemName "col") props []
colgroup :: forall w i. Node I.HTMLcolgroup w i
colgroup = element (ElemName "colgroup")
colgroup_ :: forall w i. Array (HTML w i) -> HTML w i
colgroup_ = colgroup []
command :: forall w i. Leaf I.HTMLcommand w i
command props = element (ElemName "command") props []
datalist :: forall w i. Node I.HTMLdatalist w i
datalist = element (ElemName "datalist")
datalist_ :: forall w i. Array (HTML w i) -> HTML w i
datalist_ = datalist []
dd :: forall w i. Node I.HTMLdd w i
dd = element (ElemName "dd")
dd_ :: forall w i. Array (HTML w i) -> HTML w i
dd_ = dd []
del :: forall w i. Node I.HTMLdel w i
del = element (ElemName "del")
del_ :: forall w i. Array (HTML w i) -> HTML w i
del_ = del []
details :: forall w i. Node I.HTMLdetails w i
details = element (ElemName "details")
details_ :: forall w i. Array (HTML w i) -> HTML w i
details_ = details []
dfn :: forall w i. Node I.HTMLdfn w i
dfn = element (ElemName "dfn")
dfn_ :: forall w i. Array (HTML w i) -> HTML w i
dfn_ = dfn []
dialog :: forall w i. Node I.HTMLdialog w i
dialog = element (ElemName "dialog")
dialog_ :: forall w i. Array (HTML w i) -> HTML w i
dialog_ = dialog []
div :: forall w i. Node I.HTMLdiv w i
div = element (ElemName "div")
div_ :: forall w i. Array (HTML w i) -> HTML w i
div_ = div []
dl :: forall w i. Node I.HTMLdl w i
dl = element (ElemName "dl")
dl_ :: forall w i. Array (HTML w i) -> HTML w i
dl_ = dl []
dt :: forall w i. Node (I.HTMLdt) w i
dt = element (ElemName "dt")
dt_ :: forall w i. Array (HTML w i) -> HTML w i
dt_ = dt []
em :: forall w i. Node I.HTMLem w i
em = element (ElemName "em")
em_ :: forall w i. Array (HTML w i) -> HTML w i
em_ = em []
embed :: forall w i. Node I.HTMLembed w i
embed = element (ElemName "embed")
embed_ :: forall w i. Array (HTML w i) -> HTML w i
embed_ = embed []
fieldset :: forall w i. Node I.HTMLfieldset w i
fieldset = element (ElemName "fieldset")
fieldset_ :: forall w i. Array (HTML w i) -> HTML w i
fieldset_ = fieldset []
figcaption :: forall w i. Node I.HTMLfigcaption w i
figcaption = element (ElemName "figcaption")
figcaption_ :: forall w i. Array (HTML w i) -> HTML w i
figcaption_ = figcaption []
figure :: forall w i. Node I.HTMLfigure w i
figure = element (ElemName "figure")
figure_ :: forall w i. Array (HTML w i) -> HTML w i
figure_ = figure []
footer :: forall w i. Node I.HTMLfooter w i
footer = element (ElemName "footer")
footer_ :: forall w i. Array (HTML w i) -> HTML w i
footer_ = footer []
form :: forall w i. Node I.HTMLform w i
form = element (ElemName "form")
form_ :: forall w i. Array (HTML w i) -> HTML w i
form_ = form []
h1 :: forall w i. Node I.HTMLh1 w i
h1 = element (ElemName "h1")
h1_ :: forall w i. Array (HTML w i) -> HTML w i
h1_ = h1 []
h2 :: forall w i. Node I.HTMLh2 w i
h2 = element (ElemName "h2")
h2_ :: forall w i. Array (HTML w i) -> HTML w i
h2_ = h2 []
h3 :: forall w i. Node I.HTMLh3 w i
h3 = element (ElemName "h3")
h3_ :: forall w i. Array (HTML w i) -> HTML w i
h3_ = h3 []
h4 :: forall w i. Node I.HTMLh4 w i
h4 = element (ElemName "h4")
h4_ :: forall w i. Array (HTML w i) -> HTML w i
h4_ = h4 []
h5 :: forall w i. Node I.HTMLh5 w i
h5 = element (ElemName "h5")
h5_ :: forall w i. Array (HTML w i) -> HTML w i
h5_ = h5 []
h6 :: forall w i. Node I.HTMLh6 w i
h6 = element (ElemName "h6")
h6_ :: forall w i. Array (HTML w i) -> HTML w i
h6_ = h6 []
head :: forall w i. Node I.HTMLhead w i
head = element (ElemName "head")
head_ :: forall w i. Array (HTML w i) -> HTML w i
head_ = head []
header :: forall w i. Node I.HTMLheader w i
header = element (ElemName "header")
header_ :: forall w i. Array (HTML w i) -> HTML w i
header_ = header []
hr :: forall w i. Leaf I.HTMLhr w i
hr props = element (ElemName "hr") props []
hr_ :: forall w i. HTML w i
hr_ = hr []
html :: forall w i. Node I.HTMLhtml w i
html = element (ElemName "html")
html_ :: forall w i. Array (HTML w i) -> HTML w i
html_ = html []
i :: forall w i. Node I.HTMLi w i
i = element (ElemName "i")
i_ :: forall w i. Array (HTML w i) -> HTML w i
i_ = i []
iframe :: forall w i. Leaf I.HTMLiframe w i
iframe props = element (ElemName "iframe") props []
img :: forall w i. Leaf I.HTMLimg w i
img props = element (ElemName "img") props []
input :: forall w i. Leaf I.HTMLinput w i
input props = element (ElemName "input") props []
ins :: forall w i. Node I.HTMLins w i
ins = element (ElemName "ins")
ins_ :: forall w i. Array (HTML w i) -> HTML w i
ins_ = ins []
kbd :: forall w i. Node I.HTMLkbd w i
kbd = element (ElemName "kbd")
kbd_ :: forall w i. Array (HTML w i) -> HTML w i
kbd_ = kbd []
label :: forall w i. Node I.HTMLlabel w i
label = element (ElemName "label")
label_ :: forall w i. Array (HTML w i) -> HTML w i
label_ = label []
legend :: forall w i. Node I.HTMLlegend w i
legend = element (ElemName "legend")
legend_ :: forall w i. Array (HTML w i) -> HTML w i
legend_ = legend []
li :: forall w i. Node I.HTMLli w i
li = element (ElemName "li")
li_ :: forall w i. Array (HTML w i) -> HTML w i
li_ = li []
link :: forall w i. Leaf I.HTMLlink w i
link props = element (ElemName "link") props []
main :: forall w i. Node I.HTMLmain w i
main = element (ElemName "main")
main_ :: forall w i. Array (HTML w i) -> HTML w i
main_ = main []
map :: forall w i. Node I.HTMLmap w i
map = element (ElemName "map")
map_ :: forall w i. Array (HTML w i) -> HTML w i
map_ = map []
mark :: forall w i. Node I.HTMLmark w i
mark = element (ElemName "mark")
mark_ :: forall w i. Array (HTML w i) -> HTML w i
mark_ = mark []
menu :: forall w i. Node I.HTMLmenu w i
menu = element (ElemName "menu")
menu_ :: forall w i. Array (HTML w i) -> HTML w i
menu_ = menu []
menuitem :: forall w i. Node I.HTMLmenuitem w i
menuitem = element (ElemName "menuitem")
menuitem_ :: forall w i. Array (HTML w i) -> HTML w i
menuitem_ = menuitem []
meta :: forall w i. Leaf I.HTMLmeta w i
meta props = element (ElemName "meta") props []
meter :: forall w i. Node I.HTMLmeter w i
meter = element (ElemName "meter")
meter_ :: forall w i. Array (HTML w i) -> HTML w i
meter_ = meter []
nav :: forall w i. Node I.HTMLnav w i
nav = element (ElemName "nav")
nav_ :: forall w i. Array (HTML w i) -> HTML w i
nav_ = nav []
noscript :: forall w i. Node I.HTMLnoscript w i
noscript = element (ElemName "noscript")
noscript_ :: forall w i. Array (HTML w i) -> HTML w i
noscript_ = noscript []
object :: forall w i. Node I.HTMLobject w i
object = element (ElemName "object")
object_ :: forall w i. Array (HTML w i) -> HTML w i
object_ = object []
ol :: forall w i. Node I.HTMLol w i
ol = element (ElemName "ol")
ol_ :: forall w i. Array (HTML w i) -> HTML w i
ol_ = ol []
optgroup :: forall w i. Node I.HTMLoptgroup w i
optgroup = element (ElemName "optgroup")
optgroup_ :: forall w i. Array (HTML w i) -> HTML w i
optgroup_ = optgroup []
option :: forall w i. Node I.HTMLoption w i
option = element (ElemName "option")
option_ :: forall w i. Array (HTML w i) -> HTML w i
option_ = option []
output :: forall w i. Node I.HTMLoutput w i
output = element (ElemName "output")
output_ :: forall w i. Array (HTML w i) -> HTML w i
output_ = output []
p :: forall w i. Node I.HTMLp w i
p = element (ElemName "p")
p_ :: forall w i. Array (HTML w i) -> HTML w i
p_ = p []
param :: forall w i. Leaf I.HTMLparam w i
param props = element (ElemName "param") props []
pre :: forall w i. Node I.HTMLpre w i
pre = element (ElemName "pre")
pre_ :: forall w i. Array (HTML w i) -> HTML w i
pre_ = pre []
progress :: forall w i. Node I.HTMLprogress w i
progress = element (ElemName "progress")
progress_ :: forall w i. Array (HTML w i) -> HTML w i
progress_ = progress []
q :: forall w i. Node I.HTMLq w i
q = element (ElemName "q")
q_ :: forall w i. Array (HTML w i) -> HTML w i
q_ = q []
rp :: forall w i. Node I.HTMLrp w i
rp = element (ElemName "rp")
rp_ :: forall w i. Array (HTML w i) -> HTML w i
rp_ = rp []
rt :: forall w i. Node I.HTMLrt w i
rt = element (ElemName "rt")
rt_ :: forall w i. Array (HTML w i) -> HTML w i
rt_ = rt []
ruby :: forall w i. Node I.HTMLruby w i
ruby = element (ElemName "ruby")
ruby_ :: forall w i. Array (HTML w i) -> HTML w i
ruby_ = ruby []
samp :: forall w i. Node I.HTMLsamp w i
samp = element (ElemName "samp")
samp_ :: forall w i. Array (HTML w i) -> HTML w i
samp_ = samp []
script :: forall w i. Node I.HTMLscript w i
script = element (ElemName "script")
script_ :: forall w i. Array (HTML w i) -> HTML w i
script_ = script []
section :: forall w i. Node I.HTMLsection w i
section = element (ElemName "section")
section_ :: forall w i. Array (HTML w i) -> HTML w i
section_ = section []
select :: forall w i. Node I.HTMLselect w i
select = element (ElemName "select")
select_ :: forall w i. Array (HTML w i) -> HTML w i
select_ = select []
small :: forall w i. Node I.HTMLsmall w i
small = element (ElemName "small")
small_ :: forall w i. Array (HTML w i) -> HTML w i
small_ = small []
source :: forall w i. Leaf I.HTMLsource w i
source props = element (ElemName "source") props []
span :: forall w i. Node I.HTMLspan w i
span = element (ElemName "span")
span_ :: forall w i. Array (HTML w i) -> HTML w i
span_ = span []
strong :: forall w i. Node I.HTMLstrong w i
strong = element (ElemName "strong")
strong_ :: forall w i. Array (HTML w i) -> HTML w i
strong_ = strong []
style :: forall w i. Node I.HTMLstyle w i
style = element (ElemName "style")
style_ :: forall w i. Array (HTML w i) -> HTML w i
style_ = style []
sub :: forall w i. Node I.HTMLsub w i
sub = element (ElemName "sub")
sub_ :: forall w i. Array (HTML w i) -> HTML w i
sub_ = sub []
summary :: forall w i. Node I.HTMLsummary w i
summary = element (ElemName "summary")
summary_ :: forall w i. Array (HTML w i) -> HTML w i
summary_ = summary []
sup :: forall w i. Node I.HTMLsup w i
sup = element (ElemName "sup")
sup_ :: forall w i. Array (HTML w i) -> HTML w i
sup_ = sup []
table :: forall w i. Node I.HTMLtable w i
table = element (ElemName "table")
table_ :: forall w i. Array (HTML w i) -> HTML w i
table_ = table []
tbody :: forall w i. Node I.HTMLtbody w i
tbody = element (ElemName "tbody")
tbody_ :: forall w i. Array (HTML w i) -> HTML w i
tbody_ = tbody []
td :: forall w i. Node I.HTMLtd w i
td = element (ElemName "td")
td_ :: forall w i. Array (HTML w i) -> HTML w i
td_ = td []
textarea :: forall w i. Leaf I.HTMLtextarea w i
textarea es = element (ElemName "textarea") es []
tfoot :: forall w i. Node I.HTMLtfoot w i
tfoot = element (ElemName "tfoot")
tfoot_ :: forall w i. Array (HTML w i) -> HTML w i
tfoot_ = tfoot []
th :: forall w i. Node I.HTMLth w i
th = element (ElemName "th")
th_ :: forall w i. Array (HTML w i) -> HTML w i
th_ = th []
thead :: forall w i. Node I.HTMLthead w i
thead = element (ElemName "thead")
thead_ :: forall w i. Array (HTML w i) -> HTML w i
thead_ = thead []
time :: forall w i. Node I.HTMLtime w i
time = element (ElemName "time")
time_ :: forall w i. Array (HTML w i) -> HTML w i
time_ = time []
title :: forall w i. Node I.HTMLtitle w i
title = element (ElemName "title")
title_ :: forall w i. Array (HTML w i) -> HTML w i
title_ = title []
tr :: forall w i. Node I.HTMLtr w i
tr = element (ElemName "tr")
tr_ :: forall w i. Array (HTML w i) -> HTML w i
tr_ = tr []
track :: forall w i. Leaf I.HTMLtrack w i
track props = element (ElemName "track") props []
u :: forall w i. Node I.HTMLu w i
u = element (ElemName "u")
u_ :: forall w i. Array (HTML w i) -> HTML w i
u_ = u []
ul :: forall w i. Node I.HTMLul w i
ul = element (ElemName "ul")
ul_ :: forall w i. Array (HTML w i) -> HTML w i
ul_ = ul []
var :: forall w i. Node I.HTMLvar w i
var = element (ElemName "var")
var_ :: forall w i. Array (HTML w i) -> HTML w i
var_ = var []
video :: forall w i. Node I.HTMLvideo w i
video = element (ElemName "video")
video_ :: forall w i. Array (HTML w i) -> HTML w i
video_ = video []
wbr :: forall w i. Leaf I.HTMLwbr w i
wbr props = element (ElemName "wbr") props []