[{"name":"Control","comment":"\n\n\n# Creating a form\n\n@docs Control, Form, toForm\n\n\n# Basic controls\n\n@docs bool, int, float, string, char, enum\n\n\n# Basic combinators\n\n@docs wrapper, tuple, triple, maybe, result, list, dict, set, array\n\n\n# Creating a new control\n\n@docs ControlConfig, create\n\n\n# Validating controls\n\n\n## Simple validation\n\n@docs failIf\n\n\n## Multi-field validation\n\nYou may want display errors on one or more controls based on the validation of\nanother control higher up the tree.\n\nTake the example of a password creation form. You want to validate that the\n\"Enter password\" and \"Confirm password\" fields both contain the same string, and\nshow helpful error messages on both fields if they don't. You can achieve this\nas follows:\n\n    passwordControl =\n        record\n            (\\password confirmation ->\n                { password = password\n                , confirmation = confirmation\n                }\n            )\n            |> field \"Enter password\"\n                (string\n                    |> catchFlag\n                        \"flag-passwords-do-not-match\"\n                        \"Must match 'Confirm password' field\"\n                )\n            |> field \"Confirm password\"\n                (string\n                    |> catchFlag\n                        \"flag-passwords-do-not-match\"\n                        \"Must match 'Enter password' field\"\n                )\n            |> end\n            |> throwFlagIf\n                (\\{ password, confirmation } -> password /= confirmation)\n                \"flag-passwords-do-not-match\"\n\n@docs throwFlagIf, catchFlag\n\n\n## List validation\n\n@docs throwFlagsAt\n\n\n# Configuring controls\n\n@docs initWith, debounce\n\n\n# Building record combinators\n\n@docs record, field, hiddenField, readOnlyField, end, layout\n\n\n# Building custom type combinators\n\n@docs customType, tag0, tag1, tag2, tag3, tag4, tag5\n\n\n# Form internals\n\nThese are types that you will see in your form's `State` and `Delta` type signatures.\n\n@docs State, Delta, ListDelta, End\n\n\n# Internal stuff that you can ignore\n\nA user of this package shouldn't need to know about any of these types -\nthey are only exposed to make it possible to write type signatures.\n\n@docs Access, AdvancedControl, Builder, ControlFns, Flag, RecordFns, Status, ViewConfig, Path\n\n","unions":[{"name":"Access","comment":" An internal type used to represent whether a record field is editable, read-only, or hidden\n","args":[],"cases":[]},{"name":"AdvancedControl","comment":" A slightly more flexible version of `Control`\n","args":["input","state","delta","output"],"cases":[]},{"name":"Builder","comment":" An internal type used to differentiate between builders for record and custom type combinators\n","args":["r","c"],"cases":[]},{"name":"Delta","comment":" A `Delta` is the form's equivalent of an Elm program's `Msg` type. It is\nused internally within a form to update its state.\n","args":["delta"],"cases":[]},{"name":"End","comment":" Under the hood, this library encodes complex Elm types (such as records and\ncustom types) as nested tuples, which are used in both the `State` and `Delta`\ntypes for each `Control`. The `End` type is used to mark the end of a nested\ntuple.\n\nFor example, the `State` for this Elm type:\n\n    type alias User =\n        { name : String, age : Int }\n\nCould be encoded as:\n\n    ( String, ( Int, End ) )\n\n","args":[],"cases":[]},{"name":"Flag","comment":" Some internal stuff needed to handle validations\n","args":[],"cases":[]},{"name":"ListDelta","comment":" Special `Delta` type used only by `list` controls\n","args":["delta"],"cases":[]},{"name":"State","comment":" `State` is the form's equivalent of an Elm program's `Model`type. It is\nused to manage the form's internal state.\n","args":["state"],"cases":[]},{"name":"Status","comment":" an internal type needed to represent the validation state of a control\n","args":[],"cases":[]}],"aliases":[{"name":"Control","comment":" A `Control` is the basic unit from which forms are composed. This library\nprovides various example controls and combinators that you can use to build a\nform for any arbitrarily complex Elm type.\n","args":["state","delta","output"],"type":"Control.AdvancedControl output state delta output"},{"name":"ControlConfig","comment":" Configuration for a custom control. You need to supply the following fields:\n\n  - `initEmpty`: a default initial \"empty\" value for the `state` of the control. For a control whose `state` is of type `String`, this might be `\"\"`, for a number it might be `0`.\n  - `initWith`: a function that initialises the control's `state` from a value of the control's `output` type. For a control that outputs an `Int`, but whose `state` is a `String`, this might be `String.fromInt`.\n  - `update`: a function that updates the `state` of the control based on its existing `state` and a `delta` type that it receives. This is exactly analogous to an Elm program's update function, where `state` = `Model` and `delta` = `Msg`.\n  - `view`: a function that outputs `Html delta` based on the `state` of the control. This is exactly analogous to an Elm program's view function.\n  - `parse`: a function that attempts to parse the control's state into its output type, producing a result. If parsing fails, it can provide a list of errors.\n\n","args":["state","delta","output"],"type":"{ initEmpty : state, initWith : output -> state, update : delta -> state -> state, view : state -> Html.Html delta, parse : state -> Result.Result (List.List String.String) output }"},{"name":"ControlFns","comment":" Some internal stuff needed to build up record and custom type controls\n","args":["input","state","delta","output"],"type":"{ delta : Control.Delta delta, index : Basics.Int, init : Control.State state, initWith : input -> Control.State state, baseUpdate : Basics.Float -> Control.Delta delta -> Control.State state -> ( Control.State state, Platform.Cmd.Cmd (Control.Delta delta) ), update : Control.Delta delta -> Control.State state -> ( Control.State state, Platform.Cmd.Cmd (Control.Delta delta) ), view : Control.ViewConfig state -> Html.Html (Control.Delta delta), childViews : Control.ViewConfig state -> List.List (Html.Html (Control.Delta delta)), parse : Control.State state -> Result.Result (List.List ( String.String, String.String )) output, path : Control.Path, emitFlags : Control.State state -> List.List Control.Flag, collectDebouncingReceivers : Control.State state -> List.List Control.Flag, collectErrors : Control.State state -> List.List Control.Flag -> List.List ( String.String, String.String ), receiverCount : List.List Control.Flag, setAllIdle : Control.State state -> Control.State state }"},{"name":"Form","comment":" A `Form` is an interface containing functions that you can use in your\nprogram to initialise, view, update and submit your form.\n","args":["state","delta","output","msg"],"type":"{ init : Control.State state, initWith : output -> Control.State state, update : Control.Delta delta -> Control.State state -> ( Control.State state, Platform.Cmd.Cmd msg ), view : Control.State state -> Html.Html msg, submit : Control.State state -> ( Control.State state, Result.Result (List.List ( String.String, String.String )) output ) }"},{"name":"Path","comment":" an internal type needed to track the position of a control within a tree of\ncontrols\n","args":[],"type":"Path.Path"},{"name":"RecordFns","comment":" Some internal stuff needed to build up a record control\n","args":["input","state","delta","output","recordOutput"],"type":"{ access : Control.Access, field : Control.ControlFns input state delta output, fromInput : recordOutput -> output }"},{"name":"ViewConfig","comment":" Some internal stuff needed to view controls\n","args":["state"],"type":"{ state : state, status : Control.Status, flags : List.List Control.Flag, selected : Basics.Int }"}],"values":[{"name":"array","comment":" A combinator that produces an `Array` from a control of a given type.\n\n    myArrayControl =\n        array int\n\n","type":"Control.Control state delta output -> Control.Control ( Control.State (List.List (Control.State state)), Control.End ) ( Control.Delta (Control.ListDelta delta), Control.End ) (Array.Array output)"},{"name":"bool","comment":" A control that produces a Boolean value. Renders as an HTML radio control.\n","type":"String.String -> String.String -> Control.Control Basics.Bool Basics.Bool Basics.Bool"},{"name":"catchFlag","comment":" Catch a \"flag\" thrown by another `Control` and display an error on this\ncontrol.\n\nThis is meant to be used in combination with `throwFlagIf`, which throws the \"flag\".\n\n","type":"String.String -> String.String -> Control.Control state delta output -> Control.Control state delta output"},{"name":"char","comment":" A control that produces a `Char`. Renders as an HTML text input.\n","type":"Control.Control String.String String.String Char.Char"},{"name":"create","comment":" Create a simple control, with any arbitrary `state` and `delta` types, and\nproducing any arbitrary `output` type.\n\nHere's how we could create a control like the famous\n[counter example](https://elm-lang.org/examples/buttons) from the Elm Guide\n\n    type CounterDelta\n        = Increment\n        | Decrement\n\n    counterControl : Control Int CounterDelta Int\n    counterControl =\n        create\n            { initEmpty = 0\n            , initWith = identity\n            , parse = Ok\n            , update =\n                \\delta state ->\n                    case delta of\n                        Increment ->\n                            state + 1\n\n                        Decrement ->\n                            state - 1\n            , view =\n                \\state ->\n                    Html.div []\n                        [ Html.button\n                            [ Html.Attributes.type_ \"button\"\n                            , Html.Events.onClick Increment\n                            ]\n                            [ Html.text \"+\" ]\n                        , Html.div [] [ Html.text <| String.fromInt state ]\n                        , Html.button\n                            [ Html.Attributes.type_ \"button\"\n                            , Html.Events.onClick Decrement\n                            ]\n                            [ Html.text \"-\" ]\n                        ]\n            }\n\n","type":"Control.ControlConfig state delta output -> Control.Control state delta output"},{"name":"customType","comment":" A combinator that produces a custom type.\n\n    type MyCustomType\n        = NoArgs\n        | OneArg String\n        | TwoArgs Int Float\n\n    myCustomTypeControl =\n        customType\n            (\\noArgs oneArg twoArgs tag ->\n                case tag of\n                    NoArgs ->\n                        noArgs\n\n                    OneArg arg1 ->\n                        oneArg arg1\n\n                    TwoArgs arg1 arg2 ->\n                        TwoArgs arg1 arg2\n            )\n            |> tag0 \"NoArgs\" NoArgs\n            |> tag1 \"OneArg\" OneArg string\n            |> tag2 \"TwoArgs\" TwoArgs int float\n            |> end\n\n","type":"b -> Control.Builder r { applyInputs : a15 -> a15, deltaAfter : Control.End, deltaAfters : Control.End, deltaBefore : a14 -> a14, deltaBefores : a13 -> a13, destructor : b, flagEmitter : a12 -> a12, errorCollector : a11 -> a11, fns : c -> d -> d, idleSetter : a10 -> a10, index : number, labels : List.List e, makeDeltaSetters : a9 -> a9, makeStateSetters : a8 -> a8, parser : a7 -> a7, debouncingReceiverCollector : a6 -> a6, stateAfter : Control.End, stateAfters : Control.End, stateBefore : a5 -> a5, stateBefores : a4 -> a4, stateInserter : a3 -> a3, states : f -> g -> g, toArgStates : a2 -> a2, updater : a1 -> a1, viewer : a -> a }"},{"name":"debounce","comment":" Debounce a `Control` for a number of milliseconds before it will display\nany parsing or validation errors. This can be used to allow the user to finish\ntyping into a text input before we show them feedback.\n\n    string\n        |> debounce 500\n\n","type":"Basics.Float -> Control.Control state delta output -> Control.Control state delta output"},{"name":"dict","comment":" A combinator that produces a `Dict` from controls of given key and value\ntypes. The key type must be `comparable`.\n\n    myDictControl =\n        dict \"Key\" int \"Value\" string\n\n","type":"String.String -> Control.Control keyState keyDelta comparable -> String.String -> Control.Control valueState valueDelta value -> Control.Control ( Control.State (List.List (Control.State ( Control.State keyState, ( Control.State valueState, Control.End ) ))), Control.End ) ( Control.Delta (Control.ListDelta ( Control.Delta keyDelta, ( Control.Delta valueDelta, Control.End ) )), Control.End ) (Dict.Dict comparable value)"},{"name":"end","comment":" Finalise the construction of a `record` or `customType` combinator.\n\n    type alias Hello =\n        { hello : String }\n\n    helloControl =\n        record Hello\n            |> field \"Hello\" string\n            |> end\n\n","type":"Control.Builder { d | afters : afters1, befores : Control.End -> befores1, fields : Control.Path -> Control.End -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ), flagEmitter : (List.List Control.Flag -> Control.End -> Control.End -> List.List Control.Flag) -> List.List Control.Flag -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ) -> List.List Control.Flag, errorCollector : (List.List Control.Flag -> List.List ( String.String, String.String ) -> Control.End -> Control.End -> List.List ( String.String, String.String )) -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ) -> List.List ( String.String, String.String ), idleSetter : (Control.End -> Control.End -> Control.End) -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ) -> ( Control.State state, restStates ), initialiser : (input -> Control.End -> Control.End) -> input -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ), labels : List.List String.String, makeSetters : (Control.End -> Control.End -> Control.End) -> befores1 -> afters1 -> ( Control.Delta delta -> recordDelta, restDeltaSetters ), parser : (Result.Result (List.List ( String.String, String.String )) output -> Control.End -> Control.End -> Result.Result (List.List ( String.String, String.String )) output) -> Result.Result (List.List ( String.String, String.String )) output1_1 -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ) -> Result.Result (List.List ( String.String, String.String )) output, debouncingReceiverCollector : (List.List Control.Flag -> Control.End -> Control.End -> List.List Control.Flag) -> List.List Control.Flag -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.State state, restStates ) -> List.List Control.Flag, states : Control.Path -> Control.End -> ( Control.State state, restStates ), toOutput : output1_1, updater : ({ newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) } -> Control.End -> Control.End -> Control.End -> Control.End -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) }) -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : ( Control.State state, restStates ) -> ( Control.State state, restStates ) } -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state, restStates ) -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) }, viewer : (List.List (Html.Html (Control.Delta ( Control.Delta delta, restDeltas ))) -> List.List Control.Flag -> Control.End -> Control.End -> Control.End -> List.List (Html.Html (Control.Delta ( Control.Delta delta, restDeltas )))) -> List.List (Html.Html (Control.Delta ( Control.Delta delta, restDeltas ))) -> List.List Control.Flag -> ( Control.RecordFns input2 state delta output2 recordOutput, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.State state, restStates ) -> List.List (Html.Html (Control.Delta ( Control.Delta delta, restDeltas ))) } { e | applyInputs : (state1 -> Control.End -> state1) -> (stateSetter -> state0) -> ( stateSetter, restStateSetters ) -> input -> Control.State ( Control.State state, restStates ), deltaAfters : afters, deltaBefores : Control.End -> befores, destructor : stateSetter -> state0, flagEmitter : (List.List Control.Flag -> Basics.Int -> Control.End -> Control.End -> List.List Control.Flag) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.State state, restStates ) -> List.List Control.Flag, errorCollector : (List.List Control.Flag -> List.List ( String.String, String.String ) -> Control.End -> Control.End -> List.List ( String.String, String.String )) -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.State state, restStates ) -> List.List ( String.String, String.String ), fns : Control.Path -> Control.End -> ( Control.ControlFns input1 state delta output1, restFns ), idleSetter : (Basics.Int -> Control.End -> Control.End -> Control.End) -> Basics.Int -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.State state, restStates ) -> ( Control.State state, restStates ), labels : List.List String.String, makeDeltaSetters : (Control.End -> Control.End -> Control.End) -> befores -> afters -> ( Control.Delta delta -> ( Control.Delta delta, restDeltas ), restSetters ), makeStateSetters : (a1 -> b1 -> Control.End -> Control.End -> Control.End -> Control.End -> Control.End) -> c -> ( Control.State state, restStates ) -> ( Control.ControlFns input1 state delta output1, restFns ) -> f -> g -> h -> ( stateSetter, restStateSetters ), parser : (a -> b -> Control.End -> Control.End -> a) -> Result.Result (List.List ( String.String, String.String )) value -> Basics.Int -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.State state, restStates ) -> Result.Result (List.List ( String.String, String.String )) output, debouncingReceiverCollector : (List.List Control.Flag -> Control.End -> Control.End -> List.List Control.Flag) -> List.List Control.Flag -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.State state, restStates ) -> List.List Control.Flag, stateAfters : h, stateBefores : Control.End -> g, stateInserter : c, states : Control.Path -> Control.End -> ( Control.State state, restStates ), toArgStates : Control.End -> f, updater : ({ newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) } -> Control.End -> Control.End -> Control.End -> Control.End -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) }) -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : ( Control.State state, restStates ) -> ( Control.State state, restStates ) } -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.Delta delta -> ( Control.Delta delta, restDeltas ), restSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state, restStates ) -> { newCmds : List.List (Platform.Cmd.Cmd ( Control.Delta delta, restDeltas )), newStates : Control.End -> ( Control.State state, restStates ) }, viewer : (Maybe.Maybe (Html.Html ( Control.Delta delta, restDeltas )) -> List.List Control.Flag -> Basics.Int -> Control.End -> Control.End -> Control.End -> Maybe.Maybe (Html.Html ( Control.Delta delta, restDeltas ))) -> Maybe.Maybe (Html.Html ( Control.Delta delta, restDeltas )) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input1 state delta output1, restFns ) -> ( Control.Delta delta -> ( Control.Delta delta, restDeltas ), restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html ( Control.Delta delta, restDeltas )) } -> Control.AdvancedControl input ( Control.State state, restStates ) ( Control.Delta delta, restDeltas ) output"},{"name":"enum","comment":" A control that produces a custom type where none of the\nvariants have any payload. Renders as an HTML radio input.\n\n    type Colour\n        = Red\n        | Green\n        | Blue\n\n    colourControl : Control Colour Colour Colour\n    colourControl =\n        enum\n            ( \"Red\", Red )\n            [ ( \"Green\", Green )\n            , ( \"Blue\", Blue )\n            ]\n\n","type":"( String.String, enum ) -> ( String.String, enum ) -> List.List ( String.String, enum ) -> Control.Control enum enum enum"},{"name":"failIf","comment":" Display an error on a `Control` if its output fails to meet the predicate.\n\n    int\n        |> failIf\n            (\\int_ -> int_ < 1)\n            \"Integer must be greater than zero!\"\n\n","type":"(output -> Basics.Bool) -> String.String -> Control.Control state delta output -> Control.Control state delta output"},{"name":"field","comment":" Add a field to a `record` combinator.\n\n    type alias Hello =\n        { hello : String }\n\n    helloControl =\n        record Hello\n            |> field \"Hello\" string\n            |> end\n\n","type":"String.String -> c -> Control.AdvancedControl input state delta output -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> ( { field : Control.ControlFns input state delta output, fromInput : c, access : Control.Access }, d ) -> e, states : Control.Path -> ( Control.State state, f ) -> g, updater : h -> { newStates : restStates -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> restFns -> restDeltaSetters -> restDeltas -> restStates -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> k -> l -> m -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) output1 -> o -> p -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> r -> s -> s, initialiser : t -> recordInput -> u -> v, before : ( Control.Delta w, x ) -> y, befores : ( ( Control.Delta w, x ) -> y, z ) -> a1, after : b1, afters : c1, makeSetters : d1 -> befores -> afters -> next, flagEmitter : e1 -> List.List Control.Flag -> f1 -> g1 -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> i1 -> j1 -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> l1 -> m1 -> List.List Control.Flag } n1 -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> d -> e, states : Control.Path -> f -> g, updater : h -> { newStates : ( Control.State o1, restStates ) -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> ( Control.RecordFns p1 o1 q1 r1 recordOutput, restFns ) -> ( Control.Delta q1 -> recordDelta, restDeltaSetters ) -> ( Control.Delta q1, restDeltas ) -> ( Control.State o1, restStates ) -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> ( Control.RecordFns s1 t1 u1 v1 w1, k ) -> ( Control.Delta u1 -> j, l ) -> ( Control.State t1, m ) -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) (output0 -> output1) -> ( Control.RecordFns x1 y1 z1 output0 a2, o ) -> ( Control.State y1, p ) -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> ( Control.RecordFns b2 c2 d2 e2 f2, r ) -> ( Control.State c2, s ) -> ( Control.State c2, s ), initialiser : t -> recordInput -> ( Control.RecordFns g2 h2 i2 g2 recordInput, u ) -> ( Control.State h2, v ), before : x -> y, befores : z -> a1, after : ( Control.Delta j2, b1 ), afters : ( b1, c1 ), makeSetters : d1 -> ( ( value, after ) -> k2, befores ) -> ( after, afters ) -> ( value -> k2, next ), flagEmitter : e1 -> List.List Control.Flag -> ( Control.RecordFns l2 m2 n2 o2 p2, f1 ) -> ( Control.State m2, g1 ) -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.RecordFns q2 r2 s2 t2 u2, i1 ) -> ( Control.State r2, j1 ) -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> ( Control.RecordFns v2 w2 x2 y2 z2, l1 ) -> ( Control.State w2, m1 ) -> List.List Control.Flag } n1"},{"name":"float","comment":" A control that produces a `Float`. Renders as an HTML text input.\n","type":"Control.Control String.String String.String Basics.Float"},{"name":"hiddenField","comment":" Add a hidden field to a `record` combinator.\n\n    type alias Hello =\n        { hello : String }\n\n    helloControl =\n        record Hello\n            |> hiddenField \"Hello\" string\n            |> end\n\n","type":"String.String -> c -> Control.AdvancedControl input state delta output -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> ( { field : Control.ControlFns input state delta output, fromInput : c, access : Control.Access }, d ) -> e, states : Control.Path -> ( Control.State state, f ) -> g, updater : h -> { newStates : restStates -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> restFns -> restDeltaSetters -> restDeltas -> restStates -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> k -> l -> m -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) output1 -> o -> p -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> r -> s -> s, initialiser : t -> recordInput -> u -> v, before : ( Control.Delta w, x ) -> y, befores : ( ( Control.Delta w, x ) -> y, z ) -> a1, after : b1, afters : c1, makeSetters : d1 -> befores -> afters -> next, flagEmitter : e1 -> List.List Control.Flag -> f1 -> g1 -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> i1 -> j1 -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> l1 -> m1 -> List.List Control.Flag } n1 -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> d -> e, states : Control.Path -> f -> g, updater : h -> { newStates : ( Control.State o1, restStates ) -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> ( Control.RecordFns p1 o1 q1 r1 recordOutput, restFns ) -> ( Control.Delta q1 -> recordDelta, restDeltaSetters ) -> ( Control.Delta q1, restDeltas ) -> ( Control.State o1, restStates ) -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> ( Control.RecordFns s1 t1 u1 v1 w1, k ) -> ( Control.Delta u1 -> j, l ) -> ( Control.State t1, m ) -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) (output0 -> output1) -> ( Control.RecordFns x1 y1 z1 output0 a2, o ) -> ( Control.State y1, p ) -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> ( Control.RecordFns b2 c2 d2 e2 f2, r ) -> ( Control.State c2, s ) -> ( Control.State c2, s ), initialiser : t -> recordInput -> ( Control.RecordFns g2 h2 i2 g2 recordInput, u ) -> ( Control.State h2, v ), before : x -> y, befores : z -> a1, after : ( Control.Delta j2, b1 ), afters : ( b1, c1 ), makeSetters : d1 -> ( ( value, after ) -> k2, befores ) -> ( after, afters ) -> ( value -> k2, next ), flagEmitter : e1 -> List.List Control.Flag -> ( Control.RecordFns l2 m2 n2 o2 p2, f1 ) -> ( Control.State m2, g1 ) -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.RecordFns q2 r2 s2 t2 u2, i1 ) -> ( Control.State r2, j1 ) -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> ( Control.RecordFns v2 w2 x2 y2 z2, l1 ) -> ( Control.State w2, m1 ) -> List.List Control.Flag } n1"},{"name":"initWith","comment":" Initialise a `Control` using a value of the type that the `Control` outputs.\n\n    tuple \"Int\" int \"String\" string\n        |> initWith ( 1, \"hello\" )\n\n","type":"input -> Control.AdvancedControl input state delta output -> Control.AdvancedControl input state delta output"},{"name":"int","comment":" A control that produces an `Int`. Renders as an HTML text input.\n","type":"Control.Control String.String String.String Basics.Int"},{"name":"layout","comment":" Change the layout of the fields of a `record` control.\n\n    type alias MyRecord =\n        { name : String\n        , age : Int\n        }\n\n    myRecordControl =\n        record\n            (\\name age ->\n                { name = name\n                , age = age\n                }\n            )\n            |> field \"Name\" string\n            |> field \"Age\" int\n            |> end\n            |> layout (\\fieldViews config -> Html.div [] fieldViews)\n\n","type":"(List.List (Html.Html (Control.Delta delta)) -> Control.ViewConfig state -> Html.Html (Control.Delta delta)) -> Control.Control state delta output -> Control.Control state delta output"},{"name":"list","comment":" A combinator that produces a `List` of controls of a given type.\n\n    myListControl =\n        list int\n\n","type":"Control.Control state delta output -> Control.Control (List.List (Control.State state)) (Control.ListDelta delta) (List.List output)"},{"name":"maybe","comment":" A combinator that produces a `Maybe` of a control of a given type.\n\n    myMaybeControl =\n        maybe int\n\n","type":"Control.Control state delta output -> Control.Control ( Control.State (), ( Control.State ( Control.State state, Control.End ), Control.End ) ) ( Control.Delta (), ( Control.Delta ( Control.Delta delta, Control.End ), Control.End ) ) (Maybe.Maybe output)"},{"name":"readOnlyField","comment":" Add a read-only field to a `record` combinator.\n\n    type alias Hello =\n        { hello : String }\n\n    helloControl =\n        record Hello\n            |> readOnlyfield \"Hello\" string\n            |> end\n\n","type":"String.String -> c -> Control.AdvancedControl input state delta output -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> ( { field : Control.ControlFns input state delta output, fromInput : c, access : Control.Access }, d ) -> e, states : Control.Path -> ( Control.State state, f ) -> g, updater : h -> { newStates : restStates -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> restFns -> restDeltaSetters -> restDeltas -> restStates -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> k -> l -> m -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) output1 -> o -> p -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> r -> s -> s, initialiser : t -> recordInput -> u -> v, before : ( Control.Delta w, x ) -> y, befores : ( ( Control.Delta w, x ) -> y, z ) -> a1, after : b1, afters : c1, makeSetters : d1 -> befores -> afters -> next, flagEmitter : e1 -> List.List Control.Flag -> f1 -> g1 -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> i1 -> j1 -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> l1 -> m1 -> List.List Control.Flag } n1 -> Control.Builder { index : number, labels : List.List String.String, toOutput : b, fields : Control.Path -> d -> e, states : Control.Path -> f -> g, updater : h -> { newStates : ( Control.State o1, restStates ) -> recordState0, newCmds : List.List (Platform.Cmd.Cmd recordDelta) } -> ( Control.RecordFns p1 o1 q1 r1 recordOutput, restFns ) -> ( Control.Delta q1 -> recordDelta, restDeltaSetters ) -> ( Control.Delta q1, restDeltas ) -> ( Control.State o1, restStates ) -> { newStates : recordState1, newCmds : List.List (Platform.Cmd.Cmd recordDelta) }, viewer : i -> List.List (Html.Html (Control.Delta j)) -> List.List Control.Flag -> ( Control.RecordFns s1 t1 u1 v1 w1, k ) -> ( Control.Delta u1 -> j, l ) -> ( Control.State t1, m ) -> List.List (Html.Html (Control.Delta j)), parser : n -> Result.Result (List.List ( String.String, String.String )) (output0 -> output1) -> ( Control.RecordFns x1 y1 z1 output0 a2, o ) -> ( Control.State y1, p ) -> Result.Result (List.List ( String.String, String.String )) output2, idleSetter : q -> ( Control.RecordFns b2 c2 d2 e2 f2, r ) -> ( Control.State c2, s ) -> ( Control.State c2, s ), initialiser : t -> recordInput -> ( Control.RecordFns g2 h2 i2 g2 recordInput, u ) -> ( Control.State h2, v ), before : x -> y, befores : z -> a1, after : ( Control.Delta j2, b1 ), afters : ( b1, c1 ), makeSetters : d1 -> ( ( value, after ) -> k2, befores ) -> ( after, afters ) -> ( value -> k2, next ), flagEmitter : e1 -> List.List Control.Flag -> ( Control.RecordFns l2 m2 n2 o2 p2, f1 ) -> ( Control.State m2, g1 ) -> List.List Control.Flag, errorCollector : h1 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.RecordFns q2 r2 s2 t2 u2, i1 ) -> ( Control.State r2, j1 ) -> List.List ( String.String, String.String ), debouncingReceiverCollector : k1 -> List.List Control.Flag -> ( Control.RecordFns v2 w2 x2 y2 z2, l1 ) -> ( Control.State w2, m1 ) -> List.List Control.Flag } n1"},{"name":"record","comment":" A combinator that produces a record type, or any 'product' type that needs to\nbe constructed from multiple controls. (For example, the `tuple` combinator in\nthis library is built using the `record` combinator).\n\n    type alias MyRecord =\n        { name : String\n        , age : Int\n        }\n\n    myRecordControl =\n        record\n            (\\name age ->\n                { name = name\n                , age = age\n                }\n            )\n            |> field \"Name\" string\n            |> field \"Age\" int\n            |> end\n\n","type":"constructor -> Control.Builder { index : Basics.Int, labels : List.List String.String, toOutput : constructor, fields : c -> d -> d, states : e -> f -> f, updater : g -> g, viewer : h -> h, parser : i -> i, idleSetter : j -> j, initialiser : k -> k, before : l -> l, befores : m -> m, after : Control.End, afters : Control.End, makeSetters : n -> n, flagEmitter : o -> o, errorCollector : p -> p, debouncingReceiverCollector : q -> q } cus"},{"name":"result","comment":" A combinator that produces a `Result` with a given error and\nsuccess type.\n\n    myResultControl =\n        result string int\n\n","type":"Control.Control failureState failureDelta failureOutput -> Control.Control successState successDelta successOutput -> Control.Control ( Control.State ( Control.State failureState, Control.End ), ( Control.State ( Control.State successState, Control.End ), Control.End ) ) ( Control.Delta ( Control.Delta failureDelta, Control.End ), ( Control.Delta ( Control.Delta successDelta, Control.End ), Control.End ) ) (Result.Result failureOutput successOutput)"},{"name":"set","comment":" A combinator that produces a `Set` from controls of a given member\ntypes. The member type must be `comparable`.\n\n    mySetControl =\n        set string\n\n","type":"Control.Control state delta comparable -> Control.Control ( Control.State (List.List (Control.State state)), Control.End ) ( Control.Delta (Control.ListDelta delta), Control.End ) (Set.Set comparable)"},{"name":"string","comment":" A control that produces a `String`. Renders as an HTML text input.\n","type":"Control.Control String.String String.String String.String"},{"name":"tag0","comment":" Add a tag with no arguments to a custom type.\n\n    type Unit\n        = Unit\n\n    unitControl =\n        customType\n            (\\unit tag ->\n                case tag of\n                    Unit ->\n                        unit\n            )\n            |> tag0 \"Unit\"\n            |> end\n\n","type":"String.String -> output8 -> Control.Builder rec { applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : b, deltaAfters : d, deltaBefore : ( Control.Delta delta10, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta10, a16 ) -> c7, a15 ) -> c6, destructor : e, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta () -> Control.State () -> ( Control.State (), Platform.Cmd.Cmd (Control.Delta ()) ), childViews : Control.ViewConfig () -> List.List (Html.Html (Control.Delta ())), collectDebouncingReceivers : Control.State () -> List.List Control.Flag, collectErrors : Control.State () -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta (), emitFlags : Control.State () -> List.List Control.Flag, index : Basics.Int, init : Control.State (), initWith : output8 -> Control.State (), parse : Control.State () -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State () -> Control.State (), update : Control.Delta () -> Control.State () -> ( Control.State (), Platform.Cmd.Cmd (Control.Delta ()) ), view : Control.ViewConfig () -> Html.Html (Control.Delta ()) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : f, stateAfters : g, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State (), a3 ) -> c1, toArgStates : ( (output8 -> h) -> h, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder rec { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, b ), deltaAfters : ( b, d ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : e, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, f ), stateAfters : ( f, g ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"tag1","comment":" Add a tag with one argument to a custom type.\n\n    type alias MyResult =\n        Result String Int\n\n    myResultControl =\n        customType\n            (\\ok err tag ->\n                case tag of\n                    Ok value ->\n                        ok value\n\n                    Err error ->\n                        err error\n            )\n            |> tag1 \"Ok\" Ok int\n            |> tag1 \"Err\" Err string\n            |> end\n\n","type":"String.String -> (output9 -> output8) -> Control.AdvancedControl output9 state8 delta10 output9 -> Control.Builder r { applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : d, deltaAfters : e, deltaBefore : ( Control.Delta delta11, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta11, a16 ) -> c7, a15 ) -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta ( Control.Delta delta10, Control.End ) -> Control.State ( Control.State state8, Control.End ) -> ( Control.State ( Control.State state8, Control.End ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta delta10, Control.End )) ), childViews : Control.ViewConfig ( Control.State state8, Control.End ) -> List.List (Html.Html (Control.Delta ( Control.Delta delta10, Control.End ))), collectDebouncingReceivers : Control.State ( Control.State state8, Control.End ) -> List.List Control.Flag, collectErrors : Control.State ( Control.State state8, Control.End ) -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta ( Control.Delta delta10, Control.End ), emitFlags : Control.State ( Control.State state8, Control.End ) -> List.List Control.Flag, index : Basics.Int, init : Control.State ( Control.State state8, Control.End ), initWith : ( output9, b ) -> Control.State ( Control.State state8, Control.End ), parse : Control.State ( Control.State state8, Control.End ) -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State ( Control.State state8, Control.End ) -> Control.State ( Control.State state8, Control.End ), update : Control.Delta ( Control.Delta delta10, Control.End ) -> Control.State ( Control.State state8, Control.End ) -> ( Control.State ( Control.State state8, Control.End ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta delta10, Control.End )) ), view : Control.ViewConfig ( Control.State state8, Control.End ) -> Html.Html (Control.Delta ( Control.Delta delta10, Control.End )) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : g, stateAfters : h, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State ( Control.State state8, Control.End ), a3 ) -> c1, toArgStates : ( (( i, Control.End ) -> j) -> i -> j, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder r { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, d ), deltaAfters : ( d, e ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, g ), stateAfters : ( g, h ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"tag2","comment":" Add a tag with two arguments to a custom type.\n\n    type Point\n        = Point Float Float\n\n    pointControl =\n        customType\n            (\\point tag ->\n                Point x y ->\n                    point x y\n            )\n            |> tag2 Point (\"X\", float) (\"Y\", float)\n\n","type":"String.String -> (output10 -> output9 -> output8) -> ( String.String, Control.AdvancedControl output10 state9 delta11 output10 ) -> ( String.String, Control.AdvancedControl output9 state8 delta10 output9 ) -> Control.Builder r { applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : d, deltaAfters : e, deltaBefore : ( Control.Delta delta12, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta12, a16 ) -> c7, a15 ) -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) ) -> Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> ( Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) )) ), childViews : Control.ViewConfig ( Control.State state9, ( Control.State state8, Control.End ) ) -> List.List (Html.Html (Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) ))), collectDebouncingReceivers : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> List.List Control.Flag, collectErrors : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) ), emitFlags : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> List.List Control.Flag, index : Basics.Int, init : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), initWith : ( output10, ( output9, b ) ) -> Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), parse : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), update : Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) ) -> Control.State ( Control.State state9, ( Control.State state8, Control.End ) ) -> ( Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) )) ), view : Control.ViewConfig ( Control.State state9, ( Control.State state8, Control.End ) ) -> Html.Html (Control.Delta ( Control.Delta delta11, ( Control.Delta delta10, Control.End ) )) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : g, stateAfters : h, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State ( Control.State state9, ( Control.State state8, Control.End ) ), a3 ) -> c1, toArgStates : ( (( i, ( j, Control.End ) ) -> k) -> i -> j -> k, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder r { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, d ), deltaAfters : ( d, e ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, g ), stateAfters : ( g, h ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"tag3","comment":" Add a tag with three arguments to a custom type.\n\n    type Point3D\n        = Point3D Float Float Float\n\n    point3DControl =\n        customType\n            (\\point3D tag ->\n                Point3D x y z ->\n                    point3D x y z\n            )\n            |> tag3 Point3D (\"X\", float) (\"Y\", float) (\"Z\", float)\n\n","type":"String.String -> (v1_2 -> v1_1 -> v1 -> output8) -> ( String.String, Control.AdvancedControl v1_2 t1_2 u1_2 v1_2 ) -> ( String.String, Control.AdvancedControl v1_1 t1_1 u1_1 v1_1 ) -> ( String.String, Control.AdvancedControl v1 t1 u1 v1 ) -> Control.Builder r { m | applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : d, deltaAfters : e, deltaBefore : ( Control.Delta delta10, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta10, a16 ) -> c7, a15 ) -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) -> Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> ( Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) )) ), childViews : Control.ViewConfig ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> List.List (Html.Html (Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ))), collectDebouncingReceivers : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> List.List Control.Flag, collectErrors : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ), emitFlags : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> List.List Control.Flag, index : Basics.Int, init : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), initWith : ( v1_2, ( v1_1, ( v1, b ) ) ) -> Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), parse : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), update : Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) -> Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> ( Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) )) ), view : Control.ViewConfig ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) -> Html.Html (Control.Delta ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) )) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : g, stateAfters : h, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ), a3 ) -> c1, toArgStates : ( (( i, ( j, ( k, Control.End ) ) ) -> l) -> i -> j -> k -> l, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder r { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, d ), deltaAfters : ( d, e ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, g ), stateAfters : ( g, h ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"tag4","comment":" Add a tag with four arguments to a custom type.\n","type":"String.String -> (v1_3 -> v1_2 -> v1_1 -> v1 -> output8) -> ( String.String, Control.AdvancedControl v1_3 t1_3 u1_3 v1_3 ) -> ( String.String, Control.AdvancedControl v1_2 t1_2 u1_2 v1_2 ) -> ( String.String, Control.AdvancedControl v1_1 t1_1 u1_1 v1_1 ) -> ( String.String, Control.AdvancedControl v1 t1 u1 v1 ) -> Control.Builder r { n | applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : d, deltaAfters : e, deltaBefore : ( Control.Delta delta10, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta10, a16 ) -> c7, a15 ) -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) -> Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> ( Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) )) ), childViews : Control.ViewConfig ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> List.List (Html.Html (Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ))), collectDebouncingReceivers : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> List.List Control.Flag, collectErrors : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ), emitFlags : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> List.List Control.Flag, index : Basics.Int, init : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), initWith : ( v1_3, ( v1_2, ( v1_1, ( v1, b ) ) ) ) -> Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), parse : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), update : Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) -> Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> ( Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) )) ), view : Control.ViewConfig ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) -> Html.Html (Control.Delta ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) )) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : g, stateAfters : h, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ), a3 ) -> c1, toArgStates : ( (( i, ( j, ( k, ( l, Control.End ) ) ) ) -> m) -> i -> j -> k -> l -> m, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder r { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, d ), deltaAfters : ( d, e ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, g ), stateAfters : ( g, h ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"tag5","comment":" Add a tag with five arguments to a custom type.\n","type":"String.String -> (v1_4 -> v1_3 -> v1_2 -> v1_1 -> v1 -> output8) -> ( String.String, Control.AdvancedControl v1_4 t1_4 u1_4 v1_4 ) -> ( String.String, Control.AdvancedControl v1_3 t1_3 u1_3 v1_3 ) -> ( String.String, Control.AdvancedControl v1_2 t1_2 u1_2 v1_2 ) -> ( String.String, Control.AdvancedControl v1_1 t1_1 u1_1 v1_1 ) -> ( String.String, Control.AdvancedControl v1 t1 u1 v1 ) -> Control.Builder r { o | applyInputs : a18 -> state0 -> restStateSetters1 -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> restFns7 -> restStates6 -> List.List Control.Flag, deltaAfter : d, deltaAfters : e, deltaBefore : ( Control.Delta delta10, a16 ) -> c7, deltaBefores : ( ( Control.Delta delta10, a16 ) -> c7, a15 ) -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> restFns6 -> restStates5 -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> restFns5 -> restStates4 -> List.List Control.Flag, fns : Control.Path -> ( { baseUpdate : Basics.Float -> Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) ) -> Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> ( Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) )) ), childViews : Control.ViewConfig ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> List.List (Html.Html (Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) ))), collectDebouncingReceivers : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> List.List Control.Flag, collectErrors : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> List.List Control.Flag -> List.List ( String.String, String.String ), delta : Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) ), emitFlags : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> List.List Control.Flag, index : Basics.Int, init : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), initWith : ( v1_4, ( v1_3, ( v1_2, ( v1_1, ( v1, b ) ) ) ) ) -> Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), parse : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> Result.Result (List.List ( String.String, String.String )) output8, path : Control.Path, receiverCount : List.List Control.Flag, setAllIdle : Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), update : Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) ) -> Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> ( Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), Platform.Cmd.Cmd (Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) )) ), view : Control.ViewConfig ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ) -> Html.Html (Control.Delta ( Control.Delta u1_4, ( Control.Delta u1_3, ( Control.Delta u1_2, ( Control.Delta u1_1, ( Control.Delta u1, Control.End ) ) ) ) )) }, a12 ) -> c5, idleSetter : a11 -> Basics.Int -> restFns4 -> restStates3 -> restStates3, index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> befores1 -> afters1 -> next, makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> restFns3 -> restToArgStates -> befores -> afters -> restStateSetters, parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> restFns2 -> restStates2 -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : g, stateAfters : h, stateBefore : ( Maybe.Maybe a19, a6 ) -> c3, stateBefores : ( ( Maybe.Maybe a19, a6 ) -> c3, a5 ) -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (restArgStates -> tagStates) -> restMaybeArgStates -> restArgStates -> Control.State tagStates, states : Control.Path -> ( Control.State ( Control.State t1_4, ( Control.State t1_3, ( Control.State t1_2, ( Control.State t1_1, ( Control.State t1, Control.End ) ) ) ) ), a3 ) -> c1, toArgStates : ( (( i, ( j, ( k, ( l, ( m, Control.End ) ) ) ) ) -> n) -> i -> j -> k -> l -> m -> n, a2 ) -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : restStates1 -> recordState0 } -> restFns1 -> restDeltaSetters -> restDeltas -> restStates1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> restFns -> restSetters -> restStates -> Maybe.Maybe (Html.Html delta1) } -> Control.Builder r { applyInputs : a18 -> (stateSetter1 -> state0) -> ( stateSetter1, restStateSetters1 ) -> state1_1, debouncingReceiverCollector : a17 -> List.List Control.Flag -> ( Control.ControlFns input6 state7 delta9 output7, restFns7 ) -> ( Control.State state7, restStates6 ) -> List.List Control.Flag, deltaAfter : ( Control.Delta delta8, d ), deltaAfters : ( d, e ), deltaBefore : a16 -> c7, deltaBefores : a15 -> c6, destructor : f, errorCollector : a14 -> List.List Control.Flag -> List.List ( String.String, String.String ) -> ( Control.ControlFns input5 state6 delta7 output6, restFns6 ) -> ( Control.State state6, restStates5 ) -> List.List ( String.String, String.String ), flagEmitter : a13 -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input4 state5 delta6 output5, restFns5 ) -> ( Control.State state5, restStates4 ) -> List.List Control.Flag, fns : Control.Path -> a12 -> c5, idleSetter : a11 -> Basics.Int -> ( Control.ControlFns input3 state4 delta5 output4, restFns4 ) -> ( Control.State state4, restStates3 ) -> ( Control.State state4, restStates3 ), index : Basics.Int, labels : List.List String.String, makeDeltaSetters : a10 -> ( ( value, after1 ) -> delta4, befores1 ) -> ( after1, afters1 ) -> ( value -> delta4, next ), makeStateSetters : a9 -> ((Basics.Int -> Basics.Int -> (Control.End -> state3) -> Control.End -> Control.End -> Control.State state3) -> Basics.Int -> Basics.Int -> (c4 -> c4) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ) -> ( Control.State argState1, restInits ) -> Control.State tagStates1) -> ( Control.State argState1, restInits ) -> ( Control.ControlFns fieldInput fieldState delta3 output3, restFns3 ) -> ( (fieldInput -> Control.State tagStates1) -> stateSetter, restToArgStates ) -> ( ( Maybe.Maybe (Control.State fieldState), after ) -> ( Maybe.Maybe (Control.State argState1), restMaybeArgStates1 ), befores ) -> ( after, afters ) -> ( stateSetter, restStateSetters ), parser : a8 -> Result.Result (List.List ( String.String, String.String )) output2 -> Basics.Int -> ( Control.ControlFns input2 state2 delta2 output2, restFns2 ) -> ( Control.State state2, restStates2 ) -> Result.Result (List.List ( String.String, String.String )) output2, stateAfter : ( Maybe.Maybe a7, g ), stateAfters : ( g, h ), stateBefore : a6 -> c3, stateBefores : a5 -> c2, stateInserter : a4 -> Basics.Int -> Basics.Int -> (( Control.State argState, restArgStates ) -> tagStates) -> ( Maybe.Maybe (Control.State argState), restMaybeArgStates ) -> ( Control.State argState, restArgStates ) -> Control.State tagStates, states : Control.Path -> a3 -> c1, toArgStates : a2 -> c, updater : a1 -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : ( Control.State state1, restStates1 ) -> recordState0 } -> ( Control.ControlFns input1 state1 delta output1, restFns1 ) -> ( Control.Delta delta -> recordDelta, restDeltaSetters ) -> ( Control.Delta delta, restDeltas ) -> ( Control.State state1, restStates1 ) -> { newCmds : List.List (Platform.Cmd.Cmd recordDelta), newStates : recordState1 }, viewer : a -> Maybe.Maybe (Html.Html delta1) -> List.List Control.Flag -> Basics.Int -> ( Control.ControlFns input state delta0 output, restFns ) -> ( Control.Delta delta0 -> delta1, restSetters ) -> ( Control.State state, restStates ) -> Maybe.Maybe (Html.Html delta1) }"},{"name":"throwFlagIf","comment":" Throw a \"flag\" from a `Control` if its output fails to meet the predicate.\n\nThis is meant to be used in combination with `catchFlag`, which catches the \"flag\"\nand displays an error.\n\n","type":"(output -> Basics.Bool) -> String.String -> Control.Control state delta output -> Control.Control state delta output"},{"name":"throwFlagsAt","comment":" Conditionally display an error on one or more items in a `list` control,\nbased on the output of the `list` control.\n\nThe following example will display errors on the first two items in a list of\nstrings, if and only if those first two items are \"hello\" and \"world\":\n\n    myString =\n        string\n            |> catchFlag\n                \"flag-hello-world\"\n                \"The first two items in the list must not be \\\"hello\\\" and \\\"world\\\".\")\n\n    list myString\n        |> throwFlagsAt\n            (\\list_ ->\n                case list of\n                    \"hello\" :: \"world\" :: _ -> [ 0, 1 ]\n\n                    _ -> []\n            )\n            \"flag-hello-world\"\n\n","type":"(output -> List.List Basics.Int) -> String.String -> Control.Control (List.List state) (Control.ListDelta delta) output -> Control.Control (List.List state) (Control.ListDelta delta) output"},{"name":"toForm","comment":" Convert a `Control` into a `Form` by providing:\n\n1.  A name/title for the form\n2.  A `Msg` variant for updating the form\n3.  A `Msg` variant for submitting the form\n4.  The `Control` itself\n\n```\ntype alias Msg\n    = FormUpdated (Delta Int)\n    | FormSubmitted\n\nmyForm =\n    toForm \"My Form\" FormUpdated FormSubmitted int\n```\n\n","type":"String.String -> (Control.Delta delta -> msg) -> msg -> Control.Control state delta output -> Control.Form state delta output msg"},{"name":"triple","comment":" A combinator that produces a triple of three controls of given types.\n\n    myTripleControl =\n        triple \"First\" string \"Second\" int \"Third\" float\n\n","type":"String.String -> Control.Control state1 delta1 output1 -> String.String -> Control.Control state2 delta2 output2 -> String.String -> Control.Control state3 delta3 output3 -> Control.Control ( Control.State state1, ( Control.State state2, ( Control.State state3, Control.End ) ) ) ( Control.Delta delta1, ( Control.Delta delta2, ( Control.Delta delta3, Control.End ) ) ) ( output1, output2, output3 )"},{"name":"tuple","comment":" A combinator that produces a tuple of two controls of given types.\n\n    myTupleControl =\n        tuple \"First\" string \"Second\" int\n\n","type":"String.String -> Control.Control state1 delta1 output1 -> String.String -> Control.Control state2 delta2 output2 -> Control.Control ( Control.State state1, ( Control.State state2, Control.End ) ) ( Control.Delta delta1, ( Control.Delta delta2, Control.End ) ) ( output1, output2 )"},{"name":"wrapper","comment":" A combinator that produces a wrapper type around a given type.\n\n    type Id\n        = Id Int\n\n    idControl =\n        wrapper Id (\\(Id i) -> i) int\n\n","type":"{ wrap : output -> wrapped, unwrap : wrapped -> output } -> Control.Control state delta output -> Control.Control ( Control.State state, Control.End ) ( Control.Delta delta, Control.End ) wrapped"}],"binops":[]}]