@@ -40,6 +40,7 @@ import Control.Category (Category (..), (.))
4040import Control.Category.Cartesian
4141import Control.Lens hiding (Bifunctor, bimap, universe)
4242import Control.Monad.Fix
43+import Control.Monad.Ref
4344import Control.Monad.Trans
4445import Control.Monad.Trans.Control
4546import Control.Monad.Trans.Reader
@@ -60,7 +61,7 @@ import Reflex.Dynamic
6061import Reflex.Dom.Builder.Class
6162import Data.Type.Coercion
6263import Language.Javascript.JSaddle --TODO: Get rid of this - other platforms can also be routed
63−import Reflex.Dom.Location
64+import Reflex.Dom.Core
6465import qualified GHCJS.DOM.Types as DOM
6566import Network.URI
6667
@@ -77,7 +78,22 @@ instance Monad m => Routed t r (RoutedT t r m) where
7778 askRoute = RoutedT ask
7879
7980newtype RoutedT t r m a = RoutedT { unRoutedT :: ReaderT (Dynamic t r) m a }
80− deriving (Functor, Applicative, Monad, MonadFix, MonadTrans, NotReady t, MonadHold t, MonadSample t, PostBuild t, TriggerEvent t)
81+ deriving (Functor, Applicative, Monad, MonadFix, MonadTrans, NotReady t, MonadHold t, MonadSample t, PostBuild t, TriggerEvent t, HasJSContext, MonadIO, MonadJSM)
82+
83+instance PerformEvent t m => PerformEvent t (RoutedT t r m) where
84+ type Performable (RoutedT t r m) = Performable m
85+ performEvent = lift . performEvent
86+ performEvent_ = lift . performEvent_
87+
88+instance MonadRef m => MonadRef (RoutedT t r m) where
89+ type Ref (RoutedT t r m) = Ref m
90+ newRef = lift . newRef
91+ readRef = lift . readRef
92+ writeRef r = lift . writeRef r
93+
94+instance HasJS x m => HasJS x (RoutedT t r m) where
95+ type JSX (RoutedT t r m) = JSX m
96+ liftJS = lift . liftJS
8197
8298deriving instance EventWriter t w m => EventWriter t w (RoutedT t r m)
8399