[
    {
        "name": "Html.Events.Extra",
        "comment": " Additional event handlers for html.\n\n# Text Input helpers\n@docs onInput\n\n# Event decoders\n* TODO: `key`\n* TODO: `code`\n* TODO: `KeyEvent`, `keyEvent`\n@docs charCode\n\n# Typed event decoders\n@docs targetValueFloat, targetValueInt, targetValueMaybe, targetValueMaybeFloat, targetValueMaybeInt\n@docs targetValueFloatParse, targetValueIntParse, targetValueMaybeFloatParse, targetValueMaybeIntParse\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "charCode",
                "comment": " Character code for key board events.\nThis is being deprecated, but support for DOM3 Keyboard events is not yet present in most browsers.\n",
                "type": "Decoder (Maybe Char)"
            },
            {
                "name": "onInput",
                "comment": " Return an [`input`](https://developer.mozilla.org/en-US/docs/Web/Events/input)\nevent handler which passes along that event's `event.target.value` string.\n",
                "type": "(String -> msg) -> Attribute msg"
            },
            {
                "name": "targetValueFloat",
                "comment": " Floating-point target value.\n",
                "type": "Decoder Float"
            },
            {
                "name": "targetValueFloatParse",
                "comment": " Parse a floating-point value from the input instead of using `valueAsNumber`.\nUse this with inputs that do not have a `number` type.\n",
                "type": "Decoder Float"
            },
            {
                "name": "targetValueInt",
                "comment": " Integer target value.\n",
                "type": "Decoder Int"
            },
            {
                "name": "targetValueIntParse",
                "comment": " Parse an integer value from the input instead of using `valueAsNumber`.\nUse this with inputs that do not have a `number` type.\n",
                "type": "Decoder Int"
            },
            {
                "name": "targetValueMaybe",
                "comment": " String or empty target value.\n",
                "type": "Decoder (Maybe String)"
            },
            {
                "name": "targetValueMaybeFloat",
                "comment": " Floating-point or empty target value.\n",
                "type": "Decoder (Maybe Float)"
            },
            {
                "name": "targetValueMaybeFloatParse",
                "comment": " Parse an optional floating-point value from the input instead of using `valueAsNumber`.\nUse this with inputs that do not have a `number` type.\n",
                "type": "Decoder (Maybe Float)"
            },
            {
                "name": "targetValueMaybeInt",
                "comment": " Integer or empty target value.\n",
                "type": "Decoder (Maybe Int)"
            },
            {
                "name": "targetValueMaybeIntParse",
                "comment": " Parse an optional integer value from the input instead of using `valueAsNumber`.\nUse this with inputs that do not have a `number` type.\n",
                "type": "Decoder (Maybe Int)"
            }
        ],
        "binops": []
    },
    {
        "name": "Html.Attributes.Extra",
        "comment": " Additional attributes for html\n\n# Inputs\n@docs valueAsFloat, valueAsInt\n\n# Semantic web\n@docs role\n\n# Meter element\n@docs low, high, optimum\n\n# Media element\n@docs volume\n\n# Unescaped HTML\n@docs innerHtml\n\n# Custom Attributes\n@docs stringProperty\n@docs boolProperty\n@docs floatProperty\n@docs intProperty\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "boolProperty",
                "comment": " Create arbitrary bool *properties*.\n",
                "type": "String -> Bool -> Attribute msg"
            },
            {
                "name": "floatProperty",
                "comment": " Create arbitrary floating-point *properties*.\n",
                "type": "String -> Float -> Attribute msg"
            },
            {
                "name": "high",
                "comment": " The lower numeric bound of the high end of the measured range, used with the meter element.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "innerHtml",
                "comment": " Useful for inserting arbitrary unescaped HTML into an element. This function comes with some caveats.\n\n* **Security:** You should never pass untrusted strings (e.g. from user input) to this function. Doing so will lead to [XSS](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)) vulnerabilities.\n* **Performance:** The virtual DOM subsystem is not aware of HTML inserted in this manner, so these HTML fragments will be slower.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "intProperty",
                "comment": " Create arbitrary integer *properties*.\n",
                "type": "String -> Int -> Attribute msg"
            },
            {
                "name": "low",
                "comment": " The upper numeric bound of the low end of the measured range, used with the meter element.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "optimum",
                "comment": " This attribute indicates the optimal numeric value, used with the meter element.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "role",
                "comment": " Used to annotate markup languages with machine-extractable semantic information about the purpose of an element.\nSee the [official specs](http://www.w3.org/TR/role-attribute/).\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "stringProperty",
                "comment": " Create arbitrary string *properties*.\n",
                "type": "String -> String -> Attribute msg"
            },
            {
                "name": "valueAsFloat",
                "comment": " Uses `valueAsNumber` to update an input with a floating-point value.\nThis should only be used on &lt;input&gt; of type `number`, `range`, or `date`.\nIt differs from `value` in that a floating point value will not necessarily overwrite the contents on an input element.\n\n    valueAsFloat 2.5 -- e.g. will not change the displayed value for input showing \"2.5000\"\n    valueAsFloat 0.4 -- e.g. will not change the displayed value for input showing \".4\"\n\n",
                "type": "Float -> Attribute msg"
            },
            {
                "name": "valueAsInt",
                "comment": " Uses `valueAsNumber` to update an input with an integer value.\nThis should only be used on &lt;input&gt; of type `number`, `range`, or `date`.\nIt differs from `value` in that an integer value will not necessarily overwrite the contents on an input element.\n\n    valueAsInt 18 -- e.g. will not change the displayed value for input showing \"00018\"\n\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "volume",
                "comment": " Audio volume, starting from 0.0 (silent) up to 1.0 (loudest).\n",
                "type": "Float -> Attribute msg"
            }
        ],
        "binops": []
    }
]