Index: third_party/polymer/v0_8/components/polymer/src/micro/extends.html |
diff --git a/third_party/polymer/v0_8/components/polymer/src/micro/extends.html b/third_party/polymer/v0_8/components/polymer/src/micro/extends.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a90f8e40a040fd1646226a24ec1f9c1180b1f8ac |
--- /dev/null |
+++ b/third_party/polymer/v0_8/components/polymer/src/micro/extends.html |
@@ -0,0 +1,79 @@ |
+<!-- |
+@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> |
+ |
+ /** |
+ * Support `extends` property (for type-extension only). |
+ * |
+ * If the mixin is String-valued, the corresponding Polymer module |
+ * is mixed in. |
+ * |
+ * Polymer({ |
+ * is: 'pro-input', |
+ * extends: 'input', |
+ * ... |
+ * }); |
+ * |
+ * Type-extension objects are created using `is` notation in HTML, or via |
+ * the secondary argument to `document.createElement` (the type-extension |
+ * rules are part of the Custom Elements specification, not something |
+ * created by Polymer). |
+ * |
+ * Example: |
+ * |
+ * <!-- right: creates a pro-input element --> |
+ * <input is="pro-input"> |
+ * |
+ * <!-- wrong: creates an unknown element --> |
+ * <pro-input> |
+ * |
+ * <script> |
+ * // right: creates a pro-input element |
+ * var elt = document.createElement('input', 'pro-input'); |
+ * |
+ * // wrong: creates an unknown element |
+ * var elt = document.createElement('pro-input'); |
+ * <\script> |
+ * |
+ * @class base feature: extends |
+ */ |
+ |
+ Polymer.Base._addFeature({ |
+ |
+ _prepExtends: function() { |
+ if (this.extends) { |
+ this.__proto__ = this.getExtendedPrototype(this.extends); |
+ } |
+ }, |
+ |
+ getExtendedPrototype: function(tag) { |
+ return this.getExtendedNativePrototype(tag); |
+ }, |
+ |
+ nativePrototypes: {}, // static |
+ |
+ getExtendedNativePrototype: function(tag) { |
+ var p = this.nativePrototypes[tag]; |
+ if (!p) { |
+ var np = this.getNativePrototype(tag); |
+ p = this.extend(Object.create(np), Polymer.Base); |
+ this.nativePrototypes[tag] = p; |
+ } |
+ return p; |
+ }, |
+ |
+ getNativePrototype: function(tag) { |
+ // TODO(sjmiles): sad necessity |
+ return Object.getPrototypeOf(document.createElement(tag)); |
+ } |
+ |
+ }); |
+ |
+</script> |