packages feed

glazier-react 0.1.0.0 → 0.2.0.0

raw patch · 5 files changed

+65/−65 lines, 5 files

Files

glazier-react.cabal view
@@ -1,5 +1,5 @@ name:                glazier-react-version:             0.1.0.0+version:             0.2.0.0 synopsis:            ReactJS binding using Glazier and Pipes.Fluid description:         ReactJS binding using Glazier and Pipes.Fluid, which is                      more functional and composable than Elm/Flux.
src/Glazier/React/Command/Run.hs view
@@ -14,11 +14,11 @@ import qualified JavaScript.Extras as JE import qualified JavaScript.Object as JO -componentSetState :: R.HasSuperModel sm g m => sm -> [JE.Property] -> J.JSVal -> IO ()+componentSetState :: R.HasSuperModel sm mdl pln => sm -> [JE.Property] -> J.JSVal -> IO () componentSetState sm props j = do-    let gm = sm ^. R.gModel-        mm = sm ^. R.mModel-    void $ swapMVar mm gm+    let dsn = sm ^. R.design+        rep = sm ^. R.replica+    void $ swapMVar rep dsn     js_componentSetState (JE.fromProperties props) j  #ifdef __GHCJS__
src/Glazier/React/Maker.hs view
@@ -25,17 +25,17 @@         :: (J.JSVal -> MaybeT IO [act])         -> (J.Callback (J.JSVal -> IO ()) -> nxt)         -> Maker act nxt-    MkEmptyMModel-        :: (R.MModel gsk mdl -> nxt)+    MkEmptyReplica+        :: (R.Replica mdl pln -> nxt)         -> Maker act nxt     MkRenderer-        :: R.MModel gsk mdl-        -> (J.JSVal -> G.WindowT (R.GModel gsk mdl) (R.ReactMl) ())+        :: R.Replica mdl pln+        -> (J.JSVal -> G.WindowT (R.Design mdl pln) (R.ReactMl) ())         -> (J.Callback (J.JSVal -> IO J.JSVal) -> nxt)         -> Maker act nxt-    PutMModel-        :: R.MModel gsk mdl-        -> R.GModel gsk mdl+    PutReplica+        :: R.Replica mdl pln+        -> R.Design mdl pln         -> nxt         -> Maker act nxt     GetComponent@@ -44,9 +44,9 @@  instance Functor (Maker act) where   fmap f (MkHandler handler g) = MkHandler handler (f . g)-  fmap f (MkEmptyMModel g) = MkEmptyMModel (f . g)+  fmap f (MkEmptyReplica g) = MkEmptyReplica (f . g)   fmap f (MkRenderer ms render g) = MkRenderer ms render (f . g)-  fmap f (PutMModel ms s x) = PutMModel ms s (f x)+  fmap f (PutReplica rep dsn x) = PutReplica rep dsn (f x)   fmap f (GetComponent g) = GetComponent (f . g)  makeFree ''Maker@@ -54,19 +54,19 @@ -- | Allows changing the action type of Maker mapAction :: (act -> act') -> Maker act a -> Maker act' a mapAction f (MkHandler handler g) = MkHandler (\v -> fmap f <$> handler v) g-mapAction _ (MkEmptyMModel g) = MkEmptyMModel g+mapAction _ (MkEmptyReplica g) = MkEmptyReplica g mapAction _ (MkRenderer ms render g) = MkRenderer ms render g-mapAction _ (PutMModel ms s x) = PutMModel ms s x+mapAction _ (PutReplica ms s x) = PutReplica ms s x mapAction _ (GetComponent g) = GetComponent g  mkSuperModel     :: MonadFree (Maker act) m-    => (R.MModel gsk mdl -> m gsk)-    -> (gsk -> R.GModel gsk mdl)-    -> m (R.SuperModel gsk mdl)-mkSuperModel makeGasket createGModel = do-    mm <- mkEmptyMModel-    g <- makeGasket mm-    let gm = createGModel g-    putMModel mm gm-    pure (R.SuperModel mm gm)+    => (R.Replica mdl pln -> m pln)+    -> (pln -> R.Design mdl pln)+    -> m (R.SuperModel mdl pln)+mkSuperModel makePlan toDesign = do+    rep <- mkEmptyReplica+    pln <- makePlan rep+    let dsn = toDesign pln+    putReplica rep dsn+    pure (R.SuperModel dsn rep)
src/Glazier/React/Maker/Run.hs view
@@ -35,12 +35,12 @@ run :: R.ReactComponent -> PC.Output act -> R.Maker act (IO a) -> IO a run _ output (R.MkHandler handler g) = mkActionCallback output handler >>= g -run _ _ (R.MkEmptyMModel g) = newEmptyMVar >>= g+run _ _ (R.MkEmptyReplica g) = newEmptyMVar >>= g  run _ _ (R.MkRenderer ms render g) = J.syncCallback1' (onRender ms render') >>= g   where     render' v = hoist (hoist generalize) (render v) -run _ _ (R.PutMModel ms s g) = putMVar ms s >> g+run _ _ (R.PutReplica rep dsn g) = putMVar rep dsn >> g  run component _ (R.GetComponent g) = g component
src/Glazier/React/Widget.hs view
@@ -13,62 +13,62 @@ import Control.Lens import qualified GHC.Generics as G -class HasWidgetGasket c gsk | c -> gsk where-    widgetGasket :: Lens' c gsk+class HasWidgetPlan c pln | c -> pln where+    widgetPlan :: Lens' c pln  class HasWidgetModel c mdl | c -> mdl where     widgetModel :: Lens' c mdl -data GModel gsk mdl = GModel-    { _widgetGasket :: gsk-    , _widgetModel :: mdl+data Design mdl pln = Design+    { _widgetModel :: mdl+    , _widgetPlan :: pln     } deriving (G.Generic) -instance (CD.Disposing gsk, CD.Disposing mdl) => CD.Disposing (GModel gsk mdl)+instance (CD.Disposing pln, CD.Disposing mdl) => CD.Disposing (Design mdl pln) -instance HasWidgetGasket (GModel gsk mdl) gsk where-    widgetGasket f (GModel gsk mdl) = fmap (\gsk' -> GModel gsk' mdl) (f gsk)-    {-# INLINE widgetGasket #-}+instance HasWidgetPlan (Design mdl pln) pln where+    widgetPlan f (Design mdl pln) = fmap (\pln' -> Design mdl pln') (f pln)+    {-# INLINE widgetPlan #-} -instance HasWidgetModel (GModel gsk mdl) mdl where-    widgetModel f (GModel gsk mdl) = fmap (\mdl' -> GModel gsk mdl') (f mdl)+instance HasWidgetModel (Design mdl pln) mdl where+    widgetModel f (Design mdl pln) = fmap (\mdl' -> Design mdl' pln) (f mdl)     {-# INLINE widgetModel #-} -class HasGModel c gsk mdl | c -> gsk mdl where-    gModel :: Lens' c (GModel gsk mdl)+class HasDesign c mdl pln | c -> mdl pln where+    design :: Lens' c (Design mdl pln) -instance HasGModel (GModel gsk mdl) gsk mdl where-    gModel = id+instance HasDesign (Design mdl pln) mdl pln where+    design = id -type MModel gsk mdl = MVar (GModel gsk mdl)+type Replica mdl pln = MVar (Design mdl pln) -class HasMModel c gsk mdl | c -> gsk mdl where-    mModel :: Lens' c (MModel gsk mdl)+class HasReplica c mdl pln | c -> mdl pln where+    replica :: Lens' c (Replica mdl pln) -instance HasMModel (MModel gsk mdl) gsk mdl where-    mModel = id+instance HasReplica (Replica mdl pln) mdl pln where+    replica = id -data SuperModel gsk mdl = SuperModel-    { _mModel :: MModel gsk mdl-    , _gModel :: GModel gsk mdl+data SuperModel mdl pln = SuperModel+    { _design :: Design mdl pln+    , _replica :: Replica mdl pln     } deriving (G.Generic) -instance CD.Disposing (GModel gsk mdl) => CD.Disposing (SuperModel gsk mdl) where-    disposing s = CD.disposing $ s ^. gModel+instance CD.Disposing (Design mdl pln) => CD.Disposing (SuperModel mdl pln) where+    disposing s = CD.disposing $ s ^. design -class (HasMModel c gsk mdl, HasGModel c gsk mdl) => HasSuperModel c gsk mdl | c -> gsk mdl where-    superModel :: Lens' c (SuperModel gsk mdl)+class (HasDesign c mdl pln, HasReplica c mdl pln) => HasSuperModel c mdl pln | c -> mdl pln where+    superModel :: Lens' c (SuperModel mdl pln) -instance HasSuperModel (SuperModel gsk mdl) gsk mdl where+instance HasSuperModel (SuperModel mdl pln) mdl pln where     superModel = id -instance HasMModel (SuperModel gsk mdl) gsk mdl where-    mModel f (SuperModel mm gm) = fmap (\mm' -> SuperModel mm' gm) (f mm)-    {-# INLINE mModel #-}+instance HasReplica (SuperModel mdl pln) mdl pln where+    replica f (SuperModel dsn rep) = fmap (\rep' -> SuperModel dsn rep') (f rep)+    {-# INLINE replica #-} -instance HasGModel (SuperModel gsk mdl) gsk mdl where-    gModel f (SuperModel mm gm) = fmap (\gm' -> SuperModel mm gm') (f gm)-    {-# INLINE gModel #-}+instance HasDesign (SuperModel mdl pln) mdl pln where+    design f (SuperModel dsn rep) = fmap (\dsn' -> SuperModel dsn' rep) (f dsn)+    {-# INLINE design #-}  class IsWidget w where     -- The input to Gadget@@ -81,8 +81,8 @@     type WidgetModel w :: *      -- Callbacks and data required for interfacing with react.-    type WidgetGasket w :: *+    type WidgetPlan w :: * -type WidgetGModel w = GModel (WidgetGasket w) (WidgetModel w)-type WidgetMModel w = MModel (WidgetGasket w) (WidgetModel w)-type WidgetSuperModel w = SuperModel (WidgetGasket w) (WidgetModel w)+type WidgetDesign w = Design (WidgetModel w) (WidgetPlan w)+type WidgetReplica w = Replica (WidgetModel w) (WidgetPlan w)+type WidgetSuperModel w = SuperModel (WidgetModel w) (WidgetPlan w)