• 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
14<script>
15
16  /**
17   * Use `Polymer.NeonSharedElementAnimationBehavior` to implement shared element animations.
18   * @polymerBehavior Polymer.NeonSharedElementAnimationBehavior
19   */
20  Polymer.NeonSharedElementAnimationBehaviorImpl = {
21
22    properties: {
23
24      /**
25       * Cached copy of shared elements.
26       */
27      sharedElements: {
28        type: Object
29      }
30
31    },
32
33    /**
34     * Finds shared elements based on `config`.
35     */
36    findSharedElements: function(config) {
37      var fromPage = config.fromPage;
38      var toPage = config.toPage;
39      if (!fromPage || !toPage) {
40        console.warn(this.is + ':', !fromPage ? 'fromPage' : 'toPage', 'is undefined!');
41        return null;
42      };
43
44      if (!fromPage.sharedElements || !toPage.sharedElements) {
45        console.warn(this.is + ':', 'sharedElements are undefined for', !fromPage.sharedElements ? fromPage : toPage);
46        return null;
47      };
48
49      var from = fromPage.sharedElements[config.id]
50      var to = toPage.sharedElements[config.id];
51
52      if (!from || !to) {
53        console.warn(this.is + ':', 'sharedElement with id', config.id, 'not found in', !from ? fromPage : toPage);
54        return null;
55      }
56
57      this.sharedElements = {
58        from: from,
59        to: to
60      };
61      return this.sharedElements;
62    }
63
64  };
65
66  /** @polymerBehavior Polymer.NeonSharedElementAnimationBehavior */
67  Polymer.NeonSharedElementAnimationBehavior = [
68    Polymer.NeonAnimationBehavior,
69    Polymer.NeonSharedElementAnimationBehaviorImpl
70  ];
71
72</script>
73