module Chiasma.View.State where import Chiasma.Data.Ident (Ident) import Chiasma.Data.TmuxId (PaneId) import Control.Monad.DeepError (MonadDeepError, hoistEither) import Control.Monad.DeepState (MonadDeepState, gets) import Chiasma.Data.Views (Views, ViewsError) import qualified Chiasma.View as Views (paneId) paneId :: (MonadDeepState s Views m, MonadDeepError e ViewsError m) => Ident -> m PaneId paneId :: Ident -> m PaneId paneId Ident paneIdent = do Either ViewsError PaneId pid <- (Views -> Either ViewsError PaneId) -> m (Either ViewsError PaneId) forall s' s (m :: * -> *) a. MonadDeepState s s' m => (s' -> a) -> m a gets ((Views -> Either ViewsError PaneId) -> m (Either ViewsError PaneId)) -> (Views -> Either ViewsError PaneId) -> m (Either ViewsError PaneId) forall a b. (a -> b) -> a -> b $ Ident -> Views -> Either ViewsError PaneId Views.paneId Ident paneIdent Either ViewsError PaneId -> m PaneId forall e e' (m :: * -> *) a. MonadDeepError e e' m => Either e' a -> m a hoistEither Either ViewsError PaneId pid