module Taskell.Events.Actions.Insert ( event ) where import ClassyPrelude import Control.Lens ((&), (.~), (^.)) import Graphics.Vty.Input.Events (Event (EvKey), Key (KEnter, KEsc)) import Taskell.Events.State import Taskell.Events.State.Types import Taskell.Events.State.Types.Mode (InsertMode (..), InsertType (..), Mode (Insert)) import qualified Taskell.UI.Draw.Field as F (event) event :: Event -> Stateful event :: Event -> Stateful event (EvKey Key KEnter [Modifier] _) State state = case State state State -> Getting Mode State Mode -> Mode forall s a. s -> Getting a s a -> a ^. Getting Mode State Mode Lens' State Mode mode of Insert InsertType IList InsertMode ICreate Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful startCreate Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful newItem Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful store Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful createList State state Insert InsertType IList InsertMode IEdit Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful normalMode Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful finishListTitle State state Insert InsertType ITask InsertMode ICreate Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful below Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful removeBlank Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful store Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful finishTask State state Insert InsertType ITask InsertMode IEdit Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful removeBlank Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful normalMode Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful finishTask State state Mode _ -> Stateful forall (f :: * -> *) a. Applicative f => a -> f a pure State state event (EvKey Key KEsc [Modifier] _) State state = case State state State -> Getting Mode State Mode -> Mode forall s a. s -> Getting a s a -> a ^. Getting Mode State Mode Lens' State Mode mode of Insert InsertType IList InsertMode ICreate Field _ -> (Stateful normalMode Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful createList State state Insert InsertType IList InsertMode IEdit Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful normalMode Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful finishListTitle State state Insert InsertType ITask InsertMode _ Field _ -> (Stateful write Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful removeBlank Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall k (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (Stateful normalMode Stateful -> Maybe State -> Maybe State forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (Maybe State -> Maybe State) -> Maybe State -> Maybe State forall a b. (a -> b) -> a -> b $ Stateful finishTask State state Mode _ -> Stateful forall (f :: * -> *) a. Applicative f => a -> f a pure State state event Event e State state = Stateful forall (f :: * -> *) a. Applicative f => a -> f a pure Stateful -> Stateful forall a b. (a -> b) -> a -> b $ case State state State -> Getting Mode State Mode -> Mode forall s a. s -> Getting a s a -> a ^. Getting Mode State Mode Lens' State Mode mode of Insert InsertType iType InsertMode iMode Field field -> State state State -> (State -> State) -> State forall a b. a -> (a -> b) -> b & (Mode -> Identity Mode) -> State -> Identity State Lens' State Mode mode ((Mode -> Identity Mode) -> State -> Identity State) -> Mode -> State -> State forall s t a b. ASetter s t a b -> b -> s -> t .~ InsertType -> InsertMode -> Field -> Mode Insert InsertType iType InsertMode iMode (Event -> Field -> Field F.event Event e Field field) Mode _ -> State state