@@ -101,27 +101,32 @@ instance (Adjustable t m, PrerenderBaseConstraints js t m, ReflexHost t) => Prer
101 env <- HydrationDomBuilderT ask
101 env <- HydrationDomBuilderT ask
102 events <- askEvents
102 events <- askEvents
103 doc <- askDocument
103 doc <- askDocument
104+ serverDf <- Document.createDocumentFragment doc -- server dom should not be mounted in the window's doc in hydration
104 df <- Document.createDocumentFragment doc
105 df <- Document.createDocumentFragment doc
105 unreadyChildren <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_unreadyChildren
106 unreadyChildren <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_unreadyChildren
106− hydrationMode <- liftIO $ newIORef HydrationMode_Immediate
107+ immediateMode <- liftIO $ newIORef HydrationMode_Immediate
107 delayed <- liftIO $ newIORef $ pure ()
108 delayed <- liftIO $ newIORef $ pure ()
110+ { _hydrationDomBuilderEnv_parent = Left $ DOM.toNode df
111+ , _hydrationDomBuilderEnv_hydrationMode = immediateMode
108− let env' = HydrationDomBuilderEnv
113+ serverEnv = HydrationDomBuilderEnv
109 { _hydrationDomBuilderEnv_document = doc
114 { _hydrationDomBuilderEnv_document = doc
110− , _hydrationDomBuilderEnv_parent = Left $ DOM.toNode df
115+ , _hydrationDomBuilderEnv_parent = Left $ DOM.toNode serverDf
111 , _hydrationDomBuilderEnv_unreadyChildren = unreadyChildren
116 , _hydrationDomBuilderEnv_unreadyChildren = unreadyChildren
112 , _hydrationDomBuilderEnv_commitAction = pure ()
117 , _hydrationDomBuilderEnv_commitAction = pure ()
113 , _hydrationDomBuilderEnv_delayed = delayed
118 , _hydrationDomBuilderEnv_delayed = delayed
114− , _hydrationDomBuilderEnv_hydrationMode = hydrationMode
119+ , _hydrationDomBuilderEnv_hydrationMode = immediateMode
115 , _hydrationDomBuilderEnv_switchover = never
120 , _hydrationDomBuilderEnv_switchover = never
117− a0 <- lift $ runHydrationDomBuilderT server (env { _hydrationDomBuilderEnv_delayed = delayed }) events
122+ a0 <- lift $ runHydrationDomBuilderT server serverEnv events
118 (a', trigger) <- newTriggerEvent
123 (a', trigger) <- newTriggerEvent
119 getHydrationMode >>= \case
124 getHydrationMode >>= \case
120 HydrationMode_Immediate -> do
125 HydrationMode_Immediate -> do
121− liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') env' events
126+ liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') clientEnv events
122 append $ DOM.toNode df
127 append $ DOM.toNode df
123 HydrationMode_Hydrating -> addHydrationStep $ do
128 HydrationMode_Hydrating -> addHydrationStep $ do
124− liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') env' events
129+ liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') clientEnv events
125 insertBefore df =<< deleteToPrerenderEnd doc
130 insertBefore df =<< deleteToPrerenderEnd doc
126 holdDyn a0 a'
131 holdDyn a0 a'