[
    {
        "name": "Transit",
        "comment": " Styled transitions with minimal boilerplate, typically for page transitions in single page apps.\n\nSee README or [example](https://github.com/etaque/elm-transit/blob/master/example/src/Main.elm) for usage.\n\nUses elm-animations and Cmd.tick for animation logic.\n\n# State\n@docs Transition, WithTransition, empty\n\n# Update\n@docs Msg, start, tick, subscriptions\n\n# View\n@docs getValue, getStep, Step\n",
        "unions": [
            {
                "name": "Msg",
                "comment": " Transition msg, to be wrapped in your own msg type.\n",
                "args": [
                    "msg"
                ],
                "cases": []
            },
            {
                "name": "Step",
                "comment": " Transition step: Exit -> *send message* -> Enter -> Done.\n",
                "args": [],
                "cases": [
                    [
                        "Exit",
                        []
                    ],
                    [
                        "Enter",
                        []
                    ],
                    [
                        "Done",
                        []
                    ]
                ]
            },
            {
                "name": "Transition",
                "comment": " Opaque type for transition state storage.\n",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "WithTransition",
                "comment": " Extended type for the parent model holding the transition.\n",
                "args": [
                    "model"
                ],
                "type": "{ model | transition : Transition }"
            }
        ],
        "values": [
            {
                "name": "empty",
                "comment": " Empty transition state, as initial value in the model.\n",
                "type": "Transition"
            },
            {
                "name": "getStep",
                "comment": " Extract current animation step.\n",
                "type": "Transition -> Step"
            },
            {
                "name": "getValue",
                "comment": " Extract current animation value (a float between 0 and 1).\n",
                "type": "Transition -> Float"
            },
            {
                "name": "start",
                "comment": " Start the transition with the following parameters:\n\n* `tagger` to wrap Transit's Msg into your app's Msg type (consistent with `tick` signature, saves you one `Cmd.map`)\n* `parentMsg` to send at end of exit\n* `durations` of transition steps (exit phase then enter phase)\n* `parent` is the model storing the Transition, to update with new transition state\n\nReturns a tuple that you can directly emit from your `update`.\n",
                "type": "(Msg msg -> msg) -> msg -> ( Time, Time ) -> WithTransition parent -> ( WithTransition parent, Cmd msg )"
            },
            {
                "name": "subscriptions",
                "comment": " Animation frame subscription. Must be called by your component's subscription function.\n",
                "type": "(Msg msg -> msg) -> WithTransition parent -> Sub msg"
            },
            {
                "name": "tick",
                "comment": " Where all the logic happens. Run transition steps, and triggers timeline's parent message when needed.\n\n* `tagger` to wrap Transit's msg into app's Msg type, has to be same type of timeline.msg,\n* `msg` is the Transit message to process,\n* `parent` is the model storing the Transition, for transition state update.\n",
                "type": "(Msg msg -> msg) -> Msg msg -> WithTransition parent -> ( WithTransition parent, Cmd msg )"
            }
        ],
        "binops": []
    }
]