{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE RecursiveDo #-}
module Potato.Reflex.Vty.Widget.Menu (
holdMenuWidget
) where
import Relude
import Potato.Reflex.Vty.Helpers
import Potato.Reflex.Vty.Widget
import qualified Graphics.Vty.Input.Events as V
import Reflex
import Reflex.Network
import Reflex.Potato.Helpers
import Reflex.Vty
import Data.Default
import qualified Data.Map as Map
import qualified Data.Text as T
import Data.Tree
type Shortcut = ()
data k = {
:: k
, :: Text
, :: Maybe Shortcut
} deriving (MenuTreeNode k -> MenuTreeNode k -> Bool
forall k. Eq k => MenuTreeNode k -> MenuTreeNode k -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MenuTreeNode k -> MenuTreeNode k -> Bool
$c/= :: forall k. Eq k => MenuTreeNode k -> MenuTreeNode k -> Bool
== :: MenuTreeNode k -> MenuTreeNode k -> Bool
$c== :: forall k. Eq k => MenuTreeNode k -> MenuTreeNode k -> Bool
Eq, Int -> MenuTreeNode k -> ShowS
forall k. Show k => Int -> MenuTreeNode k -> ShowS
forall k. Show k => [MenuTreeNode k] -> ShowS
forall k. Show k => MenuTreeNode k -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MenuTreeNode k] -> ShowS
$cshowList :: forall k. Show k => [MenuTreeNode k] -> ShowS
show :: MenuTreeNode k -> String
$cshow :: forall k. Show k => MenuTreeNode k -> String
showsPrec :: Int -> MenuTreeNode k -> ShowS
$cshowsPrec :: forall k. Show k => Int -> MenuTreeNode k -> ShowS
Show)
data t k = {
:: Dynamic t ([Tree (MenuTreeNode k)])
}
data t k = {
:: Event t k
, :: Event t ()
}
indexedMerge :: (Reflex t) => [Event t a] -> Event t (Int,a)
indexedMerge :: forall t a. Reflex t => [Event t a] -> Event t (Int, a)
indexedMerge [Event t a]
evs = forall {k} (t :: k) a. Reflex t => [Event t a] -> Event t a
leftmost forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\(Int
i,Event t a
ev)-> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Int
i,) Event t a
ev) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] forall a b. (a -> b) -> a -> b
$ [Event t a]
evs
type Pos = (Int,Int)
type k = [(k, Int, Pos)]
= forall a. HasCallStack => a
undefined