diff --git a/src/compiler/compile/render_dom/wrappers/Text.ts b/src/compiler/compile/render_dom/wrappers/Text.ts index e51ab5c370..704d5aad77 100644 --- a/src/compiler/compile/render_dom/wrappers/Text.ts +++ b/src/compiler/compile/render_dom/wrappers/Text.ts @@ -66,11 +66,12 @@ export default class TextWrapper extends Wrapper { render(block: Block, parent_node: string, parent_nodes: string) { if (this.skip) return; + const use_space = this.use_space(); block.add_element( this.var, - this.use_space() ? `@space()` : `@text(${stringify(this.data)})`, - parent_nodes && `@claim_text(${parent_nodes}, ${stringify(this.data)})`, + use_space ? `@space()` : `@text(${stringify(this.data)})`, + parent_nodes && (use_space ? `@claim_space(${parent_nodes})` : `@claim_text(${parent_nodes}, ${stringify(this.data)})`), parent_node ); } diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index d8ebffa2b1..91425fbf85 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -164,6 +164,10 @@ export function claim_text(nodes, data) { return text(data); } +export function claim_space(nodes) { + return claim_text(nodes, ' '); +} + export function set_data(text, data) { data = '' + data; if (text.data !== data) text.data = data;