Safe Haskell | None |
---|---|
Language | Haskell98 |
Synopsis
- pattern SpiderBehavior :: Behavior x a -> Behavior (SpiderTimeline x) a
- unSpiderBehavior :: Behavior (SpiderTimeline x) a -> Behavior x a
- pattern SpiderEvent :: Event x a -> Event (SpiderTimeline x) a
- unSpiderEvent :: Event (SpiderTimeline x) a -> Event x a
- pattern SpiderDynamic :: Dynamic x (Identity a) -> Dynamic (SpiderTimeline x) a
- unSpiderDynamic :: Dynamic (SpiderTimeline x) a -> Dynamic x (Identity a)
- pattern SpiderIncremental :: Dynamic x p -> Incremental (SpiderTimeline x) p
- unSpiderIncremental :: Incremental (SpiderTimeline x) p -> Dynamic x p
- newtype ReadPhase x a = ReadPhase (ResultM x a)
- newtype SpiderHostFrame x a = SpiderHostFrame {
- runSpiderHostFrame :: EventM x a
- newtype SpiderHost x a = SpiderHost {
- unSpiderHost :: IO a
- data SpiderEventHandle x a = SpiderEventHandle {}
- data RootTrigger x a = GCompare k => RootTrigger (WeakBag (Subscriber x a), IORef (DMap k Identity), k a)
- newtype SpiderPushM x a = SpiderPushM (ComputeM x a)
- type ComputeM = EventM
- newtype SpiderPullM x a = SpiderPullM (BehaviorM x a)
- data LocalSpiderTimeline x s
- type SpiderEnv = SpiderTimeline
- type Spider = SpiderTimeline Global
- data SpiderTimeline x
- data SomeSwitchSubscribed x = SomeSwitchSubscribed (SwitchSubscribed x a)
- newtype Height = Height {}
- newtype EventSelector x k = EventSelector {}
- data Merge x k s = Merge {
- _merge_parentsRef :: !(IORef (DMap k s))
- _merge_heightBagRef :: !(IORef HeightBag)
- _merge_heightRef :: !(IORef Height)
- _merge_sub :: !(Subscriber x (DMap k Identity))
- _merge_accumRef :: !(IORef (DMap k Identity))
- type MergeDestroyFunc k s = DMap k s -> IO ()
- type MergeInitFunc k x s = DMap k (Event x) -> (forall a. EventM x (k a) -> Subscriber x a) -> EventM x (DMap k Identity, [Height], DMap k s)
- type MergeUpdateFunc k x p s = (forall a. EventM x (k a) -> Subscriber x a) -> IORef HeightBag -> DMap k s -> p -> EventM x ([EventSubscription x], DMap k s)
- data FanInt x a = FanInt {
- _fanInt_subscribers :: !(FastMutableIntMap (FastWeakBag (Subscriber x a)))
- _fanInt_subscriptionRef :: !(IORef (EventSubscription x))
- _fanInt_occRef :: !(IORef (IntMap a))
- newtype EventSelectorInt x a = EventSelectorInt {}
- data SomeResetCoincidence x = SomeResetCoincidence !(EventSubscription x) !(Maybe (CoincidenceSubscribed x a))
- type CanTrace x m = (HasSpiderTimeline x, MonadIO m)
- type WeakList a = [Weak a]
- data SomeAssignment x = SomeAssignment !(IORef a) !(IORef [Weak (Invalidator x)]) a
- data SomeRootClear = SomeRootClear !(IORef (DMap k Identity))
- data SomeIntClear = SomeIntClear !(IORef (IntMap a))
- data SomeClear = SomeClear !(IORef (Maybe a))
- type ResultM = EventM
- newtype Dyn x p = Dyn {}
- data DynType x p
- = UnsafeDyn !(BehaviorM x (PatchTarget p), Event x p)
- | BuildDyn !(EventM x (PatchTarget p), Event x p)
- | HoldDyn !(Hold x p)
- data Coincidence x a = Coincidence {
- coincidenceParent :: !(Event x (Event x a))
- coincidenceSubscribed :: !(IORef (Maybe (CoincidenceSubscribed x a)))
- data CoincidenceSubscribed x a = CoincidenceSubscribed {
- coincidenceSubscribedCachedSubscribed :: !(IORef (Maybe (CoincidenceSubscribed x a)))
- coincidenceSubscribedOccurrence :: !(IORef (Maybe a))
- coincidenceSubscribedSubscribers :: !(WeakBag (Subscriber x a))
- coincidenceSubscribedHeight :: !(IORef Height)
- coincidenceSubscribedOuter :: (Subscriber x (Event x a))
- coincidenceSubscribedOuterParent :: !(EventSubscription x)
- coincidenceSubscribedInnerParent :: !(IORef (Maybe (EventSubscribed x)))
- coincidenceSubscribedWeakSelf :: !(IORef (Weak (CoincidenceSubscribed x a)))
- data Switch x a = Switch {
- switchParent :: !(Behavior x (Event x a))
- switchSubscribed :: !(IORef (Maybe (SwitchSubscribed x a)))
- data SwitchSubscribed x a = SwitchSubscribed {
- switchSubscribedCachedSubscribed :: !(IORef (Maybe (SwitchSubscribed x a)))
- switchSubscribedOccurrence :: !(IORef (Maybe a))
- switchSubscribedHeight :: !(IORef Height)
- switchSubscribedSubscribers :: !(WeakBag (Subscriber x a))
- switchSubscribedOwnInvalidator :: !(Invalidator x)
- switchSubscribedOwnWeakInvalidator :: !(IORef (Weak (Invalidator x)))
- switchSubscribedBehaviorParents :: !(IORef [SomeBehaviorSubscribed x])
- switchSubscribedParent :: !(Behavior x (Event x a))
- switchSubscribedCurrentParent :: !(IORef (EventSubscription x))
- switchSubscribedWeakSelf :: !(IORef (Weak (SwitchSubscribed x a)))
- data Fan x k = Fan {
- fanParent :: !(Event x (DMap k Identity))
- fanSubscribed :: !(IORef (Maybe (FanSubscribed x k)))
- data FanSubscribed (x :: *) k = FanSubscribed {
- fanSubscribedCachedSubscribed :: !(IORef (Maybe (FanSubscribed x k)))
- fanSubscribedOccurrence :: !(IORef (Maybe (DMap k Identity)))
- fanSubscribedSubscribers :: !(IORef (DMap k (FanSubscribedChildren x k)))
- fanSubscribedParent :: !(EventSubscription x)
- data FanSubscribedChildren (x :: *) k a = FanSubscribedChildren {
- _fanSubscribedChildren_list :: !(WeakBag (Subscriber x a))
- _fanSubscribedChildren_self :: !(k a, FanSubscribed x k)
- _fanSubscribedChildren_weakSelf :: !(IORef (Weak (k a, FanSubscribed x k)))
- data HeightBag = HeightBag {
- _heightBag_size :: !Int
- _heightBag_contents :: !(IntMap Word)
- data MergeSubscribedParentWithMove x k a = MergeSubscribedParentWithMove {}
- newtype MergeSubscribedParent x a = MergeSubscribedParent {}
- newtype EventM x a = EventM {}
- newtype SomeMergeInit x = SomeMergeInit {
- unSomeMergeInit :: EventM x ()
- data SomeMergeUpdate x = SomeMergeUpdate {
- _someMergeUpdate_update :: !(EventM x [EventSubscription x])
- _someMergeUpdate_invalidateHeight :: !(IO ())
- _someMergeUpdate_recalculateHeight :: !(IO ())
- data SomeDynInit x = Patch p => SomeDynInit !(Dyn x p)
- data SomeHoldInit x = Patch p => SomeHoldInit !(Hold x p)
- data Root x (k :: * -> *) = Root {
- rootOccurrence :: !(IORef (DMap k Identity))
- rootSubscribed :: !(IORef (DMap k (RootSubscribed x)))
- rootInit :: !(forall a. k a -> RootTrigger x a -> IO (IO ()))
- data RootSubscribed x a = GCompare k => RootSubscribed {
- rootSubscribedKey :: !(k a)
- rootSubscribedCachedSubscribed :: !(IORef (DMap k (RootSubscribed x)))
- rootSubscribedSubscribers :: !(WeakBag (Subscriber x a))
- rootSubscribedOccurrence :: !(IO (Maybe a))
- rootSubscribedUninit :: IO ()
- rootSubscribedWeakSelf :: !(IORef (Weak (RootSubscribed x a)))
- data Invalidator x
- = InvalidatorPull (Pull x a)
- | InvalidatorSwitch (SwitchSubscribed x a)
- data Pull x a = Pull {
- pullValue :: !(IORef (Maybe (PullSubscribed x a)))
- pullCompute :: !(BehaviorM x a)
- data PullSubscribed x a = PullSubscribed {
- pullSubscribedValue :: !a
- pullSubscribedInvalidators :: !(IORef [Weak (Invalidator x)])
- pullSubscribedOwnInvalidator :: !(Invalidator x)
- pullSubscribedParents :: ![SomeBehaviorSubscribed x]
- data SomeBehaviorSubscribed x = SomeBehaviorSubscribed (BehaviorSubscribed x a)
- data BehaviorSubscribed x a
- = BehaviorSubscribedHold (Hold x p)
- | BehaviorSubscribedPull (PullSubscribed x a)
- newtype BehaviorM x a = BehaviorM {
- unBehaviorM :: ReaderT (BehaviorEnv x) IO a
- type BehaviorEnv x = (Maybe (Weak (Invalidator x), IORef [SomeBehaviorSubscribed x]), IORef [SomeHoldInit x])
- class HasSpiderTimeline x where
- class HasSpiderTimeline x => HasCurrentHeight x m | m -> x where
- class MonadIO m => Defer a m where
- data EventEnv x = EventEnv {
- eventEnvAssignments :: !(IORef [SomeAssignment x])
- eventEnvHoldInits :: !(IORef [SomeHoldInit x])
- eventEnvDynInits :: !(IORef [SomeDynInit x])
- eventEnvMergeUpdates :: !(IORef [SomeMergeUpdate x])
- eventEnvMergeInits :: !(IORef [SomeMergeInit x])
- eventEnvClears :: !(IORef [SomeClear])
- eventEnvIntClears :: !(IORef [SomeIntClear])
- eventEnvRootClears :: !(IORef [SomeRootClear])
- eventEnvCurrentHeight :: !(IORef Height)
- eventEnvResetCoincidences :: !(IORef [SomeResetCoincidence x])
- eventEnvDelayedMerges :: !(IORef (IntMap [EventM x ()]))
- data SpiderTimelineEnv x = SpiderTimelineEnv {
- _spiderTimeline_lock :: !(MVar ())
- _spiderTimeline_eventEnv :: !(EventEnv x)
- data Global
- data Hold x p = Hold {
- holdValue :: !(IORef (PatchTarget p))
- holdInvalidators :: !(IORef [Weak (Invalidator x)])
- holdEvent :: Event x p
- holdParent :: !(IORef (Maybe (EventSubscription x)))
- data Dynamic x p = Dynamic {
- dynamicCurrent :: !(Behavior x (PatchTarget p))
- dynamicUpdated :: !(Event x p)
- newtype Behavior x a = Behavior {
- readBehaviorTracked :: BehaviorM x a
- data EventSubscribed x = EventSubscribed {}
- data Subscriber x a = Subscriber {
- subscriberPropagate :: !(a -> EventM x ())
- subscriberInvalidateHeight :: !(Height -> IO ())
- subscriberRecalculateHeight :: !(Height -> IO ())
- data CacheSubscribed x a = CacheSubscribed {
- _cacheSubscribed_subscribers :: !(FastWeakBag (Subscriber x a))
- _cacheSubscribed_parent :: !(EventSubscription x)
- _cacheSubscribed_occurrence :: !(IORef (Maybe a))
- newtype Event x a = Event {
- unEvent :: Subscriber x a -> EventM x (EventSubscription x, Maybe a)
- data EventSubscription x = EventSubscription {
- _eventSubscription_unsubscribe :: !(IO ())
- _eventSubscription_subscribed :: !(EventSubscribed x)
- debugPropagate :: Bool
- debugInvalidateHeight :: Bool
- debugInvalidate :: Bool
- showNodeId :: a -> String
- unsubscribe :: EventSubscription x -> IO ()
- subscribeAndRead :: Event x a -> Subscriber x a -> EventM x (EventSubscription x, Maybe a)
- pushCheap :: (a -> ComputeM x (Maybe b)) -> Event x a -> Event x b
- terminalSubscriber :: (a -> EventM x ()) -> Subscriber x a
- subscribeAndReadHead :: Event x a -> Subscriber x a -> EventM x (EventSubscription x, Maybe a)
- headE :: (MonadIO m, Defer (SomeMergeInit x) m) => Event x a -> m (Event x a)
- cacheEvent :: forall x a. HasSpiderTimeline x => Event x a -> Event x a
- subscribe :: Event x a -> Subscriber x a -> EventM x (EventSubscription x)
- wrap :: MonadIO m => (t -> EventSubscribed x) -> (Subscriber x a -> m (WeakBagTicket, t, Maybe a)) -> Subscriber x a -> m (EventSubscription x, Maybe a)
- eventRoot :: GCompare k => k a -> Root x k -> Event x a
- eventNever :: Event x a
- eventFan :: (GCompare k, HasSpiderTimeline x) => k a -> Fan x k -> Event x a
- eventSwitch :: HasSpiderTimeline x => Switch x a -> Event x a
- eventCoincidence :: HasSpiderTimeline x => Coincidence x a -> Event x a
- eventHold :: Hold x p -> Event x p
- eventDyn :: (HasSpiderTimeline x, Patch p) => Dyn x p -> Event x p
- subscribeCoincidenceInner :: HasSpiderTimeline x => Event x a -> Height -> CoincidenceSubscribed x a -> EventM x (Maybe a, Height, EventSubscribed x)
- newSubscriberHold :: (HasSpiderTimeline x, Patch p) => Hold x p -> IO (Subscriber x p)
- newSubscriberFan :: forall x k. (HasSpiderTimeline x, GCompare k) => FanSubscribed x k -> IO (Subscriber x (DMap k Identity))
- newSubscriberSwitch :: forall x a. HasSpiderTimeline x => SwitchSubscribed x a -> IO (Subscriber x a)
- newSubscriberCoincidenceOuter :: forall x b. HasSpiderTimeline x => CoincidenceSubscribed x b -> IO (Subscriber x (Event x b))
- newSubscriberCoincidenceInner :: forall x a. HasSpiderTimeline x => CoincidenceSubscribed x a -> IO (Subscriber x a)
- invalidateSubscriberHeight :: Height -> Subscriber x a -> IO ()
- recalculateSubscriberHeight :: Height -> Subscriber x a -> IO ()
- propagate :: a -> WeakBag (Subscriber x a) -> EventM x ()
- propagateFast :: a -> FastWeakBag (Subscriber x a) -> EventM x ()
- toAny :: a -> Any
- eventSubscribedRoot :: RootSubscribed x a -> EventSubscribed x
- eventSubscribedNever :: EventSubscribed x
- eventSubscribedFan :: FanSubscribed x k -> EventSubscribed x
- eventSubscribedSwitch :: SwitchSubscribed x a -> EventSubscribed x
- eventSubscribedCoincidence :: CoincidenceSubscribed x a -> EventSubscribed x
- getEventSubscribedHeight :: EventSubscribed x -> IO Height
- subscribeHoldEvent :: Hold x p -> Subscriber x p -> EventM x (EventSubscription x, Maybe p)
- behaviorHold :: Hold x p -> Behavior x (PatchTarget p)
- behaviorHoldIdentity :: Hold x (Identity a) -> Behavior x a
- behaviorConst :: a -> Behavior x a
- behaviorPull :: Pull x a -> Behavior x a
- behaviorDyn :: Patch p => Dyn x p -> Behavior x (PatchTarget p)
- readHoldTracked :: Hold x p -> BehaviorM x (PatchTarget p)
- readBehaviorUntracked :: Defer (SomeHoldInit x) m => Behavior x a -> m a
- dynamicHold :: Hold x p -> Dynamic x p
- dynamicHoldIdentity :: Hold x (Identity a) -> Dynamic x (Identity a)
- dynamicConst :: PatchTarget p -> Dynamic x p
- dynamicDyn :: (HasSpiderTimeline x, Patch p) => Dyn x p -> Dynamic x p
- dynamicDynIdentity :: HasSpiderTimeline x => Dyn x (Identity a) -> Dynamic x (Identity a)
- globalSpiderTimelineEnv :: SpiderTimelineEnv Global
- runEventM :: EventM x a -> IO a
- asksEventEnv :: forall x a. HasSpiderTimeline x => (EventEnv x -> a) -> EventM x a
- defer :: Defer a m => a -> m ()
- putCurrentHeight :: HasSpiderTimeline x => Height -> EventM x ()
- scheduleClear :: Defer SomeClear m => IORef (Maybe a) -> m ()
- scheduleIntClear :: Defer SomeIntClear m => IORef (IntMap a) -> m ()
- scheduleRootClear :: Defer SomeRootClear m => IORef (DMap k Identity) -> m ()
- hold :: (Patch p, Defer (SomeHoldInit x) m) => PatchTarget p -> Event x p -> m (Hold x p)
- getHoldEventSubscription :: forall p x. (HasSpiderTimeline x, Patch p) => Hold x p -> EventM x (EventSubscription x)
- heightBagEmpty :: HeightBag
- heightBagSize :: HeightBag -> Int
- heightBagFromList :: [Height] -> HeightBag
- heightBagAdd :: Height -> HeightBag -> HeightBag
- heightBagRemove :: Height -> HeightBag -> HeightBag
- heightBagMax :: HeightBag -> Height
- heightBagVerify :: HeightBag -> HeightBag
- newInvalidatorSwitch :: SwitchSubscribed x a -> IO (Invalidator x)
- newInvalidatorPull :: Pull x a -> IO (Invalidator x)
- newMapDyn :: HasSpiderTimeline x => (a -> b) -> Dynamic x (Identity a) -> Dynamic x (Identity b)
- zipDynWith :: HasSpiderTimeline x => (a -> b -> c) -> Dynamic x (Identity a) -> Dynamic x (Identity b) -> Dynamic x (Identity c)
- buildDynamic :: (Defer (SomeDynInit x) m, Patch p) => EventM x (PatchTarget p) -> Event x p -> m (Dyn x p)
- unsafeBuildDynamic :: BehaviorM x (PatchTarget p) -> Event x p -> Dyn x p
- unsafeNewIORef :: a -> b -> IORef b
- push :: HasSpiderTimeline x => (a -> ComputeM x (Maybe b)) -> Event x a -> Event x b
- pull :: BehaviorM x a -> Behavior x a
- switch :: HasSpiderTimeline x => Behavior x (Event x a) -> Event x a
- coincidence :: HasSpiderTimeline x => Event x (Event x a) -> Event x a
- run :: forall x b. HasSpiderTimeline x => [DSum (RootTrigger x) Identity] -> ResultM x b -> SpiderHost x b
- scheduleMerge' :: HasSpiderTimeline x => Height -> IORef Height -> EventM x () -> EventM x ()
- debugFinalize :: Bool
- mkWeakPtrWithDebug :: a -> String -> IO (Weak a)
- withIncreasedDepth :: m a -> m a
- tracePropagate :: CanTrace x m => proxy x -> String -> m ()
- traceInvalidate :: String -> IO ()
- traceWhen :: CanTrace x m => proxy x -> Bool -> String -> m ()
- traceMWhen :: CanTrace x m => proxy x -> Bool -> m String -> m ()
- whoCreatedIORef :: IORef a -> IO [String]
- propagateSubscriberHold :: forall x p. (HasSpiderTimeline x, Patch p) => Hold x p -> p -> EventM x ()
- runBehaviorM :: BehaviorM x a -> Maybe (Weak (Invalidator x), IORef [SomeBehaviorSubscribed x]) -> IORef [SomeHoldInit x] -> IO a
- askInvalidator :: BehaviorM x (Maybe (Weak (Invalidator x)))
- askParentsRef :: BehaviorM x (Maybe (IORef [SomeBehaviorSubscribed x]))
- askBehaviorHoldInits :: BehaviorM x (IORef [SomeHoldInit x])
- getDynHold :: (Defer (SomeHoldInit x) m, Patch p) => Dyn x p -> m (Hold x p)
- zeroRef :: IORef Height
- getRootSubscribed :: GCompare k => k a -> Root x k -> Subscriber x a -> IO (WeakBagTicket, RootSubscribed x a, Maybe a)
- cleanupRootSubscribed :: RootSubscribed x a -> IO ()
- subscribeRootSubscribed :: RootSubscribed x a -> Subscriber x a -> IO WeakBagTicket
- newFanInt :: IO (FanInt x a)
- unsafeNewFanInt :: b -> FanInt x a
- fanInt :: HasSpiderTimeline x => Event x (IntMap a) -> EventSelectorInt x a
- getFanSubscribed :: (HasSpiderTimeline x, GCompare k) => k a -> Fan x k -> Subscriber x a -> EventM x (WeakBagTicket, FanSubscribed x k, Maybe a)
- cleanupFanSubscribed :: GCompare k => (k a, FanSubscribed x k) -> IO ()
- subscribeFanSubscribed :: GCompare k => k a -> FanSubscribed x k -> Subscriber x a -> IO WeakBagTicket
- getSwitchSubscribed :: HasSpiderTimeline x => Switch x a -> Subscriber x a -> EventM x (WeakBagTicket, SwitchSubscribed x a, Maybe a)
- cleanupSwitchSubscribed :: SwitchSubscribed x a -> IO ()
- subscribeSwitchSubscribed :: SwitchSubscribed x a -> Subscriber x a -> IO WeakBagTicket
- getCoincidenceSubscribed :: forall x a. HasSpiderTimeline x => Coincidence x a -> Subscriber x a -> EventM x (WeakBagTicket, CoincidenceSubscribed x a, Maybe a)
- cleanupCoincidenceSubscribed :: CoincidenceSubscribed x a -> IO ()
- subscribeCoincidenceSubscribed :: CoincidenceSubscribed x a -> Subscriber x a -> IO WeakBagTicket
- merge :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMap k (Event x)) -> Event x (DMap k Identity)
- mergeWithMove :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMapWithMove k (Event x)) -> Event x (DMap k Identity)
- mergeCheap :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMap k (Event x)) -> Event x (DMap k Identity)
- mergeCheapWithMove :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMapWithMove k (Event x)) -> Event x (DMap k Identity)
- invalidateMergeHeight :: Merge x k s -> IO ()
- invalidateMergeHeight' :: IORef Height -> Subscriber x a -> IO ()
- revalidateMergeHeight :: Merge x k s -> IO ()
- scheduleMergeSelf :: HasSpiderTimeline x => Merge x k s -> Height -> EventM x ()
- mergeSubscriber :: forall x k s a. (HasSpiderTimeline x, GCompare k) => Merge x k s -> EventM x (k a) -> Subscriber x a
- updateMerge :: (HasSpiderTimeline x, GCompare k) => Merge x k s -> MergeUpdateFunc k x p s -> p -> SomeMergeUpdate x
- mergeCheap' :: forall k x p s. (HasSpiderTimeline x, GCompare k, PatchTarget p ~ DMap k (Event x)) => MergeInitFunc k x s -> MergeUpdateFunc k x p s -> MergeDestroyFunc k s -> Dynamic x p -> Event x (DMap k Identity)
- mergeInt :: forall x a. HasSpiderTimeline x => Dynamic x (PatchIntMap (Event x a)) -> Event x (IntMap a)
- mergeIntCheap :: forall x a. HasSpiderTimeline x => Dynamic x (PatchIntMap (Event x a)) -> Event x (IntMap a)
- fan :: (HasSpiderTimeline x, GCompare k) => Event x (DMap k Identity) -> EventSelector x k
- runHoldInits :: HasSpiderTimeline x => IORef [SomeHoldInit x] -> IORef [SomeDynInit x] -> IORef [SomeMergeInit x] -> EventM x ()
- initHold :: HasSpiderTimeline x => SomeHoldInit x -> EventM x ()
- initDyn :: HasSpiderTimeline x => SomeDynInit x -> EventM x ()
- newEventEnv :: IO (EventEnv x)
- clearEventEnv :: EventEnv x -> IO ()
- runFrame :: forall x a. HasSpiderTimeline x => EventM x a -> SpiderHost x a
- zeroHeight :: Height
- invalidHeight :: Height
- succHeight :: Height -> Height
- invalidateCoincidenceHeight :: CoincidenceSubscribed x a -> IO ()
- updateSwitchHeight :: Height -> SwitchSubscribed x a -> IO ()
- recalculateCoincidenceHeight :: CoincidenceSubscribed x a -> IO ()
- calculateSwitchHeight :: SwitchSubscribed x a -> IO Height
- calculateCoincidenceHeight :: CoincidenceSubscribed x a -> IO Height
- invalidate :: IORef [SomeSwitchSubscribed x] -> WeakList (Invalidator x) -> IO (WeakList (Invalidator x))
- newJoinDyn :: HasSpiderTimeline x => Dynamic x (Identity (Dynamic x (Identity a))) -> Dyn x (Identity a)
- mapDynamicSpider :: HasSpiderTimeline x => (a -> b) -> Dynamic (SpiderTimeline x) a -> Dynamic (SpiderTimeline x) b
- holdSpiderEventM :: HasSpiderTimeline x => a -> Event (SpiderTimeline x) a -> EventM x (Behavior (SpiderTimeline x) a)
- holdDynSpiderEventM :: HasSpiderTimeline x => a -> Event (SpiderTimeline x) a -> EventM x (Dynamic (SpiderTimeline x) a)
- holdIncrementalSpiderEventM :: (HasSpiderTimeline x, Patch p) => PatchTarget p -> Event (SpiderTimeline x) p -> EventM x (Incremental (SpiderTimeline x) p)
- buildDynamicSpiderEventM :: HasSpiderTimeline x => SpiderPushM x a -> Event (SpiderTimeline x) a -> EventM x (Dynamic (SpiderTimeline x) a)
- unsafeNewSpiderTimelineEnv :: forall x. IO (SpiderTimelineEnv x)
- newSpiderTimeline :: IO (Some SpiderTimelineEnv)
- localSpiderTimeline :: Proxy s -> SpiderTimelineEnv x -> SpiderTimelineEnv (LocalSpiderTimeline x s)
- withSpiderTimeline :: (forall x. HasSpiderTimeline x => SpiderTimelineEnv x -> IO r) -> IO r
- runSpiderHost :: SpiderHost Global a -> IO a
- runSpiderHostForTimeline :: SpiderHost x a -> SpiderTimelineEnv x -> IO a
- newEventWithTriggerIO :: (RootTrigger x a -> IO (IO ())) -> IO (Event x a)
- newFanEventWithTriggerIO :: GCompare k => (forall a. k a -> RootTrigger x a -> IO (IO ())) -> IO (EventSelector x k)
Documentation
pattern SpiderBehavior :: Behavior x a -> Behavior (SpiderTimeline x) a Source #
unSpiderBehavior :: Behavior (SpiderTimeline x) a -> Behavior x a Source #
pattern SpiderEvent :: Event x a -> Event (SpiderTimeline x) a Source #
unSpiderEvent :: Event (SpiderTimeline x) a -> Event x a Source #
pattern SpiderDynamic :: Dynamic x (Identity a) -> Dynamic (SpiderTimeline x) a Source #
unSpiderDynamic :: Dynamic (SpiderTimeline x) a -> Dynamic x (Identity a) Source #
pattern SpiderIncremental :: Dynamic x p -> Incremental (SpiderTimeline x) p Source #
unSpiderIncremental :: Incremental (SpiderTimeline x) p -> Dynamic x p Source #
newtype ReadPhase x a Source #
Instances
newtype SpiderHostFrame x a Source #
Instances
newtype SpiderHost x a Source #
The monad for actions that manipulate a Spider timeline identified by x
SpiderHost | |
|
Instances
data SpiderEventHandle x a Source #
data RootTrigger x a Source #
GCompare k => RootTrigger (WeakBag (Subscriber x a), IORef (DMap k Identity), k a) |
newtype SpiderPushM x a Source #
SpiderPushM (ComputeM x a) |
Instances
newtype SpiderPullM x a Source #
SpiderPullM (BehaviorM x a) |
Instances
data LocalSpiderTimeline x s Source #
Instances
Reifies s (SpiderTimelineEnv x) => HasSpiderTimeline (LocalSpiderTimeline x s) Source # | |
Defined in Reflex.Spider.Internal |
type SpiderEnv = SpiderTimeline Source #
Deprecated: Use SpiderTimelineEnv
instead
SpiderEnv
is the old name for SpiderTimeline
type Spider = SpiderTimeline Global Source #
The default, global Spider environment
data SpiderTimeline x Source #
Designates the default, global Spider timeline
Instances
data SomeSwitchSubscribed x Source #
newtype EventSelector x k Source #
Merge | |
|
type MergeDestroyFunc k s = DMap k s -> IO () Source #
type MergeInitFunc k x s = DMap k (Event x) -> (forall a. EventM x (k a) -> Subscriber x a) -> EventM x (DMap k Identity, [Height], DMap k s) Source #
type MergeUpdateFunc k x p s = (forall a. EventM x (k a) -> Subscriber x a) -> IORef HeightBag -> DMap k s -> p -> EventM x ([EventSubscription x], DMap k s) Source #
FanInt | |
|
newtype EventSelectorInt x a Source #
data SomeResetCoincidence x Source #
SomeResetCoincidence !(EventSubscription x) !(Maybe (CoincidenceSubscribed x a)) |
Instances
HasSpiderTimeline x => Defer (SomeResetCoincidence x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeResetCoincidence x]) Source # |
type CanTrace x m = (HasSpiderTimeline x, MonadIO m) Source #
data SomeAssignment x Source #
SomeAssignment !(IORef a) !(IORef [Weak (Invalidator x)]) a |
Instances
HasSpiderTimeline x => Defer (SomeAssignment x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeAssignment x]) Source # |
data SomeRootClear Source #
SomeRootClear !(IORef (DMap k Identity)) |
Instances
HasSpiderTimeline x => Defer SomeRootClear (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeRootClear]) Source # |
data SomeIntClear Source #
SomeIntClear !(IORef (IntMap a)) |
Instances
HasSpiderTimeline x => Defer SomeIntClear (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeIntClear]) Source # |
Instances
HasSpiderTimeline x => Defer SomeClear (EventM x) Source # | |
Defined in Reflex.Spider.Internal |
UnsafeDyn !(BehaviorM x (PatchTarget p), Event x p) | |
BuildDyn !(EventM x (PatchTarget p), Event x p) | |
HoldDyn !(Hold x p) |
data Coincidence x a Source #
Coincidence | |
|
data CoincidenceSubscribed x a Source #
CoincidenceSubscribed | |
|
Switch | |
|
data SwitchSubscribed x a Source #
SwitchSubscribed | |
|
Fan | |
|
data FanSubscribed (x :: *) k Source #
FanSubscribed | |
|
data FanSubscribedChildren (x :: *) k a Source #
FanSubscribedChildren | |
|
HeightBag | |
|
data MergeSubscribedParentWithMove x k a Source #
newtype MergeSubscribedParent x a Source #
Instances
newtype SomeMergeInit x Source #
SomeMergeInit | |
|
Instances
HasSpiderTimeline x => Defer (SomeMergeInit x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeMergeInit x]) Source # |
data SomeMergeUpdate x Source #
SomeMergeUpdate | |
|
Instances
HasSpiderTimeline x => Defer (SomeMergeUpdate x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeMergeUpdate x]) Source # |
data SomeDynInit x Source #
Patch p => SomeDynInit !(Dyn x p) |
Instances
HasSpiderTimeline x => Defer (SomeDynInit x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeDynInit x]) Source # |
data SomeHoldInit x Source #
Patch p => SomeHoldInit !(Hold x p) |
Instances
Defer (SomeHoldInit x) (BehaviorM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: BehaviorM x (IORef [SomeHoldInit x]) Source # | |
HasSpiderTimeline x => Defer (SomeHoldInit x) (EventM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: EventM x (IORef [SomeHoldInit x]) Source # |
data Root x (k :: * -> *) Source #
Root | |
|
data RootSubscribed x a Source #
GCompare k => RootSubscribed | |
|
data Invalidator x Source #
InvalidatorPull (Pull x a) | |
InvalidatorSwitch (SwitchSubscribed x a) |
Pull | |
|
data PullSubscribed x a Source #
PullSubscribed | |
|
data BehaviorSubscribed x a Source #
newtype BehaviorM x a Source #
BehaviorM | |
|
Instances
Monad (BehaviorM x) Source # | |
Functor (BehaviorM x) Source # | |
MonadFix (BehaviorM x) Source # | |
Defined in Reflex.Spider.Internal | |
Applicative (BehaviorM x) Source # | |
Defined in Reflex.Spider.Internal | |
MonadIO (BehaviorM x) Source # | |
Defined in Reflex.Spider.Internal | |
Defer (SomeHoldInit x) (BehaviorM x) Source # | |
Defined in Reflex.Spider.Internal getDeferralQueue :: BehaviorM x (IORef [SomeHoldInit x]) Source # |
type BehaviorEnv x = (Maybe (Weak (Invalidator x), IORef [SomeBehaviorSubscribed x]), IORef [SomeHoldInit x]) Source #
class HasSpiderTimeline x where Source #
spiderTimeline :: SpiderTimelineEnv x Source #
Retrieve the current SpiderTimelineEnv
Instances
HasSpiderTimeline Global Source # | |
Defined in Reflex.Spider.Internal | |
Reifies s (SpiderTimelineEnv x) => HasSpiderTimeline (LocalSpiderTimeline x s) Source # | |
Defined in Reflex.Spider.Internal |
class HasSpiderTimeline x => HasCurrentHeight x m | m -> x where Source #
getCurrentHeight :: m Height Source #
scheduleMerge :: Height -> EventM x () -> m () Source #
Instances
HasSpiderTimeline x => HasCurrentHeight x (EventM x) Source # | |
Defined in Reflex.Spider.Internal |
class MonadIO m => Defer a m where Source #
getDeferralQueue :: m (IORef [a]) Source #
Instances
EventEnv | |
|
data SpiderTimelineEnv x Source #
Stores all global data relevant to a particular Spider timeline; only one
value should exist for each type x
SpiderTimelineEnv | |
|
Instances
Eq (SpiderTimelineEnv x) Source # | |
Defined in Reflex.Spider.Internal (==) :: SpiderTimelineEnv x -> SpiderTimelineEnv x -> Bool # (/=) :: SpiderTimelineEnv x -> SpiderTimelineEnv x -> Bool # | |
GEq SpiderTimelineEnv Source # | |
Defined in Reflex.Spider.Internal geq :: SpiderTimelineEnv a -> SpiderTimelineEnv b -> Maybe (a := b) # |
A statically allocated SpiderTimeline
Instances
HasSpiderTimeline Global Source # | |
Defined in Reflex.Spider.Internal |
Hold | |
|
Dynamic | |
|
Behavior | |
|
data EventSubscribed x Source #
data Subscriber x a Source #
Subscriber | |
|
data CacheSubscribed x a Source #
CacheSubscribed | |
|
Event | |
|
Instances
HasSpiderTimeline x => Functor (Event x) Source # | |
HasSpiderTimeline x => Align (Event x) Source # | |
HasSpiderTimeline x => Filterable (Event x) Source # | |
data EventSubscription x Source #
showNodeId :: a -> String Source #
unsubscribe :: EventSubscription x -> IO () Source #
subscribeAndRead :: Event x a -> Subscriber x a -> EventM x (EventSubscription x, Maybe a) Source #
terminalSubscriber :: (a -> EventM x ()) -> Subscriber x a Source #
A subscriber that never triggers other Event
s
subscribeAndReadHead :: Event x a -> Subscriber x a -> EventM x (EventSubscription x, Maybe a) Source #
Subscribe to an Event only for the duration of one occurrence
cacheEvent :: forall x a. HasSpiderTimeline x => Event x a -> Event x a Source #
Construct an Event
whose value is guaranteed not to be recomputed
repeatedly
TODO: Try a caching strategy where we subscribe directly to the parent when there's only one subscriber, and then build our own FastWeakBag only when a second subscriber joins
subscribe :: Event x a -> Subscriber x a -> EventM x (EventSubscription x) Source #
wrap :: MonadIO m => (t -> EventSubscribed x) -> (Subscriber x a -> m (WeakBagTicket, t, Maybe a)) -> Subscriber x a -> m (EventSubscription x, Maybe a) Source #
eventNever :: Event x a Source #
eventSwitch :: HasSpiderTimeline x => Switch x a -> Event x a Source #
eventCoincidence :: HasSpiderTimeline x => Coincidence x a -> Event x a Source #
subscribeCoincidenceInner :: HasSpiderTimeline x => Event x a -> Height -> CoincidenceSubscribed x a -> EventM x (Maybe a, Height, EventSubscribed x) Source #
newSubscriberHold :: (HasSpiderTimeline x, Patch p) => Hold x p -> IO (Subscriber x p) Source #
newSubscriberFan :: forall x k. (HasSpiderTimeline x, GCompare k) => FanSubscribed x k -> IO (Subscriber x (DMap k Identity)) Source #
newSubscriberSwitch :: forall x a. HasSpiderTimeline x => SwitchSubscribed x a -> IO (Subscriber x a) Source #
newSubscriberCoincidenceOuter :: forall x b. HasSpiderTimeline x => CoincidenceSubscribed x b -> IO (Subscriber x (Event x b)) Source #
newSubscriberCoincidenceInner :: forall x a. HasSpiderTimeline x => CoincidenceSubscribed x a -> IO (Subscriber x a) Source #
invalidateSubscriberHeight :: Height -> Subscriber x a -> IO () Source #
recalculateSubscriberHeight :: Height -> Subscriber x a -> IO () Source #
propagate :: a -> WeakBag (Subscriber x a) -> EventM x () Source #
Propagate everything at the current height
propagateFast :: a -> FastWeakBag (Subscriber x a) -> EventM x () Source #
Propagate everything at the current height
eventSubscribedRoot :: RootSubscribed x a -> EventSubscribed x Source #
eventSubscribedFan :: FanSubscribed x k -> EventSubscribed x Source #
eventSubscribedSwitch :: SwitchSubscribed x a -> EventSubscribed x Source #
subscribeHoldEvent :: Hold x p -> Subscriber x p -> EventM x (EventSubscription x, Maybe p) Source #
behaviorHold :: Hold x p -> Behavior x (PatchTarget p) Source #
behaviorConst :: a -> Behavior x a Source #
behaviorPull :: Pull x a -> Behavior x a Source #
behaviorDyn :: Patch p => Dyn x p -> Behavior x (PatchTarget p) Source #
readHoldTracked :: Hold x p -> BehaviorM x (PatchTarget p) Source #
readBehaviorUntracked :: Defer (SomeHoldInit x) m => Behavior x a -> m a Source #
dynamicHold :: Hold x p -> Dynamic x p Source #
dynamicConst :: PatchTarget p -> Dynamic x p Source #
dynamicDyn :: (HasSpiderTimeline x, Patch p) => Dyn x p -> Dynamic x p Source #
dynamicDynIdentity :: HasSpiderTimeline x => Dyn x (Identity a) -> Dynamic x (Identity a) Source #
asksEventEnv :: forall x a. HasSpiderTimeline x => (EventEnv x -> a) -> EventM x a Source #
putCurrentHeight :: HasSpiderTimeline x => Height -> EventM x () Source #
scheduleIntClear :: Defer SomeIntClear m => IORef (IntMap a) -> m () Source #
scheduleRootClear :: Defer SomeRootClear m => IORef (DMap k Identity) -> m () Source #
hold :: (Patch p, Defer (SomeHoldInit x) m) => PatchTarget p -> Event x p -> m (Hold x p) Source #
getHoldEventSubscription :: forall p x. (HasSpiderTimeline x, Patch p) => Hold x p -> EventM x (EventSubscription x) Source #
heightBagSize :: HeightBag -> Int Source #
heightBagFromList :: [Height] -> HeightBag Source #
heightBagMax :: HeightBag -> Height Source #
heightBagVerify :: HeightBag -> HeightBag Source #
newInvalidatorSwitch :: SwitchSubscribed x a -> IO (Invalidator x) Source #
newInvalidatorPull :: Pull x a -> IO (Invalidator x) Source #
newMapDyn :: HasSpiderTimeline x => (a -> b) -> Dynamic x (Identity a) -> Dynamic x (Identity b) Source #
zipDynWith :: HasSpiderTimeline x => (a -> b -> c) -> Dynamic x (Identity a) -> Dynamic x (Identity b) -> Dynamic x (Identity c) Source #
buildDynamic :: (Defer (SomeDynInit x) m, Patch p) => EventM x (PatchTarget p) -> Event x p -> m (Dyn x p) Source #
unsafeBuildDynamic :: BehaviorM x (PatchTarget p) -> Event x p -> Dyn x p Source #
unsafeNewIORef :: a -> b -> IORef b Source #
coincidence :: HasSpiderTimeline x => Event x (Event x a) -> Event x a Source #
run :: forall x b. HasSpiderTimeline x => [DSum (RootTrigger x) Identity] -> ResultM x b -> SpiderHost x b Source #
scheduleMerge' :: HasSpiderTimeline x => Height -> IORef Height -> EventM x () -> EventM x () Source #
debugFinalize :: Bool Source #
withIncreasedDepth :: m a -> m a Source #
tracePropagate :: CanTrace x m => proxy x -> String -> m () Source #
traceInvalidate :: String -> IO () Source #
propagateSubscriberHold :: forall x p. (HasSpiderTimeline x, Patch p) => Hold x p -> p -> EventM x () Source #
runBehaviorM :: BehaviorM x a -> Maybe (Weak (Invalidator x), IORef [SomeBehaviorSubscribed x]) -> IORef [SomeHoldInit x] -> IO a Source #
askInvalidator :: BehaviorM x (Maybe (Weak (Invalidator x))) Source #
askParentsRef :: BehaviorM x (Maybe (IORef [SomeBehaviorSubscribed x])) Source #
askBehaviorHoldInits :: BehaviorM x (IORef [SomeHoldInit x]) Source #
getDynHold :: (Defer (SomeHoldInit x) m, Patch p) => Dyn x p -> m (Hold x p) Source #
getRootSubscribed :: GCompare k => k a -> Root x k -> Subscriber x a -> IO (WeakBagTicket, RootSubscribed x a, Maybe a) Source #
cleanupRootSubscribed :: RootSubscribed x a -> IO () Source #
subscribeRootSubscribed :: RootSubscribed x a -> Subscriber x a -> IO WeakBagTicket Source #
unsafeNewFanInt :: b -> FanInt x a Source #
fanInt :: HasSpiderTimeline x => Event x (IntMap a) -> EventSelectorInt x a Source #
getFanSubscribed :: (HasSpiderTimeline x, GCompare k) => k a -> Fan x k -> Subscriber x a -> EventM x (WeakBagTicket, FanSubscribed x k, Maybe a) Source #
cleanupFanSubscribed :: GCompare k => (k a, FanSubscribed x k) -> IO () Source #
subscribeFanSubscribed :: GCompare k => k a -> FanSubscribed x k -> Subscriber x a -> IO WeakBagTicket Source #
getSwitchSubscribed :: HasSpiderTimeline x => Switch x a -> Subscriber x a -> EventM x (WeakBagTicket, SwitchSubscribed x a, Maybe a) Source #
cleanupSwitchSubscribed :: SwitchSubscribed x a -> IO () Source #
subscribeSwitchSubscribed :: SwitchSubscribed x a -> Subscriber x a -> IO WeakBagTicket Source #
getCoincidenceSubscribed :: forall x a. HasSpiderTimeline x => Coincidence x a -> Subscriber x a -> EventM x (WeakBagTicket, CoincidenceSubscribed x a, Maybe a) Source #
cleanupCoincidenceSubscribed :: CoincidenceSubscribed x a -> IO () Source #
subscribeCoincidenceSubscribed :: CoincidenceSubscribed x a -> Subscriber x a -> IO WeakBagTicket Source #
merge :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMap k (Event x)) -> Event x (DMap k Identity) Source #
mergeWithMove :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMapWithMove k (Event x)) -> Event x (DMap k Identity) Source #
mergeCheap :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMap k (Event x)) -> Event x (DMap k Identity) Source #
mergeCheapWithMove :: forall k x. (HasSpiderTimeline x, GCompare k) => Dynamic x (PatchDMapWithMove k (Event x)) -> Event x (DMap k Identity) Source #
invalidateMergeHeight :: Merge x k s -> IO () Source #
invalidateMergeHeight' :: IORef Height -> Subscriber x a -> IO () Source #
revalidateMergeHeight :: Merge x k s -> IO () Source #
scheduleMergeSelf :: HasSpiderTimeline x => Merge x k s -> Height -> EventM x () Source #
mergeSubscriber :: forall x k s a. (HasSpiderTimeline x, GCompare k) => Merge x k s -> EventM x (k a) -> Subscriber x a Source #
updateMerge :: (HasSpiderTimeline x, GCompare k) => Merge x k s -> MergeUpdateFunc k x p s -> p -> SomeMergeUpdate x Source #
mergeCheap' :: forall k x p s. (HasSpiderTimeline x, GCompare k, PatchTarget p ~ DMap k (Event x)) => MergeInitFunc k x s -> MergeUpdateFunc k x p s -> MergeDestroyFunc k s -> Dynamic x p -> Event x (DMap k Identity) Source #
mergeInt :: forall x a. HasSpiderTimeline x => Dynamic x (PatchIntMap (Event x a)) -> Event x (IntMap a) Source #
mergeIntCheap :: forall x a. HasSpiderTimeline x => Dynamic x (PatchIntMap (Event x a)) -> Event x (IntMap a) Source #
fan :: (HasSpiderTimeline x, GCompare k) => Event x (DMap k Identity) -> EventSelector x k Source #
runHoldInits :: HasSpiderTimeline x => IORef [SomeHoldInit x] -> IORef [SomeDynInit x] -> IORef [SomeMergeInit x] -> EventM x () Source #
initHold :: HasSpiderTimeline x => SomeHoldInit x -> EventM x () Source #
initDyn :: HasSpiderTimeline x => SomeDynInit x -> EventM x () Source #
newEventEnv :: IO (EventEnv x) Source #
clearEventEnv :: EventEnv x -> IO () Source #
runFrame :: forall x a. HasSpiderTimeline x => EventM x a -> SpiderHost x a Source #
Run an event action outside of a frame
zeroHeight :: Height Source #
succHeight :: Height -> Height Source #
invalidateCoincidenceHeight :: CoincidenceSubscribed x a -> IO () Source #
updateSwitchHeight :: Height -> SwitchSubscribed x a -> IO () Source #
recalculateCoincidenceHeight :: CoincidenceSubscribed x a -> IO () Source #
calculateSwitchHeight :: SwitchSubscribed x a -> IO Height Source #
invalidate :: IORef [SomeSwitchSubscribed x] -> WeakList (Invalidator x) -> IO (WeakList (Invalidator x)) Source #
newJoinDyn :: HasSpiderTimeline x => Dynamic x (Identity (Dynamic x (Identity a))) -> Dyn x (Identity a) Source #
mapDynamicSpider :: HasSpiderTimeline x => (a -> b) -> Dynamic (SpiderTimeline x) a -> Dynamic (SpiderTimeline x) b Source #
holdSpiderEventM :: HasSpiderTimeline x => a -> Event (SpiderTimeline x) a -> EventM x (Behavior (SpiderTimeline x) a) Source #
holdDynSpiderEventM :: HasSpiderTimeline x => a -> Event (SpiderTimeline x) a -> EventM x (Dynamic (SpiderTimeline x) a) Source #
holdIncrementalSpiderEventM :: (HasSpiderTimeline x, Patch p) => PatchTarget p -> Event (SpiderTimeline x) p -> EventM x (Incremental (SpiderTimeline x) p) Source #
buildDynamicSpiderEventM :: HasSpiderTimeline x => SpiderPushM x a -> Event (SpiderTimeline x) a -> EventM x (Dynamic (SpiderTimeline x) a) Source #
unsafeNewSpiderTimelineEnv :: forall x. IO (SpiderTimelineEnv x) Source #
newSpiderTimeline :: IO (Some SpiderTimelineEnv) Source #
Create a new SpiderTimelineEnv
localSpiderTimeline :: Proxy s -> SpiderTimelineEnv x -> SpiderTimelineEnv (LocalSpiderTimeline x s) Source #
withSpiderTimeline :: (forall x. HasSpiderTimeline x => SpiderTimelineEnv x -> IO r) -> IO r Source #
Pass a new timeline to the given function.
runSpiderHost :: SpiderHost Global a -> IO a Source #
Run an action affecting the global Spider timeline; this will be guarded by a mutex for that timeline
runSpiderHostForTimeline :: SpiderHost x a -> SpiderTimelineEnv x -> IO a Source #
Run an action affecting a given Spider timeline; this will be guarded by a mutex for that timeline
newEventWithTriggerIO :: (RootTrigger x a -> IO (IO ())) -> IO (Event x a) Source #
newFanEventWithTriggerIO :: GCompare k => (forall a. k a -> RootTrigger x a -> IO (IO ())) -> IO (EventSelector x k) Source #