[{"name":"Chart","comment":" Make a chart! Documentation is still unfinished!\n\n# Elements\n@docs chart, Element, scatter, linear, monotone, Metric, bars, histogram\n\n## Work with bounds\n@docs Bounds, fromData, startMin, startMax, endMin, endMax, startPad, endPad, zero, middle\n\n# Axis\n@docs xAxis, yAxis, xTicks, yTicks, xLabels, yLabels, grid\n\n## Generate Acis values\n@docs ints, floats, times\n\n# Events\n@docs Event, event, getNearest, getNearestX, getWithin, getWithinX, tooltip\n\n# Attributes\n@docs width, height, marginTop, marginBottom, marginLeft, marginRight\n@docs responsive, id, range, domain, events, htmlAttrs\n@docs start, end, pinned, color, margin, dot, dotted, area\n@docs noArrow, filterX, filterY, attrs\n\n# Interop\n@docs svgAt, htmlAt, svg, html, none\n\n# Colors\n@docs blue, orange, pink, green, red\n\n","unions":[{"name":"Element","comment":" ","args":["msg"],"cases":[]}],"aliases":[{"name":"Bounds","comment":" ","args":[],"type":"{ min : Basics.Float, max : Basics.Float }"},{"name":"Event","comment":" ","args":["msg"],"type":"{ name : String.String, msg : Svg.Coordinates.Plane -> Svg.Chart.Point -> msg }"},{"name":"Metric","comment":" ","args":["data"],"type":"{ color : String.String, value : data -> Basics.Float }"}],"values":[{"name":"area","comment":" ","type":"String.String -> { a | area : Maybe.Maybe String.String } -> { a | area : Maybe.Maybe String.String }"},{"name":"attrs","comment":" ","type":"List.List (Svg.Attribute msg) -> { a | attrs : List.List (Svg.Attribute msg) } -> { a | attrs : List.List (Svg.Attribute msg) }"},{"name":"bars","comment":" ","type":"List.List (Chart.Metric data) -> List.List (Chart.Bars msg -> Chart.Bars msg) -> List.List data -> Chart.Element msg"},{"name":"blue","comment":" ","type":"String.String"},{"name":"chart","comment":" ","type":"List.List (Chart.Container msg -> Chart.Container msg) -> List.List (Chart.Element msg) -> Html.Html msg"},{"name":"color","comment":" ","type":"String.String -> { a | color : String.String } -> { a | color : String.String }"},{"name":"domain","comment":" ","type":"Chart.Bounds -> { a | domain : Chart.Bounds } -> { a | domain : Chart.Bounds }"},{"name":"dot","comment":" ","type":"(data -> Svg.Chart.Dot msg) -> { a | dot : Chart.Tracked (data -> Svg.Chart.Dot msg) } -> { a | dot : Chart.Tracked (data -> Svg.Chart.Dot msg) }"},{"name":"dotted","comment":" ","type":"{ a | dotted : Basics.Bool } -> { a | dotted : Basics.Bool }"},{"name":"end","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> { a | end : Chart.Bounds -> Basics.Float } -> { a | end : Chart.Bounds -> Basics.Float }"},{"name":"endMax","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"endMin","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"endPad","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"event","comment":" ","type":"String.String -> (Svg.Coordinates.Plane -> Svg.Chart.Point -> msg) -> Chart.Event msg"},{"name":"events","comment":" ","type":"List.List (Chart.Event msg) -> { a | events : List.List (Chart.Event msg) } -> { a | events : List.List (Chart.Event msg) }"},{"name":"filterX","comment":" ","type":"(Chart.Bounds -> List.List Basics.Float) -> { a | filterX : Chart.Bounds -> List.List Basics.Float } -> { a | filterX : Chart.Bounds -> List.List Basics.Float }"},{"name":"filterY","comment":" ","type":"(Chart.Bounds -> List.List Basics.Float) -> { a | filterY : Chart.Bounds -> List.List Basics.Float } -> { a | filterY : Chart.Bounds -> List.List Basics.Float }"},{"name":"floats","comment":" ","type":"Basics.Int -> (Basics.Float -> String.String) -> Chart.Bounds -> List.List { value : Basics.Float, label : String.String }"},{"name":"fromData","comment":" ","type":"List.List (data -> Basics.Float) -> List.List data -> Chart.Bounds"},{"name":"getNearest","comment":" ","type":"(Maybe.Maybe data -> msg) -> (data -> Basics.Float) -> List.List (data -> Basics.Float) -> List.List data -> Svg.Coordinates.Plane -> Svg.Chart.Point -> msg"},{"name":"getNearestX","comment":" ","type":"(List.List data -> msg) -> (data -> Basics.Float) -> List.List (data -> Basics.Float) -> List.List data -> Svg.Coordinates.Plane -> Svg.Chart.Point -> msg"},{"name":"getWithin","comment":" ","type":"(Maybe.Maybe data -> msg) -> Basics.Float -> (data -> Basics.Float) -> List.List (data -> Basics.Float) -> List.List data -> Svg.Coordinates.Plane -> Svg.Chart.Point -> msg"},{"name":"getWithinX","comment":" ","type":"(List.List data -> msg) -> Basics.Float -> (data -> Basics.Float) -> List.List (data -> Basics.Float) -> List.List data -> Svg.Coordinates.Plane -> Svg.Chart.Point -> msg"},{"name":"green","comment":" ","type":"String.String"},{"name":"grid","comment":" ","type":"List.List (Chart.Grid msg -> Chart.Grid msg) -> (Chart.Bounds -> List.List { a | value : Basics.Float }) -> (Chart.Bounds -> List.List { a | value : Basics.Float }) -> Chart.Element msg"},{"name":"height","comment":" ","type":"Basics.Float -> { a | height : Basics.Float } -> { a | height : Basics.Float }"},{"name":"histogram","comment":" ","type":"(data -> Basics.Float) -> List.List (Chart.Metric data) -> List.List (Chart.Histogram msg -> Chart.Histogram msg) -> List.List data -> Chart.Element msg"},{"name":"html","comment":" ","type":"(Svg.Coordinates.Plane -> Html.Html msg) -> Chart.Element msg"},{"name":"htmlAt","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> (Chart.Bounds -> Basics.Float) -> Basics.Float -> Basics.Float -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Chart.Element msg"},{"name":"htmlAttrs","comment":" ","type":"List.List (Html.Attribute msg) -> { a | htmlAttrs : List.List (Html.Attribute msg) } -> { a | htmlAttrs : List.List (Html.Attribute msg) }"},{"name":"id","comment":" ","type":"String.String -> { a | id : String.String } -> { a | id : String.String }"},{"name":"ints","comment":" ","type":"Basics.Int -> (Basics.Int -> String.String) -> Chart.Bounds -> List.List { value : Basics.Float, label : String.String }"},{"name":"linear","comment":" ","type":"(data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Chart.Interpolation data msg -> Chart.Interpolation data msg) -> List.List data -> Chart.Element msg"},{"name":"margin","comment":" ","type":"Basics.Float -> { a | margin : Basics.Float } -> { a | margin : Basics.Float }"},{"name":"marginBottom","comment":" ","type":"Basics.Float -> { a | marginBottom : Basics.Float } -> { a | marginBottom : Basics.Float }"},{"name":"marginLeft","comment":" ","type":"Basics.Float -> { a | marginLeft : Basics.Float } -> { a | marginLeft : Basics.Float }"},{"name":"marginRight","comment":" ","type":"Basics.Float -> { a | marginRight : Basics.Float } -> { a | marginRight : Basics.Float }"},{"name":"marginTop","comment":" ","type":"Basics.Float -> { a | marginTop : Basics.Float } -> { a | marginTop : Basics.Float }"},{"name":"middle","comment":" ","type":"Chart.Bounds -> Basics.Float"},{"name":"monotone","comment":" ","type":"(data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Chart.Interpolation data msg -> Chart.Interpolation data msg) -> List.List data -> Chart.Element msg"},{"name":"noArrow","comment":" ","type":"{ a | arrow : Basics.Bool } -> { a | arrow : Basics.Bool }"},{"name":"none","comment":" ","type":"Chart.Element msg"},{"name":"orange","comment":" ","type":"String.String"},{"name":"pink","comment":" ","type":"String.String"},{"name":"pinned","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> { a | pinned : Chart.Bounds -> Basics.Float } -> { a | pinned : Chart.Bounds -> Basics.Float }"},{"name":"range","comment":" ","type":"Chart.Bounds -> { a | range : Chart.Bounds } -> { a | range : Chart.Bounds }"},{"name":"red","comment":" ","type":"String.String"},{"name":"responsive","comment":" ","type":"{ a | responsive : Basics.Bool } -> { a | responsive : Basics.Bool }"},{"name":"scatter","comment":" ","type":"(data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Chart.Scatter data msg -> Chart.Scatter data msg) -> List.List data -> Chart.Element msg"},{"name":"start","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> { a | start : Chart.Bounds -> Basics.Float } -> { a | start : Chart.Bounds -> Basics.Float }"},{"name":"startMax","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"startMin","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"startPad","comment":" ","type":"Basics.Float -> Chart.Bounds -> Chart.Bounds"},{"name":"svg","comment":" ","type":"(Svg.Coordinates.Plane -> Svg.Svg msg) -> Chart.Element msg"},{"name":"svgAt","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> (Chart.Bounds -> Basics.Float) -> Basics.Float -> Basics.Float -> List.List (Svg.Svg msg) -> Chart.Element msg"},{"name":"times","comment":" ","type":"Time.Zone -> Basics.Int -> (Intervals.Time -> String.String) -> Chart.Bounds -> List.List { value : Basics.Float, label : String.String }"},{"name":"tooltip","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> (Chart.Bounds -> Basics.Float) -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Chart.Element msg"},{"name":"width","comment":" ","type":"Basics.Float -> { a | width : Basics.Float } -> { a | width : Basics.Float }"},{"name":"xAxis","comment":" ","type":"List.List (Chart.Axis msg -> Chart.Axis msg) -> Chart.Element msg"},{"name":"xLabels","comment":" ","type":"List.List (Chart.Label msg -> Chart.Label msg) -> (Chart.Bounds -> List.List { a | value : Basics.Float, label : String.String }) -> Chart.Element msg"},{"name":"xTicks","comment":" ","type":"List.List (Chart.Tick msg -> Chart.Tick msg) -> (Chart.Bounds -> List.List { a | value : Basics.Float }) -> Chart.Element msg"},{"name":"yAxis","comment":" ","type":"List.List (Chart.Axis msg -> Chart.Axis msg) -> Chart.Element msg"},{"name":"yLabels","comment":" ","type":"List.List (Chart.Label msg -> Chart.Label msg) -> (Chart.Bounds -> List.List { a | value : Basics.Float, label : String.String }) -> Chart.Element msg"},{"name":"yTicks","comment":" ","type":"List.List (Chart.Tick msg -> Chart.Tick msg) -> (Chart.Bounds -> List.List { a | value : Basics.Float }) -> Chart.Element msg"},{"name":"zero","comment":" ","type":"Chart.Bounds -> Basics.Float"}],"binops":[]},{"name":"Svg.Chart","comment":" This module contains higher-level SVG plotting elements.\n\n# Series\n\n## Sizing\n@docs static, responsive, frame\n\n## Dots\n@docs Dot, clear, empty, disconnected, aura, full\n@docs circle, triangle, square, diamond, plus, cross\n\n## Interpolation\n@docs scatter, linear, linearArea, monotone, monotoneArea\n\n# Bar charts\n@docs GroupBar, bars, Bar, histogram\n\n# Straight lines\n@docs line, xAxis, yAxis, xArrow, yArrow, xGrid, yGrid, horizontal, vertical\n\n## Ticks\nProTip: Passing a negative value as the height/width of a tick renders it\nmirrored on the other side of the axis!\n\n@docs xTick, xTicks, yTick, yTicks\n\n## Labels\n\n@docs xLabel, xLabels, yLabel, yLabels\n\n\n## Positioning anything\n@docs position, positionHtml\n\n\n# Events\n\n@docs container, eventCatcher\n\n@docs decodePoint, Point, DataPoint, toDataPoints\n\n@docs getNearest, getNearestX, getWithin, getWithinX\n\n@docs tooltip, isXPastMiddle, middleOfY, middleOfX\n\n\n","unions":[],"aliases":[{"name":"Bar","comment":" ","args":["msg"],"type":"{ attributes : List.List (Svg.Attribute msg), width : Basics.Float, position : Basics.Float, value : Basics.Float }"},{"name":"DataPoint","comment":" ","args":["data"],"type":"{ org : data, point : Svg.Chart.Point }"},{"name":"Dot","comment":" ","args":["msg"],"type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"GroupBar","comment":" ","args":["msg"],"type":"{ attributes : List.List (Svg.Attribute msg), width : Basics.Float, value : Basics.Float }"},{"name":"Point","comment":" ","args":[],"type":"{ x : Basics.Float, y : Basics.Float }"}],"values":[{"name":"aura","comment":" Make a shape with a little translucent border.\n\n    someDot : Svg msg\n    someDot =\n      aura radius width opacity circle \"blue\" plane x y\n","type":"Basics.Float -> Basics.Int -> Basics.Float -> Svg.Chart.Shape -> String.String -> Svg.Chart.Dot msg"},{"name":"bars","comment":" You can draw a bar chart like this:\n\n    main : Svg msg\n    main =\n      let toBars ( a, b ) =\n            [ bar [ fill \"red\" ] 0.8 a\n            , bar [ fill \"blue\" ] 0.8 b\n            ]\n      in\n      svg\n        [ width (String.fromFloat plane.x.length)\n        , height (String.fromFloat plane.y.length)\n        ]\n        [ bars plane toBars [ ( 2, 3 ), ( 5, 1 ), ( 1, 5 ) ]\n        ]\n\nNote on `width`: The width takes catersian units, however, should you have\na width in SVG units, you can use `Svg.Coordinates.scaleCartesian` to\ntranslate it into cartesian units.\n","type":"Svg.Coordinates.Plane -> (data -> List.List (Svg.Chart.GroupBar msg)) -> List.List data -> Svg.Svg msg"},{"name":"circle","comment":" ","type":"Svg.Chart.Shape"},{"name":"clear","comment":" A dot without visual representation.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"container","comment":" Container for your chart, in case you use the `eventCatcher`.\nWithout this, your coordinates from the events will be wrong!\n\n","type":"Svg.Coordinates.Plane -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Html.Html msg"},{"name":"cross","comment":" ","type":"Svg.Chart.Shape"},{"name":"decodePoint","comment":" Decode position of mouse when tracking events. The `Plane` may\nchange due to size changes of the viewport, so make sure to use the\none given in the second argument. Also, make sure to wrap your chart\nin `container` otherwise your read coordinates maybe wrong!\n\n","type":"Svg.Coordinates.Plane -> (Svg.Coordinates.Plane -> Svg.Chart.Point -> msg) -> Json.Decode.Decoder msg"},{"name":"diamond","comment":" ","type":"Svg.Chart.Shape"},{"name":"disconnected","comment":" Make a shape with a white border.\n\n    someDot : Svg msg\n    someDot =\n      disconnected radius width circle \"blue\" plane x y\n","type":"Basics.Float -> Basics.Int -> Svg.Chart.Shape -> String.String -> Svg.Chart.Dot msg"},{"name":"empty","comment":" Make a shape with a white core.\n\n    someDot : Svg msg\n    someDot =\n      empty radius width circle \"blue\" plane x y\n","type":"Basics.Float -> Basics.Int -> Svg.Chart.Shape -> String.String -> Svg.Chart.Dot msg"},{"name":"eventCatcher","comment":" ","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Svg.Svg msg"},{"name":"frame","comment":" Create an id to use in a clip path to prevent elements from going into your margins.\n\n    svg []\n      [ frame \"some-id\" plane\n      , g [ clipPath \"url(#some-id)\" ] [ stuffThatShouldntGoIntoTheMargin ]\n      ]\n","type":"String.String -> Svg.Coordinates.Plane -> Svg.Svg msg"},{"name":"full","comment":" Make a regular shape.\n\n    someDot : Svg msg\n    someDot =\n      full radius circle \"blue\" plane x y\n","type":"Basics.Float -> Svg.Chart.Shape -> String.String -> Svg.Chart.Dot msg"},{"name":"getNearest","comment":" Get the data coordinates nearest to the event.\nReturns `Nothing` if you have no data showing.\n\n","type":"List.List (Svg.Chart.DataPoint data) -> Svg.Coordinates.Plane -> Svg.Chart.Point -> Maybe.Maybe data"},{"name":"getNearestX","comment":" Get the data coordinates horizontally nearest to the event.\n","type":"List.List (Svg.Chart.DataPoint data) -> Svg.Coordinates.Plane -> Svg.Chart.Point -> List.List data"},{"name":"getWithin","comment":" Get the data coordinates nearest of the event within the radius\nyou provide in the first argument. Returns `Nothing` if you have no data showing.\n\n","type":"Basics.Float -> List.List (Svg.Chart.DataPoint data) -> Svg.Coordinates.Plane -> Svg.Chart.Point -> Maybe.Maybe data"},{"name":"getWithinX","comment":" Finds the data coordinates horizontally nearest to the event, within the\ndistance you provide in the first argument.\n\n","type":"Basics.Float -> List.List (Svg.Chart.DataPoint data) -> Svg.Coordinates.Plane -> Svg.Chart.Point -> List.List data"},{"name":"histogram","comment":" Make a histogram.\n\n    main : Svg msg\n    main =\n      let toBars _ datum _ =\n            [ Bar [] 10 datum.timestamp datum.score ]\n      in\n      svg\n        [ width (String.fromFloat plane.x.length)\n        , height (String.fromFloat plane.y.length)\n        ]\n        [ histogram plane toBars [ ( 1, 1 ), ( 2, 2 ), ( 3, 6 ) ]\n","type":"Svg.Coordinates.Plane -> (Maybe.Maybe data -> data -> Maybe.Maybe data -> List.List (Svg.Chart.Bar msg)) -> List.List data -> Svg.Svg msg"},{"name":"horizontal","comment":" Renders a horizontal line.\n\n    myLine : Svg msg\n    myLine =\n      horizontal plane [ stroke \"pink\" ] y x0 x1\n\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"isXPastMiddle","comment":" Is x past the middle of the chart?\n\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Bool"},{"name":"line","comment":" Renders a line.\n\n    myLine : Svg msg\n    myLine =\n      line plane [ stroke \"pink\" ] x0 y0 x1 y1\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"linear","comment":" Series with linear interpolation.\n","type":"Svg.Coordinates.Plane -> (data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Svg.Attribute msg) -> (data -> Svg.Chart.Dot msg) -> List.List data -> Svg.Svg msg"},{"name":"linearArea","comment":" Area series with linear interpolation.\n","type":"Svg.Coordinates.Plane -> (data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Svg.Attribute msg) -> (data -> Svg.Chart.Dot msg) -> List.List data -> Svg.Svg msg"},{"name":"middleOfX","comment":" Get the midmost x coordinate.\n\n","type":"Svg.Coordinates.Plane -> Basics.Float"},{"name":"middleOfY","comment":" Get the midmost y coordinate.\n\n","type":"Svg.Coordinates.Plane -> Basics.Float"},{"name":"monotone","comment":" Series with monotone interpolation.\n","type":"Svg.Coordinates.Plane -> (data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Svg.Attribute msg) -> (data -> Svg.Chart.Dot msg) -> List.List data -> Svg.Svg msg"},{"name":"monotoneArea","comment":" Area series with monotone interpolation.\n","type":"Svg.Coordinates.Plane -> (data -> Basics.Float) -> (data -> Basics.Float) -> List.List (Svg.Attribute msg) -> (data -> Svg.Chart.Dot msg) -> List.List data -> Svg.Svg msg"},{"name":"plus","comment":" ","type":"Svg.Chart.Shape"},{"name":"position","comment":" Place some SVG on specific coordinates.\n\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Attribute msg"},{"name":"positionHtml","comment":" Place some Html on specific coordinates. You must wrap your chart\nin `container` for it to work! Remember also to put your html elements outside\nyour `svg` element, otherwise they won't work!\n\n      positionHtml plane x y xOff yOff\n        [ style \"font-size\" \"14px\" ]\n        [ text \"Hello!\" ]\n\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Html.Html msg"},{"name":"responsive","comment":" Set the dimensions of your chart, but let it respond to size changes in parent.\n","type":"Svg.Coordinates.Plane -> Svg.Attribute msg"},{"name":"scatter","comment":" Series with no interpolation.\n\n    someScatter : Svg msg\n    someScatter =\n      scatter plane .x .y (full 6 circle \"blue\") points\n","type":"Svg.Coordinates.Plane -> (data -> Basics.Float) -> (data -> Basics.Float) -> (data -> Svg.Chart.Dot msg) -> List.List data -> Svg.Svg msg"},{"name":"square","comment":" ","type":"Svg.Chart.Shape"},{"name":"static","comment":" Set the size of your chart.\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg)"},{"name":"toDataPoints","comment":" ","type":"(data -> Basics.Float) -> (data -> Basics.Float) -> List.List data -> List.List (Svg.Chart.DataPoint data)"},{"name":"tooltip","comment":" A basic tooltip.\n\n      tooltip plane x y\n        [ style \"font-size\" \"14px\" ]\n        [ Html.text \"I'm a tooltip!\" ]\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Html.Html msg"},{"name":"triangle","comment":" ","type":"Svg.Chart.Shape"},{"name":"vertical","comment":" Renders a vertical line.\n\n    myLine : Svg msg\n    myLine =\n      vertical plane [ stroke \"pink\" ] x y0 y1\n\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"xArrow","comment":" Place an arrow pointing to the right somewhere.\n\n      xArrow plane color x y xOff yOff\n\n","type":"Svg.Coordinates.Plane -> String.String -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"xAxis","comment":" Renders a horizontal line with the full length of the range.\n\n    myXAxisOrGridLine : Svg msg\n    myXAxisOrGridLine =\n      xAxis plane [] yPosition\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Svg.Svg msg"},{"name":"xGrid","comment":" Renders a horizontal line with the full length of the range.\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Svg.Svg msg"},{"name":"xLabel","comment":" Renders a label for the horizontal axis.\n\n    horizontalLabel : Svg msg\n    horizontalLabel =\n      xLabel \"blue\" .timestamp format plane y datum\n","type":"List.List (Svg.Attribute msg) -> (data -> Basics.Float) -> (data -> String.String) -> Svg.Coordinates.Plane -> Basics.Float -> data -> Svg.Svg msg"},{"name":"xLabels","comment":" Renders labels for the horizontal axis.\n\n    horizontalLabels : Svg msg\n    horizontalLabels =\n      xLabels plane (xLabel \"blue\" .timestamp format) axisYCoordinate data\n","type":"Svg.Coordinates.Plane -> (Svg.Coordinates.Plane -> Basics.Float -> data -> Svg.Svg msg) -> Basics.Float -> List.List data -> Svg.Svg msg"},{"name":"xTick","comment":" Renders a single tick for the horizontal axis.\n","type":"Svg.Coordinates.Plane -> Basics.Int -> List.List (Svg.Attribute msg) -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"xTicks","comment":" Renders ticks for the horizontal axis.\n\n    horizontalTicks : Svg msg\n    horizontalTicks =\n      xTicks plane height [ stroke \"pink\" ] axisYCoordinate tickPositions\n","type":"Svg.Coordinates.Plane -> Basics.Int -> List.List (Svg.Attribute msg) -> Basics.Float -> List.List Basics.Float -> Svg.Svg msg"},{"name":"yArrow","comment":" Place an arrow pointing up somewhere.\n\n      yArrow plane color x y xOff yOff\n\n","type":"Svg.Coordinates.Plane -> String.String -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"yAxis","comment":" Renders a vertical line with the full length of the domain.\n\n    myYAxisOrGridLine : Svg msg\n    myYAxisOrGridLine =\n      yAxis plane [] xPosition\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Svg.Svg msg"},{"name":"yGrid","comment":" Renders a horizontal line with the full length of the domain.\n","type":"Svg.Coordinates.Plane -> List.List (Svg.Attribute msg) -> Basics.Float -> Svg.Svg msg"},{"name":"yLabel","comment":" Renders a label for the vertical axis.\n\n    verticalLabel : Svg msg\n    verticalLabel =\n      yLabel \"blue\" .age format plane x y\n","type":"List.List (Svg.Attribute msg) -> (data -> Basics.Float) -> (data -> String.String) -> Svg.Coordinates.Plane -> Basics.Float -> data -> Svg.Svg msg"},{"name":"yLabels","comment":" Renders labels for the vertical axis.\n\n    verticalLabels : Svg msg\n    verticalLabels =\n      yLabels plane (yLabel \"blue\" .age format) axisXCoordinate data\n","type":"Svg.Coordinates.Plane -> (Svg.Coordinates.Plane -> Basics.Float -> data -> Svg.Svg msg) -> Basics.Float -> List.List data -> Svg.Svg msg"},{"name":"yTick","comment":" Renders a single tick for the vertical axis.\n","type":"Svg.Coordinates.Plane -> Basics.Int -> List.List (Svg.Attribute msg) -> Basics.Float -> Basics.Float -> Svg.Svg msg"},{"name":"yTicks","comment":" Renders ticks for the vertical axis.\n\n    verticalTicks : Svg msg\n    verticalTicks =\n      yTicks plane width [ stroke \"pink\" ] axisXCoordinate tickPositions\n","type":"Svg.Coordinates.Plane -> Basics.Int -> List.List (Svg.Attribute msg) -> Basics.Float -> List.List Basics.Float -> Svg.Svg msg"}],"binops":[]},{"name":"Svg.Coordinates","comment":" This module contains helpers for cartesian/SVG coordinate translation.\n\n# Plane\n@docs Plane, Axis\n\n# Plane from data\n\nYou may want to produce a plane which fits all your data. For that you need\nto find the minimum and maximum values withing your data in order to calculate\nthe domain and range.\n\n@docs minimum, maximum\n\n    planeFromPoints : List Point -> Plane\n    planeFromPoints points =\n      { x =\n        { marginLower = 10\n        , marginUpper = 10\n        , length = 300\n        , min = minimum .x points\n        , max = maximum .x points\n        }\n      , y =\n        { marginLower = 10\n        , marginUpper = 10\n        , length = 300\n        , min = minimum .y points\n        , max = maximum .y points\n        }\n      }\n\n# Cartesian to SVG\n@docs toSVGX, toSVGY, scaleSVG\n\n# SVG to cartesian\n@docs toCartesianX, toCartesianY, scaleCartesian\n\n# Helpers\n@docs place, placeWithOffset\n\n","unions":[],"aliases":[{"name":"Axis","comment":" The axis of the plane.\n\n  - The margin properties are the upper and lower margins for the axis. So for example,\n    if you want to add margin on top of the plot, increase the marginUpper of\n    the y-`Axis`.\n  - The length is the length of your SVG axis. (`plane.x.length` is the width,\n    `plane.y.length` is the height)\n  - The `min` and `max` values is the reach of your plane. (Domain for the y-axis, range\n    for the x-axis)\n","args":[],"type":"{ marginLower : Basics.Float, marginUpper : Basics.Float, length : Basics.Float, min : Basics.Float, max : Basics.Float }"},{"name":"Plane","comment":" The properties of your plane.\n","args":[],"type":"{ x : Svg.Coordinates.Axis, y : Svg.Coordinates.Axis }"}],"values":[{"name":"maximum","comment":" Helper to extract the maximum value amongst your coordinates.\n","type":"List.List (a -> Basics.Float) -> List.List a -> Basics.Float"},{"name":"minimum","comment":" Helper to extract the minimum value amongst your coordinates.\n","type":"List.List (a -> Basics.Float) -> List.List a -> Basics.Float"},{"name":"place","comment":" A `transform translate(x, y)` SVG attribute. Beware that using this and\n  and another transform attribute on the same node, will overwrite the first.\n  If that's the case, just make one yourself:\n\n    myTransformAttribute : Svg.Attribute msg\n    myTransformAttribute =\n      transform <|\n        \"translate(\"\n        ++ String.fromFloat (toSVGX plane x) ++ \",\"\n        ++ String.fromFloat (toSVGY plane y) ++ \") \"\n        ++ \"rotateX(\" ++ whatever ++ \")\"\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Svg.Attribute msg"},{"name":"placeWithOffset","comment":" Place at coordinate, but you may add a SVG offset. See `place` above for important notes.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float -> Svg.Attribute msg"},{"name":"scaleCartesian","comment":" For scaling a SVG value to a cartesian value. Note that this will _not_\n  return a coordinate on the plane, but the scaled value.\n","type":"Svg.Coordinates.Axis -> Basics.Float -> Basics.Float"},{"name":"scaleSVG","comment":" For scaling a cartesian value to a SVG value. Note that this will _not_\n  return a coordinate on the plane, but the scaled value.\n","type":"Svg.Coordinates.Axis -> Basics.Float -> Basics.Float"},{"name":"toCartesianX","comment":" Translate a cartesian x-coordinate to its SVG x-coordinate.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float"},{"name":"toCartesianY","comment":" Translate a cartesian y-coordinate to its SVG y-coordinate.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float"},{"name":"toSVGX","comment":" Translate a SVG x-coordinate to its cartesian x-coordinate.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float"},{"name":"toSVGY","comment":" Translate a SVG y-coordinate to its cartesian y-coordinate.\n","type":"Svg.Coordinates.Plane -> Basics.Float -> Basics.Float"}],"binops":[]},{"name":"Svg.Tiles","comment":" View for creating tiled maps like heatmaps or choropleths. Note that this return a SVG element not yet wrapped\nin the `svg` tag.\n\n# Composing\n@docs Map, Tile, view\n\n# Helpers\n@docs tileWidth, tileHeight, tileXCoord, tileYCoord, proportion\n\n","unions":[],"aliases":[{"name":"Map","comment":" (You can use the helpers for calculating most of these properties. You're welcome.)\n","args":["msg"],"type":"{ tiles : List.List (Svg.Tiles.Tile msg), tilesPerRow : Basics.Int, tileWidth : Basics.Float, tileHeight : Basics.Float }"},{"name":"Tile","comment":" ","args":["msg"],"type":"{ content : Maybe.Maybe (Svg.Svg msg), attributes : List.List (Svg.Attribute msg), index : Basics.Int }"}],"values":[{"name":"proportion","comment":" For heatmaps. It calculates a value's value relative to all values.\n","type":"(a -> Basics.Float) -> List.List a -> Basics.Float -> Basics.Float"},{"name":"tileHeight","comment":" Pass the __height__ of your map, the __amount of\n tiles in a row__, and the __total number of tiles__,\n and it gives you back the height of a single tile.\n ","type":"Basics.Int -> Basics.Int -> Basics.Int -> Basics.Int"},{"name":"tileWidth","comment":" Pass the __width__ of your map, and the __amount of\n tiles in a row__, and it gives you back the width of\n a single tile.\n ","type":"Basics.Int -> Basics.Int -> Basics.Int"},{"name":"tileXCoord","comment":" Pass the __tile width__, the __amount of tiles in a row__, and\n the __tile's index__ and it'll get you it's x-coordinate.\n","type":"Basics.Float -> Basics.Int -> Basics.Int -> Basics.Float"},{"name":"tileYCoord","comment":" Pass the __tile height__, the __amount of tiles in a row__ and\n the __tile's index__ and it'll get you it's y-coordinate.\n","type":"Basics.Float -> Basics.Int -> Basics.Int -> Basics.Float"},{"name":"view","comment":" View a map!\n","type":"Svg.Tiles.Map msg -> Svg.Svg msg"}],"binops":[]}]