@@ -3,6 +3,7 @@
33{-# LANGUAGE RecursiveDo #-}
44{-# LANGUAGE StandaloneDeriving #-}
55{-# LANGUAGE ConstraintKinds #-}
6+{-# LANGUAGE DefaultSignatures #-}
67{-# LANGUAGE FlexibleContexts #-}
78{-# LANGUAGE FlexibleInstances #-}
89{-# LANGUAGE GADTs #-}
@@ -96,12 +97,13 @@ pattern a :~ b <- a :=> (coerceDynamic . getCompose -> b)
9697
9798class Routed t r m | m -> t r where
9899 askRoute :: m (Dynamic t r)
100+ default askRoute :: (Monad m', MonadTrans f, Routed t r m', m ~ f m') => m (Dynamic t r)
101+ askRoute = lift askRoute
99102
100103instance Monad m => Routed t r (RoutedT t r m) where
101104 askRoute = RoutedT ask
102105
103−instance (Monad m, Routed t r m) => Routed t r (ReaderT r' m) where
104− askRoute = lift askRoute
106+instance (Monad m, Routed t r m) => Routed t r (ReaderT r' m)
105107
106108newtype RoutedT t r m a = RoutedT { unRoutedT :: ReaderT (Dynamic t r) m a }
107109 deriving (Functor, Applicative, Monad, MonadFix, MonadTrans, NotReady t, MonadHold t, MonadSample t, PostBuild t, TriggerEvent t, MonadIO, MonadReflexCreateTrigger t, HasDocument)
@@ -259,16 +261,17 @@ runSetRouteT = runEventWriterT . unSetRouteT
259261class Reflex t => SetRoute t r m | m -> t r where
260262 setRoute :: Event t r -> m ()
261263 modifyRoute :: Event t (r -> r) -> m ()
264+ default modifyRoute :: (Monad m', MonadTrans f, SetRoute t r m', m ~ f m') => Event t (r -> r) -> m ()
265+ modifyRoute = lift . modifyRoute
266+
262267 setRoute = modifyRoute . fmap const
263268
264269instance (Reflex t, Monad m) => SetRoute t r (SetRouteT t r m) where
265270 modifyRoute = SetRouteT . tellEvent . fmap Endo
266271
267−instance (Monad m, SetRoute t r m) => SetRoute t r (RoutedT t r' m) where
268− modifyRoute = lift . modifyRoute
272+instance (Monad m, SetRoute t r m) => SetRoute t r (RoutedT t r' m)
269273
270−instance (Monad m, SetRoute t r m) => SetRoute t r (ReaderT r' m) where
271− modifyRoute = lift . modifyRoute
274+instance (Monad m, SetRoute t r m) => SetRoute t r (ReaderT r' m)
272275
273276instance Prerender js m => Prerender js (SetRouteT t r m) where
274277 prerenderClientDict = fmap (\Dict -> Dict) (prerenderClientDict :: Maybe (Dict (PrerenderClientConstraint js m)))
@@ -315,6 +318,8 @@ instance (Monad m, MonadQuery t vs m) => MonadQuery t vs (SetRouteT t r m) where
315318
316319class RouteToUrl r m | m -> r where
317320 askRouteToUrl :: m (r -> Text)
321+ default askRouteToUrl :: (Monad m', MonadTrans f, RouteToUrl r m', m ~ f m') => m (r -> Text)
322+ askRouteToUrl = lift askRouteToUrl
318323
319324newtype RouteToUrlT r m a = RouteToUrlT { unRouteToUrlT :: ReaderT (r -> Text) m a }
320325 deriving (Functor, Applicative, Monad, MonadFix, MonadTrans, NotReady t, MonadHold t, MonadSample t, PostBuild t, TriggerEvent t, MonadIO, MonadReflexCreateTrigger t, HasDocument)
@@ -332,13 +337,10 @@ instance Monad m => RouteToUrl r (RouteToUrlT r m) where
332337 askRouteToUrl = RouteToUrlT ask
333338
334339instance (Monad m, RouteToUrl r m) => RouteToUrl r (SetRouteT t r' m) where
335− askRouteToUrl = lift askRouteToUrl
336340
337341instance (Monad m, RouteToUrl r m) => RouteToUrl r (RoutedT t r' m) where
338− askRouteToUrl = lift askRouteToUrl
339342
340343instance (Monad m, RouteToUrl r m) => RouteToUrl r (ReaderT r' m) where
341− askRouteToUrl = lift askRouteToUrl
342344
343345instance HasJSContext m => HasJSContext (RouteToUrlT r m) where
344346 type JSContextPhantom (RouteToUrlT r m) = JSContextPhantom m