cursor-brick-0.1.0.1: src/Cursor/Brick/Map.hs
{-# LANGUAGE ScopedTypeVariables #-}
module Cursor.Brick.Map where
import Brick.Types
import Brick.Widgets.Core
import Cursor.Map
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