pull/12215/head
Rich Harris 2 months ago
parent 7bafd25211
commit ea0acceb3f

@ -24,7 +24,8 @@ import {
run_out_transitions,
pause_children,
pause_effect,
resume_effect
resume_effect,
get_first_node
} from '../../reactivity/effects.js';
import { source, mutable_source, set } from '../../reactivity/sources.js';
import { is_array, is_frozen } from '../../utils.js';
@ -480,42 +481,6 @@ function create_item(anchor, prev, next, value, key, index, render_fn, flags) {
}
}
/**
* @param {import('#client').TemplateNode} dom
* @param {import("#client").Effect} effect
* @returns {import('#client').TemplateNode}
*/
function get_adjusted_first_node(dom, effect) {
if ((dom.nodeType === 3 && /** @type {Text} */ (dom).data === '') || dom.nodeType === 8) {
var adjusted = effect.first;
var next;
while (adjusted !== null) {
next = adjusted.first;
if (adjusted.dom !== null) {
break;
} else if (next === null) {
return /** @type {import('#client').TemplateNode} */ (dom.previousSibling);
}
adjusted = next;
}
return get_first_node(/** @type {import("#client").Effect} */ (adjusted));
}
return dom;
}
/**
*
* @param {import('#client').Effect} effect
* @returns {import('#client').TemplateNode}
*/
function get_first_node(effect) {
var dom = effect.dom;
if (is_array(dom)) {
return get_adjusted_first_node(dom[0], effect);
}
return get_adjusted_first_node(/** @type {import('#client').TemplateNode} **/ (dom), effect);
}
/**
* @param {import('#client').EachItem} item
* @param {import('#client').EachItem | null} next

@ -3,6 +3,7 @@ import { hydrate_nodes, hydrating, set_hydrating } from '../hydration.js';
import { remove } from '../reconciler.js';
import { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';
import { HYDRATION_END_ELSE } from '../../../../constants.js';
import { assign_nodes } from '../template.js';
/**
* @param {Comment} anchor
@ -31,6 +32,8 @@ export function if_block(
var flags = elseif ? EFFECT_TRANSPARENT : 0;
block(() => {
assign_nodes(null, anchor); // TODO `block(anchor, () => {...})`
if (condition === (condition = !!get_condition())) return;
/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */

@ -15,7 +15,7 @@ import { queue_micro_task } from './task.js';
* @param {T} dom
* @param {import("#client").Effect} effect
*/
export function push_template_node(
function push_template_node(
dom,
effect = /** @type {import('#client').Effect} */ (current_effect)
) {

@ -71,8 +71,6 @@ export function push_effect(effect, parent_effect) {
}
}
var uid = 1;
/**
* @param {number} type
* @param {null | (() => void | (() => void))} fn
@ -84,7 +82,6 @@ function create_effect(type, fn, sync) {
/** @type {import('#client').Effect} */
var effect = {
id: uid++,
ctx: current_component_context,
deps: null,
dom: null,
@ -388,8 +385,9 @@ export function destroy_effect(effect, remove_dom = true) {
/**
* @param {import('#client').Effect} effect
* @returns {import('#client').TemplateNode}
*/
function get_first_node(effect) {
export function get_first_node(effect) {
if (effect.nodes !== null) {
if (effect.nodes.start != null) {
return effect.nodes.start;
@ -411,6 +409,7 @@ function get_first_node(effect) {
/**
* @param {import('#client').Effect} effect
* @returns {import('#client').TemplateNode}
*/
function get_last_node(effect) {
if (effect.nodes !== null) {

Loading…
Cancel
Save