[{"name":"Neat","comment":" Main module for elm-neat-layout.\n\n\n# Core\n\n@docs View\n@docs Boundary\n\n\n# Render\n\n@docs render\n@docs Renderer\n@docs defaultRenderer\n@docs setBaseSizeInRem\n\n\n# Handle conditions\n\n@docs when\n@docs unless\n@docs withMaybe\n\n\n# Custom gaps\n\nYou can use custom gaps just by declaring new types and `IsGap` values for them.\n\n    import Neat exposing (IsGap)\n\n    type ButtonGroup\n        = ButtonGroup Never\n\n    buttonGroup : IsGap ButtonGroup\n    buttonGroup =\n        IsGap\n            { horizontal = 0.6\n            , vertical = 0.6\n            }\n\n@docs IsGap\n@docs customGap\n@docs Gap\n\n","unions":[],"aliases":[{"name":"Boundary","comment":" A bounded View without gap.\n\nConvert to/from View by `setGap`/`setBoundary`.\n\n","args":["msg"],"type":"Neat.Boundary.Boundary msg"},{"name":"Gap","comment":" ","args":[],"type":"{ horizontal : Basics.Float, vertical : Basics.Float }"},{"name":"IsGap","comment":" Information about your custom gaps.\n\n  - horizontal : horizontal gap relative to _base size_\n  - vertical : vertical gap relative to _base size_\n\ne.g., If the _base size_ is `2rem`, `IsGap { horizontal = 1.2, vertical = 2 }` becomes gap with `\"2.4rem\"` horizontally and `\"4rem\"` vertically.\n\n","args":["p"],"type":"Neat.Internal.IsGap p"},{"name":"Renderer","comment":" Settings for rendering `View`.\n","args":[],"type":"Neat.Internal.Renderer"},{"name":"View","comment":" A gap-sensible `Html msg` alternative.\n","args":["gap","msg"],"type":"Neat.View.View gap msg"}],"values":[{"name":"customGap","comment":" ","type":"Neat.Gap -> Neat.IsGap p"},{"name":"defaultRenderer","comment":"\n\n  - base size: 1rem\n\n","type":"Neat.Renderer"},{"name":"render","comment":" Render the `View` into `Html` so that it spreads across the screen.\n","type":"Neat.Renderer -> Neat.Boundary msg -> Mixin.Html.Html msg"},{"name":"setBaseSizeInRem","comment":" Set the base size in [rem](https://developer.mozilla.org/en-US/docs/Web/CSS/length#rem).\n\n> Represents the font-size of the root element (typically <html>).\n\nAll gap sizes are determined relative to this value.\n\n","type":"Basics.Float -> Neat.Renderer -> Neat.Renderer"},{"name":"unless","comment":" Apply a modifier unless a condition is met.\n","type":"Basics.Bool -> (a -> a) -> a -> a"},{"name":"when","comment":" Apply a modifier only when a condition is met.\n","type":"Basics.Bool -> (a -> a) -> a -> a"},{"name":"withMaybe","comment":" Apply a modifier only if the given value is `Just`.\n","type":"Maybe.Maybe a -> (a -> b -> b) -> b -> b"}],"binops":[]},{"name":"Neat.Boundary","comment":" Module for building `Boundary`.\n\n\n# Core\n\n@docs Boundary\n@docs map\n@docs empty\n\n\n# Attributes\n\nFunctions to set arbitrary attributes.\nThe following styles are not reflected by the `style` attribute or CSS files.\n\n  - padding / margin\n      - Use functions for gaps.\n  - min-width / max-width / min-height / max-height / line-height\n      - Use functions for sizes.\n  - width / height\n      - Use min-\\* and max-\\*.\n  - white-space\n      - Determined by wrapping style\n  - display / position\n      - Determined automatically by its context\n  - z-index\n      - Enforced to be \"auto\"\n  - box-sizing\n      - Determined by each type of view.\n          - `scalableBlock` is \"content-box\"\n          - otherwise, \"border-box\"\n  - overflow\n      - Boundaries automatically handles overflow.\n  - position\n      - Use putLayer\n  - line-height\n      - Specify with `Neat.View.textBlock` of `Neat.View.fromFlows`\n\n@docs setMixin\n@docs setMixins\n@docs setAttribute\n@docs setAttributes\n@docs setClass\n@docs setId\n\n\n# WAI-ARIA\n\n@docs setRole\n@docs setAria\n@docs setBoolAria\n\n\n# Sizes\n\nYou can only use a limited kind of units.\nThis may seem inconvenient, but it prevents you to build unmaintainable broken views.\n\n\n## Minimum width\n\nThe default _minimum width_ is zero without enabling child overflow.\n\n@docs setMinWidthInBs\n@docs setMinWidthInEm\n@docs setMinWidthInRem\n\n\n## Minimum height\n\nThe default _minimum height_ is zero without enabling child overflow.\n\n@docs setMinHeightInBs\n@docs setMinHeightInEm\n@docs setMinHeightInRem\n\n\n## Maximum width\n\nThe default value for maximum width is _fit_, which shrinks as much as its children do not overhang it.\n\n@docs setMaxWidthInBs\n@docs setMaxWidthInEm\n@docs setMaxWidthInRem\n\n\n## Maximum height\n\nThe default value for maximum height is _fit_, which shrinks as much as its children do not overhang it.\n\n@docs setMaxHeightInBs\n@docs setMaxHeightInEm\n@docs setMaxHeightInRem\n\n\n# Row\n\n@docs row\n@docs center\n\n\n## Config\n\n@docs Row\n@docs defaultRow\n@docs disableWrap\n@docs enableHScroll\n@docs RowItem\n@docs alignCenter\n@docs alignRight\n\n\n## Item\n\nEach function has the `String` argument, which helps make the DOM modifications more efficient. It must be unique among items in the same row.\n\n@docs rowItem\n@docs topItem\n@docs middleItem\n@docs bottomItem\n@docs grownRowItem\n@docs grownTopItem\n@docs grownMiddleItem\n@docs grownBottomItem\n\n\n# Column\n\n@docs column\n\n\n## Config\n\n@docs Column\n@docs defaultColumn\n@docs enableVScroll\n@docs setVerticalScroller\n@docs ColumnItem\n@docs alignMiddle\n@docs alignBottom\n\n\n## Item\n\nEach function has the `String` argument, which helps make the DOM modifications more efficient. It must be unique among items in the same row.\n\n@docs columnItem\n@docs leftItem\n@docs centerItem\n@docs rightItem\n@docs grownColumnItem\n@docs grownLeftItem\n@docs grownCenterItem\n@docs grownRightItem\n\n\n# Overlay\n\n@docs putLayer\n@docs Layer\n@docs defaultLayer\n@docs Layered\n@docs mapLayered\n@docs toLayered\n\n\n# Handle Conditions\n\n@docs none\n@docs when\n@docs unless\n@docs withMaybe\n\n\n# Convert to `View`\n\n@docs setGap\n\n\n# Lower level functions for HTML\n\n@docs setNodeName\n\n","unions":[{"name":"Column","comment":" ","args":[],"cases":[]},{"name":"ColumnItem","comment":" ","args":["msg"],"cases":[]},{"name":"Row","comment":" ","args":[],"cases":[]},{"name":"RowItem","comment":" ","args":["msg"],"cases":[]}],"aliases":[{"name":"Boundary","comment":" A bounded View without gap.\n\nConvert to/from View by `setGap`/`setBoundary`.\n\n","args":["msg"],"type":"Neat.Internal.Boundary msg"},{"name":"Layer","comment":" Set the position of each edge of the overlay layer as a percentage of the base view.\n\nThe `priority` field specifies how much the element is superimposed on the front side in preference to other elements. If given `Nothing`, it is set equivalent priority comparing to other elements.\n\n","args":[],"type":"{ top : Basics.Float, bottom : Basics.Float, left : Basics.Float, right : Basics.Float, priority : Maybe.Maybe Basics.Int }"},{"name":"Layered","comment":" ","args":["msg"],"type":"Neat.Internal.Layered msg"}],"values":[{"name":"alignBottom","comment":" ","type":"Neat.Boundary.Column -> Neat.Boundary.Column"},{"name":"alignCenter","comment":" ","type":"Neat.Boundary.Row -> Neat.Boundary.Row"},{"name":"alignMiddle","comment":" ","type":"Neat.Boundary.Column -> Neat.Boundary.Column"},{"name":"alignRight","comment":" ","type":"Neat.Boundary.Row -> Neat.Boundary.Row"},{"name":"bottomItem","comment":" Bottom-aligned item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"center","comment":" An alias for `row` with a centered element.\n","type":"Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"centerItem","comment":" Horizontally centered item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"column","comment":" Align children horizontally.\n","type":"Neat.Boundary.Column -> List.List (Neat.Boundary.ColumnItem msg) -> Neat.Boundary.Boundary msg"},{"name":"columnItem","comment":" Column item with stretched height.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"defaultColumn","comment":" Default setting for columns.\n\n  - vertical alignment: top\n  - vertical scroll: disabled\n\n","type":"Neat.Boundary.Column"},{"name":"defaultLayer","comment":"\n\n    defaultLayer\n    --> { top = 0\n    --> , bottom = 0\n    --> , left = 0\n    --> , right = 0\n    --> , priority = Nothing\n    --> }\n\n","type":"Neat.Boundary.Layer"},{"name":"defaultRow","comment":" Default setting for rows.\n\n  - horizontal alignment: left\n  - wrapping: enabled\n  - horizontal scroll: disabled\n\n","type":"Neat.Boundary.Row"},{"name":"disableWrap","comment":" ","type":"Neat.Boundary.Row -> Neat.Boundary.Row"},{"name":"empty","comment":" An empty block.\n\nIn HTML terms, it generates an HTML element without content.\n\n    -- Exposed by `elm-community/html-extra`\n\n\n    import Html.Attributes exposing (type_, value)\n    import Html.Events.Extra exposing (onChange)\n    import Neat.Boundary as Boundary\n\n    input : Model -> Boundary msg\n    input model =\n        Boundary.empty\n            |> Boundary.setNodeName \"input\"\n            |> Boundary.setAttributes\n                [ type_ \"text\"\n                , value model.input\n                , onChange ChangeInputValue\n                ]\n\n","type":"Neat.Boundary.Boundary msg"},{"name":"enableHScroll","comment":" ","type":"Neat.Boundary.Row -> Neat.Boundary.Row"},{"name":"enableVScroll","comment":" Enable vertical scroll.\n","type":"Neat.Boundary.Column -> Neat.Boundary.Column"},{"name":"grownBottomItem","comment":" Bottom-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"grownCenterItem","comment":" Horizontally centered item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"grownColumnItem","comment":" Column item with stretched height and width.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"grownLeftItem","comment":" Left-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"grownMiddleItem","comment":" Vertically centered item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"grownRightItem","comment":" Right-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"grownRowItem","comment":" Row item with stretched height and width.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"grownTopItem","comment":" Top-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"leftItem","comment":" Left-aligned item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"map","comment":" ","type":"(a -> b) -> Neat.Boundary.Boundary a -> Neat.Boundary.Boundary b"},{"name":"mapLayered","comment":" ","type":"(a -> b) -> Neat.Boundary.Boundary (Neat.Boundary.Layered a) -> Neat.Boundary.Boundary (Neat.Boundary.Layered b)"},{"name":"middleItem","comment":" Vertically centered item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"none","comment":" Generates no HTML nodes.\nThis is useful for handling elements which only appears under certain conditions.\n\n    when p v =\n        if p then\n            v\n\n        else\n            none\n\n","type":"Neat.Boundary.Boundary a"},{"name":"putLayer","comment":" Put overlay layer on the parent view.\n","type":"String.String -> ( Neat.Boundary.Layer, Neat.Boundary.Boundary (Neat.Boundary.Layered msg) ) -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"rightItem","comment":" Right-aligned item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.ColumnItem msg"},{"name":"row","comment":" Align children horizontally.\n","type":"Neat.Boundary.Row -> List.List (Neat.Boundary.RowItem msg) -> Neat.Boundary.Boundary msg"},{"name":"rowItem","comment":" Row item with stretched height.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"setAria","comment":" Set \"aria-\\*\" value for WAI-ARIA.\n\ne.g., `setAria \"required\" \"true\"` stands for \"aria-required\" is \"true\".\n\n","type":"String.String -> String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setAttribute","comment":" Append `Attribute` on boundaries.\n","type":"Html.Attribute msg -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setAttributes","comment":" Same as `setAttribute` but takes a list of `Attribute`s.\n","type":"List.List (Html.Attribute msg) -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setBoolAria","comment":" Set boolean \"aria-\\*\" value for WAI-ARIA.\n\ni.e.,\n\n  - `setBoolAria name True` is equal to `setAria name \"true\"`\n  - `setBoolAria name False` is equal to `setAria name \"false\"`\n\n","type":"String.String -> Basics.Bool -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setClass","comment":" Append `class` attribute.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setGap","comment":" Set Gap around a view.\n","type":"Neat.Internal.IsGap gap -> Neat.Boundary.Boundary msg -> Neat.Internal.View gap msg"},{"name":"setId","comment":" Append `id` attribute.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxHeightInBs","comment":" Set the maximum height as a percentage of the _base size_.\ne.g., `setMaxHeightInBs 100` set the _maximum height_ the same length as the _base size_.\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxHeightInEm","comment":" Set the maximum height in [em](https://developer.mozilla.org/en-US/docs/Web/CSS/length#em).\n\n> Represents the calculated font-size of the element.\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxHeightInRem","comment":" Set the maximum height in [rem](https://developer.mozilla.org/en-US/docs/Web/CSS/length#rem).\n\n> Represents the font-size of the root element (typically <html>).\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxWidthInBs","comment":" Set the maximum width as a percentage of the _base size_.\ne.g., `setMaxWidthInBs 100` set the _maximum width_ the same length as the _base size_.\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxWidthInEm","comment":" Set the maximum width in [em](https://developer.mozilla.org/en-US/docs/Web/CSS/length#em).\n\n> Represents the calculated font-size of the element.\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMaxWidthInRem","comment":" Set the maximum width in [rem](https://developer.mozilla.org/en-US/docs/Web/CSS/length#rem).\n\n> Represents the font-size of the root element (typically <html>).\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinHeightInBs","comment":" Set the minimum height as a percentage of the _base size_.\ne.g., `setMinHeightInBs 100` set the _minimum height_ the same length as the _base size_.\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinHeightInEm","comment":" Set the minimum height in [em](https://developer.mozilla.org/en-US/docs/Web/CSS/length#em).\n\n> Represents the calculated font-size of the element.\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinHeightInRem","comment":" Set the minimum height in [rem](https://developer.mozilla.org/en-US/docs/Web/CSS/length#rem).\n\n> Represents the font-size of the root element (typically <html>).\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinWidthInBs","comment":" Set the minimum width as a percentage of the _base size_.\ne.g., `setMinWidthInBs 100` set the _minimum width_ the same length as the _base size_.\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinWidthInEm","comment":" Set the minimum width in [em](https://developer.mozilla.org/en-US/docs/Web/CSS/length#em).\n\n> Represents the calculated font-size of the element.\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMinWidthInRem","comment":" Set the minimum width in [rem](https://developer.mozilla.org/en-US/docs/Web/CSS/length#rem).\n\n> Represents the font-size of the root element (typically <html>).\n\n","type":"Basics.Float -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMixin","comment":" Append `Mixin` on boundaries.\n","type":"Mixin.Mixin msg -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setMixins","comment":" Same as `setMixin` but takes a list of `Mixin`s.\n","type":"List.List (Mixin.Mixin msg) -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setNodeName","comment":" Set HTML node name on `Boundary`.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setRole","comment":" Set \"role\" value for WAI-ARIA.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"setVerticalScroller","comment":" Just for convenience.\n\n    setVerticalScroller boundary =\n        column\n            (defaultColumn\n                |> enableVScroll\n            )\n            [ grownColumnItem \"content\" boundary\n            ]\n\n","type":"Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"toLayered","comment":" Convert `Boundary` for `putLayer`. The `Boundary (Layered msg)` ignores pointer events; this feature is especially helpfull for realizing popups with clickable background.\n","type":"Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary (Neat.Boundary.Layered msg)"},{"name":"topItem","comment":" Top-aligned item.\n","type":"String.String -> Neat.Boundary.Boundary msg -> Neat.Boundary.RowItem msg"},{"name":"unless","comment":" Insert a view unless a condition is met.\n","type":"Basics.Bool -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"when","comment":" Insert a view only when a condition is met.\n","type":"Basics.Bool -> Neat.Boundary.Boundary msg -> Neat.Boundary.Boundary msg"},{"name":"withMaybe","comment":" Insert a view only if the given value is `Just`.\n","type":"Maybe.Maybe a -> (a -> Neat.Boundary.Boundary msg) -> Neat.Boundary.Boundary msg"}],"binops":[]},{"name":"Neat.Flow","comment":" Module for [flow contents](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#flow_content).\n\nYou will use this module for two main purposes:\n\n  - To add attributes or styles within a series of strings.\n\n        import Html.Attributes exposing (class, href)\n        import Neat.Flow as Flow\n        import Neat.View as View\n\n        sample : View SampleGap msg\n        sample =\n            View.fromFlows sampleGap\n                [ Flow.fromString \"Please \"\n                , Flow.fromString \"contact us\"\n                    |> Flow.setNodeName \"a\"\n                    |> Flow.setAttribute\n                        (href \"https://example.com/contact\")\n                , Flow.fromString \" if you receive this \"\n                , Flow.fromString \"error message\"\n                    |> Flow.setAttribute (class \"error\")\n                , Flow.fromString \" multiple times.\"\n                ]\n\n        -- <div>Please <a href=\"https://example.com/contact\">contact us</a> if you receive this <span class=\"error\">error message</span> multiple times.</div>\n\n  - To generate HTML elements that are allowed to contain only flow content.\n\n        import Html.Attributes exposing (attribute, selected, value)\n        import Html.Events as Events\n        import Neat.Boundary as Boundary\n        import Neat.Flow as Flow\n        import Neat.View as View\n\n        sampleSelect : Model -> Boundary Msg\n        sampleSelect model =\n            View.fromFlows sampleGap\n                [ Flow.fromString \"-- Select one --\"\n                    |> Flow.setNodeName \"option\"\n                    |> Flow.setAttributes\n                        [ attribute \"value\" \"\"\n                        , selected <| model.selected == \"\"\n                        ]\n                , Flow.fromString \"Goat\"\n                    |> Flow.setNodeName \"option\"\n                    |> Flow.setAttributes\n                        [ attribute \"value\" \"goat\"\n                        , selected <| model.selected == \"goat\"\n                        ]\n                , Flow.fromString \"Dog\"\n                    |> Flow.setNodeName \"option\"\n                    |> Flow.setAttributes\n                        [ attribute \"value\" \"dog\"\n                        , selected <| model.selected == \"dog\"\n                        ]\n                ]\n                |> View.setBoundary\n                |> Boundary.setNodeName \"select\"\n                |> Boundary.setAttributes\n                    [ value model.selected\n                    , Events.onInput ChangeChoice\n                    ]\n\n\n# Core\n\n@docs Flow\n@docs map\n\n\n# Primitive constructors\n\n@docs fromString\n\n\n# Attributes\n\n@docs setMixin\n@docs setMixins\n@docs setAttribute\n@docs setAttributes\n@docs setClass\n@docs setId\n\n\n# WAI-ARIA\n\n@docs setRole\n@docs setAria\n@docs setBoolAria\n\n\n# Handle conditions\n\n@docs none\n@docs when\n@docs unless\n@docs withMaybe\n\n\n# Lower level functions for HTML\n\n@docs setNodeName\n\n","unions":[],"aliases":[{"name":"Flow","comment":" Representing a text.\n","args":["msg"],"type":"Neat.Internal.Flow msg"}],"values":[{"name":"fromString","comment":" Generate a `Flow` with given text content.\n","type":"String.String -> Neat.Flow.Flow msg"},{"name":"map","comment":" ","type":"(a -> b) -> Neat.Flow.Flow a -> Neat.Flow.Flow b"},{"name":"none","comment":" Generate Nothing.\nIt can be used to realize `Flow`s only displayed under certain conditions, as shown below.\n\n    fromFlows\n        [ case mtext of\n            Just t ->\n                text t\n\n            Nothing ->\n                none\n        ]\n\nIn most cases, however, a function like `when` will suffice.\n\n","type":"Neat.Flow.Flow msg"},{"name":"setAria","comment":" Set \"aria-\\*\" value for WAI-ARIA.\n\ne.g., `setAria \"required\" \"true\"` stands for \"aria-required\" is \"true\".\n\n","type":"String.String -> String.String -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setAttribute","comment":" ","type":"Html.Attribute msg -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setAttributes","comment":" ","type":"List.List (Html.Attribute msg) -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setBoolAria","comment":" Set boolean \"aria-\\*\" value for WAI-ARIA.\n\ni.e.,\n\n  - `setBoolAria name True` is equal to `setAria name \"true\"`\n  - `setBoolAria name False` is equal to `setAria name \"false\"`\n\n","type":"String.String -> Basics.Bool -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setClass","comment":" Append `class` attribute.\n","type":"String.String -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setId","comment":" Append `id` attribute.\n","type":"String.String -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setMixin","comment":" ","type":"Mixin.Mixin msg -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setMixins","comment":" ","type":"List.List (Mixin.Mixin msg) -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setNodeName","comment":" ","type":"String.String -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"setRole","comment":" Set \"role\" value for WAI-ARIA.\n","type":"String.String -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"unless","comment":" ","type":"Basics.Bool -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"when","comment":" ","type":"Basics.Bool -> Neat.Flow.Flow msg -> Neat.Flow.Flow msg"},{"name":"withMaybe","comment":" ","type":"Maybe.Maybe a -> (a -> Neat.Flow.Flow msg) -> Neat.Flow.Flow msg"}],"binops":[]},{"name":"Neat.View","comment":" Module for building `View`.\n\n\n# Core\n\n@docs View\n@docs map\n\n\n# Inline Flows\n\n@docs textBlock\n@docs flows\n\n\n## Config\n\n@docs Flows\n@docs defaultFlows\n@docs disableTextWrap\n@docs enableEllipsis\n@docs preserveWhiteSpace\n@docs pushCenter\n@docs pushEnd\n\n\n# Row\n\n@docs row\n@docs center\n\n\n## Config\n\n@docs Row\n@docs defaultRow\n@docs disableWrap\n@docs RowItem\n@docs alignCenter\n@docs alignRight\n\n\n## Item\n\nEach function has the `String` argument, which helps make the DOM modifications more efficient. It must be unique among items in the same row.\n\n@docs rowItem\n@docs topItem\n@docs middleItem\n@docs bottomItem\n@docs grownRowItem\n@docs grownTopItem\n@docs grownMiddleItem\n@docs grownBottomItem\n\n\n# Column\n\n@docs column\n\n\n## Config\n\n@docs Column\n@docs defaultColumn\n@docs ColumnItem\n@docs alignMiddle\n@docs alignBottom\n\n\n## Item\n\nEach function has the `String` argument, which helps make the DOM modifications more efficient. It must be unique among items in the same row.\n\n@docs columnItem\n@docs leftItem\n@docs centerItem\n@docs rightItem\n@docs grownColumnItem\n@docs grownLeftItem\n@docs grownCenterItem\n@docs grownRightItem\n\n\n# Handle Conditions\n\n@docs none\n@docs when\n@docs unless\n@docs withMaybe\n\n\n# Expand Gaps\n\n@docs expandGap\n\n\n# Convert to `Boundary`\n\n@docs setBoundary\n\n\n# Lower level functions for HTML\n\n@docs setNodeName\n@docs setRole\n@docs setAria\n@docs setBoolAria\n\n","unions":[{"name":"Flows","comment":" Setting for displaying flow contents.\n","args":[],"cases":[]}],"aliases":[{"name":"Column","comment":" ","args":[],"type":"Neat.Internal.Column"},{"name":"ColumnItem","comment":" ","args":["gap","msg"],"type":"Neat.Internal.ColumnItem gap msg"},{"name":"Row","comment":" ","args":[],"type":"Neat.Internal.Row"},{"name":"RowItem","comment":" ","args":["gap","msg"],"type":"Neat.Internal.RowItem gap msg"},{"name":"View","comment":" A gap-sensible `Html msg` alternative.\n","args":["gap","msg"],"type":"Neat.Internal.View gap msg"}],"values":[{"name":"alignBottom","comment":" ","type":"Neat.View.Column -> Neat.View.Column"},{"name":"alignCenter","comment":" ","type":"Neat.View.Row -> Neat.View.Row"},{"name":"alignMiddle","comment":" ","type":"Neat.View.Column -> Neat.View.Column"},{"name":"alignRight","comment":" ","type":"Neat.View.Row -> Neat.View.Row"},{"name":"bottomItem","comment":" Bottom-aligned item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"center","comment":" An alias for `row` with a centered element.\n","type":"Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"centerItem","comment":" Horizontally centered item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"column","comment":" Align children vertically.\n","type":"Neat.View.Column -> List.List (Neat.View.ColumnItem gap msg) -> Neat.View.View gap msg"},{"name":"columnItem","comment":" Column item with stretched width.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"defaultColumn","comment":" Default setting for columns.\n\n  - HTML node name: `\"div\"`\n  - vertical alignment: top\n\n","type":"Neat.View.Column"},{"name":"defaultFlows","comment":" Default setting for displaying flow contents.\n","type":"Neat.View.Flows"},{"name":"defaultRow","comment":" Default setting for rows.\n\n  - HTML node name: `\"div\"`\n  - horizontal alignment: left\n  - wrapping: enabled\n  - role: no role\n  - ARIA attributes: no attributes\n\n","type":"Neat.View.Row"},{"name":"disableTextWrap","comment":" Disable the text content to be wrapped.\n","type":"Neat.View.Flows -> Neat.View.Flows"},{"name":"disableWrap","comment":" ","type":"Neat.View.Row -> Neat.View.Row"},{"name":"enableEllipsis","comment":" Display ellipsis (`…`, `U+2026 HORIZONTAL ELLIPSIS`) to represent clipped text when the flow content overflows.\n\nThis also disables the text content to be wrapped.\n\n","type":"Neat.View.Flows -> Neat.View.Flows"},{"name":"expandGap","comment":" Expand View Gap to a wider one.\n\nYou can use `expandGap` to \"shrink\" Gaps, but we do not recommend doing so. Such layouts must not be \"neat\"!\n\n","type":"Neat.Internal.IsGap g2 -> Neat.View.View g1 msg -> Neat.View.View g2 msg"},{"name":"flows","comment":" Generates a view that displays flow contents.\n\nUnlike a `row` consist of `textBlock`s, the `fromFlows` generates a single coherent sentence.\n\nSay you have the following code:\n\n    row\n        defaultRow\n        [ textBlock myLineHeight\n            \"foo bar baz\"\n        , textBlock myLineHeight\n            \"a b c d e f\"\n        ]\n\nThe resulting View will be newlined as follows:\n\n    | foo bar | a b c d |\n    | baz     | e f     |\n\nIn contrast, the View generated by the following code behaves a bit differently:\n\n    import Neat.Flow as Flow\n\n    fromFlows\n        [ Flow.text \"foo bar baz\"\n        , Flow.text \"a b c d e f\"\n        ]\n\nThe resulting View will be newlined as follows:\n\n    | foo bar baz a b c |\n    | d e f             |\n\nNote that `fromFlows gap []` does not generate anything.\n\n","type":"Neat.Internal.IsGap gap -> Neat.View.Flows -> List.List (Neat.Flow.Flow msg) -> Neat.View.View gap msg"},{"name":"grownBottomItem","comment":" Bottom-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"grownCenterItem","comment":" Horizontally centered item which grows its height as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"grownColumnItem","comment":" Column item with stretched width and height.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"grownLeftItem","comment":" Left-aligned item which grows its height as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"grownMiddleItem","comment":" Vertically centered item which grows its width as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"grownRightItem","comment":" Right-aligned item which grows its height as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"grownRowItem","comment":" Row item with stretched height and width.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"grownTopItem","comment":" Top-aligned item which grows its width as much as possible.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"leftItem","comment":" Left-aligned item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"map","comment":" ","type":"(a -> b) -> Neat.View.View gap a -> Neat.View.View gap b"},{"name":"middleItem","comment":" Vertically centered item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"none","comment":" Generates no HTML nodes.\nThis is useful for handling elements which only appears under certain conditions.\n\n    when p v =\n        if p then\n            v\n\n        else\n            none\n\n","type":"Neat.View.View g a"},{"name":"preserveWhiteSpace","comment":" Disable [collapsing](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space#collapsing_of_white_space) of spaces, tabs, and new lines.\n","type":"Neat.View.Flows -> Neat.View.Flows"},{"name":"pushCenter","comment":" Push the flow content to the center.\n","type":"Neat.View.Flows -> Neat.View.Flows"},{"name":"pushEnd","comment":" Push the flow content to the end.\n(Right if [direction](https://developer.mozilla.org/en-US/docs/Web/CSS/direction) is `ltr`, left if direction is `rtl`.)\n","type":"Neat.View.Flows -> Neat.View.Flows"},{"name":"rightItem","comment":" Right-aligned item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.ColumnItem gap msg"},{"name":"row","comment":" Align children horizontally.\n","type":"Neat.View.Row -> List.List (Neat.View.RowItem gap msg) -> Neat.View.View gap msg"},{"name":"rowItem","comment":" Row item with stretched height.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"setAria","comment":" Set the WAI-ARIA `aria-*` attribute value of the outermost HTML element.\n\nFor Views created with `Neat.Boundary.setGap`, append the attribute to the original Boundary.\n\ne.g., `setAria \"required\" \"true\"` stands for \"aria-required\" is \"true\".\n\n","type":"String.String -> String.String -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"setBoolAria","comment":" Helper function to set boolean WAI-ARIA `aria-*` attribute value of the outermost HTML element.\n\ni.e.,\n\n  - `setBoolAria name True` is equal to `setAria name \"true\"`\n  - `setBoolAria name False` is equal to `setAria name \"false\"`\n\n","type":"String.String -> Basics.Bool -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"setBoundary","comment":" Wrap a view with boundary.\nThis is the only way to reset view gaps.\n","type":"Neat.View.View gap msg -> Neat.Internal.Boundary msg"},{"name":"setNodeName","comment":" Overrides the node name of the outermost HTML element.\n\nFor Views created with `Neat.Boundary.setGap`, overwrite the node name of the original Boundary:\n\n    import Neat.Boundary as Boundary exposing (Boundary)\n    import Neat.View as View exposing (View)\n\n    sampleBoundary : Boundary msg\n    sampleBoundary =\n        Debug.todo \"Sample\"\n\n    sampleView : View SampleGap msg\n    sampleView =\n        sampleBoundary\n            |> Boundary.setGap sampleGap\n            |> View.setNodeName \"section\"\n\n    -- `sampleView2` is equivalent to `sampleView`.\n    sampleView2 : View SampleGap msg\n    sampleView2 =\n        sampleBoundary\n            |> Boundary.setNodeName \"section\"\n            |> Boundary.setGap sampleGap\n\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"setRole","comment":" Set the WAI-ARIA `role` attribute value of the outermost HTML element.\n\nFor Views created with `Neat.Boundary.setGap`, append the attribute to the original Boundary.\n\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"textBlock","comment":" Generates a view that displays a text string.\n\nThe first argument specifies the line height, which is the size of the gap between text lines when the given text is wrapped.\n\nIt is an alias for `\\str -> flows gap defaultFlows [ Neat.Flow.fromString str ]`.\n\nNote that `textBlock gap \"\"` does not generate anything.\n\n","type":"Neat.Internal.IsGap gap -> String.String -> Neat.View.View gap msg"},{"name":"topItem","comment":" Top-aligned item.\n","type":"String.String -> Neat.View.View gap msg -> Neat.View.RowItem gap msg"},{"name":"unless","comment":" Insert a view unless a condition is met.\n","type":"Basics.Bool -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"when","comment":" Insert a view only when a condition is met.\n","type":"Basics.Bool -> Neat.View.View gap msg -> Neat.View.View gap msg"},{"name":"withMaybe","comment":" Insert a view only if the given value is `Just`.\n","type":"Maybe.Maybe a -> (a -> Neat.View.View gap msg) -> Neat.View.View gap msg"}],"binops":[]}]