effect-active
ComputerGuy 4 months ago
parent fcfbc9cca0
commit 64fa513e8b

@ -150,6 +150,7 @@ export function CallExpression(node, context) {
break;
case '$effect.active':
case '$effect.tracking':
if (node.arguments.length !== 0) {
e.rune_invalid_arguments(node, rune);

@ -17,6 +17,9 @@ export function CallExpression(node, context) {
case '$host':
return b.id('$$props.$$host');
case '$effect.active':
return b.call('$.effect_active');
case '$effect.tracking':
return b.call('$.effect_tracking');

@ -16,7 +16,7 @@ export function CallExpression(node, context) {
return b.void0;
}
if (rune === '$effect.tracking') {
if (rune === '$effect.tracking' || rune === '$effect.active') {
return b.false;
}

@ -107,6 +107,7 @@ export {
} from './reactivity/deriveds.js';
export {
aborted,
effect_active,
effect_tracking,
effect_root,
legacy_pre_effect,

@ -165,6 +165,20 @@ export function effect_tracking() {
return active_reaction !== null && !untracking;
}
/**
* Internal representation of `$effect.active()`
* @returns {boolean}
*/
export function effect_active() {
if (active_reaction === null && active_effect === null) {
return false;
}
if (is_destroying_effect) {
return false;
}
return true;
}
/**
* @param {() => void} fn
*/

@ -442,6 +442,7 @@ const RUNES = /** @type {const} */ ([
'$props.id',
'$bindable',
'$effect',
'$effect.active',
'$effect.pre',
'$effect.tracking',
'$effect.root',

Loading…
Cancel
Save