[
    {
        "name": "FormValidator",
        "comment": "\n\nA customizable form validation component.\n\nThis is a wrapper module which exposes public functions, within a single module, found in the sub-\nmodules of this package:\n  - `Models`\n  - `Patterns`\n  - `Validator`\n  - `Validators`\n  - `Views`\n\nThis wrapper module is provided for convenience in case you don't wish to import the above modules\nindividually. It also serves as a fast way to get up and running quickly via a single import. If\nthis is not desired, you can ignore this module altogether and import the individual sub-modules as\nneeded for your implementation. See the README for details.\n\n# Models\n\n@docs Form\n\n# Init\n\n@docs init\n\n# Accessors\n\n@docs fieldValues, fieldValue, fieldErrors\n\n# Updaters\n\n@docs updateValues, updateValuesAndValidate, updateValue, updateValueAndValidate\n@docs resetForm, resetField, updateAndValidateValues, updateAndValidateValue\n\n# Validators\n\n@docs validateForm, validateField, isFormInvalid, isFieldInvalid, isBlank, isEmpty, isInteger\n@docs isFloat, isIncluded, isExcluded, isGreaterThan, isGreaterThanEqualTo, isLessThan\n@docs isLessThanEqualTo, isBetween, isLengthGreaterThan, isLengthGreaterThanEqualTo\n@docs isLengthLessThan, isLengthLessThanEqualTo, isLengthBetween, isEmail\n\n# Views\n\n@docs viewField, viewErrors, viewError\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "Form",
                "comment": " `Models` module wrapper function. See `Models` module for details. ",
                "args": [
                    "key"
                ],
                "type": "Form key"
            }
        ],
        "values": [
            {
                "name": "fieldErrors",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> Errors"
            },
            {
                "name": "fieldValue",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> String"
            },
            {
                "name": "fieldValues",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> List String"
            },
            {
                "name": "init",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Validators -> Field key"
            },
            {
                "name": "isBetween",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Int -> Value -> Error"
            },
            {
                "name": "isBlank",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Value -> Error"
            },
            {
                "name": "isEmail",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Value -> Error"
            },
            {
                "name": "isEmpty",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Value -> Error"
            },
            {
                "name": "isExcluded",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "List String -> Value -> Error"
            },
            {
                "name": "isFieldInvalid",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> Bool"
            },
            {
                "name": "isFloat",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Value -> Error"
            },
            {
                "name": "isFormInvalid",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "Form key -> Bool"
            },
            {
                "name": "isGreaterThan",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isGreaterThanEqualTo",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isIncluded",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "List String -> Value -> Error"
            },
            {
                "name": "isInteger",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Value -> Error"
            },
            {
                "name": "isLengthBetween",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Int -> Value -> Error"
            },
            {
                "name": "isLengthGreaterThan",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthGreaterThanEqualTo",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthLessThan",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthLessThanEqualTo",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLessThan",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLessThanEqualTo",
                "comment": " `Validators` module wrapper function. See `Validators` module for details. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "resetField",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> Form key"
            },
            {
                "name": "resetForm",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "Form key -> Form key"
            },
            {
                "name": "updateAndValidateValue",
                "comment": "\n**DEPRECATED: Will be removed in 2.0.0. Use `updateValueAndValidate` instead.**\n\nUpdate field value and validate it.\n",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateAndValidateValues",
                "comment": "\n**DEPRECATED: Will be removed in 2.0.0. Use `updateValuesAndValidate` instead.**\n\nUpdate field values and validate them.\n",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "updateValue",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateValueAndValidate",
                "comment": " Update field value and validate it. ",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateValues",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "updateValuesAndValidate",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "validateField",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "key -> Form key -> Form key"
            },
            {
                "name": "validateForm",
                "comment": " `Validator` module wrapper function. See `Validator` module for details. ",
                "type": "Form key -> Form key"
            },
            {
                "name": "viewError",
                "comment": " `Views` module wrapper function. See `Views` module for details. ",
                "type": "Error -> Html message"
            },
            {
                "name": "viewErrors",
                "comment": " `Views` module wrapper function. See `Views` module for details. ",
                "type": "Errors -> Html message"
            },
            {
                "name": "viewField",
                "comment": " `Views` module wrapper function. See `Views` module for details. ",
                "type": "key -> Form key -> List String -> List (Html message) -> Html message"
            }
        ],
        "binops": []
    },
    {
        "name": "FormValidator.Views",
        "comment": "\n\nThe Form Validator views which are convenience methods for rendering forms and fields within your\nviews.\n\n@docs field, errors, error\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "error",
                "comment": " View field error (if any) as a list item. ",
                "type": "Error -> Html message"
            },
            {
                "name": "errors",
                "comment": " View field errors (if any) as an unordered list. ",
                "type": "Errors -> Html message"
            },
            {
                "name": "field",
                "comment": " View field with errors (if any). To be used as a wrapper around field DOM elements. ",
                "type": "key -> Form key -> List String -> List (Html message) -> Html message"
            }
        ],
        "binops": []
    },
    {
        "name": "FormValidator.Validators",
        "comment": "\n\nThe Form Validator validators provide functionality needed for validating a form field. These can be\nmixed and matched as desired.\n\n@docs isBlank, isEmpty, isInteger, isFloat, isIncluded, isExcluded, isGreaterThan\n@docs isGreaterThanEqualTo, isLessThan, isLessThanEqualTo, isBetween, isLengthGreaterThan\n@docs isLengthGreaterThanEqualTo, isLengthLessThan, isLengthLessThanEqualTo, isLengthBetween\n@docs isEmail\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "isBetween",
                "comment": " Validates if value is within minimum and maximum *inclusive* range. ",
                "type": "Int -> Int -> Value -> Error"
            },
            {
                "name": "isBlank",
                "comment": " Validates if value is blank. ",
                "type": "Value -> Error"
            },
            {
                "name": "isEmail",
                "comment": " Validates if value is an email address. ",
                "type": "Value -> Error"
            },
            {
                "name": "isEmpty",
                "comment": " Validates if value is empty. ",
                "type": "Value -> Error"
            },
            {
                "name": "isExcluded",
                "comment": " Validates if value is excluded from list. ",
                "type": "List String -> Value -> Error"
            },
            {
                "name": "isFloat",
                "comment": " Validates if value is a float. ",
                "type": "Value -> Error"
            },
            {
                "name": "isGreaterThan",
                "comment": " Validates if value is greater than minimum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isGreaterThanEqualTo",
                "comment": " Validates if value is greater than or equal to minimum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isIncluded",
                "comment": " Validates if value is included in list. ",
                "type": "List String -> Value -> Error"
            },
            {
                "name": "isInteger",
                "comment": " Validates if value is an integer. ",
                "type": "Value -> Error"
            },
            {
                "name": "isLengthBetween",
                "comment": " Validates if value length is between minimum and maximum *inclusive* range. ",
                "type": "Int -> Int -> Value -> Error"
            },
            {
                "name": "isLengthGreaterThan",
                "comment": " Validates if value length is greater than minimum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthGreaterThanEqualTo",
                "comment": " Validates if value length is greater than or equal to minimum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthLessThan",
                "comment": " Validates if value length is less than maximum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLengthLessThanEqualTo",
                "comment": " Validates if value length is less than or equal to maximum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLessThan",
                "comment": " Validates if value is less than maximum. ",
                "type": "Int -> Value -> Error"
            },
            {
                "name": "isLessThanEqualTo",
                "comment": " Validates if value is less than or equal to maximum. ",
                "type": "Int -> Value -> Error"
            }
        ],
        "binops": []
    },
    {
        "name": "FormValidator.Validator",
        "comment": "\n\nThe Form Validator validator which is the main module used to update/validate forms and fields.\n\n@docs init, fieldValues, fieldValue, fieldErrors, updateValues, updateValuesAndValidate\n@docs updateValue, updateValueAndValidate, resetForm, resetField, updateAndValidateValues\n@docs updateAndValidateValue, validateForm, validateField, isFormInvalid, isFieldInvalid\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "fieldErrors",
                "comment": " Answer all errors for a field. ",
                "type": "key -> Form key -> Errors"
            },
            {
                "name": "fieldValue",
                "comment": " Answer single field value. ",
                "type": "key -> Form key -> String"
            },
            {
                "name": "fieldValues",
                "comment": " Answer multiple field values. ",
                "type": "key -> Form key -> List String"
            },
            {
                "name": "init",
                "comment": " Initialize a new form field. ",
                "type": "key -> Validators -> Field key"
            },
            {
                "name": "isFieldInvalid",
                "comment": " Answer if field is invalid. ",
                "type": "key -> Form key -> Bool"
            },
            {
                "name": "isFormInvalid",
                "comment": " Answer if form is invalid. ",
                "type": "Form key -> Bool"
            },
            {
                "name": "resetField",
                "comment": " Reset field value(s) and errors to initial state. ",
                "type": "key -> Form key -> Form key"
            },
            {
                "name": "resetForm",
                "comment": " Reset field values and errors for entire form to initial state. ",
                "type": "Form key -> Form key"
            },
            {
                "name": "updateAndValidateValue",
                "comment": "\n**DEPRECATED: Will be removed in 2.0.0. Use `updateValueAndValidate` instead.**\n\nUpdate field value and validate it.\n",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateAndValidateValues",
                "comment": "\n**DEPRECATED: Will be removed in 2.0.0. Use `updateValuesAndValidate` instead.**\n\nUpdate field values and validate them.\n",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "updateValue",
                "comment": " Update single field value without validation. ",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateValueAndValidate",
                "comment": " Update field value and validate it. ",
                "type": "key -> Value -> Form key -> Form key"
            },
            {
                "name": "updateValues",
                "comment": " Update multiple field values without validation. ",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "updateValuesAndValidate",
                "comment": " Update field values and validate them. ",
                "type": "key -> Values -> Form key -> Form key"
            },
            {
                "name": "validateField",
                "comment": " Validate field. ",
                "type": "key -> Form key -> Form key"
            },
            {
                "name": "validateForm",
                "comment": " Validate form (including all fields). ",
                "type": "Form key -> Form key"
            }
        ],
        "binops": []
    },
    {
        "name": "FormValidator.Models",
        "comment": "\n\nThe Form Validator component models.\n\n@docs Form, Field, Validators, Validator, Values, Value, Errors, Error\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "Error",
                "comment": " The corresponding error message of an invalid field value. ",
                "args": [],
                "type": "Maybe String"
            },
            {
                "name": "Errors",
                "comment": " The corresponding error messages of an invalid field value(s). ",
                "args": [],
                "type": "List Error"
            },
            {
                "name": "Field",
                "comment": "\nThe form field, identified by unique key, which stores a value, validators of that value,\nand validation errors (if any).\n",
                "args": [
                    "key"
                ],
                "type": "{ key : key, value : String, validators : Validators, errors : Errors }"
            },
            {
                "name": "Form",
                "comment": " The form model which stores a list of fields for input and validation. ",
                "args": [
                    "key"
                ],
                "type": "List (Field key)"
            },
            {
                "name": "Validator",
                "comment": " A field validator which evaluates to an error string (invalid) or nothing at all (valid). ",
                "args": [],
                "type": "String -> Maybe String"
            },
            {
                "name": "Validators",
                "comment": " A list of validators for a field. ",
                "args": [],
                "type": "List Validator"
            },
            {
                "name": "Value",
                "comment": " A field value to be validated. ",
                "args": [],
                "type": "String"
            },
            {
                "name": "Values",
                "comment": " A list of field values to be validated. ",
                "args": [],
                "type": "List Value"
            }
        ],
        "values": [],
        "binops": []
    },
    {
        "name": "FormValidator.Patterns",
        "comment": "\n\nThe Form Validator regular expression patterns.\n\n@docs blank, email\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "blank",
                "comment": " Answer regular expression for blank string. ",
                "type": "Regex"
            },
            {
                "name": "email",
                "comment": " Answer regular expression for email address. ",
                "type": "Regex"
            }
        ],
        "binops": []
    }
]