[
    {
        "name": "Debounce",
        "comment": "\n\nThis is a delay-based debouncer, where given a _minimum_ delay and an action\nto issue, we'll build a stateful component that will eventually issue the action\n_once_, after being given a slew of requests within the delay timeframe.\n\n\n## Debouncer State\n\n@docs Model\n\n@docs init\n\n\n## Starting the Debouncer\n\n@docs Msg\n\n\n## Evaluating the Debouncer\n\n@docs update\n\n",
        "unions": [
            {
                "name": "Msg",
                "comment": " To bounce the debouncer, just make multiple calls to `Bounce`.\n",
                "args": [
                    "b"
                ],
                "cases": [
                    [
                        "Bounce",
                        [
                            "Maybe b -> Maybe b"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "Model",
                "comment": " The state of the debouncer\n",
                "args": [
                    "b"
                ],
                "type": "{ elapsed : Maybe (Elapsed b) }"
            }
        ],
        "values": [
            {
                "name": "init",
                "comment": " The initial debouncer\n",
                "type": "Model b"
            },
            {
                "name": "update",
                "comment": " The main logic of the debouncer.\n",
                "type": "Time -> (Maybe b -> Cmd a) -> Msg b -> Model b -> ( Model b, Cmd (Result a (Msg b)) )"
            }
        ],
        "binops": []
    }
]