Index: third_party/polymer/v0_8/components-chromium/polymer/src/micro/extends-extracted.js |
diff --git a/third_party/polymer/v0_8/components-chromium/polymer/src/micro/extends-extracted.js b/third_party/polymer/v0_8/components-chromium/polymer/src/micro/extends-extracted.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8e88c878aa41dfc99d99eb1c04bf366582c0bc96 |
--- /dev/null |
+++ b/third_party/polymer/v0_8/components-chromium/polymer/src/micro/extends-extracted.js |
@@ -0,0 +1,69 @@ |
+ |
+ |
+ /** |
+ * 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)); |
+ } |
+ |
+ }); |
+ |