@@ -37,7 +37,6 @@ import Data.Default
37import Data.Dependent.Map (DMap)
37import Data.Dependent.Map (DMap)
38import qualified Data.Dependent.Map as DMap
38import qualified Data.Dependent.Map as DMap
39import Data.Dependent.Sum
39import Data.Dependent.Sum
40−import Data.Functor.Compose
41import Data.Functor.Misc
40import Data.Functor.Misc
42import Data.IORef
41import Data.IORef
43import Data.Map (Map)
42import Data.Map (Map)
@@ -393,21 +392,21 @@ instance (Reflex t, MonadAdjust t m, MonadIO m, MonadHold t m, PerformEvent t m,
393 { _immediateDomBuilderEnv_parent = toNode df
392 { _immediateDomBuilderEnv_parent = toNode df
395 updateChildren = ffor dm' $ \(PatchDMap p) -> PatchDMap $
394 updateChildren = ffor dm' $ \(PatchDMap p) -> PatchDMap $
396− mapKeyValuePairsMonotonic (\(k :=> Compose mv) -> WrapArg k :=> Compose (fmap drawChildUpdate mv)) p
395+ mapKeyValuePairsMonotonic (\(k :=> ComposeMaybe mv) -> WrapArg k :=> ComposeMaybe (fmap drawChildUpdate mv)) p
397− (children0, children') <- lift $ sequenceDMapWithAdjust (mapKeyValuePairsMonotonic (\(k :=> v) -> WrapArg k :=> drawChildInitial v) dm0) (updateChildren :: Event t (PatchDMap (DMap (WrapArg ((,,) DOM.DocumentFragment DOM.Text) k) m))) --TODO: Update stuff
396+ (children0, children') <- lift $ sequenceDMapWithAdjust (mapKeyValuePairsMonotonic (\(k :=> v) -> WrapArg k :=> drawChildInitial v) dm0) (updateChildren :: Event t (PatchDMap (WrapArg ((,,) DOM.DocumentFragment DOM.Text) k) m)) --TODO: Update stuff
398 let result0 = mapKeyValuePairsMonotonic (\(WrapArg k :=> Identity (_, _, v)) -> k :=> Identity v) children0
397 let result0 = mapKeyValuePairsMonotonic (\(WrapArg k :=> Identity (_, _, v)) -> k :=> Identity v) children0
399 placeholders0 = dmapToMap $ mapKeyValuePairsMonotonic (\(WrapArg k :=> Identity (_, ph, _)) -> Const2 (Some.This k) :=> Identity ph) children0
398 placeholders0 = dmapToMap $ mapKeyValuePairsMonotonic (\(WrapArg k :=> Identity (_, ph, _)) -> Const2 (Some.This k) :=> Identity ph) children0
400 result' = ffor children' $ \(PatchDMap p) -> PatchDMap $
399 result' = ffor children' $ \(PatchDMap p) -> PatchDMap $
401 mapKeyValuePairsMonotonic (\(WrapArg k :=> v) -> k :=> fmap (\(_, _, r) -> r) v) p
400 mapKeyValuePairsMonotonic (\(WrapArg k :=> v) -> k :=> fmap (\(_, _, r) -> r) v) p
402 placeholders' = ffor children' $ \(PatchDMap p) -> PatchMap $
401 placeholders' = ffor children' $ \(PatchDMap p) -> PatchMap $
403− dmapToMap $ mapKeyValuePairsMonotonic (\(WrapArg k :=> v) -> Const2 (Some.This k) :=> Identity (fmap ((\(_, ph, _) -> ph) . runIdentity) (getCompose v))) p
402+ dmapToMap $ mapKeyValuePairsMonotonic (\(WrapArg k :=> v) -> Const2 (Some.This k) :=> Identity (fmap ((\(_, ph, _) -> ph) . runIdentity) (getComposeMaybe v))) p
404 placeholders :: Behavior t (Map (Some k) DOM.Text) <- current . incrementalToDynamic <$> holdIncremental placeholders0 placeholders'
403 placeholders :: Behavior t (Map (Some k) DOM.Text) <- current . incrementalToDynamic <$> holdIncremental placeholders0 placeholders'
405 lastPlaceholder <- textNodeInternal ("" :: Text)
404 lastPlaceholder <- textNodeInternal ("" :: Text)
406 performEvent_ $ flip push children' $ \(PatchDMap p) -> do
405 performEvent_ $ flip push children' $ \(PatchDMap p) -> do
407 phs <- sample placeholders
406 phs <- sample placeholders
408 if DMap.null p then return Nothing else return $ Just $ do
407 if DMap.null p then return Nothing else return $ Just $ do
409− let f :: DSum (WrapArg ((,,) DOM.DocumentFragment DOM.Text) k) (Compose Maybe Identity) -> Performable m ()
408+ let f :: DSum (WrapArg ((,,) DOM.DocumentFragment DOM.Text) k) (ComposeMaybe Identity) -> Performable m ()
410− f (WrapArg k :=> Compose mv) = do
409+ f (WrapArg k :=> ComposeMaybe mv) = do
411 let nextPlaceholder = maybe lastPlaceholder snd $ Map.lookupGT (Some.This k) phs
410 let nextPlaceholder = maybe lastPlaceholder snd $ Map.lookupGT (Some.This k) phs
412 forM_ (Map.lookup (Some.This k) phs) $ \thisPlaceholder -> thisPlaceholder `deleteUpTo` nextPlaceholder
411 forM_ (Map.lookup (Some.This k) phs) $ \thisPlaceholder -> thisPlaceholder `deleteUpTo` nextPlaceholder
413 forM_ mv $ \(Identity (df, _, _)) -> df `insertBefore` nextPlaceholder
412 forM_ mv $ \(Identity (df, _, _)) -> df `insertBefore` nextPlaceholder