diff options
Diffstat (limited to 'catapult/third_party/polymer/components/neon-animation/neon-shared-element-animation-behavior.html')
-rw-r--r-- | catapult/third_party/polymer/components/neon-animation/neon-shared-element-animation-behavior.html | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/neon-animation/neon-shared-element-animation-behavior.html b/catapult/third_party/polymer/components/neon-animation/neon-shared-element-animation-behavior.html new file mode 100644 index 00000000..7787615b --- /dev/null +++ b/catapult/third_party/polymer/components/neon-animation/neon-shared-element-animation-behavior.html @@ -0,0 +1,72 @@ +<!-- +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +--> + +<link rel="import" href="../polymer/polymer.html"> +<link rel="import" href="neon-animation-behavior.html"> + +<script> + + /** + * Use `Polymer.NeonSharedElementAnimationBehavior` to implement shared element animations. + * @polymerBehavior Polymer.NeonSharedElementAnimationBehavior + */ + Polymer.NeonSharedElementAnimationBehaviorImpl = { + + properties: { + + /** + * Cached copy of shared elements. + */ + sharedElements: { + type: Object + } + + }, + + /** + * Finds shared elements based on `config`. + */ + findSharedElements: function(config) { + var fromPage = config.fromPage; + var toPage = config.toPage; + if (!fromPage || !toPage) { + console.warn(this.is + ':', !fromPage ? 'fromPage' : 'toPage', 'is undefined!'); + return null; + }; + + if (!fromPage.sharedElements || !toPage.sharedElements) { + console.warn(this.is + ':', 'sharedElements are undefined for', !fromPage.sharedElements ? fromPage : toPage); + return null; + }; + + var from = fromPage.sharedElements[config.id] + var to = toPage.sharedElements[config.id]; + + if (!from || !to) { + console.warn(this.is + ':', 'sharedElement with id', config.id, 'not found in', !from ? fromPage : toPage); + return null; + } + + this.sharedElements = { + from: from, + to: to + }; + return this.sharedElements; + } + + }; + + /** @polymerBehavior Polymer.NeonSharedElementAnimationBehavior */ + Polymer.NeonSharedElementAnimationBehavior = [ + Polymer.NeonAnimationBehavior, + Polymer.NeonSharedElementAnimationBehaviorImpl + ]; + +</script> |