Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: bower_components/core-animation/core-animation-group.html

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!--
2 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
6 Code distributed by Google as part of the polymer project is also
7 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
8 -->
9
10 <link rel="import" href="../polymer/polymer.html">
11 <link rel="import" href="core-animation.html">
12
13 <!--
14 @group Polymer Core Elements
15
16 `core-animation-group` combines `core-animation` or `core-animation-group` eleme nts to
17 create a grouped web animation. The group may be parallel (type is `par`) or seq uential
18 (type is `seq`). Parallel groups play all the children elements simultaneously, and
19 sequential groups play the children one after another.
20
21 Example of an animation group to rotate and then fade an element:
22
23 <core-animation-group type="seq">
24 <core-animation id="fadeout" duration="500">
25 <core-animation-keyframe>
26 <core-animation-prop name="transform" value="rotate(0deg)"></core-anim ation-prop>
27 <core-animation-prop name="transform" value="rotate(45deg)"></core-ani mation-prop>
28 </core-animation-keyframe>
29 </core-animation>
30 <core-animation id="fadeout" duration="500">
31 <core-animation-keyframe>
32 <core-animation-prop name="opacity" value="1"></core-animation-prop>
33 </core-animation-keyframe>
34 <core-animation-keyframe>
35 <core-animation-prop name="opacity" value="0"></core-animation-prop>
36 </core-animation-keyframe>
37 </core-animation>
38 </core-animation-group>
39
40 @element core-animation-group
41 @status beta
42 @homepage github.io
43 -->
44 <polymer-element name="core-animation-group" constructor="CoreAnimationGroup" ex tends="core-animation" attributes="type">
45 <script>
46 (function() {
47
48 var ANIMATION_GROUPS = {
49 'par': AnimationGroup,
50 'seq': AnimationSequence
51 };
52
53 Polymer({
54
55 publish: {
56 /**
57 * If target is set, any children without a target will be assigned th e group's
58 * target when this property is set.
59 *
60 * @property target
61 * @type HTMLElement|Node|Array|Array<HTMLElement|Node>
62 */
63
64 /**
65 * For a `core-animation-group`, a duration of "auto" means the durati on should
66 * be the specified duration of its children. If set to anything other than
67 * "auto", any children without a set duration will be assigned the gr oup's duration.
68 *
69 * @property duration
70 * @type number
71 * @default "auto"
72 */
73 duration: {value: 'auto', reflect: true},
74
75 /**
76 * The type of the animation group. 'par' creates a parallel group and 'seq' creates
77 * a sequential group.
78 *
79 * @property type
80 * @type String
81 * @default 'par'
82 */
83 type: {value: 'par', reflect: true}
84 },
85
86 typeChanged: function() {
87 this.apply();
88 },
89
90 targetChanged: function() {
91 // Only propagate target to children animations if it's defined.
92 if (this.target) {
93 this.doOnChildren(function(c) {
94 c.target = this.target;
95 }.bind(this));
96 }
97 },
98
99 durationChanged: function() {
100 if (this.duration && this.duration !== 'auto') {
101 this.doOnChildren(function(c) {
102 // Propagate to children that is not a group and has no
103 // duration specified.
104 if (!c.type && (!c.duration || c.duration === 'auto')) {
105 c.duration = this.duration;
106 }
107 }.bind(this));
108 }
109 },
110
111 doOnChildren: function(inFn) {
112 var children = this.children;
113 if (!children.length) {
114 children = this.shadowRoot ? this.shadowRoot.childNodes : [];
115 }
116 Array.prototype.forEach.call(children, function(c) {
117 // TODO <template> in the way
118 c.apply && inFn(c);
119 }, this);
120 },
121
122 makeAnimation: function() {
123 return new ANIMATION_GROUPS[this.type](this.childAnimations, this.timi ngProps);
124 },
125
126 hasTarget: function() {
127 var ht = this.target !== null;
128 if (!ht) {
129 this.doOnChildren(function(c) {
130 ht = ht || c.hasTarget();
131 }.bind(this));
132 }
133 return ht;
134 },
135
136 apply: function() {
137 // Propagate target and duration to child animations first.
138 this.durationChanged();
139 this.targetChanged();
140 this.doOnChildren(function(c) {
141 c.apply();
142 });
143 return this.super();
144 },
145
146 get childAnimationElements() {
147 var list = [];
148 this.doOnChildren(function(c) {
149 if (c.makeAnimation) {
150 list.push(c);
151 }
152 });
153 return list;
154 },
155
156 get childAnimations() {
157 var list = [];
158 this.doOnChildren(function(c) {
159 if (c.animation) {
160 list.push(c.animation);
161 }
162 });
163 return list;
164 }
165 });
166
167 })();
168 </script>
169 </polymer-element>
OLDNEW
« no previous file with comments | « bower_components/core-animation/core-animation.html ('k') | bower_components/core-animation/demo.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698