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 that item around in the list.
initialize : List a -> List a -> a -> ArrangeableList a
Initializes an ArrageableList given a list before (pre), list after (post), and the selected (focused) item.
initialize [] [ "Batman", "Superman", "Green Lantern" ] "Wonder Woman"
fromArray : Array a -> Basics.Int -> Maybe (ArrangeableList a)
Create an ArrangeableList from an Array and an integer that specifies an index in the array which should be the selected item. This returns a Maybe Arrageablelist. A Nothing is returned if the index is invalid/out of bounds.
myArray =
Array.fromList ["Superman", "Batman", "Green Lantern"]
fromArray myArray 1
fromList : List a -> Basics.Int -> Maybe (ArrangeableList a)
Create an ArrangeableList from a List and an integer that specifies an index in the list which should be the selected item. This returns a Maybe Arrageablelist. A Nothing is returned if the index is invalid/out of bounds.
fromArray [ "Superman", "Batman", "Green Lantern" ] 0
fromListAtHead : List a -> a -> ArrangeableList a
Creates an ArrangeableList from a supplied List and a value - placing value at the head of the list.
fromListAtHead [ "Superman", "Batman", "Green Lantern" ] "WonderWoman"
fromListAtTail : List a -> a -> ArrangeableList a
Creates and ArrangeableList from a supplied list and a value - placing the value at the tail of the list.
fromListAtHead [ "Superman", "Batman", "Green Lantern" ] "WonderWoman"
getSelected : ArrangeableList a -> a
Returns the currently selected value
getPreList : ArrangeableList a -> List a
Returns the items in the list before the selected value.
getPostList : ArrangeableList a -> List a
Returns the items in the list after the selected value.
isSelectedItem : a -> ArrangeableList a -> Basics.Bool
Uses equality check (==) to check if the given value is the currently selected item in the list
progress : ArrangeableList a -> ArrangeableList a
Moves the selected item forward in the list.
myList =
fromListAtHead ["Superman", "Batman", "Green Lantern"] "WonderWoman"
progress myList
|> toList -- ["Superman", "WonderWoman", "Batman", "Green Lantern"]
retrogress : ArrangeableList a -> ArrangeableList a
Moves the selected item backward in the list.
myList =
fromListAtTail ["Superman", "Batman", "Green Lantern"] "WonderWoman"
retrogress myList
|> toList -- ["Superman", "Batman", "WonderWoman", "Green Lantern"]
toList : ArrangeableList a -> List a
Returns a regular List of the items that compose the ArrangeableList.
toArray : ArrangeableList a -> Array a
Returns an Array of the items that compose the ArrangeableList.
map : (a -> b) -> ArrangeableList a -> ArrangeableList b
Apply a function to each item of the arrangeable list