[{"name":"Animator","comment":"\n\n\n## Create an animation\n\n@docs Animation\n@docs withNoBounds, withUnitBounds, withDuration\n\n\n## Run the animation\n\n@docs render\n\n\n## Get information about an animation\n\n@docs duration, getEndState\n\n\n## Modify an animation\n\n\n### Initial and final states\n\n@docs startWith, endWith, oobValue, clampAnim\n\n\n### Modifications of individual animations\n\n@docs reverse, loopForever\n\n@docs delay, cutAt, freezeAfter\n\n@docs speedup, fitIn\n\n@docs mapRes\n\n\n## Compose animations\n\n\n### Just two animations\n\n@docs andAfter, alongWith\n\n\n### Many animations\n\n@docs together, sequence\n\n","unions":[{"name":"Animation","comment":" The core animation type\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"alongWith","comment":" Most general combination of two `Animation`s.\n\nYou probably want to narrow this down for your specific domain.\n\n","type":"(Basics.Float -> a -> b -> c) -> Animator.Animation a -> Animator.Animation b -> Animator.Animation c"},{"name":"andAfter","comment":" Takes two animations and plays them one after the other.\n\nThe order here is such that it's convenient when using a pipe:\n\n    beforAnimation\n        |> andAfter afterAnimation\n\n","type":"Animator.Animation a -> Animator.Animation a -> Animator.Animation a"},{"name":"clampAnim","comment":" Force the animation's initial and final values to what they would be at the start and end.\n\nBy default, animations can \"leak\" out of their bounds. This makes it so that when the animation is rendered \"beyond\" its bounds, it \"holds\" the value it ends with.\n\n","type":"Animator.Animation a -> Animator.Animation a"},{"name":"cutAt","comment":" Effectively sets the duration of the animation to be shorter.\n\nThis might not behave how you expect it: animations can keep going past their end, you might want to use `freezeAfter` if you want the animation to actually stop.\n\n","type":"Basics.Float -> Animator.Animation a -> Animator.Animation a"},{"name":"delay","comment":" Delays the start of an animation by the given time\n","type":"Basics.Float -> Animator.Animation a -> Animator.Animation a"},{"name":"duration","comment":" Get the duration of an existing animation\n","type":"Animator.Animation a -> Basics.Float"},{"name":"endWith","comment":" Force the animation's final value to the given argument\n","type":"a -> Animator.Animation a -> Animator.Animation a"},{"name":"fitIn","comment":" Speeds up the animation to fit within the given time\n","type":"Basics.Float -> Animator.Animation a -> Animator.Animation a"},{"name":"freezeAfter","comment":" Stops the animation after the given time.\n","type":"Basics.Float -> Animator.Animation a -> Animator.Animation a"},{"name":"getEndState","comment":" Get the final state of an existing animation\n","type":"Animator.Animation a -> a"},{"name":"loopForever","comment":" Sets an duration of `Infinity` and forever loops the animation\n","type":"Animator.Animation a -> Animator.Animation a"},{"name":"mapRes","comment":" Modifies the output of the animation\n","type":"(a -> b) -> Animator.Animation a -> Animator.Animation b"},{"name":"oobValue","comment":" Force the animation's initial and final values to the given argument\n","type":"a -> Animator.Animation a -> Animator.Animation a"},{"name":"render","comment":" Actually \"runs\" the animation at the given time.\n","type":"Basics.Float -> Animator.Animation a -> a"},{"name":"reverse","comment":" Reverse the animation entirely\n","type":"Animator.Animation a -> Animator.Animation a"},{"name":"sequence","comment":" With an initial value, plays a list of `Animation` in sequence.\n","type":"a -> List.List (Animator.Animation a) -> Animator.Animation a"},{"name":"speedup","comment":" Speeds up the animation by a desired factor\n","type":"Basics.Float -> Animator.Animation a -> Animator.Animation a"},{"name":"startWith","comment":" Force the animation's initial value to the given argument\n","type":"a -> Animator.Animation a -> Animator.Animation a"},{"name":"together","comment":" Plays a list of `Animation`s together.\n\nAlmost certainly more useful narrowed to a specific domain. Use `mapRes` to turn `List a` into something more helpful.\n\n","type":"List.List (Animator.Animation a) -> Animator.Animation (List.List a)"},{"name":"withDuration","comment":" Most general constructor for an `Animation`.\n","type":"Basics.Float -> (Basics.Float -> a) -> Animator.Animation a"},{"name":"withNoBounds","comment":" Create a constant animation of 0-duration\n","type":"a -> Animator.Animation a"},{"name":"withUnitBounds","comment":" Probably what wants to be used by default, expects an animation from 0 to 1.\n","type":"(Basics.Float -> a) -> Animator.Animation a"}],"binops":[]},{"name":"Animator.Math","comment":"\nSmall math helpers for making animations.\n\n@docs modByFloat, sign, interp\n","unions":[],"aliases":[],"values":[{"name":"interp","comment":" Linearly interpolates between the first two numbers.\n\n    -- interp start end 0 == start\n    -- interp start end 1 == end\n\n    interp 0 10 0.3 == 3\n    interp 0 100 -2 == -200\n","type":"Basics.Float -> Basics.Float -> Basics.Float -> Basics.Float"},{"name":"modByFloat","comment":"\nTakes a modulo, but is accepting of floats.\n\n    modByFloat 3.0 9.1 == 0.1\n","type":"Basics.Float -> Basics.Float -> Basics.Float"},{"name":"sign","comment":" Returns the sign of the number\n\n    sign 0 == 0\n    sign 3 == 1\n    sign -5 == -1\n","type":"Basics.Float -> Basics.Float"}],"binops":[]}]