Home | History | Annotate | Download | only in neon-animation
      1 <!--
      2 @license
      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
      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