[{"name":"Messenger.Component.InitUpdateComponent","comment":" IU Component\n\n@docs ConcreteIUComponent\n@docs genIUComponent\n\n","unions":[],"aliases":[{"name":"ConcreteIUComponent","comment":" InitUpdateComponent\n","args":["cdata","data","userdata","tar","msg","bdata","scenemsg"],"type":"{ init : Messenger.Component.Component.ComponentInit cdata userdata msg data bdata, initUpdate : Messenger.Component.Component.ComponentUpdate cdata data userdata scenemsg tar msg bdata, update : Messenger.Component.Component.ComponentUpdate cdata data userdata scenemsg tar msg bdata, updaterec : Messenger.Component.Component.ComponentUpdateRec cdata data userdata scenemsg tar msg bdata, view : Messenger.Component.Component.ComponentView cdata userdata data bdata, matcher : Messenger.Component.Component.ComponentMatcher data bdata tar }"}],"values":[{"name":"genIUComponent","comment":" Generate abstract IU component from concrete IU component.\n","type":"Messenger.Component.InitUpdateComponent.ConcreteIUComponent cdata data userdata tar msg bdata scenemsg -> Messenger.Component.Component.ComponentStorage cdata userdata tar msg bdata scenemsg"}],"binops":[]},{"name":"Messenger.Component.PortableComponent","comment":"\n\n\n# Portable components\n\nThese are components that might be provided by an elm package.\n\nThere are some limitations for portable components:\n\n  - They don't have the base data\n  - They cannot get the common data\n  - You need to set the msg and target type for every portable component\n  - You need to provide a codec in the layer to translate the messages and targets\n\n@docs ConcretePortableComponent\n@docs PortableMsgCodec\n@docs PortableTarCodec\n\nYou can generate a general type of component from a concrete portable component, which means you can manage this component with a\nlist of user components.\n\n@docs genPortableComponent\n\n\n## Type sugar\n\n@docs PortableComponentInit, PortableComponentUpdate, PortableComponentUpdateRec, PortableComponentView\n@docs PortableComponentStorage\n\n","unions":[],"aliases":[{"name":"ConcretePortableComponent","comment":" ConcretePortableComponent\n\nUsed when createing a portable component.\n\nUse `translatePortableComponent` to create a `ConcreteUserComponent` from a `ConcretePortableComponent`.\n\nThe `scenemsg` type is replaced by `()` because you cannot send changescene message.\n\n","args":["data","userdata","tar","msg","scenemsg"],"type":"{ init : Messenger.Component.PortableComponent.PortableComponentInit userdata msg data, update : Messenger.Component.PortableComponent.PortableComponentUpdate data userdata tar msg scenemsg, updaterec : Messenger.Component.PortableComponent.PortableComponentUpdateRec data userdata tar msg scenemsg, view : Messenger.Component.PortableComponent.PortableComponentView userdata data, matcher : Messenger.GeneralModel.Matcher data tar }"},{"name":"PortableComponentInit","comment":" Portable component init type sugar\n","args":["userdata","msg","data"],"type":"Messenger.Base.Env () userdata -> msg -> data"},{"name":"PortableComponentStorage","comment":" Portable component storage as a specific component type sugar\n","args":["cdata","userdata","gtar","gmsg","bdata","scenemsg"],"type":"gmsg -> Messenger.Base.Env cdata userdata -> Messenger.Component.Component.AbstractComponent cdata userdata gtar gmsg bdata scenemsg"},{"name":"PortableComponentUpdate","comment":" Portable component update type sugar\n","args":["data","userdata","tar","msg","scenemsg"],"type":"Messenger.Base.Env () userdata -> Messenger.Base.UserEvent -> data -> ( data, List.List (Messenger.Scene.Scene.MMsg tar msg scenemsg userdata), ( Messenger.Base.Env () userdata, Basics.Bool ) )"},{"name":"PortableComponentUpdateRec","comment":" Portable component updaterec type sugar\n","args":["data","userdata","tar","msg","scenemsg"],"type":"Messenger.Base.Env () userdata -> msg -> data -> ( data, List.List (Messenger.Scene.Scene.MMsg tar msg scenemsg userdata), Messenger.Base.Env () userdata )"},{"name":"PortableComponentView","comment":" Portable component view type sugar\n","args":["userdata","data"],"type":"Messenger.Base.Env () userdata -> data -> Canvas.Renderable"},{"name":"PortableMsgCodec","comment":" Portable Component Message Codec\n","args":["specificmsg","generalmsg"],"type":"{ encode : generalmsg -> specificmsg, decode : specificmsg -> generalmsg }"},{"name":"PortableTarCodec","comment":" Portable Component Target Codec\n","args":["specifictar","generaltar"],"type":"{ encode : generaltar -> specifictar, decode : specifictar -> generaltar }"}],"values":[{"name":"genPortableComponent","comment":" Generate abstract component from concrete component.\n","type":"Messenger.Component.PortableComponent.ConcretePortableComponent data userdata tar msg scenemsg -> Messenger.Component.PortableComponent.PortableTarCodec tar gtar -> Messenger.Component.PortableComponent.PortableMsgCodec msg gmsg -> bdata -> Basics.Int -> Messenger.Component.PortableComponent.PortableComponentStorage cdata userdata gtar gmsg bdata scenemsg"}],"binops":[]},{"name":"Messenger.GlobalComponents.FPS.Model","comment":" Global component configuration module\n\nA Global Component to show FPS at the corner\n\n@docs InitOption, genGC\n\n","unions":[],"aliases":[{"name":"InitOption","comment":" Init Options\n","args":[],"type":"{ fontSize : Basics.Float }"}],"values":[{"name":"genGC","comment":" Generate a global component.\n","type":"Messenger.GlobalComponents.FPS.Model.InitOption -> Maybe.Maybe Messenger.Scene.Scene.GCTarget -> Messenger.Scene.Scene.GlobalComponentStorage userdata scenemsg"}],"binops":[]},{"name":"Messenger.GlobalComponents.Transition.Model","comment":"\n\n\n# Transition\n\n@docs InitOption, genGC\n@docs genTransitionSOM, genSequentialTransitionSOM, genMixedTransitionSOM\n\n","unions":[],"aliases":[{"name":"InitOption","comment":" Options\n","args":["scenemsg"],"type":"{ transition : Messenger.GlobalComponents.Transition.Transitions.Base.Transition, scene : ( String.String, Maybe.Maybe scenemsg ), filterSOM : Basics.Bool }"}],"values":[{"name":"genGC","comment":" Generate a global component.\n","type":"Messenger.GlobalComponents.Transition.Model.InitOption scenemsg -> Maybe.Maybe Messenger.Scene.Scene.GCTarget -> Messenger.Scene.Scene.GlobalComponentStorage userdata scenemsg"},{"name":"genMixedTransitionSOM","comment":" Generate a mixed transition scene output message.\n","type":"( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( String.String, Maybe.Maybe scenemsg ) -> Messenger.Scene.Scene.SceneOutputMsg scenemsg userdata"},{"name":"genSequentialTransitionSOM","comment":" Generate a sequential transition scene output message.\n","type":"( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( String.String, Maybe.Maybe scenemsg ) -> Messenger.Scene.Scene.SceneOutputMsg scenemsg userdata"},{"name":"genTransitionSOM","comment":" Generate a scene output message for a transition.\n","type":"( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> Basics.Bool -> ( String.String, Maybe.Maybe scenemsg ) -> Basics.Bool -> Messenger.Scene.Scene.SceneOutputMsg scenemsg userdata"}],"binops":[]},{"name":"Messenger.GlobalComponents.Transition.Transitions.Base","comment":"\n\n\n# Transition Base\n\n@docs Transition, SingleTrans, TransitionOption\n@docs genTransition, nullTransition\n\n","unions":[],"aliases":[{"name":"SingleTrans","comment":" Single Transition\n","args":[],"type":"Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"Transition","comment":" Transition has two stages:\n\n1.  From the old scene to the transition scene\n2.  From the transition scene to the new scene\n\n","args":[],"type":"{ currentTransition : Basics.Int, outT : Basics.Int, inT : Basics.Int, outTrans : Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, inTrans : Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, options : Messenger.GlobalComponents.Transition.Transitions.Base.TransitionOption }"},{"name":"TransitionOption","comment":" Transition option\n","args":[],"type":"{ mix : Basics.Bool }"}],"values":[{"name":"genTransition","comment":" Generate new transition\n","type":"( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> ( Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans, Duration.Duration ) -> Maybe.Maybe Messenger.GlobalComponents.Transition.Transitions.Base.TransitionOption -> Messenger.GlobalComponents.Transition.Transitions.Base.Transition"},{"name":"nullTransition","comment":" Null Transition\n","type":"Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"}],"binops":[]},{"name":"Messenger.GlobalComponents.Transition.Transitions.Fade","comment":" Fading Effects\n\n@docs fadeIn, fadeOut\n@docs fadeOutBlack, fadeInBlack\n@docs fadeOutWithRenderable, fadeInWithRenderable\n@docs fadeOutTransparent, fadeInTransparent\n\n","unions":[],"aliases":[],"values":[{"name":"fadeIn","comment":" Fade In with Color\n","type":"Color.Color -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"fadeInBlack","comment":" Fade In with Black\n","type":"Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans"},{"name":"fadeInTransparent","comment":" Fade In with transparent\n","type":"Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"fadeInWithRenderable","comment":" Fade In with Renderable\n","type":"Canvas.Renderable -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"fadeOut","comment":" Fade Out with Color\n","type":"Color.Color -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"fadeOutBlack","comment":" Fade Out with Black\n","type":"Messenger.GlobalComponents.Transition.Transitions.Base.SingleTrans"},{"name":"fadeOutTransparent","comment":" Fade Out with transparent\n","type":"Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"fadeOutWithRenderable","comment":" Fade Out with Renderable\n","type":"Canvas.Renderable -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"}],"binops":[]},{"name":"Messenger.GlobalComponents.Transition.Transitions.Scroll","comment":" Scroll Transition\n\n@docs scrollIn, scrollOut\n\n","unions":[],"aliases":[],"values":[{"name":"scrollIn","comment":" Scroll In\n","type":"Color.Color -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"},{"name":"scrollOut","comment":" Scroll Out\n","type":"Color.Color -> Messenger.Base.InternalData -> Canvas.Renderable -> Basics.Float -> Canvas.Renderable"}],"binops":[]},{"name":"Messenger.Layer.LayerExtra","comment":"\n\n\n# Layer extra features\n\n@docs BasicUpdater, Distributor\n\n","unions":[],"aliases":[{"name":"BasicUpdater","comment":" Basic Update Type\n\nA basic updater type used to update the basic data of the layer with event.\n\nUsers can use it as the first step of the update process\n\n","args":["data","cdata","userdata","tar","msg","scenemsg"],"type":"Messenger.Base.Env cdata userdata -> Messenger.Base.UserEvent -> data -> ( data, List.List (Messenger.Scene.Scene.MMsg tar msg scenemsg userdata), ( Messenger.Base.Env cdata userdata, Basics.Bool ) )"},{"name":"Distributor","comment":" Distributor Type\n\nA distributor is used to generate several list of Component Msgs for corresponding components list.\n\nThe `cmsgpacker` is a custom type to store the component msgs and their targets. Specifically, a `cmsgpacker` type should be\na record of different `List ( ComponentTarget, ComponentMsg )`.\n\n","args":["data","cdata","userdata","tar","msg","scenemsg","cmsgpacker"],"type":"Messenger.Base.Env cdata userdata -> Messenger.Base.UserEvent -> data -> ( data, ( List.List (Messenger.Scene.Scene.MMsg tar msg scenemsg userdata), cmsgpacker ), Messenger.Base.Env cdata userdata )"}],"values":[],"binops":[]},{"name":"Messenger.Misc.KeyCode","comment":" Common key codes\n\n@docs arrowUp, arrowDown, arrowLeft, arrowRight, space, escape, enter, backspace, tab, shift, ctrl, alt, capsLock, mouseLeftButton, mouseMidButton, mouseRightButton\n\n","unions":[],"aliases":[],"values":[{"name":"alt","comment":" keycode\n","type":"Basics.Int"},{"name":"arrowDown","comment":" keycode\n","type":"Basics.Int"},{"name":"arrowLeft","comment":" keycode\n","type":"Basics.Int"},{"name":"arrowRight","comment":" keycode\n","type":"Basics.Int"},{"name":"arrowUp","comment":" keycode\n","type":"Basics.Int"},{"name":"backspace","comment":" keycode\n","type":"Basics.Int"},{"name":"capsLock","comment":" keycode\n","type":"Basics.Int"},{"name":"ctrl","comment":" keycode\n","type":"Basics.Int"},{"name":"enter","comment":" keycode\n","type":"Basics.Int"},{"name":"escape","comment":" keycode\n","type":"Basics.Int"},{"name":"mouseLeftButton","comment":" mouse button\n","type":"Basics.Int"},{"name":"mouseMidButton","comment":" mouse button\n","type":"Basics.Int"},{"name":"mouseRightButton","comment":" mouse button\n","type":"Basics.Int"},{"name":"shift","comment":" keycode\n","type":"Basics.Int"},{"name":"space","comment":" keycode\n","type":"Basics.Int"},{"name":"tab","comment":" keycode\n","type":"Basics.Int"}],"binops":[]},{"name":"Messenger.Misc.RNG","comment":"\n\n\n# RNG module\n\nSample RNG module.\n\nThe seed is often given by the current tick.\n\n@docs genRandomInt, genRandomListInt\n\n","unions":[],"aliases":[],"values":[{"name":"genRandomInt","comment":" Generate a random int in the range [a, b] using the given seed.\n","type":"Basics.Int -> ( Basics.Int, Basics.Int ) -> Basics.Int"},{"name":"genRandomListInt","comment":" Generate a random list of ints in the range [a, b] using the given seed.\n","type":"Basics.Int -> Basics.Int -> ( Basics.Int, Basics.Int ) -> List.List Basics.Int"}],"binops":[]},{"name":"Messenger.Scene.VSR","comment":"\n\n\n# Virtual Scene Runner\n\n@docs VSR\n@docs updateVSR, viewVSR\n\n","unions":[],"aliases":[{"name":"VSR","comment":" Virtual Scene Runner\n","args":["userdata","scenemsg"],"type":"{ env : Messenger.Base.Env () userdata, scene : Messenger.Scene.Scene.MAbstractScene userdata scenemsg }"}],"values":[{"name":"updateVSR","comment":" Update the VSR.\n","type":"Messenger.Scene.VSR.VSR userdata scenemsg -> Messenger.Base.UserEvent -> ( Messenger.Scene.VSR.VSR userdata scenemsg, List.List (Messenger.Scene.Scene.SceneOutputMsg scenemsg userdata) )"},{"name":"viewVSR","comment":" View the VSR.\n","type":"Messenger.Scene.VSR.VSR userdata scenemsg -> Canvas.Renderable"}],"binops":[]}]