{-# LANGUAGE OverloadedStrings #-}

{- | Html5 formatting.

 The API is similar to < https://hackage.haskell.org/package/blaze-html >.
-}
module Data.Fmt.Attr (
    -- * Html
    Html,
    Attr,
    toHtml,
    comment,
    Element (..),
    (!?),

    -- * Attributes
    accept,
    acceptCharset,
    accesskey,
    action,
    alt,
    async,
    autocomplete,
    autofocus,
    autoplay,
    challenge,
    charset,
    checked,
    cite,
    class_,
    cols,
    colspan,
    content,
    contenteditable,
    contextmenu,
    controls,
    coords,
    data_,
    datetime,
    defer,
    dir,
    disabled,
    draggable,
    enctype,
    for,
    form,
    formaction,
    formenctype,
    formmethod,
    formnovalidate,
    formtarget,
    headers,
    height,
    hidden,
    high,
    href,
    hreflang,
    httpEquiv,
    icon,
    id,
    ismap,
    item,
    itemprop,
    itemscope,
    itemtype,
    keytype,
    label,
    lang,
    list,
    loop,
    low,
    manifest,
    max,
    maxlength,
    media,
    method,
    min,
    multiple,
    name,
    novalidate,
    onbeforeonload,
    onbeforeprint,
    onblur,
    oncanplay,
    oncanplaythrough,
    onchange,
    onclick,
    oncontextmenu,
    ondblclick,
    ondrag,
    ondragend,
    ondragenter,
    ondragleave,
    ondragover,
    ondragstart,
    ondrop,
    ondurationchange,
    onemptied,
    onended,
    onerror,
    onfocus,
    onformchange,
    onforminput,
    onhaschange,
    oninput,
    oninvalid,
    onkeydown,
    onkeyup,
    onload,
    onloadeddata,
    onloadedmetadata,
    onloadstart,
    onmessage,
    onmousedown,
    onmousemove,
    onmouseout,
    onmouseover,
    onmouseup,
    onmousewheel,
    ononline,
    onpagehide,
    onpageshow,
    onpause,
    onplay,
    onplaying,
    onprogress,
    onpropstate,
    onratechange,
    onreadystatechange,
    onredo,
    onresize,
    onscroll,
    onseeked,
    onseeking,
    onselect,
    onstalled,
    onstorage,
    onsubmit,
    onsuspend,
    ontimeupdate,
    onundo,
    onunload,
    onvolumechange,
    onwaiting,
    open,
    optimum,
    pattern,
    ping,
    placeholder,
    preload,
    pubdate,
    radiogroup,
    readonly,
    rel,
    required,
    reversed,
    role,
    rows,
    rowspan,
    sandbox,
    scope,
    scoped,
    seamless,
    selected,
    shape,
    size,
    sizes,
    span,
    spellcheck,
    src,
    srcdoc,
    start,
    step,
    style,
    subject,
    summary,
    tabindex,
    target,
    title,
    type_,
    usemap,
    value,
    width,
    wrap,
    xmlns,
) where

import qualified Data.ByteString.Char8 as B
import Data.Fmt
import Prelude (Eq (..), Maybe (..), Monoid (..), ($), (||))

attr :: ToLogStr s => LogStr -> s -> Attr
attr :: forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
k s
v = (forall a. Html a -> Html a) -> Attr
Attr ((forall a. Html a -> Html a) -> Attr)
-> (forall a. Html a -> Html a) -> Attr
forall a b. (a -> b) -> a -> b
$ (ByteString -> (ByteString, ByteString))
-> (ByteString -> ByteString -> Fmt LogStr a a)
-> Fmt LogStr a a
-> Fmt LogStr a a
forall a2 a1 b.
(ByteString -> (ByteString, ByteString))
-> (ByteString -> ByteString -> Fmt LogStr a2 a1)
-> Fmt LogStr a1 b
-> Fmt LogStr a2 b
splitWith ByteString -> (ByteString, ByteString)
f ByteString -> ByteString -> Fmt LogStr a a
forall {s} {c}. ToLogStr s => s -> ByteString -> Fmt LogStr c c
g
  where
    f :: ByteString -> (ByteString, ByteString)
f = (Char -> Bool) -> ByteString -> (ByteString, ByteString)
B.break ((Char -> Bool) -> ByteString -> (ByteString, ByteString))
-> (Char -> Bool) -> ByteString -> (ByteString, ByteString)
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'/' Bool -> Bool -> Bool
|| Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'>'
    g :: s -> ByteString -> Fmt LogStr c c
g s
l ByteString
r0 = case ByteString -> Maybe (Char, ByteString)
B.uncons ByteString
r0 of
        Just (Char
'/', ByteString
r) -> s -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml s
l Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% LogStr -> Fmt LogStr c c
forall m a. m -> Fmt m a a
fmt LogStr
k Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% Fmt LogStr c c
"=" Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% Fmt LogStr c c -> Fmt LogStr c c
forall m a b. (Semigroup m, IsString m) => Fmt m a b -> Fmt m a b
quotes (s -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml s
v) Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% LogStr -> Fmt LogStr c c
forall m a. m -> Fmt m a a
fmt LogStr
" /" Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% ByteString -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml ByteString
r
        Just (Char
'>', ByteString
r) -> s -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml s
l Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% Fmt LogStr c c
" " Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% LogStr -> Fmt LogStr c c
forall m a. m -> Fmt m a a
fmt LogStr
k Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% Fmt LogStr c c
"=" Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% Fmt LogStr c c -> Fmt LogStr c c
forall m a b. (Semigroup m, IsString m) => Fmt m a b -> Fmt m a b
quotes (s -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml s
v) Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% LogStr -> Fmt LogStr c c
forall m a. m -> Fmt m a a
fmt LogStr
">" Fmt LogStr c c -> Fmt LogStr c c -> Fmt LogStr c c
forall m b c a. Semigroup m => Fmt m b c -> Fmt m a b -> Fmt m a c
% ByteString -> Fmt LogStr c c
forall s a. ToLogStr s => s -> Html a
toHtml ByteString
r
        Maybe (Char, ByteString)
_ -> LogStr -> Fmt LogStr c c
forall m a. m -> Fmt m a a
fmt LogStr
forall a. Monoid a => a
mempty

-- Attributes

-------------------------

{- | Combinator for the @accept@ attribute.

 Example:

 > div ! accept "bar" $ "Hello."

 Result:

 > <div accept="bar">Hello.</div>
-}
accept ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
accept :: forall s. ToLogStr s => s -> Attr
accept = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"accept"
{-# INLINE accept #-}

{- | Combinator for the @accept-charset@ attribute.

 Example:

 > div ! acceptCharset "bar" $ "Hello."

 Result:

 > <div accept-charset="bar">Hello.</div>
-}
acceptCharset ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
acceptCharset :: forall s. ToLogStr s => s -> Attr
acceptCharset = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"accept-charset"
{-# INLINE acceptCharset #-}

{- | Combinator for the @accesskey@ attribute.

 Example:

 > div ! accesskey "bar" $ "Hello."

 Result:

 > <div accesskey="bar">Hello.</div>
-}
accesskey ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
accesskey :: forall s. ToLogStr s => s -> Attr
accesskey = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"accesskey"
{-# INLINE accesskey #-}

{- | Combinator for the @action@ attribute.

 Example:

 > div ! action "bar" $ "Hello."

 Result:

 > <div action="bar">Hello.</div>
-}
action ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
action :: forall s. ToLogStr s => s -> Attr
action = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"action"
{-# INLINE action #-}

{- | Combinator for the @alt@ attribute.

 Example:

 > div ! alt "bar" $ "Hello."

 Result:

 > <div alt="bar">Hello.</div>
-}
alt ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
alt :: forall s. ToLogStr s => s -> Attr
alt = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"alt"
{-# INLINE alt #-}

{- | Combinator for the @async@ attribute.

 Example:

 > div ! async "bar" $ "Hello."

 Result:

 > <div async="bar">Hello.</div>
-}
async ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
async :: forall s. ToLogStr s => s -> Attr
async = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"async"
{-# INLINE async #-}

{- | Combinator for the @autocomplete@ attribute.

 Example:

 > div ! autocomplete "bar" $ "Hello."

 Result:

 > <div autocomplete="bar">Hello.</div>
-}
autocomplete ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
autocomplete :: forall s. ToLogStr s => s -> Attr
autocomplete = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"autocomplete"
{-# INLINE autocomplete #-}

{- | Combinator for the @autofocus@ attribute.

 Example:

 > div ! autofocus "bar" $ "Hello."

 Result:

 > <div autofocus="bar">Hello.</div>
-}
autofocus ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
autofocus :: forall s. ToLogStr s => s -> Attr
autofocus = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"autofocus"
{-# INLINE autofocus #-}

{- | Combinator for the @autoplay@ attribute.

 Example:

 > div ! autoplay "bar" $ "Hello."

 Result:

 > <div autoplay="bar">Hello.</div>
-}
autoplay ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
autoplay :: forall s. ToLogStr s => s -> Attr
autoplay = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"autoplay"
{-# INLINE autoplay #-}

{- | Combinator for the @challenge@ attribute.

 Example:

 > div ! challenge "bar" $ "Hello."

 Result:

 > <div challenge="bar">Hello.</div>
-}
challenge ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
challenge :: forall s. ToLogStr s => s -> Attr
challenge = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"challenge"
{-# INLINE challenge #-}

{- | Combinator for the @charset@ attribute.

 Example:

 > div ! charset "bar" $ "Hello."

 Result:

 > <div charset="bar">Hello.</div>
-}
charset ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
charset :: forall s. ToLogStr s => s -> Attr
charset = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"charset"
{-# INLINE charset #-}

{- | Combinator for the @checked@ attribute.

 Example:

 > div ! checked "bar" $ "Hello."

 Result:

 > <div checked="bar">Hello.</div>
-}
checked ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
checked :: forall s. ToLogStr s => s -> Attr
checked = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"checked"
{-# INLINE checked #-}

{- | Combinator for the @cite@ attribute.

 Example:

 > div ! cite "bar" $ "Hello."

 Result:

 > <div cite="bar">Hello.</div>
-}
cite ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
cite :: forall s. ToLogStr s => s -> Attr
cite = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"cite"
{-# INLINE cite #-}

{- | Combinator for the @class@ attribute.

 Example:

 > div ! class_ "bar" $ "Hello."

 Result:

 > <div class="bar">Hello.</div>
-}
class_ ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
class_ :: forall s. ToLogStr s => s -> Attr
class_ = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"class"
{-# INLINE class_ #-}

{- | Combinator for the @cols@ attribute.

 Example:

 > div ! cols "bar" $ "Hello."

 Result:

 > <div cols="bar">Hello.</div>
-}
cols ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
cols :: forall s. ToLogStr s => s -> Attr
cols = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"cols"
{-# INLINE cols #-}

{- | Combinator for the @colspan@ attribute.

 Example:

 > div ! colspan "bar" $ "Hello."

 Result:

 > <div colspan="bar">Hello.</div>
-}
colspan ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
colspan :: forall s. ToLogStr s => s -> Attr
colspan = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"colspan"
{-# INLINE colspan #-}

{- | Combinator for the @content@ attribute.

 Example:

 > div ! content "bar" $ "Hello."

 Result:

 > <div content="bar">Hello.</div>
-}
content ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
content :: forall s. ToLogStr s => s -> Attr
content = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"content"
{-# INLINE content #-}

{- | Combinator for the @contenteditable@ attribute.

 Example:

 > div ! contenteditable "bar" $ "Hello."

 Result:

 > <div contenteditable="bar">Hello.</div>
-}
contenteditable ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
contenteditable :: forall s. ToLogStr s => s -> Attr
contenteditable = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"contenteditable"
{-# INLINE contenteditable #-}

{- | Combinator for the @contextmenu@ attribute.

 Example:

 > div ! contextmenu "bar" $ "Hello."

 Result:

 > <div contextmenu="bar">Hello.</div>
-}
contextmenu ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
contextmenu :: forall s. ToLogStr s => s -> Attr
contextmenu = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"contextmenu"
{-# INLINE contextmenu #-}

{- | Combinator for the @controls@ attribute.

 Example:

 > div ! controls "bar" $ "Hello."

 Result:

 > <div controls="bar">Hello.</div>
-}
controls ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
controls :: forall s. ToLogStr s => s -> Attr
controls = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"controls"
{-# INLINE controls #-}

{- | Combinator for the @coords@ attribute.

 Example:

 > div ! coords "bar" $ "Hello."

 Result:

 > <div coords="bar">Hello.</div>
-}
coords ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
coords :: forall s. ToLogStr s => s -> Attr
coords = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"coords"
{-# INLINE coords #-}

{- | Combinator for the @data@ attribute.

 Example:

 > div ! data_ "bar" $ "Hello."

 Result:

 > <div data="bar">Hello.</div>
-}
data_ ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
data_ :: forall s. ToLogStr s => s -> Attr
data_ = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"data"
{-# INLINE data_ #-}

{- | Combinator for the @datetime@ attribute.

 Example:

 > div ! datetime "bar" $ "Hello."

 Result:

 > <div datetime="bar">Hello.</div>
-}
datetime ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
datetime :: forall s. ToLogStr s => s -> Attr
datetime = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"datetime"
{-# INLINE datetime #-}

{- | Combinator for the @defer@ attribute.

 Example:

 > div ! defer "bar" $ "Hello."

 Result:

 > <div defer="bar">Hello.</div>
-}
defer ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
defer :: forall s. ToLogStr s => s -> Attr
defer = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"defer"
{-# INLINE defer #-}

{- | Combinator for the @dir@ attribute.

 Example:

 > div ! dir "bar" $ "Hello."

 Result:

 > <div dir="bar">Hello.</div>
-}
dir ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
dir :: forall s. ToLogStr s => s -> Attr
dir = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"dir"
{-# INLINE dir #-}

{- | Combinator for the @disabled@ attribute.

 Example:

 > div ! disabled "bar" $ "Hello."

 Result:

 > <div disabled="bar">Hello.</div>
-}
disabled ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
disabled :: forall s. ToLogStr s => s -> Attr
disabled = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"disabled"
{-# INLINE disabled #-}

{- | Combinator for the @draggable@ attribute.

 Example:

 > div ! draggable "bar" $ "Hello."

 Result:

 > <div draggable="bar">Hello.</div>
-}
draggable ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
draggable :: forall s. ToLogStr s => s -> Attr
draggable = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"draggable"
{-# INLINE draggable #-}

{- | Combinator for the @enctype@ attribute.

 Example:

 > div ! enctype "bar" $ "Hello."

 Result:

 > <div enctype="bar">Hello.</div>
-}
enctype ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
enctype :: forall s. ToLogStr s => s -> Attr
enctype = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"enctype"
{-# INLINE enctype #-}

{- | Combinator for the @for@ attribute.

 Example:

 > div ! for "bar" $ "Hello."

 Result:

 > <div for="bar">Hello.</div>
-}
for ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
for :: forall s. ToLogStr s => s -> Attr
for = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"for"
{-# INLINE for #-}

{- | Combinator for the @form@ attribute.

 Example:

 > div ! form "bar" $ "Hello."

 Result:

 > <div form="bar">Hello.</div>
-}
form ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
form :: forall s. ToLogStr s => s -> Attr
form = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"form"
{-# INLINE form #-}

{- | Combinator for the @formaction@ attribute.

 Example:

 > div ! formaction "bar" $ "Hello."

 Result:

 > <div formaction="bar">Hello.</div>
-}
formaction ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
formaction :: forall s. ToLogStr s => s -> Attr
formaction = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"formaction"
{-# INLINE formaction #-}

{- | Combinator for the @formenctype@ attribute.

 Example:

 > div ! formenctype "bar" $ "Hello."

 Result:

 > <div formenctype="bar">Hello.</div>
-}
formenctype ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
formenctype :: forall s. ToLogStr s => s -> Attr
formenctype = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"formenctype"
{-# INLINE formenctype #-}

{- | Combinator for the @formmethod@ attribute.

 Example:

 > div ! formmethod "bar" $ "Hello."

 Result:

 > <div formmethod="bar">Hello.</div>
-}
formmethod ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
formmethod :: forall s. ToLogStr s => s -> Attr
formmethod = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"formmethod"
{-# INLINE formmethod #-}

{- | Combinator for the @formnovalidate@ attribute.

 Example:

 > div ! formnovalidate "bar" $ "Hello."

 Result:

 > <div formnovalidate="bar">Hello.</div>
-}
formnovalidate ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
formnovalidate :: forall s. ToLogStr s => s -> Attr
formnovalidate = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"formnovalidate"
{-# INLINE formnovalidate #-}

{- | Combinator for the @formtarget@ attribute.

 Example:

 > div ! formtarget "bar" $ "Hello."

 Result:

 > <div formtarget="bar">Hello.</div>
-}
formtarget ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
formtarget :: forall s. ToLogStr s => s -> Attr
formtarget = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"formtarget"
{-# INLINE formtarget #-}

{- | Combinator for the @headers@ attribute.

 Example:

 > div ! headers "bar" $ "Hello."

 Result:

 > <div headers="bar">Hello.</div>
-}
headers ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
headers :: forall s. ToLogStr s => s -> Attr
headers = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"headers"
{-# INLINE headers #-}

{- | Combinator for the @height@ attribute.

 Example:

 > div ! height "bar" $ "Hello."

 Result:

 > <div height="bar">Hello.</div>
-}
height ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
height :: forall s. ToLogStr s => s -> Attr
height = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"height"
{-# INLINE height #-}

{- | Combinator for the @hidden@ attribute.

 Example:

 > div ! hidden "bar" $ "Hello."

 Result:

 > <div hidden="bar">Hello.</div>
-}
hidden ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
hidden :: forall s. ToLogStr s => s -> Attr
hidden = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"hidden"
{-# INLINE hidden #-}

{- | Combinator for the @high@ attribute.

 Example:

 > div ! high "bar" $ "Hello."

 Result:

 > <div high="bar">Hello.</div>
-}
high ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
high :: forall s. ToLogStr s => s -> Attr
high = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"high"
{-# INLINE high #-}

{- | Combinator for the @href@ attribute.

 Example:

 > div ! href "bar" $ "Hello."

 Result:

 > <div href="bar">Hello.</div>
-}
href ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
href :: forall s. ToLogStr s => s -> Attr
href = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"href"
{-# INLINE href #-}

{- | Combinator for the @hreflang@ attribute.

 Example:

 > div ! hreflang "bar" $ "Hello."

 Result:

 > <div hreflang="bar">Hello.</div>
-}
hreflang ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
hreflang :: forall s. ToLogStr s => s -> Attr
hreflang = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"hreflang"
{-# INLINE hreflang #-}

{- | Combinator for the @http-equiv@ attribute.

 Example:

 > div ! httpEquiv "bar" $ "Hello."

 Result:

 > <div http-equiv="bar">Hello.</div>
-}
httpEquiv ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
httpEquiv :: forall s. ToLogStr s => s -> Attr
httpEquiv = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"http-equiv"
{-# INLINE httpEquiv #-}

{- | Combinator for the @icon@ attribute.

 Example:

 > div ! icon "bar" $ "Hello."

 Result:

 > <div icon="bar">Hello.</div>
-}
icon ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
icon :: forall s. ToLogStr s => s -> Attr
icon = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"icon"
{-# INLINE icon #-}

{- | Combinator for the @id@ attribute.

 Example:

 > div ! id "bar" $ "Hello."

 Result:

 > <div id="bar">Hello.</div>
-}
id ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
id :: forall s. ToLogStr s => s -> Attr
id = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"id"
{-# INLINE id #-}

{- | Combinator for the @ismap@ attribute.

 Example:

 > div ! ismap "bar" $ "Hello."

 Result:

 > <div ismap="bar">Hello.</div>
-}
ismap ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ismap :: forall s. ToLogStr s => s -> Attr
ismap = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ismap"
{-# INLINE ismap #-}

{- | Combinator for the @item@ attribute.

 Example:

 > div ! item "bar" $ "Hello."

 Result:

 > <div item="bar">Hello.</div>
-}
item ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
item :: forall s. ToLogStr s => s -> Attr
item = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"item"
{-# INLINE item #-}

{- | Combinator for the @itemprop@ attribute.

 Example:

 > div ! itemprop "bar" $ "Hello."

 Result:

 > <div itemprop="bar">Hello.</div>
-}
itemprop ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
itemprop :: forall s. ToLogStr s => s -> Attr
itemprop = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"itemprop"
{-# INLINE itemprop #-}

{- | Combinator for the @itemscope@ attribute.

 Example:

 > div ! itemscope "bar" $ "Hello."

 Result:

 > <div itemscope="bar">Hello.</div>
-}
itemscope ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
itemscope :: forall s. ToLogStr s => s -> Attr
itemscope = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"itemscope"
{-# INLINE itemscope #-}

{- | Combinator for the @itemtype@ attribute.

 Example:

 > div ! itemtype "bar" $ "Hello."

 Result:

 > <div itemtype="bar">Hello.</div>
-}
itemtype ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
itemtype :: forall s. ToLogStr s => s -> Attr
itemtype = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"itemtype"
{-# INLINE itemtype #-}

{- | Combinator for the @keytype@ attribute.

 Example:

 > div ! keytype "bar" $ "Hello."

 Result:

 > <div keytype="bar">Hello.</div>
-}
keytype ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
keytype :: forall s. ToLogStr s => s -> Attr
keytype = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"keytype"
{-# INLINE keytype #-}

{- | Combinator for the @label@ attribute.

 Example:

 > div ! label "bar" $ "Hello."

 Result:

 > <div label="bar">Hello.</div>
-}
label ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
label :: forall s. ToLogStr s => s -> Attr
label = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"label"
{-# INLINE label #-}

{- | Combinator for the @lang@ attribute.

 Example:

 > div ! lang "bar" $ "Hello."

 Result:

 > <div lang="bar">Hello.</div>
-}
lang ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
lang :: forall s. ToLogStr s => s -> Attr
lang = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"lang"
{-# INLINE lang #-}

{- | Combinator for the @list@ attribute.

 Example:

 > div ! list "bar" $ "Hello."

 Result:

 > <div list="bar">Hello.</div>
-}
list ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
list :: forall s. ToLogStr s => s -> Attr
list = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"list"
{-# INLINE list #-}

{- | Combinator for the @loop@ attribute.

 Example:

 > div ! loop "bar" $ "Hello."

 Result:

 > <div loop="bar">Hello.</div>
-}
loop ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
loop :: forall s. ToLogStr s => s -> Attr
loop = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"loop"
{-# INLINE loop #-}

{- | Combinator for the @low@ attribute.

 Example:

 > div ! low "bar" $ "Hello."

 Result:

 > <div low="bar">Hello.</div>
-}
low ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
low :: forall s. ToLogStr s => s -> Attr
low = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"low"
{-# INLINE low #-}

{- | Combinator for the @manifest@ attribute.

 Example:

 > div ! manifest "bar" $ "Hello."

 Result:

 > <div manifest="bar">Hello.</div>
-}
manifest ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
manifest :: forall s. ToLogStr s => s -> Attr
manifest = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"manifest"
{-# INLINE manifest #-}

{- | Combinator for the @max@ attribute.

 Example:

 > div ! max "bar" $ "Hello."

 Result:

 > <div max="bar">Hello.</div>
-}
max ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
max :: forall s. ToLogStr s => s -> Attr
max = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"max"
{-# INLINE max #-}

{- | Combinator for the @maxlength@ attribute.

 Example:

 > div ! maxlength "bar" $ "Hello."

 Result:

 > <div maxlength="bar">Hello.</div>
-}
maxlength ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
maxlength :: forall s. ToLogStr s => s -> Attr
maxlength = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"maxlength"
{-# INLINE maxlength #-}

{- | Combinator for the @media@ attribute.

 Example:

 > div ! media "bar" $ "Hello."

 Result:

 > <div media="bar">Hello.</div>
-}
media ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
media :: forall s. ToLogStr s => s -> Attr
media = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"media"
{-# INLINE media #-}

{- | Combinator for the @method@ attribute.

 Example:

 > div ! method "bar" $ "Hello."

 Result:

 > <div method="bar">Hello.</div>
-}
method ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
method :: forall s. ToLogStr s => s -> Attr
method = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"method"
{-# INLINE method #-}

{- | Combinator for the @min@ attribute.

 Example:

 > div ! min "bar" $ "Hello."

 Result:

 > <div min="bar">Hello.</div>
-}
min ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
min :: forall s. ToLogStr s => s -> Attr
min = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"min"
{-# INLINE min #-}

{- | Combinator for the @multiple@ attribute.

 Example:

 > div ! multiple "bar" $ "Hello."

 Result:

 > <div multiple="bar">Hello.</div>
-}
multiple ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
multiple :: forall s. ToLogStr s => s -> Attr
multiple = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"multiple"
{-# INLINE multiple #-}

{- | Combinator for the @name@ attribute.

 Example:

 > div ! name "bar" $ "Hello."

 Result:

 > <div name="bar">Hello.</div>
-}
name ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
name :: forall s. ToLogStr s => s -> Attr
name = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"name"
{-# INLINE name #-}

{- | Combinator for the @novalidate@ attribute.

 Example:

 > div ! novalidate "bar" $ "Hello."

 Result:

 > <div novalidate="bar">Hello.</div>
-}
novalidate ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
novalidate :: forall s. ToLogStr s => s -> Attr
novalidate = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"novalidate"
{-# INLINE novalidate #-}

{- | Combinator for the @onbeforeonload@ attribute.

 Example:

 > div ! onbeforeonload "bar" $ "Hello."

 Result:

 > <div onbeforeonload="bar">Hello.</div>
-}
onbeforeonload ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onbeforeonload :: forall s. ToLogStr s => s -> Attr
onbeforeonload = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onbeforeonload"
{-# INLINE onbeforeonload #-}

{- | Combinator for the @onbeforeprint@ attribute.

 Example:

 > div ! onbeforeprint "bar" $ "Hello."

 Result:

 > <div onbeforeprint="bar">Hello.</div>
-}
onbeforeprint ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onbeforeprint :: forall s. ToLogStr s => s -> Attr
onbeforeprint = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onbeforeprint"
{-# INLINE onbeforeprint #-}

{- | Combinator for the @onblur@ attribute.

 Example:

 > div ! onblur "bar" $ "Hello."

 Result:

 > <div onblur="bar">Hello.</div>
-}
onblur ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onblur :: forall s. ToLogStr s => s -> Attr
onblur = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onblur"
{-# INLINE onblur #-}

{- | Combinator for the @oncanplay@ attribute.

 Example:

 > div ! oncanplay "bar" $ "Hello."

 Result:

 > <div oncanplay="bar">Hello.</div>
-}
oncanplay ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
oncanplay :: forall s. ToLogStr s => s -> Attr
oncanplay = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"oncanplay"
{-# INLINE oncanplay #-}

{- | Combinator for the @oncanplaythrough@ attribute.

 Example:

 > div ! oncanplaythrough "bar" $ "Hello."

 Result:

 > <div oncanplaythrough="bar">Hello.</div>
-}
oncanplaythrough ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
oncanplaythrough :: forall s. ToLogStr s => s -> Attr
oncanplaythrough = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"oncanplaythrough"
{-# INLINE oncanplaythrough #-}

{- | Combinator for the @onchange@ attribute.

 Example:

 > div ! onchange "bar" $ "Hello."

 Result:

 > <div onchange="bar">Hello.</div>
-}
onchange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onchange :: forall s. ToLogStr s => s -> Attr
onchange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onchange"
{-# INLINE onchange #-}

{- | Combinator for the @onclick@ attribute.

 Example:

 > div ! onclick "bar" $ "Hello."

 Result:

 > <div onclick="bar">Hello.</div>
-}
onclick ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onclick :: forall s. ToLogStr s => s -> Attr
onclick = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onclick"
{-# INLINE onclick #-}

{- | Combinator for the @oncontextmenu@ attribute.

 Example:

 > div ! oncontextmenu "bar" $ "Hello."

 Result:

 > <div oncontextmenu="bar">Hello.</div>
-}
oncontextmenu ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
oncontextmenu :: forall s. ToLogStr s => s -> Attr
oncontextmenu = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"oncontextmenu"
{-# INLINE oncontextmenu #-}

{- | Combinator for the @ondblclick@ attribute.

 Example:

 > div ! ondblclick "bar" $ "Hello."

 Result:

 > <div ondblclick="bar">Hello.</div>
-}
ondblclick ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondblclick :: forall s. ToLogStr s => s -> Attr
ondblclick = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondblclick"
{-# INLINE ondblclick #-}

{- | Combinator for the @ondrag@ attribute.

 Example:

 > div ! ondrag "bar" $ "Hello."

 Result:

 > <div ondrag="bar">Hello.</div>
-}
ondrag ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondrag :: forall s. ToLogStr s => s -> Attr
ondrag = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondrag"
{-# INLINE ondrag #-}

{- | Combinator for the @ondragend@ attribute.

 Example:

 > div ! ondragend "bar" $ "Hello."

 Result:

 > <div ondragend="bar">Hello.</div>
-}
ondragend ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondragend :: forall s. ToLogStr s => s -> Attr
ondragend = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondragend"
{-# INLINE ondragend #-}

{- | Combinator for the @ondragenter@ attribute.

 Example:

 > div ! ondragenter "bar" $ "Hello."

 Result:

 > <div ondragenter="bar">Hello.</div>
-}
ondragenter ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondragenter :: forall s. ToLogStr s => s -> Attr
ondragenter = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondragenter"
{-# INLINE ondragenter #-}

{- | Combinator for the @ondragleave@ attribute.

 Example:

 > div ! ondragleave "bar" $ "Hello."

 Result:

 > <div ondragleave="bar">Hello.</div>
-}
ondragleave ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondragleave :: forall s. ToLogStr s => s -> Attr
ondragleave = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondragleave"
{-# INLINE ondragleave #-}

{- | Combinator for the @ondragover@ attribute.

 Example:

 > div ! ondragover "bar" $ "Hello."

 Result:

 > <div ondragover="bar">Hello.</div>
-}
ondragover ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondragover :: forall s. ToLogStr s => s -> Attr
ondragover = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondragover"
{-# INLINE ondragover #-}

{- | Combinator for the @ondragstart@ attribute.

 Example:

 > div ! ondragstart "bar" $ "Hello."

 Result:

 > <div ondragstart="bar">Hello.</div>
-}
ondragstart ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondragstart :: forall s. ToLogStr s => s -> Attr
ondragstart = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondragstart"
{-# INLINE ondragstart #-}

{- | Combinator for the @ondrop@ attribute.

 Example:

 > div ! ondrop "bar" $ "Hello."

 Result:

 > <div ondrop="bar">Hello.</div>
-}
ondrop ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondrop :: forall s. ToLogStr s => s -> Attr
ondrop = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondrop"
{-# INLINE ondrop #-}

{- | Combinator for the @ondurationchange@ attribute.

 Example:

 > div ! ondurationchange "bar" $ "Hello."

 Result:

 > <div ondurationchange="bar">Hello.</div>
-}
ondurationchange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ondurationchange :: forall s. ToLogStr s => s -> Attr
ondurationchange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ondurationchange"
{-# INLINE ondurationchange #-}

{- | Combinator for the @onemptied@ attribute.

 Example:

 > div ! onemptied "bar" $ "Hello."

 Result:

 > <div onemptied="bar">Hello.</div>
-}
onemptied ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onemptied :: forall s. ToLogStr s => s -> Attr
onemptied = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onemptied"
{-# INLINE onemptied #-}

{- | Combinator for the @onended@ attribute.

 Example:

 > div ! onended "bar" $ "Hello."

 Result:

 > <div onended="bar">Hello.</div>
-}
onended ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onended :: forall s. ToLogStr s => s -> Attr
onended = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onended"
{-# INLINE onended #-}

{- | Combinator for the @onerror@ attribute.

 Example:

 > div ! onerror "bar" $ "Hello."

 Result:

 > <div onerror="bar">Hello.</div>
-}
onerror ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onerror :: forall s. ToLogStr s => s -> Attr
onerror = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onerror"
{-# INLINE onerror #-}

{- | Combinator for the @onfocus@ attribute.

 Example:

 > div ! onfocus "bar" $ "Hello."

 Result:

 > <div onfocus="bar">Hello.</div>
-}
onfocus ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onfocus :: forall s. ToLogStr s => s -> Attr
onfocus = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onfocus"
{-# INLINE onfocus #-}

{- | Combinator for the @onformchange@ attribute.

 Example:

 > div ! onformchange "bar" $ "Hello."

 Result:

 > <div onformchange="bar">Hello.</div>
-}
onformchange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onformchange :: forall s. ToLogStr s => s -> Attr
onformchange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onformchange"
{-# INLINE onformchange #-}

{- | Combinator for the @onforminput@ attribute.

 Example:

 > div ! onforminput "bar" $ "Hello."

 Result:

 > <div onforminput="bar">Hello.</div>
-}
onforminput ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onforminput :: forall s. ToLogStr s => s -> Attr
onforminput = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onforminput"
{-# INLINE onforminput #-}

{- | Combinator for the @onhaschange@ attribute.

 Example:

 > div ! onhaschange "bar" $ "Hello."

 Result:

 > <div onhaschange="bar">Hello.</div>
-}
onhaschange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onhaschange :: forall s. ToLogStr s => s -> Attr
onhaschange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onhaschange"
{-# INLINE onhaschange #-}

{- | Combinator for the @oninput@ attribute.

 Example:

 > div ! oninput "bar" $ "Hello."

 Result:

 > <div oninput="bar">Hello.</div>
-}
oninput ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
oninput :: forall s. ToLogStr s => s -> Attr
oninput = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"oninput"
{-# INLINE oninput #-}

{- | Combinator for the @oninvalid@ attribute.

 Example:

 > div ! oninvalid "bar" $ "Hello."

 Result:

 > <div oninvalid="bar">Hello.</div>
-}
oninvalid ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
oninvalid :: forall s. ToLogStr s => s -> Attr
oninvalid = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"oninvalid"
{-# INLINE oninvalid #-}

{- | Combinator for the @onkeydown@ attribute.

 Example:

 > div ! onkeydown "bar" $ "Hello."

 Result:

 > <div onkeydown="bar">Hello.</div>
-}
onkeydown ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onkeydown :: forall s. ToLogStr s => s -> Attr
onkeydown = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onkeydown"
{-# INLINE onkeydown #-}

{- | Combinator for the @onkeyup@ attribute.

 Example:

 > div ! onkeyup "bar" $ "Hello."

 Result:

 > <div onkeyup="bar">Hello.</div>
-}
onkeyup ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onkeyup :: forall s. ToLogStr s => s -> Attr
onkeyup = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onkeyup"
{-# INLINE onkeyup #-}

{- | Combinator for the @onload@ attribute.

 Example:

 > div ! onload "bar" $ "Hello."

 Result:

 > <div onload="bar">Hello.</div>
-}
onload ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onload :: forall s. ToLogStr s => s -> Attr
onload = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onload"
{-# INLINE onload #-}

{- | Combinator for the @onloadeddata@ attribute.

 Example:

 > div ! onloadeddata "bar" $ "Hello."

 Result:

 > <div onloadeddata="bar">Hello.</div>
-}
onloadeddata ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onloadeddata :: forall s. ToLogStr s => s -> Attr
onloadeddata = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onloadeddata"
{-# INLINE onloadeddata #-}

{- | Combinator for the @onloadedmetadata@ attribute.

 Example:

 > div ! onloadedmetadata "bar" $ "Hello."

 Result:

 > <div onloadedmetadata="bar">Hello.</div>
-}
onloadedmetadata ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onloadedmetadata :: forall s. ToLogStr s => s -> Attr
onloadedmetadata = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onloadedmetadata"
{-# INLINE onloadedmetadata #-}

{- | Combinator for the @onloadstart@ attribute.

 Example:

 > div ! onloadstart "bar" $ "Hello."

 Result:

 > <div onloadstart="bar">Hello.</div>
-}
onloadstart ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onloadstart :: forall s. ToLogStr s => s -> Attr
onloadstart = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onloadstart"
{-# INLINE onloadstart #-}

{- | Combinator for the @onmessage@ attribute.

 Example:

 > div ! onmessage "bar" $ "Hello."

 Result:

 > <div onmessage="bar">Hello.</div>
-}
onmessage ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmessage :: forall s. ToLogStr s => s -> Attr
onmessage = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmessage"
{-# INLINE onmessage #-}

{- | Combinator for the @onmousedown@ attribute.

 Example:

 > div ! onmousedown "bar" $ "Hello."

 Result:

 > <div onmousedown="bar">Hello.</div>
-}
onmousedown ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmousedown :: forall s. ToLogStr s => s -> Attr
onmousedown = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmousedown"
{-# INLINE onmousedown #-}

{- | Combinator for the @onmousemove@ attribute.

 Example:

 > div ! onmousemove "bar" $ "Hello."

 Result:

 > <div onmousemove="bar">Hello.</div>
-}
onmousemove ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmousemove :: forall s. ToLogStr s => s -> Attr
onmousemove = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmousemove"
{-# INLINE onmousemove #-}

{- | Combinator for the @onmouseout@ attribute.

 Example:

 > div ! onmouseout "bar" $ "Hello."

 Result:

 > <div onmouseout="bar">Hello.</div>
-}
onmouseout ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmouseout :: forall s. ToLogStr s => s -> Attr
onmouseout = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmouseout"
{-# INLINE onmouseout #-}

{- | Combinator for the @onmouseover@ attribute.

 Example:

 > div ! onmouseover "bar" $ "Hello."

 Result:

 > <div onmouseover="bar">Hello.</div>
-}
onmouseover ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmouseover :: forall s. ToLogStr s => s -> Attr
onmouseover = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmouseover"
{-# INLINE onmouseover #-}

{- | Combinator for the @onmouseup@ attribute.

 Example:

 > div ! onmouseup "bar" $ "Hello."

 Result:

 > <div onmouseup="bar">Hello.</div>
-}
onmouseup ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmouseup :: forall s. ToLogStr s => s -> Attr
onmouseup = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmouseup"
{-# INLINE onmouseup #-}

{- | Combinator for the @onmousewheel@ attribute.

 Example:

 > div ! onmousewheel "bar" $ "Hello."

 Result:

 > <div onmousewheel="bar">Hello.</div>
-}
onmousewheel ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onmousewheel :: forall s. ToLogStr s => s -> Attr
onmousewheel = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onmousewheel"
{-# INLINE onmousewheel #-}

{- | Combinator for the @ononline@ attribute.

 Example:

 > div ! ononline "bar" $ "Hello."

 Result:

 > <div ononline="bar">Hello.</div>
-}
ononline ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ononline :: forall s. ToLogStr s => s -> Attr
ononline = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ononline"
{-# INLINE ononline #-}

{- | Combinator for the @onpagehide@ attribute.

 Example:

 > div ! onpagehide "bar" $ "Hello."

 Result:

 > <div onpagehide="bar">Hello.</div>
-}
onpagehide ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onpagehide :: forall s. ToLogStr s => s -> Attr
onpagehide = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onpagehide"
{-# INLINE onpagehide #-}

{- | Combinator for the @onpageshow@ attribute.

 Example:

 > div ! onpageshow "bar" $ "Hello."

 Result:

 > <div onpageshow="bar">Hello.</div>
-}
onpageshow ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onpageshow :: forall s. ToLogStr s => s -> Attr
onpageshow = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onpageshow"
{-# INLINE onpageshow #-}

{- | Combinator for the @onpause@ attribute.

 Example:

 > div ! onpause "bar" $ "Hello."

 Result:

 > <div onpause="bar">Hello.</div>
-}
onpause ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onpause :: forall s. ToLogStr s => s -> Attr
onpause = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onpause"
{-# INLINE onpause #-}

{- | Combinator for the @onplay@ attribute.

 Example:

 > div ! onplay "bar" $ "Hello."

 Result:

 > <div onplay="bar">Hello.</div>
-}
onplay ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onplay :: forall s. ToLogStr s => s -> Attr
onplay = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onplay"
{-# INLINE onplay #-}

{- | Combinator for the @onplaying@ attribute.

 Example:

 > div ! onplaying "bar" $ "Hello."

 Result:

 > <div onplaying="bar">Hello.</div>
-}
onplaying ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onplaying :: forall s. ToLogStr s => s -> Attr
onplaying = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onplaying"
{-# INLINE onplaying #-}

{- | Combinator for the @onprogress@ attribute.

 Example:

 > div ! onprogress "bar" $ "Hello."

 Result:

 > <div onprogress="bar">Hello.</div>
-}
onprogress ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onprogress :: forall s. ToLogStr s => s -> Attr
onprogress = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onprogress"
{-# INLINE onprogress #-}

{- | Combinator for the @onpropstate@ attribute.

 Example:

 > div ! onpropstate "bar" $ "Hello."

 Result:

 > <div onpropstate="bar">Hello.</div>
-}
onpropstate ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onpropstate :: forall s. ToLogStr s => s -> Attr
onpropstate = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onpropstate"
{-# INLINE onpropstate #-}

{- | Combinator for the @onratechange@ attribute.

 Example:

 > div ! onratechange "bar" $ "Hello."

 Result:

 > <div onratechange="bar">Hello.</div>
-}
onratechange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onratechange :: forall s. ToLogStr s => s -> Attr
onratechange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onratechange"
{-# INLINE onratechange #-}

{- | Combinator for the @onreadystatechange@ attribute.

 Example:

 > div ! onreadystatechange "bar" $ "Hello."

 Result:

 > <div onreadystatechange="bar">Hello.</div>
-}
onreadystatechange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onreadystatechange :: forall s. ToLogStr s => s -> Attr
onreadystatechange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onreadystatechange"
{-# INLINE onreadystatechange #-}

{- | Combinator for the @onredo@ attribute.

 Example:

 > div ! onredo "bar" $ "Hello."

 Result:

 > <div onredo="bar">Hello.</div>
-}
onredo ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onredo :: forall s. ToLogStr s => s -> Attr
onredo = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onredo"
{-# INLINE onredo #-}

{- | Combinator for the @onresize@ attribute.

 Example:

 > div ! onresize "bar" $ "Hello."

 Result:

 > <div onresize="bar">Hello.</div>
-}
onresize ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onresize :: forall s. ToLogStr s => s -> Attr
onresize = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onresize"
{-# INLINE onresize #-}

{- | Combinator for the @onscroll@ attribute.

 Example:

 > div ! onscroll "bar" $ "Hello."

 Result:

 > <div onscroll="bar">Hello.</div>
-}
onscroll ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onscroll :: forall s. ToLogStr s => s -> Attr
onscroll = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onscroll"
{-# INLINE onscroll #-}

{- | Combinator for the @onseeked@ attribute.

 Example:

 > div ! onseeked "bar" $ "Hello."

 Result:

 > <div onseeked="bar">Hello.</div>
-}
onseeked ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onseeked :: forall s. ToLogStr s => s -> Attr
onseeked = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onseeked"
{-# INLINE onseeked #-}

{- | Combinator for the @onseeking@ attribute.

 Example:

 > div ! onseeking "bar" $ "Hello."

 Result:

 > <div onseeking="bar">Hello.</div>
-}
onseeking ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onseeking :: forall s. ToLogStr s => s -> Attr
onseeking = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onseeking"
{-# INLINE onseeking #-}

{- | Combinator for the @onselect@ attribute.

 Example:

 > div ! onselect "bar" $ "Hello."

 Result:

 > <div onselect="bar">Hello.</div>
-}
onselect ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onselect :: forall s. ToLogStr s => s -> Attr
onselect = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onselect"
{-# INLINE onselect #-}

{- | Combinator for the @onstalled@ attribute.

 Example:

 > div ! onstalled "bar" $ "Hello."

 Result:

 > <div onstalled="bar">Hello.</div>
-}
onstalled ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onstalled :: forall s. ToLogStr s => s -> Attr
onstalled = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onstalled"
{-# INLINE onstalled #-}

{- | Combinator for the @onstorage@ attribute.

 Example:

 > div ! onstorage "bar" $ "Hello."

 Result:

 > <div onstorage="bar">Hello.</div>
-}
onstorage ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onstorage :: forall s. ToLogStr s => s -> Attr
onstorage = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onstorage"
{-# INLINE onstorage #-}

{- | Combinator for the @onsubmit@ attribute.

 Example:

 > div ! onsubmit "bar" $ "Hello."

 Result:

 > <div onsubmit="bar">Hello.</div>
-}
onsubmit ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onsubmit :: forall s. ToLogStr s => s -> Attr
onsubmit = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onsubmit"
{-# INLINE onsubmit #-}

{- | Combinator for the @onsuspend@ attribute.

 Example:

 > div ! onsuspend "bar" $ "Hello."

 Result:

 > <div onsuspend="bar">Hello.</div>
-}
onsuspend ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onsuspend :: forall s. ToLogStr s => s -> Attr
onsuspend = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onsuspend"
{-# INLINE onsuspend #-}

{- | Combinator for the @ontimeupdate@ attribute.

 Example:

 > div ! ontimeupdate "bar" $ "Hello."

 Result:

 > <div ontimeupdate="bar">Hello.</div>
-}
ontimeupdate ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ontimeupdate :: forall s. ToLogStr s => s -> Attr
ontimeupdate = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ontimeupdate"
{-# INLINE ontimeupdate #-}

{- | Combinator for the @onundo@ attribute.

 Example:

 > div ! onundo "bar" $ "Hello."

 Result:

 > <div onundo="bar">Hello.</div>
-}
onundo ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onundo :: forall s. ToLogStr s => s -> Attr
onundo = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onundo"
{-# INLINE onundo #-}

{- | Combinator for the @onunload@ attribute.

 Example:

 > div ! onunload "bar" $ "Hello."

 Result:

 > <div onunload="bar">Hello.</div>
-}
onunload ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onunload :: forall s. ToLogStr s => s -> Attr
onunload = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onunload"
{-# INLINE onunload #-}

{- | Combinator for the @onvolumechange@ attribute.

 Example:

 > div ! onvolumechange "bar" $ "Hello."

 Result:

 > <div onvolumechange="bar">Hello.</div>
-}
onvolumechange ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onvolumechange :: forall s. ToLogStr s => s -> Attr
onvolumechange = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onvolumechange"
{-# INLINE onvolumechange #-}

{- | Combinator for the @onwaiting@ attribute.

 Example:

 > div ! onwaiting "bar" $ "Hello."

 Result:

 > <div onwaiting="bar">Hello.</div>
-}
onwaiting ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
onwaiting :: forall s. ToLogStr s => s -> Attr
onwaiting = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"onwaiting"
{-# INLINE onwaiting #-}

{- | Combinator for the @open@ attribute.

 Example:

 > div ! open "bar" $ "Hello."

 Result:

 > <div open="bar">Hello.</div>
-}
open ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
open :: forall s. ToLogStr s => s -> Attr
open = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"open"
{-# INLINE open #-}

{- | Combinator for the @optimum@ attribute.

 Example:

 > div ! optimum "bar" $ "Hello."

 Result:

 > <div optimum="bar">Hello.</div>
-}
optimum ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
optimum :: forall s. ToLogStr s => s -> Attr
optimum = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"optimum"
{-# INLINE optimum #-}

{- | Combinator for the @pattern@ attribute.

 Example:

 > div ! pattern "bar" $ "Hello."

 Result:

 > <div pattern="bar">Hello.</div>
-}
pattern ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
pattern :: forall s. ToLogStr s => s -> Attr
pattern = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"pattern"
{-# INLINE pattern #-}

{- | Combinator for the @ping@ attribute.

 Example:

 > div ! ping "bar" $ "Hello."

 Result:

 > <div ping="bar">Hello.</div>
-}
ping ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
ping :: forall s. ToLogStr s => s -> Attr
ping = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"ping"
{-# INLINE ping #-}

{- | Combinator for the @placeholder@ attribute.

 Example:

 > div ! placeholder "bar" $ "Hello."

 Result:

 > <div placeholder="bar">Hello.</div>
-}
placeholder ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
placeholder :: forall s. ToLogStr s => s -> Attr
placeholder = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"placeholder"
{-# INLINE placeholder #-}

{- | Combinator for the @preload@ attribute.

 Example:

 > div ! preload "bar" $ "Hello."

 Result:

 > <div preload="bar">Hello.</div>
-}
preload ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
preload :: forall s. ToLogStr s => s -> Attr
preload = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"preload"
{-# INLINE preload #-}

{- | Combinator for the @pubdate@ attribute.

 Example:

 > div ! pubdate "bar" $ "Hello."

 Result:

 > <div pubdate="bar">Hello.</div>
-}
pubdate ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
pubdate :: forall s. ToLogStr s => s -> Attr
pubdate = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"pubdate"
{-# INLINE pubdate #-}

{- | Combinator for the @radiogroup@ attribute.

 Example:

 > div ! radiogroup "bar" $ "Hello."

 Result:

 > <div radiogroup="bar">Hello.</div>
-}
radiogroup ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
radiogroup :: forall s. ToLogStr s => s -> Attr
radiogroup = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"radiogroup"
{-# INLINE radiogroup #-}

{- | Combinator for the @readonly@ attribute.

 Example:

 > div ! readonly "bar" $ "Hello."

 Result:

 > <div readonly="bar">Hello.</div>
-}
readonly ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
readonly :: forall s. ToLogStr s => s -> Attr
readonly = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"readonly"
{-# INLINE readonly #-}

{- | Combinator for the @rel@ attribute.

 Example:

 > div ! rel "bar" $ "Hello."

 Result:

 > <div rel="bar">Hello.</div>
-}
rel ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
rel :: forall s. ToLogStr s => s -> Attr
rel = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"rel"
{-# INLINE rel #-}

{- | Combinator for the @required@ attribute.

 Example:

 > div ! required "bar" $ "Hello."

 Result:

 > <div required="bar">Hello.</div>
-}
required ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
required :: forall s. ToLogStr s => s -> Attr
required = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"required"
{-# INLINE required #-}

{- | Combinator for the @reversed@ attribute.

 Example:

 > div ! reversed "bar" $ "Hello."

 Result:

 > <div reversed="bar">Hello.</div>
-}
reversed ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
reversed :: forall s. ToLogStr s => s -> Attr
reversed = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"reversed"
{-# INLINE reversed #-}

{- | Combinator for the @role@ attribute.

 Example:

 > div ! role "bar" $ "Hello."

 Result:

 > <div role="bar">Hello.</div>
-}
role ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
role :: forall s. ToLogStr s => s -> Attr
role = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"role"
{-# INLINE role #-}

{- | Combinator for the @rows@ attribute.

 Example:

 > div ! rows "bar" $ "Hello."

 Result:

 > <div rows="bar">Hello.</div>
-}
rows ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
rows :: forall s. ToLogStr s => s -> Attr
rows = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"rows"
{-# INLINE rows #-}

{- | Combinator for the @rowspan@ attribute.

 Example:

 > div ! rowspan "bar" $ "Hello."

 Result:

 > <div rowspan="bar">Hello.</div>
-}
rowspan ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
rowspan :: forall s. ToLogStr s => s -> Attr
rowspan = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"rowspan"
{-# INLINE rowspan #-}

{- | Combinator for the @sandbox@ attribute.

 Example:

 > div ! sandbox "bar" $ "Hello."

 Result:

 > <div sandbox="bar">Hello.</div>
-}
sandbox ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
sandbox :: forall s. ToLogStr s => s -> Attr
sandbox = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"sandbox"
{-# INLINE sandbox #-}

{- | Combinator for the @scope@ attribute.

 Example:

 > div ! scope "bar" $ "Hello."

 Result:

 > <div scope="bar">Hello.</div>
-}
scope ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
scope :: forall s. ToLogStr s => s -> Attr
scope = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"scope"
{-# INLINE scope #-}

{- | Combinator for the @scoped@ attribute.

 Example:

 > div ! scoped "bar" $ "Hello."

 Result:

 > <div scoped="bar">Hello.</div>
-}
scoped ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
scoped :: forall s. ToLogStr s => s -> Attr
scoped = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"scoped"
{-# INLINE scoped #-}

{- | Combinator for the @seamless@ attribute.

 Example:

 > div ! seamless "bar" $ "Hello."

 Result:

 > <div seamless="bar">Hello.</div>
-}
seamless ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
seamless :: forall s. ToLogStr s => s -> Attr
seamless = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"seamless"
{-# INLINE seamless #-}

{- | Combinator for the @selected@ attribute.

 Example:

 > div ! selected "bar" $ "Hello."

 Result:

 > <div selected="bar">Hello.</div>
-}
selected ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
selected :: forall s. ToLogStr s => s -> Attr
selected = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"selected"
{-# INLINE selected #-}

{- | Combinator for the @shape@ attribute.

 Example:

 > div ! shape "bar" $ "Hello."

 Result:

 > <div shape="bar">Hello.</div>
-}
shape ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
shape :: forall s. ToLogStr s => s -> Attr
shape = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"shape"
{-# INLINE shape #-}

{- | Combinator for the @size@ attribute.

 Example:

 > div ! size "bar" $ "Hello."

 Result:

 > <div size="bar">Hello.</div>
-}
size ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
size :: forall s. ToLogStr s => s -> Attr
size = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"size"
{-# INLINE size #-}

{- | Combinator for the @sizes@ attribute.

 Example:

 > div ! sizes "bar" $ "Hello."

 Result:

 > <div sizes="bar">Hello.</div>
-}
sizes ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
sizes :: forall s. ToLogStr s => s -> Attr
sizes = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"sizes"
{-# INLINE sizes #-}

{- | Combinator for the @span@ attribute.

 Example:

 > div ! span "bar" $ "Hello."

 Result:

 > <div span="bar">Hello.</div>
-}
span ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
span :: forall s. ToLogStr s => s -> Attr
span = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"span"
{-# INLINE span #-}

{- | Combinator for the @spellcheck@ attribute.

 Example:

 > div ! spellcheck "bar" $ "Hello."

 Result:

 > <div spellcheck="bar">Hello.</div>
-}
spellcheck ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
spellcheck :: forall s. ToLogStr s => s -> Attr
spellcheck = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"spellcheck"
{-# INLINE spellcheck #-}

{- | Combinator for the @src@ attribute.

 Example:

 > div ! src "bar" $ "Hello."

 Result:

 > <div src="bar">Hello.</div>
-}
src ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
src :: forall s. ToLogStr s => s -> Attr
src = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"src"
{-# INLINE src #-}

{- | Combinator for the @srcdoc@ attribute.

 Example:

 > div ! srcdoc "bar" $ "Hello."

 Result:

 > <div srcdoc="bar">Hello.</div>
-}
srcdoc ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
srcdoc :: forall s. ToLogStr s => s -> Attr
srcdoc = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"srcdoc"
{-# INLINE srcdoc #-}

{- | Combinator for the @start@ attribute.

 Example:

 > div ! start "bar" $ "Hello."

 Result:

 > <div start="bar">Hello.</div>
-}
start ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
start :: forall s. ToLogStr s => s -> Attr
start = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"start"
{-# INLINE start #-}

{- | Combinator for the @step@ attribute.

 Example:

 > div ! step "bar" $ "Hello."

 Result:

 > <div step="bar">Hello.</div>
-}
step ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
step :: forall s. ToLogStr s => s -> Attr
step = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"step"
{-# INLINE step #-}

{- | Combinator for the @style@ attribute.

 Example:

 > div ! style "bar" $ "Hello."

 Result:

 > <div style="bar">Hello.</div>
-}
style ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
style :: forall s. ToLogStr s => s -> Attr
style = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"style"
{-# INLINE style #-}

{- | Combinator for the @subject@ attribute.

 Example:

 > div ! subject "bar" $ "Hello."

 Result:

 > <div subject="bar">Hello.</div>
-}
subject ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
subject :: forall s. ToLogStr s => s -> Attr
subject = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"subject"
{-# INLINE subject #-}

{- | Combinator for the @summary@ attribute.

 Example:

 > div ! summary "bar" $ "Hello."

 Result:

 > <div summary="bar">Hello.</div>
-}
summary ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
summary :: forall s. ToLogStr s => s -> Attr
summary = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"summary"
{-# INLINE summary #-}

{- | Combinator for the @tabindex@ attribute.

 Example:

 > div ! tabindex "bar" $ "Hello."

 Result:

 > <div tabindex="bar">Hello.</div>
-}
tabindex ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
tabindex :: forall s. ToLogStr s => s -> Attr
tabindex = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"tabindex"
{-# INLINE tabindex #-}

{- | Combinator for the @target@ attribute.

 Example:

 > div ! target "bar" $ "Hello."

 Result:

 > <div target="bar">Hello.</div>
-}
target ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
target :: forall s. ToLogStr s => s -> Attr
target = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"target"
{-# INLINE target #-}

{- | Combinator for the @title@ attribute.

 Example:

 > div ! title "bar" $ "Hello."

 Result:

 > <div title="bar">Hello.</div>
-}
title ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
title :: forall s. ToLogStr s => s -> Attr
title = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"title"
{-# INLINE title #-}

{- | Combinator for the @type@ attribute.

 Example:

 > div ! type_ "bar" $ "Hello."

 Result:

 > <div type="bar">Hello.</div>
-}
type_ ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
type_ :: forall s. ToLogStr s => s -> Attr
type_ = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"type"
{-# INLINE type_ #-}

{- | Combinator for the @usemap@ attribute.

 Example:

 > div ! usemap "bar" $ "Hello."

 Result:

 > <div usemap="bar">Hello.</div>
-}
usemap ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
usemap :: forall s. ToLogStr s => s -> Attr
usemap = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"usemap"
{-# INLINE usemap #-}

{- | Combinator for the @value@ attribute.

 Example:

 > div ! value "bar" $ "Hello."

 Result:

 > <div value="bar">Hello.</div>
-}
value ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
value :: forall s. ToLogStr s => s -> Attr
value = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"value"
{-# INLINE value #-}

{- | Combinator for the @width@ attribute.

 Example:

 > div ! width "bar" $ "Hello."

 Result:

 > <div width="bar">Hello.</div>
-}
width ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
width :: forall s. ToLogStr s => s -> Attr
width = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"width"
{-# INLINE width #-}

{- | Combinator for the @wrap@ attribute.

 Example:

 > div ! wrap "bar" $ "Hello."

 Result:

 > <div wrap="bar">Hello.</div>
-}
wrap ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
wrap :: forall s. ToLogStr s => s -> Attr
wrap = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"wrap"
{-# INLINE wrap #-}

{- | Combinator for the @xmlns@ attribute.

 Example:

 > div ! xmlns "bar" $ "Hello."

 Result:

 > <div xmlns="bar">Hello.</div>
-}
xmlns ::
    ToLogStr s =>
    -- | Attribute value.
    s ->
    -- | Resulting attribute.
    Attr
xmlns :: forall s. ToLogStr s => s -> Attr
xmlns = LogStr -> s -> Attr
forall s. ToLogStr s => LogStr -> s -> Attr
attr LogStr
"xmlns"
{-# INLINE xmlns #-}