|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/** @import { Effect, TemplateNode } from '#client' */
|
|
|
|
|
import { EFFECT_TRANSPARENT } from '../../constants.js';
|
|
|
|
|
import { EFFECT_TRANSPARENT, FORK_ROOT } from '../../constants.js';
|
|
|
|
|
import {
|
|
|
|
|
hydrate_next,
|
|
|
|
|
hydrate_node,
|
|
|
|
@ -10,6 +10,7 @@ import {
|
|
|
|
|
} from '../hydration.js';
|
|
|
|
|
import { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';
|
|
|
|
|
import { HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';
|
|
|
|
|
import { active_fork } from '../../fork.js';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param {TemplateNode} node
|
|
|
|
@ -65,6 +66,50 @@ export function if_block(node, fn, elseif = false) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (active_fork !== null && (active_fork.f & FORK_ROOT) !== 0) {
|
|
|
|
|
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));
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (alternate_effect) {
|
|
|
|
|
resume_effect(alternate_effect);
|
|
|
|
|
} else {
|
|
|
|
|
alternate_effect = offscreen_effect;
|
|
|
|
|
|
|
|
|
|
if (consequent_effect) {
|
|
|
|
|
pause_effect(consequent_effect, () => {
|
|
|
|
|
consequent_effect = null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (condition) {
|
|
|
|
|
if (consequent_effect) {
|
|
|
|
|
resume_effect(consequent_effect);
|
|
|
|
|