@@ -59,13 +59,12 @@ type ObeliskWidget t route m =
59 , MonadRef (Performable m)
59 , MonadRef (Performable m)
60 , Ref (Performable m) ~ Ref IO
60 , Ref (Performable m) ~ Ref IO
61 , MonadFix (Performable m)
61 , MonadFix (Performable m)
63 , EventWriter t (Endo route) m
62 , EventWriter t (Endo route) m
66data Frontend route = Frontend
65data Frontend route = Frontend
67 { _frontend_head :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
66 { _frontend_head :: !(forall t m. ObeliskWidget t 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 ())
67+ , _frontend_body :: !(forall t m x. (MonadWidget t m, PrimMonad m, ObeliskWidget t route m, HasJS x m) => RoutedT t route m ())
69 , _frontend_title :: !(route -> Text)
68 , _frontend_title :: !(route -> Text)
70 , _frontend_notFoundRoute :: !(Text -> route) --TODO: Instead, maybe we should just require that the `parse` Monad for routeEncoder be `Identity`
69 , _frontend_notFoundRoute :: !(Text -> route) --TODO: Instead, maybe we should just require that the `parse` Monad for routeEncoder be `Identity`
@@ -152,3 +151,7 @@ runFrontend validFullEncoder frontend = do
152 runWithHeadAndBody $ \appendHead appendBody -> runMyRouteViewT $ do
151 runWithHeadAndBody $ \appendHead appendBody -> runMyRouteViewT $ do
153 mapRoutedT (mapEventWriterT appendHead) $ _frontend_head frontend
152 mapRoutedT (mapEventWriterT appendHead) $ _frontend_head frontend
154 mapRoutedT (mapEventWriterT appendBody) $ _frontend_body frontend
153 mapRoutedT (mapEventWriterT appendBody) $ _frontend_body frontend
155+instance PrimMonad m => PrimMonad (EventWriterT t w m) where
156+ type PrimState (EventWriterT t w m) = PrimState m
157+ primitive = lift . primitive