From 535623de61b9ea7da936be12535b11a7b5b40ff8 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Sun, 19 Mar 2023 00:47:43 +0900 Subject: [PATCH] refactor and split runtine function --- .../compile/render_dom/wrappers/MustacheTag.ts | 12 ++++++------ src/runtime/internal/dev.ts | 15 +++++++++------ src/runtime/internal/dom.ts | 16 +++++++++------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/compiler/compile/render_dom/wrappers/MustacheTag.ts b/src/compiler/compile/render_dom/wrappers/MustacheTag.ts index cbea2e7bca..34edf53788 100644 --- a/src/compiler/compile/render_dom/wrappers/MustacheTag.ts +++ b/src/compiler/compile/render_dom/wrappers/MustacheTag.ts @@ -17,19 +17,19 @@ export default class MustacheTagWrapper extends Tag { } render(block: Block, parent_node: Identifier, parent_nodes: Identifier, data: Record | undefined) { - const contenteditable = + const contenteditable_attributes = this.parent instanceof ElementWrapper && this.parent.attributes.filter((a) => a.node.name === 'contenteditable'); - const spread_attres = + const spread_attributes = this.parent instanceof ElementWrapper && this.parent.attributes.filter((a) => a.node.is_spread); let is_contenteditable: Expression | undefined = undefined; - if (contenteditable.length > 0) { - const value = (contenteditable[0] as AttributeWrapper).get_value(block); + if (contenteditable_attributes.length > 0) { + const value = (contenteditable_attributes[0] as AttributeWrapper).get_value(block); is_contenteditable = x`~@contenteditable_truly_values.indexOf(${value})`; - } else if (spread_attres.length > 0 && data.element_data_name) { + } else if (spread_attributes.length > 0 && data.element_data_name) { is_contenteditable = x`~@contenteditable_truly_values.indexOf(${data.element_data_name}['contenteditable'])`; } @@ -37,7 +37,7 @@ export default class MustacheTagWrapper extends Tag { block, value => { if (is_contenteditable) { - return x`@set_data(${this.var}, ${value}, ${is_contenteditable})`; + return x`@set_data_contenteditable(${this.var}, ${value}, ${is_contenteditable})`; } else { return x`@set_data(${this.var}, ${value})`; } diff --git a/src/runtime/internal/dev.ts b/src/runtime/internal/dev.ts index 51547229cd..8dec822a41 100644 --- a/src/runtime/internal/dev.ts +++ b/src/runtime/internal/dev.ts @@ -83,13 +83,16 @@ export function dataset_dev(node: HTMLElement, property: string, value?: any) { dispatch_dev('SvelteDOMSetDataset', { node, property, value }); } -export function set_data_dev(text: Text, data: unknown, is_contenteditable: boolean | undefined) { +export function set_data_dev(text: Text, data: unknown) { data = '' + data; - if (is_contenteditable) { - if (text.wholeText === data) return; - } else { - if (text.data === data) return; - } + if (text.data === data) return; + dispatch_dev('SvelteDOMSetData', { node: text, data }); + text.data = (data as string); +} + +export function set_data_contenteditable_dev(text: Text, data: unknown) { + data = '' + data; + if (text.wholeText === data) return; dispatch_dev('SvelteDOMSetData', { node: text, data }); text.data = (data as string); } diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index 9d220ba8cc..4b0b27f628 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -581,14 +581,16 @@ export function claim_html_tag(nodes, is_svg: boolean) { return new HtmlTagHydration(claimed_nodes, is_svg); } -export function set_data(text: Text, data: unknown, is_contenteditable: boolean | undefined) { +export function set_data(text: Text, data: unknown) { data = '' + data; - if (is_contenteditable) { - if (text.wholeText === data) return; - } else { - if (text.data === data) return; - } - text.data = (data as string); + if (text.data === data) return; + text.data = (data as string); +} + +export function set_data_contenteditable(text: Text, data: unknown) { + data = '' + data; + if (text.wholeText === data) return; + text.data = (data as string); } export function set_input_value(input, value) {