module Matterhorn.Draw.ReactionEmojiListOverlay ( drawReactionEmojiListOverlay ) where import Prelude () import Matterhorn.Prelude import Brick import Brick.Widgets.List ( listSelectedFocusedAttr ) import qualified Data.Text as T import Matterhorn.Draw.ListOverlay ( drawListOverlay, OverlayPosition(..) ) import Matterhorn.Types import Matterhorn.Themes drawReactionEmojiListOverlay :: ChatState -> Widget Name drawReactionEmojiListOverlay :: ChatState -> Widget Name drawReactionEmojiListOverlay ChatState st = let overlay :: Widget Name overlay = ListOverlayState (Bool, Text) () -> (() -> Widget Name) -> (() -> Widget Name) -> (() -> Widget Name) -> (Bool -> (Bool, Text) -> Widget Name) -> Maybe (Widget Name) -> OverlayPosition -> Int -> Widget Name forall a b. ListOverlayState a b -> (b -> Widget Name) -> (b -> Widget Name) -> (b -> Widget Name) -> (Bool -> a -> Widget Name) -> Maybe (Widget Name) -> OverlayPosition -> Int -> Widget Name drawListOverlay (ChatState stChatState -> Getting (ListOverlayState (Bool, Text) ()) ChatState (ListOverlayState (Bool, Text) ()) -> ListOverlayState (Bool, Text) () forall s a. s -> Getting a s a -> a ^.(TeamState -> Const (ListOverlayState (Bool, Text) ()) TeamState) -> ChatState -> Const (ListOverlayState (Bool, Text) ()) ChatState Lens' ChatState TeamState csCurrentTeam((TeamState -> Const (ListOverlayState (Bool, Text) ()) TeamState) -> ChatState -> Const (ListOverlayState (Bool, Text) ()) ChatState) -> ((ListOverlayState (Bool, Text) () -> Const (ListOverlayState (Bool, Text) ()) (ListOverlayState (Bool, Text) ())) -> TeamState -> Const (ListOverlayState (Bool, Text) ()) TeamState) -> Getting (ListOverlayState (Bool, Text) ()) ChatState (ListOverlayState (Bool, Text) ()) forall b c a. (b -> c) -> (a -> b) -> a -> c .(ListOverlayState (Bool, Text) () -> Const (ListOverlayState (Bool, Text) ()) (ListOverlayState (Bool, Text) ())) -> TeamState -> Const (ListOverlayState (Bool, Text) ()) TeamState Lens' TeamState (ListOverlayState (Bool, Text) ()) tsReactionEmojiListOverlay) (Widget Name -> () -> Widget Name forall a b. a -> b -> a const (Widget Name -> () -> Widget Name) -> Widget Name -> () -> Widget Name forall a b. (a -> b) -> a -> b $ Text -> Widget Name forall n. Text -> Widget n txt Text "Search Emoji") (Widget Name -> () -> Widget Name forall a b. a -> b -> a const (Widget Name -> () -> Widget Name) -> Widget Name -> () -> Widget Name forall a b. (a -> b) -> a -> b $ Text -> Widget Name forall n. Text -> Widget n txt Text "No matching emoji found.") (Widget Name -> () -> Widget Name forall a b. a -> b -> a const (Widget Name -> () -> Widget Name) -> Widget Name -> () -> Widget Name forall a b. (a -> b) -> a -> b $ Text -> Widget Name forall n. Text -> Widget n txt Text "Search emoji:") Bool -> (Bool, Text) -> Widget Name renderEmoji Maybe (Widget Name) forall a. Maybe a Nothing OverlayPosition OverlayCenter Int 80 in Widget Name -> Widget Name forall n. Widget n -> Widget n joinBorders Widget Name overlay renderEmoji :: Bool -> (Bool, T.Text) -> Widget Name renderEmoji :: Bool -> (Bool, Text) -> Widget Name renderEmoji Bool sel (Bool mine, Text e) = let maybeForce :: Widget n -> Widget n maybeForce = if Bool sel then AttrName -> Widget n -> Widget n forall n. AttrName -> Widget n -> Widget n forceAttr AttrName listSelectedFocusedAttr else Widget n -> Widget n forall a. a -> a id in Widget Name -> Widget Name forall n. Widget n -> Widget n maybeForce (Widget Name -> Widget Name) -> Widget Name -> Widget Name forall a b. (a -> b) -> a -> b $ Padding -> Widget Name -> Widget Name forall n. Padding -> Widget n -> Widget n padRight Padding Max (Widget Name -> Widget Name) -> Widget Name -> Widget Name forall a b. (a -> b) -> a -> b $ [Widget Name] -> Widget Name forall n. [Widget n] -> Widget n hBox [ if Bool mine then Text -> Widget Name forall n. Text -> Widget n txt Text " * " else Text -> Widget Name forall n. Text -> Widget n txt Text " " , AttrName -> Widget Name -> Widget Name forall n. AttrName -> Widget n -> Widget n withDefAttr AttrName emojiAttr (Widget Name -> Widget Name) -> Widget Name -> Widget Name forall a b. (a -> b) -> a -> b $ Text -> Widget Name forall n. Text -> Widget n txt (Text -> Widget Name) -> Text -> Widget Name forall a b. (a -> b) -> a -> b $ Text ":" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text e Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ":" ]