aa-fork
Rich Harris 8 months ago
parent 5294730486
commit 51a3d1e4bd

@ -70,42 +70,45 @@ export function if_block(node, fn, elseif = false) {
active_fork.f ^= FORK_ROOT;
const fragment = document.createDocumentFragment();
const offscreen_condition = condition;
const offscreen_anchor = document.createComment('');
fragment.append(offscreen_anchor);
const offscreen_effect = fn && branch(() => fn(offscreen_anchor));
try {
const offscreen_effect = fn && branch(() => fn(offscreen_anchor));
active_fork.branches.push(() => {
anchor.before(fragment);
active_fork.branches.push(() => {
anchor.before(fragment);
if (condition) {
if (consequent_effect) {
resume_effect(consequent_effect);
} else {
consequent_effect = offscreen_effect;
if (alternate_effect) {
pause_effect(alternate_effect, () => {
alternate_effect = null;
});
if (condition) {
if (consequent_effect) {
resume_effect(consequent_effect);
} else {
consequent_effect = offscreen_effect;
if (alternate_effect) {
pause_effect(alternate_effect, () => {
alternate_effect = null;
});
}
}
}
} else {
if (alternate_effect) {
resume_effect(alternate_effect);
} else {
alternate_effect = offscreen_effect;
if (consequent_effect) {
pause_effect(consequent_effect, () => {
consequent_effect = null;
});
if (alternate_effect) {
resume_effect(alternate_effect);
} else {
alternate_effect = offscreen_effect;
if (consequent_effect) {
pause_effect(consequent_effect, () => {
consequent_effect = null;
});
}
}
}
}
});
});
} finally {
active_fork.f |= FORK_ROOT;
}
return;
}

@ -145,6 +145,10 @@ export function fork(fn) {
flush_sync();
revert(active_fork);
if (f.pending === 0) {
f.callback();
}
});
} finally {
active_fork = null;

Loading…
Cancel
Save