pull/10948/head
Rich Harris 2 years ago
parent 9ba60e5330
commit c08bd16103

@ -6,6 +6,7 @@ import {
branch, branch,
destroy_effect, destroy_effect,
pause_effect, pause_effect,
render_effect,
resume_effect resume_effect
} from '../../reactivity/effects.js'; } from '../../reactivity/effects.js';
import { remove } from '../reconciler.js'; import { remove } from '../reconciler.js';
@ -45,6 +46,7 @@ function swap_block_dom(effect, from, to) {
export function element(anchor, get_tag, is_svg, render_fn) { export function element(anchor, get_tag, is_svg, render_fn) {
const parent_effect = /** @type {import('#client').Effect} */ (current_effect); const parent_effect = /** @type {import('#client').Effect} */ (current_effect);
render_effect(() => {
/** @type {string | null} */ /** @type {string | null} */
let tag; let tag;
@ -64,7 +66,7 @@ export function element(anchor, get_tag, is_svg, render_fn) {
*/ */
let each_item_block = current_each_item; let each_item_block = current_each_item;
const wrapper = block(() => { block(() => {
const next_tag = get_tag() || null; const next_tag = get_tag() || null;
if (next_tag === tag) return; if (next_tag === tag) return;
@ -141,14 +143,8 @@ export function element(anchor, get_tag, is_svg, render_fn) {
set_current_each_item(previous_each_item); set_current_each_item(previous_each_item);
}); });
wrapper.ondestroy = () => { return () => {
if (element !== null) { element?.remove();
remove(element);
element = null;
}
if (effect) {
destroy_effect(effect);
}
}; };
});
} }

@ -12,6 +12,9 @@ export function head(render_fn) {
let previous_hydrate_nodes = null; let previous_hydrate_nodes = null;
let was_hydrating = hydrating; let was_hydrating = hydrating;
/** @type {Comment | Text} */
var anchor;
if (hydrating) { if (hydrating) {
previous_hydrate_nodes = hydrate_nodes; previous_hydrate_nodes = hydrate_nodes;
@ -21,10 +24,10 @@ export function head(render_fn) {
} }
anchor = /** @type {import('#client').TemplateNode} */ (hydrate_anchor(anchor)); anchor = /** @type {import('#client').TemplateNode} */ (hydrate_anchor(anchor));
} else {
anchor = document.head.appendChild(empty());
} }
var anchor = document.head.appendChild(empty());
try { try {
block(() => render_fn(anchor)); block(() => render_fn(anchor));
} finally { } finally {

Loading…
Cancel
Save