[{"name":"ID","comment":"\nModule in which the base ID type is defined\n\n#Types\n@docs ID, Counter, Dict, Set\n\n#Functions\n@docs toString, debugID\n\n#Json\n@docs encode, decoder\n","unions":[],"aliases":[{"name":"Counter","comment":" Alias for [`ID.Counter.Counter`](ID.Counter#Counter) ","args":["id"],"type":"ID.Counter.Counter id"},{"name":"Dict","comment":" Alias for [`ID.Dict.Dict`](ID.Dict#Dict) ","args":["id","value"],"type":"ID.Dict.Dict id value"},{"name":"ID","comment":" The basis for making a ID type, has one generic type argument which should be an internal type to the module the ID type is defined in.\n\n    module UserID exposing(ID)\n\n    import ID\n\n    type alias ID = ID.ID IDInternal\n\n    type IDInternal = IDInternal\n\n","args":["a"],"type":"Internal.ID a"},{"name":"Set","comment":" Alias for [`ID.Set.Set`](ID.Set#Set) ","args":["id"],"type":"ID.Set.Set id"}],"values":[{"name":"debugID","comment":" Create an ID with an arbitrary value for debugging purposes. Requires 'Debug.todo' as a first argument ","type":"(String.String -> Basics.Never) -> Basics.Int -> ID.ID a"},{"name":"decoder","comment":" JSON Decoder for `ID` ","type":"Json.Decode.Decoder (ID.ID a)"},{"name":"encode","comment":" Encode `ID` to a JSON value ","type":"ID.ID a -> Json.Encode.Value"},{"name":"toString","comment":" Converts an ID into a string representing the number inside the ID ","type":"ID.ID a -> String.String"}],"binops":[]},{"name":"ID.Counter","comment":"\n\n@docs Counter\n@docs new, newID, newID2, newID3, newID4, giveIDs\n@docs accountForIDs, accountForItemIDs, accountForDictIDs\n@docs sanitizeIDs\n\n#Json\n@docs encode, decoder\n\n","unions":[{"name":"Counter","comment":"\nCounter type which is used to create [`ID`](ID#ID) values\n","args":["id"],"cases":[]}],"aliases":[],"values":[{"name":"accountForDictIDs","comment":" Same as [`accountForIDs`](ID.Counter#accountForIDs) but can be used with a [`Dict`](ID.Dict#Dict) ","type":"ID.Dict.Dict (Internal.ID a) value -> ID.Counter.Counter (Internal.ID a) -> ID.Counter.Counter (Internal.ID a)"},{"name":"accountForIDs","comment":"\nAccount for a list of [`ID`](ID#ID)s.\nThis should not be necessary if you always make sure to use the counter result from [`newID`](ID.Counter#newID), but can be used to sanitize the counter after encoding and decoding a counter and values\n","type":"List.List (Internal.ID a) -> ID.Counter.Counter (Internal.ID a) -> ID.Counter.Counter (Internal.ID a)"},{"name":"accountForItemIDs","comment":"\nSame as [`accountForIDs`](ID.Counter#accountForIDs) but can be used for a list of values containing an [`ID`](ID#ID)\n\n    newCounter = accountForItemIDs .id users counter\n","type":"(item -> Internal.ID a) -> List.List item -> ID.Counter.Counter (Internal.ID a) -> ID.Counter.Counter (Internal.ID a)"},{"name":"decoder","comment":" JSON Decoder for 'Counter' ","type":"Json.Decode.Decoder (ID.Counter.Counter id)"},{"name":"encode","comment":" Encode 'Counter' to a JSON value ","type":"ID.Counter.Counter id -> Json.Encode.Value"},{"name":"giveIDs","comment":" Asign [`ID`](ID#ID)s to a number of values, make sure to use the new counter to create any new IDs ","type":"(Internal.ID a -> b -> c) -> ID.Counter.Counter (Internal.ID a) -> List.List b -> ( List.List c, ID.Counter.Counter (Internal.ID a) )"},{"name":"new","comment":" Create a new counter ","type":"a -> ID.Counter.Counter (Internal.ID a)"},{"name":"newID","comment":"  Creates a new [`ID`](ID#ID) and advanced the counter, make sure to use the new counter to create any new IDs ","type":"ID.Counter.Counter (Internal.ID a) -> ( Internal.ID a, ID.Counter.Counter (Internal.ID a) )"},{"name":"newID2","comment":" Same as [`newID`](ID.Counter#newID) but creates 2 [`ID`](ID#ID)s instead of 1 ","type":"ID.Counter.Counter (Internal.ID a) -> ( Internal.ID a, Internal.ID a, ID.Counter.Counter (Internal.ID a) )"},{"name":"newID3","comment":" Same as [`newID`](ID.Counter#newID) but creates 3 [`ID`](ID#ID)s instead of 1 ","type":"ID.Counter.Counter (Internal.ID a) -> ( { id1 : Internal.ID a, id2 : Internal.ID a, id3 : Internal.ID a }, ID.Counter.Counter (Internal.ID a) )"},{"name":"newID4","comment":" Same as [`newID`](ID.Counter#newID) but creates 4 [`ID`](ID#ID)s instead of 1 ","type":"ID.Counter.Counter (Internal.ID a) -> ( { id1 : Internal.ID a, id2 : Internal.ID a, id3 : Internal.ID a, id4 : Internal.ID a }, ID.Counter.Counter (Internal.ID a) )"},{"name":"sanitizeIDs","comment":" Account for all used [`ID`](ID#ID)s in the counter (as in [`accountForIDs`](ID.Counter#accountForIDs)) and give new [`ID`](ID#ID)s to any items that have a duplicate [`ID`](ID#ID) ","type":"(val -> Internal.ID a) -> (val -> Internal.ID a -> val) -> List.List val -> ID.Counter.Counter (Internal.ID a) -> ( List.List val, ID.Counter.Counter (Internal.ID a) )"}],"binops":[]},{"name":"ID.Dict","comment":"\n@docs Dict\n\n@docs empty, fromList, toList\n@docs isEmpty, size\n@docs member, get, getFrom, insert, remove, update\n@docs map, filterMap, fold\n@docs ids, values\n@docs partition\n@docs diff, intersect, union\n\n#Json\n@docs encode, decoder\n","unions":[],"aliases":[{"name":"Dict","comment":" A [`Dict`](https://package.elm-lang.org/packages/elm/core/latest/Dict#Dict) for [`ID`](ID#ID)s ","args":["id","value"],"type":"Internal.Dict id value"}],"values":[{"name":"decoder","comment":" JSON Decoder for `Dict` ","type":"Json.Decode.Decoder value -> Json.Decode.Decoder (ID.Dict.Dict id value)"},{"name":"diff","comment":" Same as [`Dict.diff`](https://package.elm-lang.org/packages/elm/core/latest/Dict#diff) ","type":"ID.Dict.Dict (Internal.ID a) b -> ID.Dict.Dict (Internal.ID a) c -> ID.Dict.Dict (Internal.ID a) b"},{"name":"empty","comment":" Same as [`Dict.empty`](https://package.elm-lang.org/packages/elm/core/latest/Dict#empty) ","type":"ID.Dict.Dict (Internal.ID a) value"},{"name":"encode","comment":" Encode a `Dict` to a JSON value ","type":"(value -> Json.Encode.Value) -> ID.Dict.Dict id value -> Json.Encode.Value"},{"name":"filterMap","comment":" Same as [`List.filterMap`](https://package.elm-lang.org/packages/elm/core/latest/List#filterMap) but for Dicts ","type":"(Internal.ID a -> b -> Maybe.Maybe c) -> ID.Dict.Dict (Internal.ID a) b -> ID.Dict.Dict (Internal.ID a) c"},{"name":"fold","comment":" Same as [`Dict.foldl`](https://package.elm-lang.org/packages/elm/core/latest/Dict#foldl) ","type":"(Internal.ID a -> value -> c -> c) -> c -> ID.Dict.Dict (Internal.ID a) value -> c"},{"name":"fromList","comment":" Same as [`Dict.fromList`](https://package.elm-lang.org/packages/elm/core/latest/Dict#fromList) ","type":"List.List ( Internal.ID a, value ) -> ID.Dict.Dict (Internal.ID a) value"},{"name":"get","comment":" Same as [`Dict.get`](https://package.elm-lang.org/packages/elm/core/latest/Dict#get) ","type":"Internal.ID a -> ID.Dict.Dict (Internal.ID a) value -> Maybe.Maybe value"},{"name":"getFrom","comment":" Same as [`get`](ID.Dict#get) but with the arguments swapped, useful for pipelines ","type":"ID.Dict.Dict (Internal.ID a) value -> Internal.ID a -> Maybe.Maybe value"},{"name":"ids","comment":" Same as [`Dict.keys`](https://package.elm-lang.org/packages/elm/core/latest/Dict#keys) ","type":"ID.Dict.Dict (Internal.ID a) value -> List.List (Internal.ID a)"},{"name":"insert","comment":" Same as [`Dict.insert`](https://package.elm-lang.org/packages/elm/core/latest/Dict#insert) ","type":"Internal.ID a -> value -> ID.Dict.Dict (Internal.ID a) value -> ID.Dict.Dict (Internal.ID a) value"},{"name":"intersect","comment":" Same as [`Dict.intersect`](https://package.elm-lang.org/packages/elm/core/latest/Dict#intersect), but can accept dictionaries with different value types ","type":"ID.Dict.Dict (Internal.ID a) b -> ID.Dict.Dict (Internal.ID a) c -> ID.Dict.Dict (Internal.ID a) b"},{"name":"isEmpty","comment":" Same as [`Dict.isEmpty`](https://package.elm-lang.org/packages/elm/core/latest/Dict#isEmpty) ","type":"ID.Dict.Dict (Internal.ID a) value -> Basics.Bool"},{"name":"map","comment":" Same as [`Dict.map`](https://package.elm-lang.org/packages/elm/core/latest/Dict#map) ","type":"(Internal.ID a -> b -> c) -> ID.Dict.Dict (Internal.ID a) b -> ID.Dict.Dict (Internal.ID a) c"},{"name":"member","comment":" Same as [`Dict.member`](https://package.elm-lang.org/packages/elm/core/latest/Dict#member) ","type":"Internal.ID a -> ID.Dict.Dict (Internal.ID a) value -> Basics.Bool"},{"name":"partition","comment":" Same as [`Dict.partition`](https://package.elm-lang.org/packages/elm/core/latest/Dict#partition) ","type":"(Internal.ID a -> value -> Basics.Bool) -> ID.Dict.Dict (Internal.ID a) value -> ( ID.Dict.Dict (Internal.ID a) value, ID.Dict.Dict (Internal.ID a) value )"},{"name":"remove","comment":" Same as [`Dict.remove`](https://package.elm-lang.org/packages/elm/core/latest/Dict#remove) ","type":"Internal.ID a -> ID.Dict.Dict (Internal.ID a) value -> ID.Dict.Dict (Internal.ID a) value"},{"name":"size","comment":" Same as [`Dict.size`](https://package.elm-lang.org/packages/elm/core/latest/Dict#size) ","type":"ID.Dict.Dict (Internal.ID a) value -> Basics.Int"},{"name":"toList","comment":" Same as [`Dict.toList`](https://package.elm-lang.org/packages/elm/core/latest/Dict#toList) ","type":"ID.Dict.Dict (Internal.ID a) value -> List.List ( Internal.ID a, value )"},{"name":"union","comment":" Same as [`Dict.union`](https://package.elm-lang.org/packages/elm/core/latest/Dict#union) ","type":"ID.Dict.Dict (Internal.ID a) value -> ID.Dict.Dict (Internal.ID a) value -> ID.Dict.Dict (Internal.ID a) value"},{"name":"update","comment":" Same as [`Dict.update`](https://package.elm-lang.org/packages/elm/core/latest/Dict#update) but does not operate on Maybe values ","type":"Internal.ID a -> (value -> value) -> ID.Dict.Dict (Internal.ID a) value -> ID.Dict.Dict (Internal.ID a) value"},{"name":"values","comment":" Same as [`Dict.values`](https://package.elm-lang.org/packages/elm/core/latest/Dict#values) ","type":"ID.Dict.Dict (Internal.ID a) value -> List.List value"}],"binops":[]},{"name":"ID.Set","comment":"\n@docs Set\n\n@docs empty, fromList, toList\n\n@docs isEmpty, size, member\n\n@docs insert, remove\n\n@docs fold\n\n@docs diff, intersect, union\n\n#Json\n@docs encode, decoder\n","unions":[],"aliases":[{"name":"Set","comment":" A set type for IDs, is equal to a [`ID.Dict'](ID.Dict#Dict) with empty tuples as values ","args":["id"],"type":"ID.Dict.Dict id ()"}],"values":[{"name":"decoder","comment":" JSON Decoder for `Set` ","type":"Json.Decode.Decoder (ID.Set.Set id)"},{"name":"diff","comment":" Alias for [`ID.Dict.diff'](ID.Dict#diff) ","type":"ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a)"},{"name":"empty","comment":" Alias for [`ID.Dict.empty'](ID.Dict#empty) ","type":"ID.Set.Set (Internal.ID a)"},{"name":"encode","comment":" Encode `Set` to a JSON value ","type":"ID.Set.Set id -> Json.Encode.Value"},{"name":"fold","comment":" Alias for [`ID.Dict.fold'](ID.Dict#fold) but without a value argument ","type":"(Internal.ID a -> c -> c) -> c -> ID.Set.Set (Internal.ID a) -> c"},{"name":"fromList","comment":" Create a set from a list of IDs ","type":"List.List (Internal.ID a) -> ID.Set.Set (Internal.ID a)"},{"name":"insert","comment":" Alias for [`ID.Dict.insert'](ID.Dict#insert) but without a value ","type":"Internal.ID a -> ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a)"},{"name":"intersect","comment":" Alias for [`ID.Dict.intersect'](ID.Dict#intersect) ","type":"ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a)"},{"name":"isEmpty","comment":" Alias for [`ID.Dict.isEmpty'](ID.Dict#isEmpty) ","type":"ID.Set.Set (Internal.ID a) -> Basics.Bool"},{"name":"member","comment":" Alias for [`ID.Dict.member'](ID.Dict#member) ","type":"Internal.ID a -> ID.Set.Set (Internal.ID a) -> Basics.Bool"},{"name":"remove","comment":" Alias for [`ID.Dict.remove'](ID.Dict#remove) ","type":"Internal.ID a -> ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a)"},{"name":"size","comment":" Alias for [`ID.Dict.size'](ID.Dict#size) ","type":"ID.Set.Set (Internal.ID a) -> Basics.Int"},{"name":"toList","comment":" Alias for [`ID.Dict.ids'](ID.Dict#ids) ","type":"ID.Set.Set (Internal.ID a) -> List.List (Internal.ID a)"},{"name":"union","comment":" Alias for [`ID.Dict.union'](ID.Dict#union) ","type":"ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a) -> ID.Set.Set (Internal.ID a)"}],"binops":[]}]