refactor and split runtine function

pull/8394/head
baseballyama 4 years ago
parent a128e3c56f
commit 535623de61

@ -17,19 +17,19 @@ export default class MustacheTagWrapper extends Tag {
}
render(block: Block, parent_node: Identifier, parent_nodes: Identifier, data: Record<string, unknown> | 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})`;
}

@ -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);
}

@ -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) {

Loading…
Cancel
Save