module Chiasma.Pane where

import Chiasma.Data.Ident (Ident)
import Chiasma.Data.TmuxId (PaneId)
import qualified Chiasma.Data.View as Tmux (View (View))
import Chiasma.Data.Views (Views)
import qualified Chiasma.View as Views (insertPane)

addPane ::
  Member (AtomicState Views) r =>
  Ident ->
  Sem r (Tmux.View PaneId)
addPane :: forall (r :: EffectRow).
Member (AtomicState Views) r =>
Ident -> Sem r (View PaneId)
addPane Ident
ident =
  View PaneId
pane View PaneId -> Sem r () -> Sem r (View PaneId)
forall a b. a -> Sem r b -> Sem r a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ (Views -> Views) -> Sem r ()
forall s (r :: EffectRow).
Member (AtomicState s) r =>
(s -> s) -> Sem r ()
atomicModify' (View PaneId -> Views -> Views
Views.insertPane View PaneId
pane)
  where
    pane :: View PaneId
pane =
      Ident -> Maybe PaneId -> View PaneId
forall a. Ident -> Maybe a -> View a
Tmux.View Ident
ident Maybe PaneId
forall a. Maybe a
Nothing