refactor render_dom

pull/6898/head
Yuichiro Yamashita 5 years ago
parent 14ca99006f
commit ed2eed5f97

@ -25,16 +25,13 @@ export default class DynamicElementWrapper extends Wrapper {
this.not_static_content(); this.not_static_content();
if (this.node.dynamic_tag_expr.dynamic_dependencies().length) { this.dynamic_element_block = block.child({
block = block.child({ comment: create_debugging_comment(node, renderer.component),
comment: create_debugging_comment(node, renderer.component), name: renderer.component.get_unique_name('dynamic_element_block'),
name: renderer.component.get_unique_name('dynamic_element_block'), type: 'dynamic_element'
type: 'dynamic_element' });
}); renderer.blocks.push(this.dynamic_element_block);
renderer.blocks.push(block);
}
this.dynamic_element_block = block;
this.elementWrapper = new ElementWrapper( this.elementWrapper = new ElementWrapper(
renderer, renderer,
this.dynamic_element_block, this.dynamic_element_block,
@ -45,23 +42,7 @@ export default class DynamicElementWrapper extends Wrapper {
); );
} }
render(block: Block, parent_node: Identifier, parent_nodes: Identifier) { render(
if (this.node.dynamic_tag_expr.dynamic_dependencies().length === 0) {
this.render_static_tag(block, parent_node, parent_nodes);
} else {
this.render_dynamic_tag(block, parent_node, parent_nodes);
}
}
render_static_tag(
_block: Block,
parent_node: Identifier,
parent_nodes: Identifier
) {
this.elementWrapper.render(this.dynamic_element_block, parent_node, parent_nodes);
}
render_dynamic_tag(
block: Block, block: Block,
parent_node: Identifier, parent_node: Identifier,
parent_nodes: Identifier parent_nodes: Identifier

@ -211,7 +211,7 @@ export default class ElementWrapper extends Wrapper {
} }
}); });
if (node.type === 'DynamicElement') { if (node.dynamic_tag_expr) {
block.add_dependencies(node.dynamic_tag_expr.dependencies); block.add_dependencies(node.dynamic_tag_expr.dependencies);
} }

@ -116,7 +116,13 @@ export default class FragmentWrapper {
link(last_child, last_child = wrapper); link(last_child, last_child = wrapper);
} else { } else {
const Wrapper = wrappers[child.type]; const Wrapper = (function () {
if (child.type === 'DynamicElement' && child.dynamic_tag_expr.dynamic_dependencies().length === 0) {
return wrappers['Element'];
} else {
return wrappers[child.type];
}
}());
if (!Wrapper) continue; if (!Wrapper) continue;
const wrapper = new Wrapper(renderer, block, parent, child, strip_whitespace, last_child || next_sibling); const wrapper = new Wrapper(renderer, block, parent, child, strip_whitespace, last_child || next_sibling);

Loading…
Cancel
Save