1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/// The currently active RenderEffect being tracked, if any.
/// When `Signal::get()` is called and this is `Some`, the signal
/// registers itself as a dependency of the active effect.
pub static mut CURRENT_EFFECT: = None;
/// Global map from signal address to dependent effect addresses.
///
/// Each entry maps a signal's inner pointer address to a list of
/// `RenderEffect` inner pointer addresses that depend on that signal.
/// When the signal changes, `notify_effect_subscribers` iterates the
/// list and calls `effect.run_once()` for each dependent effect.
pub static mut EFFECT_SUBSCRIBERS: = None;
/// Queue of effect addresses pending execution.
///
/// When `Signal::set()` triggers `notify_effect_subscribers`, effect
/// addresses are added here instead of being executed synchronously.
/// A single `queueMicrotask` callback drains the queue at the end of
/// the current microtask, batching all pending effects together.
pub static mut PENDING_EFFECTS: = None;
/// Whether a microtask to drain `PENDING_EFFECTS` has already been scheduled.
pub static mut EFFECT_FLUSH_SCHEDULED: bool = false;
/// Whether RenderEffect notifications are temporarily paused.
///
/// When `true`, `notify_effect_subscribers` collects signal addresses into
/// `PAUSED_EFFECT_SIGNALS` but does not schedule effect execution. When
/// unpaused, all collected signals are flushed at once. This prevents
/// event handlers from triggering full-component re-renders via
/// RenderEffect, while still allowing fine-grained `replace_subscribe`
/// listeners to update individual DOM nodes.
pub static mut EFFECT_NOTIFICATIONS_PAUSED: bool = false;
/// Signal addresses whose effect notifications were suppressed while
/// `EFFECT_NOTIFICATIONS_PAUSED` was `true`. When notifications are
/// resumed, these signals' dependent effects are scheduled for execution.
pub static mut PAUSED_EFFECT_SIGNALS: = None;
/// Cached JS closure wrapping `flush_pending_effects`. Created and forgotten
/// exactly once to avoid repeated `Closure::forget()` memory leaks.
pub static mut FLUSH_CLOSURE_FN: = None;