effect-active
ComputerGuy 1 year ago
parent fcfbc9cca0
commit 64fa513e8b

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

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

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

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

@ -165,6 +165,20 @@ export function effect_tracking() {
return active_reaction !== null && !untracking; 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 * @param {() => void} fn
*/ */

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

Loading…
Cancel
Save