|
import Node from './shared/Node.js'; |
|
import Expression from './shared/Expression.js'; |
|
import compiler_errors from '../compiler_errors.js'; |
|
|
|
|
|
export default class Animation extends Node { |
|
|
|
name; |
|
|
|
|
|
expression; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
constructor(component, parent, scope, info) { |
|
super(component, parent, scope, info); |
|
component.warn_if_undefined(info.name, info, scope); |
|
this.name = info.name; |
|
component.add_reference( (this), info.name.split('.')[0]); |
|
if (parent.animation) { |
|
component.error(this, compiler_errors.duplicate_animation); |
|
return; |
|
} |
|
const block = parent.parent; |
|
if (!block || block.type !== 'EachBlock') { |
|
|
|
component.error(this, compiler_errors.invalid_animation_immediate); |
|
return; |
|
} |
|
if (!block.key) { |
|
component.error(this, compiler_errors.invalid_animation_key); |
|
return; |
|
} |
|
(block).has_animation = true; |
|
this.expression = info.expression |
|
? new Expression(component, this, scope, info.expression, true) |
|
: null; |
|
} |
|
} |
|
|