use hydration marker as effect boundary where possible

pull/12215/head
Rich Harris 2 months ago
parent 760bb1b506
commit ce5d53e0b3

@ -2,7 +2,7 @@ import { derived } from '../../reactivity/deriveds.js';
import { block, branch, destroy_effect, render_effect } from '../../reactivity/effects.js';
import { get } from '../../runtime.js';
import { is_array } from '../../utils.js';
import { hydrate_nodes, hydrating } from '../hydration.js';
import { hydrate_nodes, hydrate_start, hydrating } from '../hydration.js';
import { create_fragment_from_html, remove } from '../reconciler.js';
import { assign_nodes } from '../template.js';
@ -31,7 +31,10 @@ export function html(anchor, get_value, svg, mathml) {
effect = branch(() => {
if (hydrating) {
assign_nodes(hydrate_nodes[0], hydrate_nodes[hydrate_nodes.length - 1]);
assign_nodes(
hydrate_start.previousSibling ?? hydrate_start,
hydrate_nodes[hydrate_nodes.length - 1]
);
return;
}

@ -3,7 +3,6 @@ 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

@ -45,7 +45,7 @@ export function template(content, flags) {
return () => {
if (hydrating) {
assign_nodes(
has_start ? hydrate_start : unset ? undefined : null,
hydrate_start.previousSibling ?? hydrate_start,
hydrate_nodes[hydrate_nodes.length - 1]
);
@ -117,7 +117,10 @@ export function ns_template(content, flags, ns = 'svg') {
return () => {
if (hydrating) {
assign_nodes(has_start ? hydrate_start : null, hydrate_nodes[hydrate_nodes.length - 1]);
assign_nodes(
hydrate_start.previousSibling ?? hydrate_start,
hydrate_nodes[hydrate_nodes.length - 1]
);
return hydrate_start;
}
@ -248,7 +251,7 @@ export function comment(flags = 0) {
// we're not delegating to `template` here for performance reasons
if (hydrating) {
assign_nodes(
(flags & TEMPLATE_UNSET_START) !== 0 ? undefined : null,
hydrate_start.previousSibling ?? hydrate_start,
hydrate_nodes[hydrate_nodes.length - 1]
);

Loading…
Cancel
Save