refactor into smaller compiler output

pull/8394/head
Simon Holthausen 4 years ago
parent 1a9f56660f
commit e6bdc5a4ff

@ -25,19 +25,19 @@ export default class MustacheTagWrapper extends Tag {
this.parent instanceof ElementWrapper &&
this.parent.attributes.filter((a) => a.node.is_spread);
let is_contenteditable: Expression | undefined = undefined;
let contenteditable_attr_value: Expression | undefined = undefined;
if (contenteditable_attributes.length > 0) {
const value = (contenteditable_attributes[0] as AttributeWrapper).get_value(block);
is_contenteditable = x`~@contenteditable_truthy_values.indexOf(${value})`;
contenteditable_attr_value = x`${value}`;
} else if (spread_attributes.length > 0 && data.element_data_name) {
is_contenteditable = x`~@contenteditable_truthy_values.indexOf(${data.element_data_name}['contenteditable'])`;
contenteditable_attr_value = x`${data.element_data_name}['contenteditable']`;
}
const { init } = this.rename_this_method(
block,
value => {
if (is_contenteditable) {
return x`${is_contenteditable} ? @set_data_contenteditable(${this.var}, ${value}) : @set_data(${this.var}, ${value})`
if (contenteditable_attr_value) {
return x`@set_data_maybe_contenteditable(${this.var}, ${value}, ${contenteditable_attr_value})`
} else {
return x`@set_data(${this.var}, ${value})`;
}

@ -1,6 +1,7 @@
import { custom_event, append, append_hydration, insert, insert_hydration, detach, listen, attr } from './dom';
import { SvelteComponent } from './Component';
import { is_void } from '../../shared/utils/names';
import { contenteditable_truthy_values } from './utils';
export function dispatch_dev<T=any>(type: string, detail?: T) {
document.dispatchEvent(custom_event(type, { version: '__VERSION__', ...detail }, { bubbles: true }));
@ -90,11 +91,15 @@ export function set_data_dev(text: Text, data: unknown) {
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);
export function set_data_maybe_contenteditable_dev(text: Text, data: unknown, attr_value: string) {
if (~contenteditable_truthy_values.indexOf(attr_value)) {
data = '' + data;
if (text.wholeText === data) return;
dispatch_dev('SvelteDOMSetData', { node: text, data });
text.data = (data as string);
} else {
set_data_dev(text, data);
}
}
export function validate_each_argument(arg) {

@ -1,4 +1,4 @@
import { has_prop } from './utils';
import { contenteditable_truthy_values, has_prop } from './utils';
// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM
// at the end of hydration without touching the remaining nodes.
@ -587,10 +587,14 @@ export function set_data(text: Text, data: unknown) {
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_data_maybe_contenteditable(text: Text, data: unknown, attr_value: string) {
if (~contenteditable_truthy_values.indexOf(attr_value)) {
data = '' + data;
if (text.wholeText === data) return;
text.data = (data as string);
} else {
set_data(text, data);
}
}
export function set_input_value(input, value) {

Loading…
Cancel
Save