[{"name":"Chart","comment":" Make a chart! Documentation is still unfinished!\n\n# Elements\n@docs chart, Element\n@docs series, scatter, linear, monotone\n@docs bars, histogram, bar\n\n## Work with bounds\n@docs Bounds, startMin, startMax, endMin, endMax, startPad, endPad, zero, middle\n\n# Axis\n@docs xAxis, yAxis, xTicks, yTicks, xLabels, yLabels, grid\n@docs amount, floats, ints, times, values, format, noArrow, start, end, pinned, only, filterX, filterY\n\n# Events\n@docs Event, event, Decoder, map, map2, map3, getPoint, getNearest, getNearestX, getWithin, getWithinX, tooltip, formatTimestamp\n\n# Attributes\n@docs width, height\n@docs marginTop, marginBottom, marginLeft, marginRight\n@docs paddingTop, paddingBottom, paddingLeft, paddingRight\n@docs center\n@docs range, domain, topped, static, id, events, htmlAttrs\n@docs binWidth, binLabel, barLabel, barColor, tickLength, tickWidth, margin, spacing, rounded, roundBottom\n@docs dotted, color, dot, area, 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":"Decoder","comment":" ","args":["data","msg"],"cases":[]},{"name":"Element","comment":" ","args":["data","msg"],"cases":[]}],"aliases":[{"name":"Bounds","comment":" ","args":[],"type":"{ min : Basics.Float, max : Basics.Float }"},{"name":"Event","comment":" ","args":["data","msg"],"type":"{ name : String.String, msg : Chart.Decoder data msg }"}],"values":[{"name":"amount","comment":" ","type":"Basics.Int -> { a | amount : Basics.Int } -> { a | amount : Basics.Int }"},{"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":"bar","comment":" ","type":"(data -> Basics.Float) -> List.List (Chart.BarConfig data msg -> Chart.BarConfig data msg) -> Chart.Bar data msg"},{"name":"barColor","comment":" ","type":"(data -> String.String) -> { a | color : Maybe.Maybe (data -> String.String) } -> { a | color : Maybe.Maybe (data -> String.String) }"},{"name":"barLabel","comment":" ","type":"(data -> Maybe.Maybe String.String) -> { a | barLabel : Maybe.Maybe (data -> Maybe.Maybe String.String) } -> { a | barLabel : Maybe.Maybe (data -> Maybe.Maybe String.String) }"},{"name":"bars","comment":" ","type":"List.List (Chart.Bars data msg -> Chart.Bars data msg) -> List.List (Chart.Bar data msg) -> List.List data -> Chart.Element data msg"},{"name":"binLabel","comment":" ","type":"(data -> String.String) -> { a | binLabel : Maybe.Maybe (data -> String.String) } -> { a | binLabel : Maybe.Maybe (data -> String.String) }"},{"name":"binWidth","comment":" ","type":"(data -> Basics.Float) -> { a | binWidth : Maybe.Maybe (data -> Basics.Float) } -> { a | binWidth : Maybe.Maybe (data -> Basics.Float) }"},{"name":"blue","comment":" ","type":"String.String"},{"name":"center","comment":" ","type":"{ a | center : Basics.Bool } -> { a | center : Basics.Bool }"},{"name":"chart","comment":" ","type":"List.List (Chart.Container data msg -> Chart.Container data msg) -> List.List (Chart.Element data msg) -> Html.Html msg"},{"name":"color","comment":" ","type":"String.String -> { a | color : String.String } -> { a | color : String.String }"},{"name":"domain","comment":" ","type":"(Chart.Bounds -> Chart.Bounds) -> { a | domain : Maybe.Maybe (Chart.Bounds -> Chart.Bounds) } -> { a | domain : Maybe.Maybe (Chart.Bounds -> Chart.Bounds) }"},{"name":"dot","comment":" ","type":"(data -> Svg.Chart.Dot msg) -> { a | dot : Maybe.Maybe (data -> Svg.Chart.Dot msg) } -> { a | dot : Maybe.Maybe (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 -> Chart.Decoder data msg -> Chart.Event data msg"},{"name":"events","comment":" ","type":"List.List (Chart.Event data msg) -> { a | events : List.List (Chart.Event data msg) } -> { a | events : List.List (Chart.Event data 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":"{ a | values : Maybe.Maybe (Chart.Values Basics.Float) } -> { a | values : Maybe.Maybe (Chart.Values Basics.Float) }"},{"name":"format","comment":" ","type":"(tick -> String.String) -> { a | values : Maybe.Maybe (Chart.Values tick) } -> { a | values : Maybe.Maybe (Chart.Values tick) }"},{"name":"formatTimestamp","comment":" ","type":"Time.Zone -> Basics.Float -> String.String"},{"name":"getNearest","comment":" ","type":"Chart.Decoder data (Maybe.Maybe data)"},{"name":"getNearestX","comment":" ","type":"Chart.Decoder data (List.List data)"},{"name":"getPoint","comment":" ","type":"Chart.Decoder data Svg.Chart.Point"},{"name":"getWithin","comment":" ","type":"Basics.Float -> Chart.Decoder data (Maybe.Maybe data)"},{"name":"getWithinX","comment":" ","type":"Basics.Float -> Chart.Decoder data (List.List data)"},{"name":"green","comment":" ","type":"String.String"},{"name":"grid","comment":" ","type":"List.List (Chart.Grid msg -> Chart.Grid msg) -> Chart.Element data 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.Histogram data msg -> Chart.Histogram data msg) -> List.List (Chart.Bar data msg) -> List.List data -> Chart.Element data msg"},{"name":"html","comment":" ","type":"(Svg.Coordinates.Plane -> Html.Html msg) -> Chart.Element data 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 data 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":"{ a | values : Maybe.Maybe (Chart.Values Basics.Int) } -> { a | values : Maybe.Maybe (Chart.Values Basics.Int) }"},{"name":"linear","comment":" ","type":"(data -> Basics.Float) -> List.List (Chart.Interpolation data msg -> Chart.Interpolation data msg) -> Chart.Series data msg"},{"name":"map","comment":" ","type":"(a -> msg) -> Chart.Decoder data a -> Chart.Decoder data msg"},{"name":"map2","comment":" ","type":"(a -> b -> msg) -> Chart.Decoder data a -> Chart.Decoder data b -> Chart.Decoder data msg"},{"name":"map3","comment":" ","type":"(a -> b -> c -> msg) -> Chart.Decoder data a -> Chart.Decoder data b -> Chart.Decoder data c -> Chart.Decoder data 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) -> List.List (Chart.Interpolation data msg -> Chart.Interpolation data msg) -> Chart.Series data msg"},{"name":"noArrow","comment":" ","type":"{ a | arrow : Basics.Bool } -> { a | arrow : Basics.Bool }"},{"name":"none","comment":" ","type":"Chart.Element data msg"},{"name":"only","comment":" ","type":"(b -> Basics.Bool) -> { a | only : b -> Basics.Bool } -> { a | only : b -> Basics.Bool }"},{"name":"orange","comment":" ","type":"String.String"},{"name":"paddingBottom","comment":" ","type":"Basics.Float -> { a | paddingBottom : Basics.Float } -> { a | paddingBottom : Basics.Float }"},{"name":"paddingLeft","comment":" ","type":"Basics.Float -> { a | paddingLeft : Basics.Float } -> { a | paddingLeft : Basics.Float }"},{"name":"paddingRight","comment":" ","type":"Basics.Float -> { a | paddingRight : Basics.Float } -> { a | paddingRight : Basics.Float }"},{"name":"paddingTop","comment":" ","type":"Basics.Float -> { a | paddingTop : Basics.Float } -> { a | paddingTop : Basics.Float }"},{"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 -> Chart.Bounds) -> { a | range : Maybe.Maybe (Chart.Bounds -> Chart.Bounds) } -> { a | range : Maybe.Maybe (Chart.Bounds -> Chart.Bounds) }"},{"name":"red","comment":" ","type":"String.String"},{"name":"roundBottom","comment":" ","type":"{ a | roundBottom : Basics.Bool } -> { a | roundBottom : Basics.Bool }"},{"name":"rounded","comment":" ","type":"Basics.Float -> { a | rounded : Basics.Float } -> { a | rounded : Basics.Float }"},{"name":"scatter","comment":" ","type":"(data -> Basics.Float) -> List.List (Chart.Scatter data msg -> Chart.Scatter data msg) -> Chart.Series data msg"},{"name":"series","comment":" ","type":"(data -> Basics.Float) -> List.List (Chart.Series data msg) -> List.List data -> Chart.Element data msg"},{"name":"spacing","comment":" ","type":"Basics.Float -> { a | spacing : Basics.Float } -> { a | spacing : Basics.Float }"},{"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":"static","comment":" ","type":"{ a | responsive : Basics.Bool } -> { a | responsive : Basics.Bool }"},{"name":"svg","comment":" ","type":"(Svg.Coordinates.Plane -> Svg.Svg msg) -> Chart.Element data msg"},{"name":"svgAt","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> (Chart.Bounds -> Basics.Float) -> Basics.Float -> Basics.Float -> List.List (Svg.Svg msg) -> Chart.Element data msg"},{"name":"tickLength","comment":" ","type":"Basics.Float -> { a | tickLength : Basics.Float } -> { a | tickLength : Basics.Float }"},{"name":"tickWidth","comment":" ","type":"Basics.Float -> { a | tickWidth : Basics.Float } -> { a | tickWidth : Basics.Float }"},{"name":"times","comment":" ","type":"Time.Zone -> { a | values : Maybe.Maybe (Chart.Values Intervals.Time) } -> { a | values : Maybe.Maybe (Chart.Values Intervals.Time) }"},{"name":"tooltip","comment":" ","type":"(Chart.Bounds -> Basics.Float) -> (Chart.Bounds -> Basics.Float) -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Chart.Element data msg"},{"name":"topped","comment":" ","type":"Basics.Int -> { a | topped : Maybe.Maybe Basics.Int } -> { a | topped : Maybe.Maybe Basics.Int }"},{"name":"values","comment":" ","type":"(Basics.Int -> Chart.Bounds -> List.List tick) -> (tick -> Basics.Float) -> (tick -> String.String) -> { a | values : Maybe.Maybe (Chart.Values tick) } -> { a | values : Maybe.Maybe (Chart.Values tick) }"},{"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 data msg"},{"name":"xLabels","comment":" ","type":"List.List (Chart.Label tick msg -> Chart.Label tick msg) -> Chart.Element data msg"},{"name":"xTicks","comment":" ","type":"List.List (Chart.Tick tick msg -> Chart.Tick tick msg) -> Chart.Element data msg"},{"name":"yAxis","comment":" ","type":"List.List (Chart.Axis msg -> Chart.Axis msg) -> Chart.Element data msg"},{"name":"yLabels","comment":" ","type":"List.List (Chart.Label tick msg -> Chart.Label tick msg) -> Chart.Element data msg"},{"name":"yTicks","comment":" ","type":"List.List (Chart.Tick tick msg -> Chart.Tick tick msg) -> Chart.Element data msg"},{"name":"zero","comment":" ","type":"Chart.Bounds -> Basics.Float"}],"binops":[]},{"name":"Svg.Chart","comment":" This module contains low-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 Group, bars, Bin, 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, toPoints, 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), label : Maybe.Maybe String.String, rounded : Basics.Float, roundBottom : Basics.Bool, width : Basics.Float, value : Basics.Float }"},{"name":"Bin","comment":" ","args":["msg"],"type":"{ label : String.String, start : Basics.Float, end : Basics.Float, spacing : Basics.Float, tickLength : Basics.Float, tickWidth : Basics.Float, bars : List.List (Svg.Chart.Bar msg) }"},{"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":"Group","comment":" ","args":["msg"],"type":"{ label : String.String, spacing : Basics.Float, tickLength : Basics.Float, tickWidth : Basics.Float, bars : List.List (Svg.Chart.Bar msg) }"},{"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":" ","type":"Svg.Coordinates.Plane -> List.List (Svg.Chart.Group msg) -> 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":" ","type":"Svg.Coordinates.Plane -> List.List (Svg.Chart.Bin msg) -> 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":"toPoints","comment":" ","type":"(data -> Basics.Float) -> (data -> Basics.Float) -> List.List data -> List.List Svg.Chart.Point"},{"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.Float -> 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.Float -> 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.Float -> 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.Float -> 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, data : { min : Basics.Float, max : 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":[]}]