pull/7610/head
gtmnayan 4 years ago
parent 99a38c2d1b
commit 8f3cc465fb

@ -1126,8 +1126,7 @@ export default class ElementWrapper extends Wrapper {
add_styles(block: Block) { add_styles(block: Block) {
const has_spread = this.node.attributes.some(attr => attr.is_spread); const has_spread = this.node.attributes.some(attr => attr.is_spread);
const style_changed_var = block.get_unique_name('style_changed'); let style_changed_var: Identifier | undefined;
block.chunks.update.push(b`const ${style_changed_var} = ${block.renderer.dirty([...this.dynamic_style_dependencies])};`);
this.node.styles.forEach((style_directive) => { this.node.styles.forEach((style_directive) => {
const { name, expression, important, should_cache } = style_directive; const { name, expression, important, should_cache } = style_directive;
@ -1148,7 +1147,7 @@ export default class ElementWrapper extends Wrapper {
block.chunks.update.push(updater); block.chunks.update.push(updater);
} else { } else {
const deps = [ const deps = [
...expression.dynamic_dependencies(), ...expression.dynamic_dependencies().filter(dep => !this.dynamic_style_dependencies.has(dep)),
...this.dynamic_style_dependencies ...this.dynamic_style_dependencies
]; ];
@ -1167,6 +1166,12 @@ export default class ElementWrapper extends Wrapper {
if (should_cache) { if (should_cache) {
condition = x`${condition} && ${cached_snippet} !== (${cached_snippet} = ${snippet})`; condition = x`${condition} && ${cached_snippet} !== (${cached_snippet} = ${snippet})`;
if (!style_changed_var && this.dynamic_style_dependencies.size) {
style_changed_var = block.get_unique_name('style_changed');
const style_attr_dirty = block.renderer.dirty([...this.dynamic_style_dependencies]);
block.chunks.update.push(b`const ${style_changed_var} = ${style_attr_dirty};`);
}
if (style_changed_var) { if (style_changed_var) {
condition = x`${style_changed_var} || ${condition}`; condition = x`${style_changed_var} || ${condition}`;
} }

Loading…
Cancel
Save