[
    {
        "name": "Plot",
        "comment": "\n This library aims to allow you to visualize a variety of graphs in\n an intuitve manner without comprimising flexibility regarding configuration.\n It is insprired by the elm-html api, using the `element attrs children` pattern.\n\n# Elements\n@docs Element, plot, line, area, xAxis, yAxis, Point, Style\n\n# Configuration\n\n## Meta configuration\n@docs MetaAttr, size, padding, plotStyle\n\n## Line configuration\n@docs LineAttr, lineStyle\n\n## Area configuration\n@docs AreaAttr, areaStyle\n\n## Axis configuration\n@docs AxisAttr, axisStyle, axisLineStyle\n\n### Tick values configuration\n@docs tickValues, tickDelta, tickRemoveZero\n\n### Tick view configuration\n@docs TickViewAttr, tickConfigView, tickConfigViewFunc, tickLength, tickWidth, tickStyle, tickCustomView, tickCustomViewIndexed\n\n### Label values configuration\n@docs labelValues, labelFilter\n\n### Label values configuration\n@docs LabelViewAttr, labelConfigView, labelConfigViewFunc, labelFormat, labelDisplace, labelStyle, labelCustomView, labelCustomViewIndexed\n\n## Grid configuration\n@docs verticalGrid, horizontalGrid, gridMirrorTicks, gridValues, gridStyle\n\n",
        "unions": [
            {
                "name": "Element",
                "comment": " Represents child element of the plot.\n",
                "args": [
                    "msg"
                ],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "AreaAttr",
                "comment": " The type representing an area configuration.\n",
                "args": [],
                "type": "AreaConfig -> AreaConfig"
            },
            {
                "name": "AxisAttr",
                "comment": " The type representing an axis configuration.\n",
                "args": [
                    "msg"
                ],
                "type": "AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "LabelViewAttr",
                "comment": " Type representing a label view configuration attribute.\n",
                "args": [],
                "type": "LabelViewConfig -> LabelViewConfig"
            },
            {
                "name": "LineAttr",
                "comment": " The type representing a line configuration.\n",
                "args": [],
                "type": "LineConfig -> LineConfig"
            },
            {
                "name": "MetaAttr",
                "comment": " The type representing an a meta configuration.\n",
                "args": [],
                "type": "MetaConfig -> MetaConfig"
            },
            {
                "name": "Point",
                "comment": " Convinience type to represent coordinates.\n",
                "args": [],
                "type": "( Float, Float )"
            },
            {
                "name": "Style",
                "comment": " Convinience type to represent style.\n",
                "args": [],
                "type": "List ( String, String )"
            },
            {
                "name": "TickViewAttr",
                "comment": " Type representing a tick view configuration attribute.\n",
                "args": [],
                "type": "TickViewConfig -> TickViewConfig"
            }
        ],
        "values": [
            {
                "name": "area",
                "comment": " This returns an area element resulting in an area serie rendered in your plot.\n\n    main =\n        plot [] [ area []  [ ( 0, -2 ), ( 2, 0 ), ( 3, 1 ) ] ]\n",
                "type": "List AreaAttr -> List Point -> Element msg"
            },
            {
                "name": "areaStyle",
                "comment": " Add styles to your area serie.\n\n    main =\n        plot\n            []\n            [ area\n                [ areaStyle\n                    [ ( \"fill\", \"deeppink\" )\n                    , ( \"stroke\", \"deeppink\" )\n                    , ( \"opacity\", \"0.5\" ) ]\n                    ]\n                ]\n                areaDataPoints\n            ]\n",
                "type": "Style -> AreaConfig -> AreaConfig"
            },
            {
                "name": "axisLineStyle",
                "comment": " Add styling to the axis line.\n\n    main =\n        plot\n            []\n            [ xAxis [ axisLineStyle [ ( \"stroke\", \"blue\" ) ] ] ]\n\n Default: `[]`\n",
                "type": "Style -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "axisStyle",
                "comment": " Add style to the container holding your axis. Most properties are\n conveniently inherited by your ticks and labels.\n\n    main =\n        plot\n            []\n            [ xAxis [ axisStyle [ ( \"stroke\", \"red\" ) ] ] ]\n\n Default: `[]`\n",
                "type": "Style -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "gridMirrorTicks",
                "comment": " Adds grid lines where the ticks on the corresponding axis are.\n\n    main =\n        plot\n            []\n            [ verticalGrid [ gridMirrorTicks ]\n            , xAxis []\n            ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `gridValues` attribute, then this attribute will have no effect.\n",
                "type": "GridConfig -> GridConfig"
            },
            {
                "name": "gridStyle",
                "comment": " Specify styles for the gridlines.\n\n    plot\n        []\n        [ verticalGrid\n            [ gridMirrorTicks\n            , gridStyle myGridStyles\n            ]\n        ]\n\n Remember that if you do not specify either `gridMirrorTicks`\n or `gridValues`, then we will default to not showing any grid lines.\n",
                "type": "Style -> GridConfig -> GridConfig"
            },
            {
                "name": "gridValues",
                "comment": " Specify a list of ticks where you want grid lines drawn.\n\n    plot [] [ verticalGrid [ gridValues [ 1, 2, 4, 8 ] ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `gridMirrorTicks` attribute, then this attribute will have no effect.\n",
                "type": "List Float -> GridConfig -> GridConfig"
            },
            {
                "name": "horizontalGrid",
                "comment": " This returns an grid element resulting in vertical grid lines being rendered in your plot.\n\n    main =\n        plot [] [ horizontalGrid [] ]\n",
                "type": "List GridAttr -> Element msg"
            },
            {
                "name": "labelConfigView",
                "comment": " Configure the label view specifying a list of label view attributes.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ labelConfigView\n                    [ labelFormat (\\t -> toString t ++ \" s\") ]\n                ]\n            ]\n",
                "type": "List LabelViewAttr -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "labelConfigViewFunc",
                "comment": " Configure the label view specifying a function returning a list of label view attributes.\n The function will be passed:\n 1) An integer representing the amount of ticks away from the origin, the current tick is.\n 2) A float value represeting the value of the tick.\n\n    toLabelConfig : Int -> Float -> List TickViewAttr\n    toLabelConfig index tick =\n        if isOdd index then\n            [ labelFormat (\\t -> toString t ++ \" s\") ]\n        else\n            [ labelFormat (always \"\") ]\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ labelConfigViewFunc toLabelConfig ]\n            ]\n",
                "type": "LabelAttrFunc -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "labelCustomView",
                "comment": " Add a custom view for rendering your label.\n\n    viewLabel : Float -> Svg.Svg a\n    viewLabel tick =\n        text_ mySpecialAttributes mySpecialLabelDisplay\n\n    main =\n        plot\n            []\n            [ xAxis [ labelCustomView viewLabel ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `labelFormat` attribute, then this attribute will have no effect.\n",
                "type": "(Float -> Svg msg) -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "labelCustomViewIndexed",
                "comment": " Same as `labelCustomView`, except this view is also passed the value being\n the amount of ticks the current tick is away from zero.\n\n    viewLabel : Int -> Float -> Svg.Svg a\n    viewLabel fromZero tick =\n        let\n            attrs =\n                if isOdd fromZero then oddAttrs\n                else evenAttrs\n        in\n            text_ attrs labelHtml\n\n    main =\n        plot\n            []\n            [ xAxis [ labelCustomViewIndexed viewLabel ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `labelFormat` attribute, then this attribute will have no effect.\n",
                "type": "(Int -> Float -> Svg msg) -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "labelDisplace",
                "comment": " Move the position of the label.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ labelConfigView [ labelDisplace ( 0, 27 ) ] ]\n            ]\n",
                "type": "( Int, Int ) -> LabelViewConfig -> LabelViewConfig"
            },
            {
                "name": "labelFilter",
                "comment": " Add a filter determining which of the ticks are added a label. The first argument passed\n to the filter is a number describing how many ticks a way the current tick is. The second argument\n is the value of the tick.\n\n    onlyEvenTicks : Int -> Float -> Bool\n    onlyEvenTicks index value =\n        rem 2 index == 0\n\n    main =\n        plot\n            []\n            [ xAxis [ labelValues onlyEvenTicks ] ]\n\n Default: `(\\a b -> True)`\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `labelValues` attribute, then this attribute will have no effect.\n",
                "type": "(Int -> Float -> Bool) -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "labelFormat",
                "comment": " Format the label based on its value.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ labelConfigView\n                    [ labelFormat (\\l -> toString l ++ \" DKK\") ]\n                ]\n            ]\n",
                "type": "(Float -> String) -> LabelViewConfig -> LabelViewConfig"
            },
            {
                "name": "labelStyle",
                "comment": " Move the position of the label.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ labelConfigView\n                    [ labelStyle [ (\"stroke\", \"blue\" ) ] ]\n                ]\n            ]\n",
                "type": "Style -> LabelViewConfig -> LabelViewConfig"
            },
            {
                "name": "labelValues",
                "comment": " Add a list of values where labels will be added.\n\n    main =\n        plot\n            []\n            [ xAxis [ labelValues [ 20, 40, 60 ] ] ]\n",
                "type": "List Float -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "line",
                "comment": " This returns a line element resulting in an line serie rendered in your plot.\n\n    main =\n        plot [] [ line [] [ ( 0, 1 ), ( 2, 2 ), ( 3, 4 ) ] ]\n",
                "type": "List LineAttr -> List Point -> Element msg"
            },
            {
                "name": "lineStyle",
                "comment": " Add styles to your line serie.\n\n    main =\n        plot\n            []\n            [ line\n                [ lineStyle [ ( \"fill\", \"deeppink\" ) ] ]\n                lineDataPoints\n            ]\n",
                "type": "Style -> LineConfig -> LineConfig"
            },
            {
                "name": "padding",
                "comment": " Add padding to your plot, meaning extra space below\n and above the lowest and highest point in your plot.\n The unit is pixels.\n\n Default: `( 0, 0 )`\n",
                "type": "( Int, Int ) -> MetaConfig -> MetaConfig"
            },
            {
                "name": "plot",
                "comment": " This is the function processing your entire plot configuration.\n Pass your meta attributes and plot elements to this function and\n a svg plot will be returned!\n",
                "type": "List MetaAttr -> List (Element msg) -> Svg msg"
            },
            {
                "name": "plotStyle",
                "comment": " Add styles to the svg element.\n\n Default: `[ ( \"padding\", \"30px\" ), ( \"stroke\", \"#000\" ) ]`\n",
                "type": "Style -> MetaConfig -> MetaConfig"
            },
            {
                "name": "size",
                "comment": " Specify the size of your plot in pixels.\n\n Default: `( 800, 500 )`\n",
                "type": "( Int, Int ) -> MetaConfig -> MetaConfig"
            },
            {
                "name": "tickConfigView",
                "comment": " Defines how the tick will be displayed by specifying a list of tick view attributes.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ tickConfigView\n                    [ tickLength 10\n                    , tickWidth 2\n                    , tickStyle [ ( \"stroke\", \"red\" ) ]\n                    ]\n                ]\n            ]\n\n If you do not define another view configuration,\n the default will be `[ tickLength 7, tickWidth 1, tickStyle [] ]`\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickCustomView`, `tickConfigViewFunc` or a `tickCustomViewIndexed` attribute,\n then this attribute will have no effect.\n",
                "type": "List TickViewAttr -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickConfigViewFunc",
                "comment": " Defines how the tick will be displayed by specifying a list of tick view attributes.\n\n    toTickConfig : Int -> Float -> List TickViewAttr\n    toTickConfig index tick =\n        if isOdd index then\n            [ tickLength 7\n            , tickStyle [ ( \"stroke\", \"#e4e3e3\" ) ]\n            ]\n        else\n            [ tickLength 10\n            , tickStyle [ ( \"stroke\", \"#b9b9b9\" ) ]\n            ]\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ tickConfigViewFunc toTickConfig ]\n            ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickConfigView`, `tickCustomView` or a `tickCustomViewIndexed` attribute,\n then this attribute will have no effect.\n",
                "type": "TickAttrFunc -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickCustomView",
                "comment": " Defines how the tick will be displayed by specifying a function which returns your tick html.\n\n    viewTick : Float -> Svg.Svg a\n    viewTick tick =\n        text_\n            [ transform (\"translate(-5, 10)\") ]\n            [ tspan [] [ text \"✨\" ] ]\n\n    main =\n        plot [] [ xAxis [ tickCustomView viewTick ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickConfigView` or a `tickCustomViewIndexed` attribute, then this attribute will have no effect.\n",
                "type": "(Float -> Svg msg) -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickCustomViewIndexed",
                "comment": " Same as `tickCustomConfig`, but the functions is also passed a value\n which is how many ticks away the current tick is from the zero tick.\n\n    viewTick : Int -> Float -> Svg.Svg a\n    viewTick index tick =\n        text_\n            [ transform (\"translate(-5, 10)\") ]\n            [ tspan\n                []\n                [ text (if isOdd index then \"🌟\" else \"⭐\") ]\n            ]\n\n    main =\n        plot [] [ xAxis [ tickCustomViewIndexed viewTick ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickConfigView` or a `tickCustomView` attribute, then this attribute will have no effect.\n",
                "type": "(Int -> Float -> Svg msg) -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickDelta",
                "comment": " Defines what ticks will be shown on the axis by specifying the delta between the ticks.\n The delta will be added from zero.\n\n    main =\n        plot\n            []\n            [ xAxis [ tickDelta 4 ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickValues` attribute, then this attribute will have no effect.\n",
                "type": "Float -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickLength",
                "comment": " Set the length of the tick.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ tickConfigView [ tickLength 10 ] ]\n            ]\n",
                "type": "Int -> TickViewConfig -> TickViewConfig"
            },
            {
                "name": "tickRemoveZero",
                "comment": " Remove tick at origin. Useful when two axis' are crossing and you do not\n want the origin the be cluttered with labels.\n\n    main =\n        plot\n            []\n            [ xAxis [ tickRemoveZero ] ]\n",
                "type": "AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickStyle",
                "comment": " Sets the style of the tick\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ tickConfigView\n                    [ tickStyle [ ( \"stroke\", \"blue\" ) ] ]\n                ]\n            ]\n",
                "type": "Style -> TickViewConfig -> TickViewConfig"
            },
            {
                "name": "tickValues",
                "comment": " Defines what ticks will be shown on the axis by specifying a list of values.\n\n    main =\n        plot\n            []\n            [ xAxis [ tickValues [ 0, 1, 2, 4, 8 ] ] ]\n\n **Note:** If in the list of axis attributes, this attribute is followed by a\n `tickDelta` attribute, then this attribute will have no effect.\n",
                "type": "List Float -> AxisConfig msg -> AxisConfig msg"
            },
            {
                "name": "tickWidth",
                "comment": " Set the width of the tick.\n\n    main =\n        plot\n            []\n            [ xAxis\n                [ tickConfigView [ tickWidth 2 ] ]\n            ]\n",
                "type": "Int -> TickViewConfig -> TickViewConfig"
            },
            {
                "name": "verticalGrid",
                "comment": " This returns an axis element resulting in horizontal grid lines being rendered in your plot.\n\n    main =\n        plot [] [ verticalGrid [] ]\n",
                "type": "List GridAttr -> Element msg"
            },
            {
                "name": "xAxis",
                "comment": " This returns an axis element resulting in an x-axis being rendered in your plot.\n\n    main =\n        plot [] [ xAxis [] ]\n",
                "type": "List (AxisAttr msg) -> Element msg"
            },
            {
                "name": "yAxis",
                "comment": " This returns an axis element resulting in an y-axis being rendered in your plot.\n\n    main =\n        plot [] [ yAxis [] ]\n",
                "type": "List (AxisAttr msg) -> Element msg"
            }
        ],
        "binops": []
    }
]