@@ -306,7 +306,20 @@ data CacheSubscribed x a
309−
309+nowSpiderEventM :: (HasSpiderTimeline x) => EventM x (R.Event (SpiderTimeline x) ())
313+now :: (MonadIO m, Defer (Some Clear) m, HasSpiderTimeline x
316+ nowOrNot <- liftIO $ newIORef $ Just ()
317+ scheduleClear nowOrNot
318+ return . Event $ \_ -> do
319+ occ <- liftIO . readIORef $ nowOrNot
320+ return ( EventSubscription (return ()) eventSubscribedNow
311-- | Construct an 'Event' whose value is guaranteed not to be recomputed
324-- | Construct an 'Event' whose value is guaranteed not to be recomputed
312-- repeatedly
325-- repeatedly
@@ -593,6 +606,16 @@ eventSubscribedNever = EventSubscribed
593 , eventSubscribedWhoCreated = return ["never"]
606 , eventSubscribedWhoCreated = return ["never"]
609+eventSubscribedNow :: EventSubscribed x
610+eventSubscribedNow = EventSubscribed
611+ { eventSubscribedHeightRef = zeroRef
612+ , eventSubscribedRetained = toAny ()
614+ , eventSubscribedGetParents = return []
615+ , eventSubscribedHasOwnHeightRef = False
616+ , eventSubscribedWhoCreated = return ["now"]
597eventSubscribedFan :: FanSubscribed x k v -> EventSubscribed x
620eventSubscribedFan :: FanSubscribed x k v -> EventSubscribed x
598eventSubscribedFan !subscribed = EventSubscribed
621eventSubscribedFan !subscribed = EventSubscribed
@@ -2496,6 +2519,8 @@ instance HasSpiderTimeline x => Reflex.Class.MonadHold (SpiderTimeline x) (Event
2496 {-# INLINABLE headE #-}
2519 {-# INLINABLE headE #-}
2497 headE = R.slowHeadE
2520 headE = R.slowHeadE
2498-- headE (SpiderEvent e) = SpiderEvent <$> Reflex.Spider.Internal.headE e
2521-- headE (SpiderEvent e) = SpiderEvent <$> Reflex.Spider.Internal.headE e
2522+ {-# INLINABLE now #-}
2523+ now = nowSpiderEventM
2500instance Reflex.Class.MonadSample (SpiderTimeline x) (SpiderPullM x) where
2525instance Reflex.Class.MonadSample (SpiderTimeline x) (SpiderPullM x) where
2501 {-# INLINABLE sample #-}
2526 {-# INLINABLE sample #-}
@@ -2517,6 +2542,9 @@ instance HasSpiderTimeline x => Reflex.Class.MonadHold (SpiderTimeline x) (Spide
2517 {-# INLINABLE headE #-}
2542 {-# INLINABLE headE #-}
2518 headE = R.slowHeadE
2543 headE = R.slowHeadE
2519-- headE (SpiderEvent e) = SpiderPushM $ SpiderEvent <$> Reflex.Spider.Internal.headE e
2544-- headE (SpiderEvent e) = SpiderPushM $ SpiderEvent <$> Reflex.Spider.Internal.headE e
2545+ {-# INLINABLE now #-}
2546+ now = SpiderPushM nowSpiderEventM
2521instance HasSpiderTimeline x => Monad (Reflex.Class.Dynamic (SpiderTimeline x)) where
2549instance HasSpiderTimeline x => Monad (Reflex.Class.Dynamic (SpiderTimeline x)) where
2522 {-# INLINE return #-}
2550 {-# INLINE return #-}
@@ -2580,6 +2608,9 @@ instance HasSpiderTimeline x => Reflex.Class.MonadHold (SpiderTimeline x) (Spide
2580 buildDynamic getV0 e = runFrame . runSpiderHostFrame $ Reflex.Class.buildDynamic getV0 e
2608 buildDynamic getV0 e = runFrame . runSpiderHostFrame $ Reflex.Class.buildDynamic getV0 e
2581 {-# INLINABLE headE #-}
2609 {-# INLINABLE headE #-}
2582 headE e = runFrame . runSpiderHostFrame $ Reflex.Class.headE e
2610 headE e = runFrame . runSpiderHostFrame $ Reflex.Class.headE e
2611+ {-# INLINABLE now #-}
2612+ now = runFrame . runSpiderHostFrame $ Reflex.Class.now
2584instance HasSpiderTimeline x => Reflex.Class.MonadSample (SpiderTimeline x) (SpiderHostFrame x) where
2615instance HasSpiderTimeline x => Reflex.Class.MonadSample (SpiderTimeline x) (SpiderHostFrame x) where
2585 sample = SpiderHostFrame . readBehaviorUntracked . unSpiderBehavior --TODO: This can cause problems with laziness, so we should get rid of it if we can
2616 sample = SpiderHostFrame . readBehaviorUntracked . unSpiderBehavior --TODO: This can cause problems with laziness, so we should get rid of it if we can
@@ -2596,6 +2627,8 @@ instance HasSpiderTimeline x => Reflex.Class.MonadHold (SpiderTimeline x) (Spide
2596 {-# INLINABLE headE #-}
2627 {-# INLINABLE headE #-}
2597 headE = R.slowHeadE
2628 headE = R.slowHeadE
2598-- headE (SpiderEvent e) = SpiderHostFrame $ SpiderEvent <$> Reflex.Spider.Internal.headE e
2629-- headE (SpiderEvent e) = SpiderHostFrame $ SpiderEvent <$> Reflex.Spider.Internal.headE e
2630+ {-# INLINABLE now #-}
2631+ now = SpiderHostFrame Reflex.Class.now
2600instance HasSpiderTimeline x => Reflex.Class.MonadSample (SpiderTimeline x) (SpiderHost x) where
2633instance HasSpiderTimeline x => Reflex.Class.MonadSample (SpiderTimeline x) (SpiderHost x) where
2601 {-# INLINABLE sample #-}
2634 {-# INLINABLE sample #-}
@@ -2616,6 +2649,8 @@ instance HasSpiderTimeline x => Reflex.Class.MonadHold (SpiderTimeline x) (Refle
2616 buildDynamic getV0 e = Reflex.Spider.Internal.ReadPhase $ Reflex.Class.buildDynamic getV0 e
2649 buildDynamic getV0 e = Reflex.Spider.Internal.ReadPhase $ Reflex.Class.buildDynamic getV0 e
2617 {-# INLINABLE headE #-}
2650 {-# INLINABLE headE #-}
2618 headE e = Reflex.Spider.Internal.ReadPhase $ Reflex.Class.headE e
2651 headE e = Reflex.Spider.Internal.ReadPhase $ Reflex.Class.headE e
2652+ {-# INLINABLE now #-}
2653+ now = Reflex.Spider.Internal.ReadPhase Reflex.Class.now
2620--------------------------------------------------------------------------------
2655--------------------------------------------------------------------------------
2621-- Deprecated items
2656-- Deprecated items