Index: polymer_1.0.4/bower_components/iron-doc-viewer/iron-doc-viewer.html |
diff --git a/polymer_1.0.4/bower_components/iron-doc-viewer/iron-doc-viewer.html b/polymer_1.0.4/bower_components/iron-doc-viewer/iron-doc-viewer.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..268aa7cc64175b2ed49e3ef441040ed4057f93cd |
--- /dev/null |
+++ b/polymer_1.0.4/bower_components/iron-doc-viewer/iron-doc-viewer.html |
@@ -0,0 +1,237 @@ |
+<!-- |
+@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="../marked-element/marked-element.html"> |
+<link rel="import" href="../paper-styles/paper-styles.html"> |
+<link rel="import" href="../paper-button/paper-button.html"> |
+<link rel="import" href="../polymer/polymer.html"> |
+<link rel="import" href="../prism-element/prism-highlighter.html"> |
+ |
+<link rel="import" href="iron-doc-property.html"> |
+ |
+<!-- |
+Renders documentation describing an element's API. |
+ |
+`iron-doc-viewer` renders element and behavior descriptions as extracted by |
+[Hydrolysis](https://github.com/PolymerLabs/hydrolysis). You can provide them |
+either via binding... |
+ |
+ <iron-doc-viewer descriptor="{{elementDescriptor}}"></iron-doc-viewer> |
+ |
+...or by placing the element descriptor in JSON as the text content of an |
+`iron-doc-viewer`: |
+ |
+ <iron-doc-viewer> |
+ { |
+ "is": "awesome-sauce", |
+ "properties": [ |
+ {"name": "isAwesome", "type": "boolean", "desc": "Is it awesome?"}, |
+ ] |
+ } |
+ </iron-doc-viewer> |
+ |
+However, be aware that due to current limitations in Polymer 0.8, _changes_ to |
+the text content will not be respected, only the initial value will be loaded. |
+If you wish to update the documented element, please set it via the `descriptor` |
+property. |
+ |
+@demo demo/index.html Basic Demo |
+--> |
+<dom-module id="iron-doc-viewer"> |
+ |
+ <link rel="import" type="css" href="iron-doc-viewer.css"> |
+ |
+ <template> |
+ <prism-highlighter></prism-highlighter> |
+ |
+ <section id="summary" class="card" hidden$="[[!descriptor.desc]]"> |
+ <header>Documentation</header> |
+ <marked-element markdown="{{descriptor.desc}}"></marked-element> |
+ </section> |
+ |
+ <nav id="api"> |
+ <header>API Reference</header> |
+ <paper-button id="togglePrivate" |
+ on-tap="_togglePrivate">{{_privateToggleLabel}}</paper-button> |
+ </nav> |
+ |
+ <section id="properties" class="card" hidden$="{{_noneToShow(_showPrivate,_properties)}}"> |
+ <header>Properties</header> |
+ <template is="dom-repeat" items="{{_properties}}" hidden$="{{!_properties.length}}"> |
+ <iron-doc-property descriptor="{{item}}"></iron-doc-property> |
+ </template> |
+ </section> |
+ |
+ <section id="methods" class="card" hidden$="{{_noneToShow(_showPrivate,_methods)}}"> |
+ <header>Methods</header> |
+ <template is="dom-repeat" items="{{_methods}}"> |
+ <iron-doc-property descriptor="{{item}}"></iron-doc-property> |
+ </template> |
+ </section> |
+ |
+ <section id="events" class="card" hidden$="{{_noneToShow(_showPrivate,_events)}}"> |
+ <header>Events</header> |
+ <template is="dom-repeat" items="{{_events}}"> |
+ <iron-doc-property descriptor="{{item}}"></iron-doc-property> |
+ </template> |
+ </section> |
+ |
+ <section id="behaviors" class="card" hidden$="{{_hideBehaviors(_behaviors)}}"> |
+ <header>Behaviors</header> |
+ <template is="dom-repeat" items="{{_behaviors}}"> |
+ <p on-click="_broadcastBehavior">{{item}}</p> |
+ </template> |
+ </section> |
+ |
+ </template> |
+ |
+</dom-module> |
+ |
+<script> |
+(function() { |
+ |
+ Polymer({ |
+ |
+ is: 'iron-doc-viewer', |
+ |
+ properties: { |
+ |
+ /** |
+ * The [Hydrolysis](https://github.com/PolymerLabs/hydrolysis)-generated |
+ * element descriptor to display details for. |
+ * |
+ * Alternatively, the element descriptor can be provided as JSON via the text content |
+ * of this element. |
+ * |
+ * @type {hydrolysis.ElementDescriptor} |
+ */ |
+ descriptor: { |
+ type: Object, |
+ observer: '_descriptorChanged', |
+ }, |
+ |
+ /** Whether private properties should be hidden or shown. */ |
+ _showPrivate: { |
+ type: Boolean, |
+ value: false, |
+ observer: '_showPrivateChanged', |
+ }, |
+ |
+ /** The label to show for the Private API toggle. */ |
+ _privateToggleLabel: String, |
+ |
+ /** |
+ * Broadcast when another component is clicked on |
+ * @param {String} detail name of the component |
+ * iron-doc-viewer container should load component if possible |
+ * @event iron-doc-viewer-component-selected |
+ */ |
+ }, |
+ |
+ ready: function() { |
+ var jsonDescriptor = this._loadJson(); |
+ // Note that this is only an error during element creation. You are free |
+ // to stomp over the descriptor after it is ready. |
+ if (jsonDescriptor && this.descriptor) { |
+ console.error( |
+ this, |
+ 'received both a bound descriptor:', this.descriptor, |
+ 'and JSON descriptor:', this._jsonDescriptor, |
+ 'Please provide only one'); |
+ throw new Error( |
+ '<iron-doc-viewer> accepts either a bound or JSON descriptor; not both'); |
+ } |
+ |
+ if (jsonDescriptor) { |
+ this.descriptor = jsonDescriptor; |
+ } |
+ }, |
+ |
+ /** |
+ * Loads a hydrolysis element descriptor (as JSON) from the text content of |
+ * this element, if present. |
+ * |
+ * @return {hydrolysis.ElementDescriptor} The parsed descriptor, or `null`. |
+ */ |
+ _loadJson: function() { |
+ var textContent = ''; |
+ Array.prototype.forEach.call(Polymer.dom(this).childNodes, function(node) { |
+ textContent = textContent + node.textContent; |
+ }); |
+ textContent = textContent.trim(); |
+ if (textContent === '') return null; |
+ |
+ try { |
+ return JSON.parse(textContent); |
+ } catch(error) { |
+ console.error('Failure when parsing JSON:', textContent, error); |
+ throw error; |
+ } |
+ }, |
+ |
+ /** Converts `descriptor` into our template-friendly `_model`. */ |
+ _descriptorChanged: function() { |
+ if (!this.descriptor) return; |
+ |
+ // Split the documented properties between functions and other types. |
+ var properties = []; |
+ var methods = []; |
+ |
+ for (var i = 0, property; property = this.descriptor.properties[i]; i++) { |
+ (property.type === 'Function' ? methods : properties).push(property); |
+ } |
+ this._properties = properties; |
+ this._methods = methods; |
+ this._events = this.descriptor.events || []; |
+ this._behaviors = this.descriptor.behaviors || []; |
+ |
+ this.toggleAttribute('abstract', this.descriptor.abstract); |
+ }, |
+ |
+ _collapsedChanged: function() { |
+ this._collapseToggleLabel = this._collapsed ? 'expand' : 'collapse'; |
+ |
+ // Bound values aren't exposed to dom-repeat's scope. |
+ var properties = this.querySelectorAll('iron-doc-property'); |
+ for (var i = 0, property; property = properties[i]; i++) { |
+ property.collapsed = this._collapsed; |
+ } |
+ }, |
+ |
+ _toggleCollapsed: function() { |
+ this._collapsed = !this._collapsed; |
+ }, |
+ |
+ _showPrivateChanged: function() { |
+ this._privateToggleLabel = (this._showPrivate ? 'hide' : 'show') + ' private API'; |
+ this.toggleClass('show-private', this._showPrivate); |
+ }, |
+ |
+ _togglePrivate: function() { |
+ this._showPrivate = !this._showPrivate; |
+ }, |
+ |
+ _noneToShow: function(showPrivate, items) { |
+ for (var i = 0; i < items.length; i++) { |
+ if (showPrivate || !items[i].private) return false; |
+ } |
+ return true; |
+ }, |
+ |
+ _hideBehaviors: function(behaviors) { |
+ return behaviors === null || behaviors.length === 0; |
+ }, |
+ |
+ _broadcastBehavior: function(ev) { |
+ this.fire('iron-doc-viewer-component-selected', ev.target._templateInstance.item); |
+ } |
+ }); |
+ |
+})(); |
+</script> |