• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2@license
3Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7Code distributed by Google as part of the polymer project is also
8subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9-->
10
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">
14
15<!--
16`<transform-animation>` animates a custom transform on an element. Use this to animate multiple
17transform properties, or to apply a custom transform value.
18
19Configuration:
20```
21{
22  name: 'transform-animation',
23  node: <node>,
24  transformOrigin: <transform-origin>,
25  transformFrom: <transform-from-string>,
26  transformTo: <transform-to-string>,
27  timing: <animation-timing>
28}
29```
30-->
31
32<script>
33
34  Polymer({
35
36    is: 'transform-animation',
37
38    behaviors: [
39      Polymer.NeonAnimationBehavior
40    ],
41
42    /**
43     * @param {{
44     *   node: !Element,
45     *   transformOrigin: (string|undefined),
46     *   transformFrom: (string|undefined),
47     *   transformTo: (string|undefined),
48     *   timing: (Object|undefined)
49     * }} config
50     */
51    configure: function(config) {
52      var node = config.node;
53      var transformFrom = config.transformFrom || 'none';
54      var transformTo = config.transformTo || 'none';
55
56      this._effect = new KeyframeEffect(node, [
57        {'transform': transformFrom},
58        {'transform': transformTo}
59      ], this.timingFromConfig(config));
60
61      if (config.transformOrigin) {
62        this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
63      }
64
65      return this._effect;
66    }
67
68  });
69
70</script>
71