[{"name":"InfScroll","comment":"\n\n\n# Type\n\n@docs InfScroll\n@docs Status\n@docs Dir\n@docs Msg\n@docs DomId\n\n\n# Init\n\n@docs init\n@docs setDir\n@docs setOffset\n@docs setInterval\n\n\n# Update\n\n@docs subscriptions\n@docs update\n@docs whenLoadMore\n@docs toLoaded\n@docs toStop\n\n\n# View\n\n@docs view\n@docs defaultContainerAttrs\n@docs defaultItemsAttrs\n\n\n# Get\n\n@docs getDir\n@docs getStatus\n@docs getViewport\n\n","unions":[{"name":"Dir","comment":" ","args":[],"cases":[["Top",[]],["Bottom",[]]]},{"name":"InfScroll","comment":" ","args":[],"cases":[]},{"name":"Msg","comment":" ","args":[],"cases":[]},{"name":"Status","comment":" ","args":[],"cases":[["Loading",[]],["Loaded",[]],["Loadable",[]],["Stop",[]]]}],"aliases":[{"name":"DomId","comment":" ","args":[],"type":"String.String"}],"values":[{"name":"defaultContainerAttrs","comment":" ","type":"InfScroll.InfScroll -> List.List (Html.Attribute msg)"},{"name":"defaultItemsAttrs","comment":" ","type":"InfScroll.InfScroll -> List.List (Html.Attribute msg)"},{"name":"getDir","comment":" ","type":"InfScroll.InfScroll -> InfScroll.Dir"},{"name":"getStatus","comment":" ","type":"InfScroll.InfScroll -> InfScroll.Status"},{"name":"getViewport","comment":" ","type":"InfScroll.InfScroll -> Maybe.Maybe Browser.Dom.Viewport"},{"name":"init","comment":"\n\n    InfScroll.init \"item-list\" InfScroll.Bottom\n        |> setOffset 100\n\n","type":"InfScroll.DomId -> InfScroll.Dir -> InfScroll.InfScroll"},{"name":"setDir","comment":" ","type":"InfScroll.Dir -> InfScroll.InfScroll -> InfScroll.InfScroll"},{"name":"setInterval","comment":" ","type":"Basics.Float -> InfScroll.InfScroll -> InfScroll.InfScroll"},{"name":"setOffset","comment":" ","type":"Basics.Int -> InfScroll.InfScroll -> InfScroll.InfScroll"},{"name":"subscriptions","comment":" ","type":"InfScroll.InfScroll -> Platform.Sub.Sub InfScroll.Msg"},{"name":"toLoaded","comment":"\n\n    GotItems items ->\n        ( { model\n            | items =\n                List.sort (model.items ++ items)\n            , infScroll =\n                if List.isEmpty items then\n                    InfScroll.toStop model.infScroll\n\n                else\n                    InfScroll.toLoaded model.infScroll\n            }\n        , Cmd.none\n        )\n\n","type":"InfScroll.InfScroll -> InfScroll.InfScroll"},{"name":"toStop","comment":" ","type":"InfScroll.InfScroll -> InfScroll.InfScroll"},{"name":"update","comment":" ","type":"InfScroll.Msg -> InfScroll.InfScroll -> ( InfScroll.InfScroll, Platform.Cmd.Cmd InfScroll.Msg )"},{"name":"view","comment":"\n\n    InfScroll.view model.infScroll\n        (InfScroll.defaultContainerAttrs infScroll)\n        (InfScroll.defaultItemsAttrs infScroll)\n        (List.map viewItem model.items)\n\n","type":"InfScroll.InfScroll -> List.List (Html.Attribute msg) -> List.List (Html.Attribute msg) -> List.List (Html.Html msg) -> Html.Html msg"},{"name":"whenLoadMore","comment":"\n\n    MapInfScroll subMsg ->\n        let\n            (newInfScroll, cmd) =\n                InfScroll.update subMsg model.infScroll\n                    |> InfScroll.whenLoadMore MapInfScroll getItems\n        in\n        ( { model | infScroll = newInfScroll }\n        , cmd\n        )\n\n","type":"(InfScroll.Msg -> msg) -> Platform.Cmd.Cmd msg -> ( InfScroll.InfScroll, Platform.Cmd.Cmd InfScroll.Msg ) -> ( InfScroll.InfScroll, Platform.Cmd.Cmd msg )"}],"binops":[]}]