From 65d2053aa3590331c46212e1b4c57c2133ca97ba Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 7 Jul 2024 11:32:49 -0400 Subject: [PATCH] fix --- .../phases/3-transform/client/visitors/template.js | 10 +++++----- .../phases/3-transform/server/transform-server.js | 6 +++--- .../svelte/src/compiler/phases/3-transform/utils.js | 11 +++-------- packages/svelte/src/internal/client/dom/template.js | 6 +++--- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js index 51d37cc49c..bb0f55ddb6 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js @@ -1610,6 +1610,10 @@ export const template_visitors = { context.visit(node, state); } + if (is_anchored) { + body.push(b.stmt(b.call('$.next'))); + } + /** * @param {import('estree').Identifier} template_name * @param {import('estree').Expression[]} args @@ -1668,11 +1672,7 @@ export const template_visitors = { state }); - body.push( - b.var(id, b.call('$.text', is_anchored && b.true)), - ...state.before_init, - ...state.init - ); + body.push(b.var(id, b.call('$.text')), ...state.before_init, ...state.init); close = b.stmt(b.call('$.append', b.id('$$anchor'), id)); } else { if (is_standalone) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js index 83266a4b11..0d9cb611cd 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js @@ -1143,9 +1143,9 @@ const template_visitors = { process_children(trimmed, { ...context, state }); - if (is_anchored) { - state.template.push(b.literal('')); - } + // if (is_anchored) { + // state.template.push(b.literal('')); + // } return b.block([...state.init, ...serialize_template(state.template)]); }, diff --git a/packages/svelte/src/compiler/phases/3-transform/utils.js b/packages/svelte/src/compiler/phases/3-transform/utils.js index 1b1773be10..eac29f877c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/utils.js @@ -284,15 +284,10 @@ export function clean_nodes( (attribute) => attribute.type === 'Attribute' && attribute.name.startsWith('--') ))); - // if a component or snippet only contains text, we need to add an anchor comment + // if a component or snippet starts with text, we need to add an anchor comment // so that its text node doesn't get fused with its surroundings - const is_dynamic_text = - trimmed.every((node) => node.type === 'Text' || node.type === 'ExpressionTag') && - trimmed.some((node) => node.type === 'ExpressionTag'); - - const is_text = trimmed.length === 1 && first.type === 'Text'; - - const is_anchored = (is_dynamic_text || is_text) && parent.type === 'Fragment'; + const is_anchored = + parent.type === 'Fragment' && (first.type === 'Text' || first.type === 'ExpressionTag'); return { hoisted, trimmed, is_standalone: false, is_anchored }; } diff --git a/packages/svelte/src/internal/client/dom/template.js b/packages/svelte/src/internal/client/dom/template.js index 5b4d7cce2b..713270f8cb 100644 --- a/packages/svelte/src/internal/client/dom/template.js +++ b/packages/svelte/src/internal/client/dom/template.js @@ -232,9 +232,9 @@ export function text(anchored) { set_hydrate_node(node); } - if (anchored) { - hydrate_next(); - } + // if (anchored) { + // hydrate_next(); + // } assign_nodes(node, node); return node;