{-# 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 :: (k -> v -> Widget n) -> (KeyValueCursor kc vc k v -> Widget n) -> (k -> v -> Widget n) -> MapCursor kc vc k v -> Widget n horizontalMapCursorWidget k -> v -> Widget n beforeFunc KeyValueCursor kc vc k v -> Widget n curFunc k -> v -> Widget n afterFunc = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n forall k v kc vc n. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n mapCursorWidget (([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n) -> ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n forall a b. (a -> b) -> a -> b $ \[(k, v)] befores KeyValueCursor kc vc k v current [(k, v)] afters -> [Widget n] -> Widget n forall n. [Widget n] -> Widget n hBox ([Widget n] -> Widget n) -> [Widget n] -> Widget n forall a b. (a -> b) -> a -> b $ [[Widget n]] -> [Widget n] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ ((k, v) -> Widget n) -> [(k, v)] -> [Widget n] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> Widget n) -> (k, v) -> Widget n forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> Widget n beforeFunc) [(k, v)] befores, [KeyValueCursor kc vc k v -> Widget n curFunc KeyValueCursor kc vc k v current], ((k, v) -> Widget n) -> [(k, v)] -> [Widget n] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> Widget n) -> (k, v) -> Widget n forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> Widget n afterFunc) [(k, v)] 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 :: (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 k -> v -> f (Widget n) beforeFunc KeyValueCursor kc vc k v -> f (Widget n) curFunc k -> v -> f (Widget n) afterFunc = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n) forall k v kc vc (m :: * -> *) n. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n)) -> MapCursor kc vc k v -> m (Widget n) mapCursorWidgetM (([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n)) -> ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n) forall a b. (a -> b) -> a -> b $ \[(k, v)] befores KeyValueCursor kc vc k v current [(k, v)] afters -> [Widget n] -> Widget n forall n. [Widget n] -> Widget n hBox ([Widget n] -> Widget n) -> f [Widget n] -> f (Widget n) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [f (Widget n)] -> f [Widget n] forall (t :: * -> *) (f :: * -> *) a. (Traversable t, Applicative f) => t (f a) -> f (t a) sequenceA ( [[f (Widget n)]] -> [f (Widget n)] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ ((k, v) -> f (Widget n)) -> [(k, v)] -> [f (Widget n)] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> f (Widget n)) -> (k, v) -> f (Widget n) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> f (Widget n) beforeFunc) [(k, v)] befores, [KeyValueCursor kc vc k v -> f (Widget n) curFunc KeyValueCursor kc vc k v current], ((k, v) -> f (Widget n)) -> [(k, v)] -> [f (Widget n)] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> f (Widget n)) -> (k, v) -> f (Widget n) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> f (Widget n) afterFunc) [(k, v)] 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 :: (k -> v -> Widget n) -> (KeyValueCursor kc vc k v -> Widget n) -> (k -> v -> Widget n) -> MapCursor kc vc k v -> Widget n verticalMapCursorWidget k -> v -> Widget n beforeFunc KeyValueCursor kc vc k v -> Widget n curFunc k -> v -> Widget n afterFunc = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n forall k v kc vc n. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n mapCursorWidget (([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n) -> ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n forall a b. (a -> b) -> a -> b $ \[(k, v)] befores KeyValueCursor kc vc k v current [(k, v)] afters -> [Widget n] -> Widget n forall n. [Widget n] -> Widget n vBox ([Widget n] -> Widget n) -> [Widget n] -> Widget n forall a b. (a -> b) -> a -> b $ [[Widget n]] -> [Widget n] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ ((k, v) -> Widget n) -> [(k, v)] -> [Widget n] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> Widget n) -> (k, v) -> Widget n forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> Widget n beforeFunc) [(k, v)] befores, [KeyValueCursor kc vc k v -> Widget n curFunc KeyValueCursor kc vc k v current], ((k, v) -> Widget n) -> [(k, v)] -> [Widget n] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> Widget n) -> (k, v) -> Widget n forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> Widget n afterFunc) [(k, v)] 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 :: (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 k -> v -> f (Widget n) beforeFunc KeyValueCursor kc vc k v -> f (Widget n) curFunc k -> v -> f (Widget n) afterFunc = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n) forall k v kc vc (m :: * -> *) n. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n)) -> MapCursor kc vc k v -> m (Widget n) mapCursorWidgetM (([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n)) -> ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> f (Widget n)) -> MapCursor kc vc k v -> f (Widget n) forall a b. (a -> b) -> a -> b $ \[(k, v)] befores KeyValueCursor kc vc k v current [(k, v)] afters -> [Widget n] -> Widget n forall n. [Widget n] -> Widget n vBox ([Widget n] -> Widget n) -> f [Widget n] -> f (Widget n) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [f (Widget n)] -> f [Widget n] forall (t :: * -> *) (f :: * -> *) a. (Traversable t, Applicative f) => t (f a) -> f (t a) sequenceA ( [[f (Widget n)]] -> [f (Widget n)] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [ ((k, v) -> f (Widget n)) -> [(k, v)] -> [f (Widget n)] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> f (Widget n)) -> (k, v) -> f (Widget n) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> f (Widget n) beforeFunc) [(k, v)] befores, [KeyValueCursor kc vc k v -> f (Widget n) curFunc KeyValueCursor kc vc k v current], ((k, v) -> f (Widget n)) -> [(k, v)] -> [f (Widget n)] forall a b. (a -> b) -> [a] -> [b] map ((k -> v -> f (Widget n)) -> (k, v) -> f (Widget n) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> v -> f (Widget n) afterFunc) [(k, v)] afters ] ) mapCursorWidget :: ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n mapCursorWidget :: ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n mapCursorWidget = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> Widget n) -> MapCursor kc vc k v -> Widget n forall k v kc vc c. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> c) -> MapCursor kc vc k v -> c foldMapCursor mapCursorWidgetM :: ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n)) -> MapCursor kc vc k v -> m (Widget n) mapCursorWidgetM :: ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n)) -> MapCursor kc vc k v -> m (Widget n) mapCursorWidgetM = ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> m (Widget n)) -> MapCursor kc vc k v -> m (Widget n) forall k v kc vc c. ([(k, v)] -> KeyValueCursor kc vc k v -> [(k, v)] -> c) -> MapCursor kc vc k v -> c foldMapCursor