[
    {
        "name": "ArrangeableList",
        "comment": " This is sort of like a Zip-List data structure - but instead of focusing on a speicific list item - it retains the focuson the same item and moves\nthat item around in the list.\n\n@docs ArrangeableList\n\n\n# Constructing\n\n@docs initialize, fromArray, fromList, fromListAtHead, fromListAtTail\n\n\n# Extracting Values\n\n@docs getSelected, getPreList, getPostList, isSelectedItem\n\n\n# Manipulating the List\n\n@docs progress, retrogress\n\n\n# Transformation\n\n@docs toList, toArray, map\n\n",
        "unions": [
            {
                "name": "ArrangeableList",
                "comment": " ",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "fromArray",
                "comment": " Create an ArrangeableList from an Array and an integer that specifies an index in the array which should be the selected item.\nThis returns a Maybe Arrageablelist. A Nothing is returned if the index is invalid/out of bounds.\n\n    myArray =\n        Array.fromList [\"Superman\", \"Batman\", \"Green Lantern\"]\n\n    fromArray myArray 1\n\n",
                "type": "Array a -> Int -> Maybe (ArrangeableList a)"
            },
            {
                "name": "fromList",
                "comment": " Create an ArrangeableList from a List and an integer that specifies an index in the list which should be the selected item.\nThis returns a Maybe Arrageablelist. A Nothing is returned if the index is invalid/out of bounds.\n\n    fromArray [\"Superman\", \"Batman\", \"Green Lantern\"] 0\n\n",
                "type": "List a -> Int -> Maybe (ArrangeableList a)"
            },
            {
                "name": "fromListAtHead",
                "comment": " Creates an ArrangeableList from a supplied List and a value - placing value at the head of the list.\n\n    fromListAtHead [\"Superman\", \"Batman\", \"Green Lantern\"] \"WonderWoman\"\n\n",
                "type": "List a -> a -> ArrangeableList a"
            },
            {
                "name": "fromListAtTail",
                "comment": " Creates and ArrangeableList from a supplied list and a value - placing the value at the tail of the list.\n\n    fromListAtHead [\"Superman\", \"Batman\", \"Green Lantern\"] \"WonderWoman\"\n\n",
                "type": "List a -> a -> ArrangeableList a"
            },
            {
                "name": "getPostList",
                "comment": " Returns the items in the list after the selected value.\n",
                "type": "ArrangeableList a -> List a"
            },
            {
                "name": "getPreList",
                "comment": " Returns the items in the list before the selected value.\n",
                "type": "ArrangeableList a -> List a"
            },
            {
                "name": "getSelected",
                "comment": " Returns the currently selected value\n",
                "type": "ArrangeableList a -> a"
            },
            {
                "name": "initialize",
                "comment": " Initializes an ArrageableList given a list before (pre), list after (post), and the selected (focused) item.\n\n    initialize [] [\"Batman\", \"Superman\", \"Green Lantern\"] \"Wonder Woman\"\n\n",
                "type": "List a -> List a -> a -> ArrangeableList a"
            },
            {
                "name": "isSelectedItem",
                "comment": " Uses equality check (==) to check if the given value is the currently selected item in the list\n",
                "type": "a -> ArrangeableList a -> Bool"
            },
            {
                "name": "map",
                "comment": " Apply a function to each item of the arrangeable list\n",
                "type": "(a -> b) -> ArrangeableList a -> ArrangeableList b"
            },
            {
                "name": "progress",
                "comment": " Moves the selected item forward in the list.\n\n    myList =\n        fromListAtHead [\"Superman\", \"Batman\", \"Green Lantern\"] \"WonderWoman\"\n\n    progress myList\n        |> toList -- [\"Superman\", \"WonderWoman\", \"Batman\", \"Green Lantern\"]\n\n",
                "type": "ArrangeableList a -> ArrangeableList a"
            },
            {
                "name": "retrogress",
                "comment": " Moves the selected item backward in the list.\n\n    myList =\n        fromListAtTail [\"Superman\", \"Batman\", \"Green Lantern\"] \"WonderWoman\"\n\n    retrogress myList\n        |> toList -- [\"Superman\", \"Batman\", \"WonderWoman\", \"Green Lantern\"]\n\n",
                "type": "ArrangeableList a -> ArrangeableList a"
            },
            {
                "name": "toArray",
                "comment": " Returns an Array of the items that compose the ArrangeableList.\n",
                "type": "ArrangeableList a -> Array a"
            },
            {
                "name": "toList",
                "comment": " Returns a regular List of the items that compose the ArrangeableList.\n",
                "type": "ArrangeableList a -> List a"
            }
        ],
        "binops": []
    }
]