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

Unified Diff: third_party/polymer/v0_8/components/polymer/src/micro/behaviors.html

Issue 1082403004: Import Polymer 0.8 and several key elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Also remove polymer/explainer Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v0_8/components/polymer/src/micro/behaviors.html
diff --git a/third_party/polymer/v0_8/components/polymer/src/micro/behaviors.html b/third_party/polymer/v0_8/components/polymer/src/micro/behaviors.html
new file mode 100644
index 0000000000000000000000000000000000000000..39601b6524842686a0c373c3027cc61b00c8074c
--- /dev/null
+++ b/third_party/polymer/v0_8/components/polymer/src/micro/behaviors.html
@@ -0,0 +1,114 @@
+<!--
+@license
+Copyright (c) 2014 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
+-->
+<script>
+
+ /**
+ * Automatically extend using objects referenced in `behaviors` array.
+ *
+ * someBehaviorObject = {
+ * accessors: {
+ * value: {type: Number, observer: '_numberChanged'}
+ * },
+ * observers: [
+ * // ...
+ * ],
+ * ready: function() {
+ * // called before prototoype's ready
+ * },
+ * _numberChanged: function() {}
+ * };
+ *
+ * Polymer({
+ *
+ * behaviors: [
+ * someBehaviorObject
+ * ]
+ *
+ * ...
+ *
+ * });
+ *
+ * @class base feature: behaviors
+ */
+
+ Polymer.Base._addFeature({
+
+ behaviors: [],
+
+ _prepBehaviors: function() {
+ this._flattenBehaviors();
+ this._prepBehavior(this);
+ this.behaviors.forEach(function(b) {
+ this._mixinBehavior(b);
+ this._prepBehavior(b);
+ }, this);
+ },
+
+ _flattenBehaviors: function() {
+ var flat = [];
+ this.behaviors.forEach(function(b) {
+ if (!b) {
+ console.warn('Polymer: undefined behavior in [' + this.is + ']');
+ } else if (b instanceof Array) {
+ flat = flat.concat(b);
+ } else {
+ flat.push(b);
+ }
+ }, this);
+ this.behaviors = flat;
+ },
+
+ _mixinBehavior: function(b) {
+ Object.getOwnPropertyNames(b).forEach(function(n) {
+ switch (n) {
+ case 'registered':
+ case 'properties':
+ case 'observers':
+ case 'listeners':
+ case 'keyPresses':
+ case 'hostAttributes':
+ case 'created':
+ case 'attached':
+ case 'detached':
+ case 'attributeChanged':
+ case 'configure':
+ case 'ready':
+ break;
+ default:
+ this.copyOwnProperty(n, b, this);
+ break;
+ }
+ }, this);
+ },
+
+ _doBehavior: function(name, args) {
+ this.behaviors.forEach(function(b) {
+ this._invokeBehavior(b, name, args);
+ }, this);
+ this._invokeBehavior(this, name, args);
+ },
+
+ _invokeBehavior: function(b, name, args) {
+ var fn = b[name];
+ if (fn) {
+ fn.apply(this, args || Polymer.nar);
+ }
+ },
+
+ _marshalBehaviors: function() {
+ this.behaviors.forEach(function(b) {
+ this._marshalBehavior(b);
+ }, this);
+ this._marshalBehavior(this);
+ }
+
+ });
+
+</script>

Powered by Google App Engine
This is Rietveld 408576698