on develop help sign in
Make requestDomAction a class method of DomRenderHook
9a0c6a2Ali Abrar
reflex-dom-core/reflex-dom-core.cabal+1−1
@@ -51,7 +51,7 @@ library
51 dependent-map == 0.2.*,
51 dependent-map == 0.2.*,
52 dependent-sum >= 0.3 && < 0.5,
52 dependent-sum >= 0.3 && < 0.5,
53 dependent-sum-template >= 0.0.0.4 && < 0.1,
53 dependent-sum-template >= 0.0.0.4 && < 0.1,
54− directory == 1.2.*,
54+ directory == 1.3.*,
55 exception-transformers == 0.4.*,
55 exception-transformers == 0.4.*,
56 ghcjs-dom >= 0.7.0.4 && < 0.8,
56 ghcjs-dom >= 0.7.0.4 && < 0.8,
57 jsaddle >=0.8.0.1 && <0.9,
57 jsaddle >=0.8.0.1 && <0.9,
reflex-dom-core/src/Reflex/Dom/Builder/Class.hs+12−6
@@ -673,15 +673,21 @@ liftTextAreaElement cfg = liftWithStateless $ \run -> textAreaElement $ fmap1 ru
673liftWrapRawElement :: LiftDomBuilder t f m => RawElement (DomBuilderSpace m) -> RawElementConfig er t (f m) -> f m (Element er (DomBuilderSpace m) t)
673liftWrapRawElement :: LiftDomBuilder t f m => RawElement (DomBuilderSpace m) -> RawElementConfig er t (f m) -> f m (Element er (DomBuilderSpace m) t)
674liftWrapRawElement e es = liftWithStateless $ \run -> wrapRawElement e $ fmap1 run es
674liftWrapRawElement e es = liftWithStateless $ \run -> wrapRawElement e $ fmap1 run es
675
675
676−class Monad m => DomRenderHook m where
676+class (Reflex t, Monad m) => DomRenderHook t m | m -> t where
677 withRenderHook :: (forall x. JSM x -> JSM x) -> m a -> m a
677 withRenderHook :: (forall x. JSM x -> JSM x) -> m a -> m a
678+ requestDomAction :: Event t (JSM a) -> m (Event t a)
679+ requestDomAction_ :: Event t (JSM a) -> m ()
678
680
679−instance DomRenderHook m => DomRenderHook (ReaderT e m) where
681+instance DomRenderHook t m => DomRenderHook t (ReaderT e m) where
680 withRenderHook hook (ReaderT a) = ReaderT $ \e -> withRenderHook hook $ a e
682 withRenderHook hook (ReaderT a) = ReaderT $ \e -> withRenderHook hook $ a e
683+ requestDomAction = lift . requestDomAction
684+ requestDomAction_ = lift . requestDomAction_
681
685
682−instance DomRenderHook m => DomRenderHook (StateT e m) where
686+instance DomRenderHook t m => DomRenderHook t (StateT e m) where
683 withRenderHook hook (StateT a) = StateT $ \s -> withRenderHook hook $ a s
687 withRenderHook hook (StateT a) = StateT $ \s -> withRenderHook hook $ a s
688+ requestDomAction = lift . requestDomAction
689+ requestDomAction_ = lift . requestDomAction_
684
690
685−deriving instance DomRenderHook m => DomRenderHook (EventWriterT t w m)
691+deriving instance DomRenderHook t m => DomRenderHook t (EventWriterT t w m)
686−deriving instance DomRenderHook m => DomRenderHook (RequesterT t req rsp m)
692+deriving instance DomRenderHook t m => DomRenderHook t (RequesterT t req rsp m)
687−deriving instance DomRenderHook m => DomRenderHook (PostBuildT t m)
693+deriving instance DomRenderHook t m => DomRenderHook t (PostBuildT t m)
reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+3−7
@@ -162,18 +162,14 @@ instance PrimMonad m => PrimMonad (ImmediateDomBuilderT x m) where
162instance MonadTrans (ImmediateDomBuilderT t) where
162instance MonadTrans (ImmediateDomBuilderT t) where
163 lift = ImmediateDomBuilderT . lift . lift
163 lift = ImmediateDomBuilderT . lift . lift
164
164
165−instance (PerformEvent t m, PrimMonad m) => DomRenderHook (ImmediateDomBuilderT t m) where
165+instance (PerformEvent t m, PrimMonad m) => DomRenderHook t (ImmediateDomBuilderT t m) where
166 withRenderHook hook (ImmediateDomBuilderT a) = do
166 withRenderHook hook (ImmediateDomBuilderT a) = do
167 e <- ImmediateDomBuilderT ask
167 e <- ImmediateDomBuilderT ask
168 ImmediateDomBuilderT $ lift $ withRequesting $ \rsp -> do
168 ImmediateDomBuilderT $ lift $ withRequesting $ \rsp -> do
169 (x, req) <- lift $ runRequesterT (runReaderT a e) $ runIdentity <$> rsp
169 (x, req) <- lift $ runRequesterT (runReaderT a e) $ runIdentity <$> rsp
170 return (ffor req $ \rm -> hook $ DMap.traverseWithKey (\_ r -> Identity <$> r) rm, x)
170 return (ffor req $ \rm -> hook $ DMap.traverseWithKey (\_ r -> Identity <$> r) rm, x)
171−
172−requestDomAction :: (Reflex t, Monad m, PrimMonad m) => Event t (JSM a) -> ImmediateDomBuilderT t m (Event t a)
173−requestDomAction = ImmediateDomBuilderT . lift . requestingIdentity
171+ requestDomAction = ImmediateDomBuilderT . lift . requestingIdentity
174−
175−requestDomAction_ :: (Reflex t, Monad m, PrimMonad m) => Event t (JSM a) -> ImmediateDomBuilderT t m ()
176−requestDomAction_ = ImmediateDomBuilderT . lift . requesting_
172+ requestDomAction_ = ImmediateDomBuilderT . lift . requesting_
177
173
178{-# INLINABLE runImmediateDomBuilderT #-}
174{-# INLINABLE runImmediateDomBuilderT #-}
179runImmediateDomBuilderT :: (Reflex t, MonadFix m, PerformEvent t m, MonadJSM (Performable m)) => ImmediateDomBuilderT t m a -> ImmediateDomBuilderEnv t m -> m a
175runImmediateDomBuilderT :: (Reflex t, MonadFix m, PerformEvent t m, MonadJSM (Performable m)) => ImmediateDomBuilderT t m a -> ImmediateDomBuilderEnv t m -> m a