-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Composable widgets framework with enhanced with transformers and lens.
--   
--   Elm-like Action<i>Model</i>View/Update framework powered by
--   typeclasses, monad transformers, and lens.
@package glazier
@version 0.11.0.1

module Glazier.Gadget

-- | The Elm update function is <tt>a -&gt; s -&gt; (s, c)</tt> This is
--   isomorphic to <tt>ReaderT a (State s) c</tt> ie, given an action "a",
--   and a current state "s", return the new state "s" and any commands "c"
--   that need to be interpreted externally (eg. download file). This is
--   named Gadget instead of Update to avoid confusion with update from
--   Data.Map
newtype GadgetT a s m c
GadgetT :: ReaderT a (StateT s m) c -> GadgetT a s m c
[runGadgetT] :: GadgetT a s m c -> ReaderT a (StateT s m) c
type Gadget a s = GadgetT a s Identity
_GadgetT :: Iso (GadgetT a s m c) (GadgetT a' s' m' c') (a -> s -> m (c, s)) (a' -> s' -> m' (c', s'))

-- | Non polymorphic version of _Gadget
_GadgetT' :: Iso' (GadgetT a s m c) (a -> s -> m (c, s))
mkGadgetT' :: (a -> s -> m (c, s)) -> GadgetT a s m c
runGadgetT' :: GadgetT a s m c -> (a -> s -> m (c, s))
belowGadgetT :: ((a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')) -> GadgetT a s m c -> GadgetT a' s' m' c'
underGadgetT :: (ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c') -> GadgetT a s m c -> GadgetT a' s' m' c'
overGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c'
aboveGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> (a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')
instance Glazier.Gadget.GadgetT a1 s1 m1 c1 ~ t => Control.Lens.Wrapped.Rewrapped (Glazier.Gadget.GadgetT a2 s2 m2 c2) t
instance Control.Lens.Wrapped.Wrapped (Glazier.Gadget.GadgetT a s m c)
instance Control.Monad.Trans.Class.MonadTrans (Glazier.Gadget.GadgetT a s)
instance Control.Monad.Morph.MFunctor (Glazier.Gadget.GadgetT a s)
instance (GHC.Base.Monad m, Data.Semigroup.Semigroup c) => Data.Semigroup.Semigroup (Glazier.Gadget.GadgetT a s m c)
instance (GHC.Base.Monad m, GHC.Base.Monoid c) => GHC.Base.Monoid (Glazier.Gadget.GadgetT a s m c)
instance GHC.Base.Monad m => Control.Lens.Zoom.Zoom (Glazier.Gadget.GadgetT a s m) (Glazier.Gadget.GadgetT a t m) s t
instance GHC.Base.Monad m => Control.Lens.Zoom.Magnify (Glazier.Gadget.GadgetT a s m) (Glazier.Gadget.GadgetT b s m) a b
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Glazier.Gadget.GadgetT a s m)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.MonadPlus m => GHC.Base.Alternative (Glazier.Gadget.GadgetT a s m)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.Functor m => GHC.Base.Functor (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.Monad m => GHC.Base.Applicative (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.Monad m => GHC.Base.Monad (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.Monad m => Control.Monad.Reader.Class.MonadReader a (Glazier.Gadget.GadgetT a s m)
instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState s (Glazier.Gadget.GadgetT a s m)

module Glazier.Window

-- | The Elm view function is basically <tt>view :: model -&gt; html</tt>
--   This can be enhanced with monadic effects with ReaderT. This is named
--   Window instead of View to avoid confusion with view from Control.Lens
newtype WindowT s m v
WindowT :: ReaderT s m v -> WindowT s m v
[runWindowT] :: WindowT s m v -> ReaderT s m v
type Window s = WindowT s Identity
_WindowT :: Iso (WindowT s m v) (WindowT s' m' v') (s -> m v) (s' -> m' v')

-- | Non polymorphic version of _Window
_WindowT' :: Iso' (WindowT s m v) (s -> m v)
mkWindowT' :: (s -> m v) -> WindowT s m v
runWindowT' :: WindowT s m v -> (s -> m v)
belowWindowT :: ((s -> m v) -> (s' -> m' v')) -> WindowT s m v -> WindowT s' m' v'
underWindowT :: (ReaderT s m v -> ReaderT s' m' v') -> WindowT s m v -> WindowT s' m' v'
overWindowT :: (WindowT s m v -> WindowT s' m' v') -> ReaderT s m v -> ReaderT s' m' v'
aboveWindowT :: (WindowT s m v -> WindowT s' m' v') -> (s -> m v) -> (s' -> m' v')
instance Glazier.Window.WindowT s1 m1 v1 ~ t => Control.Lens.Wrapped.Rewrapped (Glazier.Window.WindowT s2 m2 v2) t
instance Control.Lens.Wrapped.Wrapped (Glazier.Window.WindowT s m v)
instance Control.Monad.Trans.Class.MonadTrans (Glazier.Window.WindowT s)
instance Control.Monad.Morph.MFunctor (Glazier.Window.WindowT s)
instance (GHC.Base.Applicative m, Data.Semigroup.Semigroup v) => Data.Semigroup.Semigroup (Glazier.Window.WindowT s m v)
instance (GHC.Base.Applicative m, GHC.Base.Monoid v) => GHC.Base.Monoid (Glazier.Window.WindowT s m v)
instance GHC.Base.Monad m => Control.Lens.Zoom.Magnify (Glazier.Window.WindowT s m) (Glazier.Window.WindowT t m) s t
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Glazier.Window.WindowT s m)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Glazier.Window.WindowT s m)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Glazier.Window.WindowT s m)
instance GHC.Base.Alternative m => GHC.Base.Alternative (Glazier.Window.WindowT s m)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Glazier.Window.WindowT s m)
instance GHC.Base.Functor m => GHC.Base.Functor (Glazier.Window.WindowT s m)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Glazier.Window.WindowT s m)
instance GHC.Base.Monad m => GHC.Base.Monad (Glazier.Window.WindowT s m)
instance GHC.Base.Monad m => Control.Monad.Reader.Class.MonadReader s (Glazier.Window.WindowT s m)

module Glazier
