[
    {
        "name": "Navigation",
        "comment": " This is a library for managing browser navigation yourself.\n\nThe core functionality is the ability to &ldquo;navigate&rdquo; to new URLs,\nchanging the address bar of the broswer *without* the browser kicking off a\nrequest to your servers. Instead, you manage the changes yourself in Elm.\n\n\n# Change the URL\n@docs newUrl, modifyUrl\n\n# Navigation\n@docs back, forward\n\n# Start your Program\n@docs program, programWithFlags, Parser, makeParser, Location\n\n",
        "unions": [
            {
                "name": "Parser",
                "comment": " This library is primarily about treating the address bar as an input to\nyour program. A `Parser` helps you turn the string in the address bar into\ndata that is easier for your app to handle.\n",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Location",
                "comment": " A bunch of information about the address bar.\n\n**Note:** These fields correspond exactly with the fields of `document.location`\nas described [here](https://developer.mozilla.org/en-US/docs/Web/API/Location).\nGood luck with that.\n\n**Note 2:** You should be using a library like [`evancz/url-parser`][parse] to\ndeal with all this stuff, so generally speaking, you should not have to deal\nwith locations directly.\n\n[parse]: https://github.com/evancz/url-parser\n",
                "args": [],
                "type": "{ href : String, host : String, hostname : String, protocol : String, origin : String, port_ : String, pathname : String, search : String, hash : String, username : String, password : String }"
            }
        ],
        "values": [
            {
                "name": "back",
                "comment": " Go back some number of pages. So `back 1` goes back one page, and `back 2`\ngoes back two pages.\n\n**Note:** You only manage the browser history that *you* created. Think of this\nlibrary as letting you have access to a small part of the overall history. So\nif you go back farther than the history you own, you will just go back to some\nother website!\n",
                "type": "Int -> Cmd msg"
            },
            {
                "name": "forward",
                "comment": " Go forward some number of pages. So `forward 1` goes forward one page, and\n`forward 2` goes forward two pages. If there are no more pages in the future,\nthis will do nothing.\n\n**Note:** You only manage the browser history that *you* created. Think of this\nlibrary as letting you have access to a small part of the overall history. So\nif you go forward farther than the history you own, the user will end up on\nwhatever website they visited next!\n",
                "type": "Int -> Cmd msg"
            },
            {
                "name": "makeParser",
                "comment": " The `makeParser` function lets you parse the navigation state any way you\nwant.\n\n**Note:** Check out the examples associated with this GitHub repo to see a\nsimple usage. See [`evancz/url-parser`][parse] for a more complex example of\nURL parsing. The approach used there makes it pretty easy to turn strings into\nstructured data, and I hope it will serve as a baseline for other URL parsing\nlibraries that folks make.\n\n[parse]: https://github.com/evancz/url-parser\n",
                "type": "(Location -> a) -> Parser a"
            },
            {
                "name": "modifyUrl",
                "comment": " Modify the current URL. This *will not* add a new entry to the browser\nhistory. It just changes the one you are on right now.\n",
                "type": "String -> Cmd msg"
            },
            {
                "name": "newUrl",
                "comment": " Step to a new URL. This will add a new entry to the browser history.\n\n**Note:** If the user has gone `back` a few pages, there will be &ldquo;future\npages&rdquo; that the user can go `forward` to. Adding a new URL in that\nscenario will clear out any future pages. It is like going back in time and\nmaking a different choice.\n",
                "type": "String -> Cmd msg"
            },
            {
                "name": "program",
                "comment": " This function augments [`Html.App.program`][doc]. The new things include:\n\n  - `Parser` &mdash; Whenever this library changes the URL, the parser you\n  provide will run. This turns the raw URL string into useful data.\n\n  - `urlUpdate` &mdash; Whenever the `Parser` produces new data, we need to\n  update our model in some way to react to the change. The `urlUpdate` function\n  handles this case. (It works exactly like the normal `update` function. Take\n  in a message, update the model.)\n\n[doc]: http://package.elm-lang.org/packages/elm-lang/html/latest/Html-App#program\n\n**Note:** The `urlUpdate` function is called every time the URL changes. This\nincludes things exposed by this library, like `back` and `newUrl`, as well as\nwhenever the user clicks the back or forward buttons of the browsers. If the\naddress changes, you should hear about it.\n",
                "type": "Parser data -> { init : data -> ( model, Cmd msg ), update : msg -> model -> ( model, Cmd msg ), urlUpdate : data -> model -> ( model, Cmd msg ), view : model -> Html msg, subscriptions : model -> Sub msg } -> Program Never"
            },
            {
                "name": "programWithFlags",
                "comment": " Works the same as the `program` function, but can handle flags. See\n[`Html.App.programWithFlags`][doc] for more information.\n\n[doc]: http://package.elm-lang.org/packages/elm-lang/html/latest/Html-App#programWithFlags\n",
                "type": "Parser data -> { init : flags -> data -> ( model, Cmd msg ), update : msg -> model -> ( model, Cmd msg ), urlUpdate : data -> model -> ( model, Cmd msg ), view : model -> Html msg, subscriptions : model -> Sub msg } -> Program flags"
            }
        ],
        "binops": []
    }
]