[{"name":"Messenger.GeneralModel","comment":"\n\n\n# General Model\n\nGeneral model is designed to be an abstract interface of scenes, layers, components, game components, etc..\n\n  - a: data type\n  - b: environment type\n  - c: init type\n  - d: message type\n  - e: target type\n  - f: render type\n\n@docs GeneralModel\n@docs viewModelList, viewModelArray\n\n","unions":[],"aliases":[{"name":"GeneralModel","comment":" General Model.\n\nThis has a name field.\n\n","args":["a","b","c","d","e","f"],"type":"{ name : String.String, data : a, init : b -> c -> a, update : b -> d -> a -> ( a, List.List ( e, d ), b ), view : b -> a -> f }"}],"values":[{"name":"viewModelArray","comment":" View model array.\n","type":"b -> Array.Array (Messenger.GeneralModel.GeneralModel a b c d e f) -> List.List f"},{"name":"viewModelList","comment":" View model list.\n","type":"b -> List.List (Messenger.GeneralModel.GeneralModel a b c d e f) -> List.List f"}],"binops":[]},{"name":"Messenger.Recursion","comment":"\n\n\n# Recursion\n\nThis module provides the signature for the updater\n\n@docs Updater, Matcher, Super\n@docs RecBody\n\n","unions":[],"aliases":[{"name":"Matcher","comment":" Return true if the target is the sender (second argument)\n","args":["a","d"],"type":"a -> d -> Basics.Bool"},{"name":"RecBody","comment":" RecBody type.\n\nPass this as an argument to the updater\n\n","args":["a","b","c","d"],"type":"{ update : Messenger.Recursion.Updater a b c d, match : Messenger.Recursion.Matcher a d, super : Messenger.Recursion.Super d }"},{"name":"Super","comment":" Return true if the target is the parent\n","args":["d"],"type":"d -> Basics.Bool"},{"name":"Updater","comment":" The updater\na: message sender (object)\nb: message\nc: environment messages\nd: target\n","args":["a","b","c","d"],"type":"a -> c -> b -> ( a, List.List ( d, b ), c )"}],"values":[],"binops":[]},{"name":"Messenger.RecursionArray","comment":"\n\n\n# RecursionArray\n\nArray implementation for the recursion algorithm\n\n@docs updateObjects\n\n\n## Tools\n\n@docs getObjectIndices, getObjectIndex, getObjects, getObject, updateObjectByIndex, updateObjectsByTarget\n\n","unions":[],"aliases":[],"values":[{"name":"getObject","comment":" Get the object that matches the target (the first one)\n","type":"Messenger.Recursion.Matcher a d -> d -> Array.Array a -> Maybe.Maybe a"},{"name":"getObjectIndex","comment":" Get the index of the object that matches the target (the first one)\n\nTODO: use better algorithm\n\n","type":"Messenger.Recursion.Matcher a d -> d -> Array.Array a -> Maybe.Maybe Basics.Int"},{"name":"getObjectIndices","comment":" Get the indices of the objects that match the target\n","type":"Messenger.Recursion.Matcher a d -> d -> Array.Array a -> List.List Basics.Int"},{"name":"getObjects","comment":" Get the objects that match the target\n","type":"Messenger.Recursion.Matcher a d -> d -> Array.Array a -> Array.Array a"},{"name":"updateObjectByIndex","comment":" Update the object by index\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> Basics.Int -> Array.Array a -> ( Array.Array a, List.List ( d, b ), c )"},{"name":"updateObjects","comment":" Recursively update all the objects in the List\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> Array.Array a -> ( Array.Array a, List.List b, c )"},{"name":"updateObjectsByTarget","comment":" Update all the objects that match the target\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> d -> Array.Array a -> ( Array.Array a, List.List ( d, b ), c )"}],"binops":[]},{"name":"Messenger.RecursionList","comment":"\n\n\n# RecursionList\n\nList implementation for the recursion algorithm\n\n@docs updateObjects\n\n\n## Tools\n\n@docs getObjectByIndex, getObjectIndices, getObjectIndex, getObjects, getObject, updateObjectByIndex, updateObjectsByTarget\n\n","unions":[],"aliases":[],"values":[{"name":"getObject","comment":" Get the object that matches the target (the first one)\n","type":"Messenger.Recursion.Matcher a d -> d -> List.List a -> Maybe.Maybe a"},{"name":"getObjectByIndex","comment":" Get the object by index\n","type":"Basics.Int -> List.List a -> Maybe.Maybe a"},{"name":"getObjectIndex","comment":" Get the index of the object that matches the target (the first one)\n","type":"Messenger.Recursion.Matcher a d -> d -> List.List a -> Maybe.Maybe Basics.Int"},{"name":"getObjectIndices","comment":" Get the indices of the objects that match the target\n","type":"Messenger.Recursion.Matcher a d -> d -> List.List a -> List.List Basics.Int"},{"name":"getObjects","comment":" Get the objects that match the target\n","type":"Messenger.Recursion.Matcher a d -> d -> List.List a -> List.List a"},{"name":"updateObjectByIndex","comment":" Update the object by index\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> Basics.Int -> List.List a -> ( List.List a, List.List ( d, b ), c )"},{"name":"updateObjects","comment":" Recursively update all the objects in the List\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> List.List a -> ( List.List a, List.List b, c )"},{"name":"updateObjectsByTarget","comment":" Update all the objects that match the target\n","type":"Messenger.Recursion.RecBody a b c d -> c -> b -> d -> List.List a -> ( List.List a, List.List ( d, b ), c )"}],"binops":[]}]