[
    {
        "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 Effects.tick for animation logic.\n\n# Model\n@docs Transition, WithTransition, initial\n\n# Timeline\n@docs Timeline, timeline, defaultTimeline, withExitDuration, withEnterDuration\n\n# Update\n@docs Action, init, update\n\n# View\n@docs getValue, getStatus, Status\n",
        "unions": [
            {
                "name": "Action",
                "comment": " Transition action, to be wrapped in your own action type. ",
                "args": [
                    "a"
                ],
                "cases": []
            },
            {
                "name": "Status",
                "comment": " Transition status. ",
                "args": [],
                "cases": [
                    [
                        "Exit",
                        []
                    ],
                    [
                        "Enter",
                        []
                    ],
                    [
                        "Done",
                        []
                    ]
                ]
            },
            {
                "name": "Transition",
                "comment": " Opaque type for transition state storage. ",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Timeline",
                "comment": " Timeline of the transition ",
                "args": [
                    "a"
                ],
                "type": "{ exitDuration : Float, action : a, enterDuration : Float }"
            },
            {
                "name": "WithTransition",
                "comment": " Extended type for the target model holding the transition. ",
                "args": [
                    "model"
                ],
                "type": "{ model | transition : Transition }"
            }
        ],
        "values": [
            {
                "name": "defaultTimeline",
                "comment": " Default timeline for this action: exit of 100ms then enter of 200ms. ",
                "type": "a -> Timeline a"
            },
            {
                "name": "getStatus",
                "comment": " Extract current animation status. ",
                "type": "Transition -> Status"
            },
            {
                "name": "getValue",
                "comment": " Extract current animation value (a float between 0 and 1). ",
                "type": "Transition -> Float"
            },
            {
                "name": "init",
                "comment": " A shortcut to `update` that initialize the transition with the following parameters:\n* `actionWrapper` to wrap Transit's action into your app's Action type (saves you one `Effects.map`)\n* `timeline` to setup transition\n* `target` is the model storing the Transition, that will be updated with new transition state\nReturns a tuple that you can directly return from your `update`.\n ",
                "type": "(Action a -> a) -> Timeline a -> WithTransition target -> ( WithTransition target, Effects a )"
            },
            {
                "name": "initial",
                "comment": " Empty transition state, as initial value in the model. ",
                "type": "Transition"
            },
            {
                "name": "timeline",
                "comment": " Build the timeline:\n> exitDuration => action => enterDuration\n",
                "type": "Float -> a -> Float -> Timeline a"
            },
            {
                "name": "update",
                "comment": " Where all the logic happens. Run transition steps, and triggers timeline's action when needed.\n* `actionWrapper` to wrap Transit's action into app's Action type (saves one `Effects.map`),\n* `action` is the Transit action to process,\n* `target` is the model storing the Transition, that will be updated with new transition state.\n ",
                "type": "(Action a -> a) -> Action a -> WithTransition target -> ( WithTransition target, Effects a )"
            },
            {
                "name": "withEnterDuration",
                "comment": " Update enter duration of timeline. ",
                "type": "Float -> Timeline a -> Timeline a"
            },
            {
                "name": "withExitDuration",
                "comment": " Update exit duration of timeline. ",
                "type": "Float -> Timeline a -> Timeline a"
            }
        ],
        "binops": []
    }
]