3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7 Code distributed by Google as part of the polymer project is also
8 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
11 <link rel=
"import" href=
"../../polymer/polymer.html">
12 <link rel=
"import" href=
"../neon-animation-behavior.html">
13 <link rel=
"import" href=
"../web-animations.html">
16 `<cascaded-animation>` applies an animation on an array of elements with a delay between each.
17 the delay defaults to 50ms.
22 name: 'cascaded-animation',
23 animation: <animation-name>,
24 nodes: <array-of-nodes>,
25 nodedelay: <node-delay-in-ms>,
26 timing: <animation-timing>
35 is
: 'cascaded-animation',
38 Polymer
.NeonAnimationBehavior
43 /** @type {!Polymer.IronMeta} */
47 return new Polymer
.IronMeta({type
: 'animation'});
56 * nodes: !Array<!Element>,
57 * nodeDelay: (number|undefined),
58 * timing: (Object|undefined)
61 configure: function(config
) {
62 var animationConstructor
= /** @type {Function} */ (
63 this._animationMeta
.byKey(config
.animation
));
64 if (!animationConstructor
) {
65 console
.warn(this.is
+ ':', 'constructor for', config
.animation
, 'not found!');
69 this._animations
= [];
70 var nodes
= config
.nodes
;
72 var nodeDelay
= config
.nodeDelay
|| 50;
74 config
.timing
= config
.timing
|| {};
75 config
.timing
.delay
= config
.timing
.delay
|| 0;
77 var oldDelay
= config
.timing
.delay
;
78 for (var node
, index
= 0; node
= nodes
[index
]; index
++) {
79 config
.timing
.delay
+= nodeDelay
;
82 var animation
= new animationConstructor();
83 var effect
= animation
.configure(config
);
85 this._animations
.push(animation
);
88 config
.timing
.delay
= oldDelay
;
90 this._effect
= new GroupEffect(effects
);
94 complete: function() {
95 for (var animation
, index
= 0; animation
= this._animations
[index
]; index
++) {
96 animation
.complete(animation
.config
);