cursor-brick-0.0.0.0: src/Cursor/Brick/Map.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Cursor.Brick.Map where
import Control.Monad
import Cursor.List.NonEmpty
import Cursor.Map
import Brick.Types
import Brick.Widgets.Core
import Cursor.Brick.List.NonEmpty
import Cursor.Brick.Map.KeyValue
horizontalMapCursorWidget ::
(k -> v -> Widget n)
-> (KeyValueCursor kc vc k v -> Widget n)
-> (k -> v -> Widget n)
-> MapCursor kc vc k v
-> Widget n
horizontalMapCursorWidget beforeFunc curFunc afterFunc =
mapCursorWidget $ \befores current afters ->
hBox $
concat [map (uncurry beforeFunc) befores, [curFunc current], map (uncurry afterFunc) afters]
horizontalMapCursorWidgetM ::
Applicative f
=> (k -> v -> f (Widget n))
-> (KeyValueCursor kc vc k v -> f (Widget n))
-> (k -> v -> f (Widget n))
-> MapCursor kc vc k v
-> f (Widget n)
horizontalMapCursorWidgetM beforeFunc curFunc afterFunc =
mapCursorWidgetM $ \befores current afters ->
hBox <$>
sequenceA
(concat [map (uncurry beforeFunc) befores, [curFunc current], map (uncurry afterFunc) afters])
verticalMapCursorWidget ::
(k -> v -> Widget n)
-> (KeyValueCursor kc vc k v -> Widget n)
-> (k -> v -> Widget n)
-> MapCursor kc vc k v
-> Widget n
verticalMapCursorWidget beforeFunc curFunc afterFunc =
mapCursorWidget $ \befores current afters ->
vBox $
concat [map (uncurry beforeFunc) befores, [curFunc current], map (uncurry afterFunc) afters]
verticalMapCursorWidgetM ::
Applicative f
=> (k -> v -> f (Widget n))
-> (KeyValueCursor kc vc k v -> f (Widget n))
-> (k -> v -> f (Widget n))
-> MapCursor kc vc k v
-> f (Widget n)
verticalMapCursorWidgetM beforeFunc curFunc afterFunc =
mapCursorWidgetM $ \befores current afters ->
vBox <$>
sequenceA
(concat [map (uncurry beforeFunc) befores, [curFunc current], map (uncurry afterFunc) afters])
mapCursorWidget ::
([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n)
-> MapCursor kc vc k v
-> Widget n
mapCursorWidget = foldMapCursor
mapCursorWidgetM ::
([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n))
-> MapCursor kc vc k v
-> m (Widget n)
mapCursorWidgetM = foldMapCursor