items rolled up on both sides of a focus
Scroll→ good fit for dynamic choice selection: tabs, playlist, ... ↑ examples
Scroll can even focus a gap
Down or Up
from every item
import Linear exposing (Direction(..))
import Emptiable exposing (filled)
import Stack exposing (topBelow)
import Scroll exposing (Scroll, FocusGap)
Scroll.empty
--: Scroll item_ FocusGap Possibly
|> Scroll.focusAlter (\_ -> -1 |> filled)
--: Scroll number_ FocusGap never_
|> Scroll.sideAlter Up
(\_ -> topBelow 1 [ 2, 3 ])
--: Scroll number_ FocusGap never_
|> Scroll.toGap Up
--: Scroll number_ FocusGap Possibly
|> Scroll.focusAlter (\_ -> 0 |> filled)
--: Scroll number_ FocusGap never_
|> Scroll.toStack
--> topBelow -1 [ 0, 1, 2, 3 ]→ See contributing.md
map (Location -> ...), dragFocus, toNonEmptyList, sideAlter (so no squeezing in multiple items, ...)List.NonEmpty.Zipper
complete; cluttered (for example update & map); some unintuitive namesfocusWheremap (Location -> ...)map (Location -> ...), sideAlter (so no squeezing in multiple items, ...)dragFocus, map (Location -> ...), toNonEmptyListlength, toList, map (Location -> ...), toNonEmptyListside, ...dragFocus, toNonEmptyList, sideAlter (so no squeezing in multiple items, ...)Reference.List
only overList, sides impossible to access & alter