@@ -64,22 +64,41 @@ mainHydrationWidgetWithHead = mainHydrationWidgetWithHead'
6464{-# INLINABLE mainHydrationWidgetWithHead' #-}
6565-- | Warning: `mainHydrationWidgetWithHead'` is provided only as performance tweak. It is expected to disappear in future releases.
6666mainHydrationWidgetWithHead' :: HydrationWidget () () -> HydrationWidget () () -> JSM ()
67−mainHydrationWidgetWithHead' = mainHydrationWidgetWithSwitchoverAction' (pure ()) (pure ())
67+mainHydrationWidgetWithHead' = mainHydrationWidgetWithSwitchoverAction' (pure ())
6868
6969{-# INLINE mainHydrationWidgetWithSwitchoverAction #-}
70−mainHydrationWidgetWithSwitchoverAction :: IO () -> JSM () -> (forall x. HydrationWidget x ()) -> (forall x. HydrationWidget x ()) -> JSM ()
70+mainHydrationWidgetWithSwitchoverAction :: JSM () -> (forall x. HydrationWidget x ()) -> (forall x. HydrationWidget x ()) -> JSM ()
7171mainHydrationWidgetWithSwitchoverAction = mainHydrationWidgetWithSwitchoverAction'
7272
7373{-# INLINABLE mainHydrationWidgetWithSwitchoverAction' #-}
7474-- | Warning: `mainHydrationWidgetWithSwitchoverAction'` is provided only as performance tweak. It is expected to disappear in future releases.
75−mainHydrationWidgetWithSwitchoverAction' :: IO () -> JSM () -> HydrationWidget () () -> HydrationWidget () () -> JSM ()
76−mainHydrationWidgetWithSwitchoverAction' onFailure switchoverAction head' body = do
77− runHydrationWidgetWithHeadAndBody onFailure switchoverAction $ \appendHead appendBody -> do
75+mainHydrationWidgetWithSwitchoverAction' :: JSM () -> HydrationWidget () () -> HydrationWidget () () -> JSM ()
76+mainHydrationWidgetWithSwitchoverAction' = mainHydrationWidgetWithSwitchoverActionWithFailure' (pure ())
77+
78+
79+{-# INLINABLE mainHydrationWidgetWithSwitchoverActionWithFailure' #-}
80+-- | Warning: `mainHydrationWidgetWithSwitchoverActionWithFaiilure'` is provided only as performance tweak. It is expected to disappear in future releases.
81+mainHydrationWidgetWithSwitchoverActionWithFailure' :: IO () -> JSM () -> HydrationWidget () () -> HydrationWidget () () -> JSM ()
82+mainHydrationWidgetWithSwitchoverActionWithFailure' onFailure switchoverAction head' body = do
83+ runHydrationWidgetWithHeadAndBodyWithFailure onFailure switchoverAction $ \appendHead appendBody -> do
7884 appendHead head'
7985 appendBody body
8086
8187{-# INLINABLE attachHydrationWidget #-}
8288attachHydrationWidget
89+ :: JSM ()
90+ -> JSContextSingleton ()
91+ -> ( Event DomTimeline ()
92+ -> IORef HydrationMode
93+ -> Maybe (IORef [(Node, HydrationRunnerT DomTimeline (DomCoreWidget ()) ())])
94+ -> EventChannel
95+ -> PerformEventT DomTimeline DomHost (a, IORef (Maybe (EventTrigger DomTimeline ())))
96+ )
97+ -> IO (a, FireCommand DomTimeline DomHost)
98+attachHydrationWidget = attachHydrationWidgetWithFailure (pure ())
99+
100+{-# INLINABLE attachHydrationWidgetWithFailure #-}
101+attachHydrationWidgetWithFailure
83102 :: IO ()
84103 -> JSM ()
85104 -> JSContextSingleton ()
@@ -90,7 +109,7 @@ attachHydrationWidget
90109 -> PerformEventT DomTimeline DomHost (a, IORef (Maybe (EventTrigger DomTimeline ())))
91110 )
92111 -> IO (a, FireCommand DomTimeline DomHost)
93−attachHydrationWidget onFailure switchoverAction jsSing w = do
112+attachHydrationWidgetWithFailure onFailure switchoverAction jsSing w = do
94113 hydrationMode <- liftIO $ newIORef HydrationMode_Hydrating
95114 rootNodesRef <- liftIO $ newIORef []
96115 events <- newChan
@@ -106,7 +125,7 @@ attachHydrationWidget onFailure switchoverAction jsSing w = do
106125 rootNodes <- liftIO $ readIORef rootNodesRef
107126 let delayedAction = do
108127 for_ (reverse rootNodes) $ \(rootNode, runner) -> do
109− let hydrate = runHydrationRunnerT runner onFailure Nothing rootNode events
128+ let hydrate = runHydrationRunnerTWithFailure runner onFailure Nothing rootNode events
110129 void $ runWithJSContextSingleton (runPostBuildT hydrate never) jsSing
111130 liftIO $ writeIORef hydrationMode HydrationMode_Immediate
112131 runWithJSContextSingleton (DOM.liftJSM switchoverAction) jsSing
@@ -121,6 +140,16 @@ type DomCoreWidget x = PostBuildT DomTimeline (WithJSContextSingleton x (Perform
121140
122141{-# INLINABLE runHydrationWidgetWithHeadAndBody #-}
123142runHydrationWidgetWithHeadAndBody
143+ :: JSM ()
144+ -> ( (forall c. HydrationWidget () c -> FloatingWidget () c) -- "Append to head" --TODO: test invoking this more than once
145+ -> (forall c. HydrationWidget () c -> FloatingWidget () c) -- "Append to body" --TODO: test invoking this more than once
146+ -> FloatingWidget () ()
147+ )
148+ -> JSM ()
149+runHydrationWidgetWithHeadAndBody = runHydrationWidgetWithHeadAndBodyWithFailure (pure ())
150+
151+{-# INLINABLE runHydrationWidgetWithHeadAndBodyWithFailure #-}
152+runHydrationWidgetWithHeadAndBodyWithFailure
124153 :: IO ()
125154 -> JSM ()
126155 -> ( (forall c. HydrationWidget () c -> FloatingWidget () c) -- "Append to head" --TODO: test invoking this more than once
@@ -128,11 +157,11 @@ runHydrationWidgetWithHeadAndBody
128157 -> FloatingWidget () ()
129158 )
130159 -> JSM ()
131−runHydrationWidgetWithHeadAndBody onFailure switchoverAction app = withJSContextSingletonMono $ \jsSing -> do
160+runHydrationWidgetWithHeadAndBodyWithFailure onFailure switchoverAction app = withJSContextSingletonMono $ \jsSing -> do
132161 globalDoc <- currentDocumentUnchecked
133162 headElement <- getHeadUnchecked globalDoc
134163 bodyElement <- getBodyUnchecked globalDoc
135− (events, fc) <- liftIO . attachHydrationWidget onFailure switchoverAction jsSing $ \switchover hydrationMode hydrationResult events -> do
164+ (events, fc) <- liftIO . attachHydrationWidgetWithFailure onFailure switchoverAction jsSing $ \switchover hydrationMode hydrationResult events -> do
136165 (postBuild, postBuildTriggerRef) <- newEventWithTriggerRef
137166 let hydrateDom :: DOM.Node -> HydrationWidget () c -> FloatingWidget () c
138167 hydrateDom n w = do