@@ -22,6 +22,7 @@ import Control.Lens
2222import Control.Monad
2323import Control.Monad.Fix
2424import Control.Monad.IO.Class
25+import Control.Monad.Primitive
2526import Control.Monad.Ref
2627import Control.Monad.Trans.Class
2728import Data.Dependent.Sum (DSum (..))
@@ -57,12 +58,14 @@ type ObeliskWidget t route m =
5758 , Ref m ~ Ref IO
5859 , MonadRef (Performable m)
5960 , Ref (Performable m) ~ Ref IO
61+ , MonadFix (Performable m)
62+ , PrimMonad m
6063 , EventWriter t (Endo route) m
6164 )
6265
6366data Frontend route = Frontend
6467 { _frontend_head :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
65− , _frontend_body :: !(forall t m x. (MonadWidget t m, HasJS x m, EventWriter t (Endo route) m) => RoutedT t route m ())
68+ , _frontend_body :: !(forall t m x. (MonadWidget t m, ObeliskWidget t route m, HasJS x m) => RoutedT t route m ())
6669 , _frontend_title :: !(route -> Text)
6770 , _frontend_notFoundRoute :: !(Text -> route) --TODO: Instead, maybe we should just require that the `parse` Monad for routeEncoder be `Identity`
6871 }
@@ -138,6 +141,7 @@ runFrontend validFullEncoder frontend = do
138141 , DOM.MonadJSM m
139142 , DOM.MonadJSM (Performable m)
140143 , MonadFix m
144+ , MonadFix (Performable m)
141145 )
142146 => RoutedT t (R route) (EventWriterT t (Endo (R route)) m) a
143147 -> m a