mirror of https://github.com/sveltejs/svelte
parent
f00cdee0a1
commit
a21bb4c7e8
@ -0,0 +1,25 @@
|
|||||||
|
/** @import { Derived, Signal } from '#client' */
|
||||||
|
import { CLEAN, CONNECTED, DIRTY, MAYBE_DIRTY } from '#client/constants';
|
||||||
|
|
||||||
|
const STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Signal} signal
|
||||||
|
* @param {number} status
|
||||||
|
*/
|
||||||
|
export function set_signal_status(signal, status) {
|
||||||
|
signal.f = (signal.f & STATUS_MASK) | status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a derived's status to CLEAN or MAYBE_DIRTY based on its connection state.
|
||||||
|
* @param {Derived} derived
|
||||||
|
*/
|
||||||
|
export function update_derived_status(derived) {
|
||||||
|
// Only mark as MAYBE_DIRTY if disconnected and has dependencies.
|
||||||
|
if ((derived.f & CONNECTED) !== 0 || derived.deps === null) {
|
||||||
|
set_signal_status(derived, CLEAN);
|
||||||
|
} else {
|
||||||
|
set_signal_status(derived, MAYBE_DIRTY);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue