[{"name":"Debounce","comment":" Debounce tasks while keeping their lifecycle explicit in `update`.\n\nThe input remains in your application model. `Debounce` stores only the\nrevision and execution status needed to ignore superseded timers and tasks.\n\n\n# Types\n\n@docs Debounce, Msg, Status\n\n\n# Lifecycle\n\n@docs init, schedule, runNow, update\n\n\n# State\n\n@docs cancel, status\n\n","unions":[{"name":"Debounce","comment":" State for one debounced task.\n\nThe type is opaque so revision bookkeeping cannot get out of sync.\n\n","args":["error","output"],"cases":[]},{"name":"Msg","comment":" Internal messages produced by a debounced task.\n\nWrap this in one constructor of your application's `Msg` type and pass it to\n[`update`](#update).\n\n","args":["input","error","output"],"cases":[]},{"name":"Status","comment":" The observable lifecycle of a debounced task.\n\n`Waiting` means the delay has not elapsed. `Running` means the task has\nstarted. `Completed` retains its latest result until another operation starts\nor the state is cancelled.\n\n","args":["error","output"],"cases":[["Idle",[]],["Waiting",[]],["Running",[]],["Completed",["Result.Result error output"]]]}],"aliases":[],"values":[{"name":"cancel","comment":" Cancel scheduled or running work and return to `Idle`.\n\nElm does not expose the process behind `Task.perform`, so this is logical\ncancellation: later messages from the cancelled revision are ignored.\n\n","type":"Debounce.Debounce error output -> Debounce.Debounce error output"},{"name":"init","comment":" Create idle debounce state.\n","type":"Debounce.Debounce error output"},{"name":"runNow","comment":" Start a task immediately, superseding any scheduled or running task.\n\nThis is useful on submit, where the same work should run without the debounce\ndelay.\n\n","type":"(input -> Task.Task error output) -> input -> Debounce.Debounce error output -> ( Debounce.Debounce error output, Platform.Cmd.Cmd (Debounce.Msg input error output) )"},{"name":"schedule","comment":" Schedule an input to run after the given number of milliseconds.\n\nScheduling again supersedes the previous timer. Superseded timers may still\nwake, but `update` ignores them and never starts their tasks.\n\n","type":"Basics.Float -> input -> Debounce.Debounce error output -> ( Debounce.Debounce error output, Platform.Cmd.Cmd (Debounce.Msg input error output) )"},{"name":"status","comment":" Inspect the current lifecycle status.\n","type":"Debounce.Debounce error output -> Debounce.Status error output"},{"name":"update","comment":" Handle a debounce sub-message.\n\nWhen the current delay elapses, this starts the supplied task. When the task\nfinishes, its result is stored in the status. Messages from superseded\nrevisions are ignored.\n\n","type":"(input -> Task.Task error output) -> Debounce.Msg input error output -> Debounce.Debounce error output -> ( Debounce.Debounce error output, Platform.Cmd.Cmd (Debounce.Msg input error output) )"}],"binops":[]}]