| Index: polymer_1.0.4/bower_components/marked-element/marked-element.html
|
| diff --git a/polymer_1.0.4/bower_components/marked-element/marked-element.html b/polymer_1.0.4/bower_components/marked-element/marked-element.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3184eba568823229bdd6387aba459f7d8f61e430
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/marked-element/marked-element.html
|
| @@ -0,0 +1,145 @@
|
| +<!--
|
| +@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="marked-import.html">
|
| +
|
| +<!--
|
| +Element wrapper for the [marked](http://marked.org/) library.
|
| +
|
| +`<marked-element>` accepts Markdown source either via its `markdown` attribute:
|
| +
|
| + <marked-element markdown="`Markdown` is _awesome_!"></marked-element>
|
| +
|
| +Or, you can provide it via a `<script type="text/markdown">` element child:
|
| +
|
| + <marked-element>
|
| + <script type="text/markdown">
|
| + Check out my markdown!
|
| +
|
| + We can even embed elements without fear of the HTML parser mucking up their
|
| + textual representation:
|
| +
|
| + ```html
|
| + <awesome-sauce>
|
| + <div>Oops, I'm about to forget to close this div.
|
| + </awesome-sauce>
|
| + ```
|
| + </script>
|
| + </marked-element>
|
| +
|
| +Note that the `<script type="text/markdown">` approach is _static_. Changes to
|
| +the script content will _not_ update the rendered markdown!
|
| +@element marked-element
|
| +@group Molecules
|
| +@hero hero.svg
|
| +@demo demo/index.html
|
| +-->
|
| +<dom-module id="marked-element">
|
| +
|
| + <template>
|
| + <div id="content"></div>
|
| + </template>
|
| +
|
| +</dom-module>
|
| +
|
| +<script>
|
| +
|
| + 'use strict';
|
| +
|
| + Polymer({
|
| +
|
| + is: 'marked-element',
|
| +
|
| + properties: {
|
| +
|
| + /** The markdown source that should be rendered by this element. */
|
| + markdown: {
|
| + observer: 'render',
|
| + type: String,
|
| + value: null
|
| + }
|
| +
|
| + },
|
| +
|
| + ready: function() {
|
| + if (!this.markdown) {
|
| + // Use the Markdown from the first `<script>` descendant whose MIME type starts with
|
| + // "text/markdown". Script elements beyond the first are ignored.
|
| + var markdownElement = Polymer.dom(this).querySelector('[type^="text/markdown"]');
|
| + if (markdownElement != null) {
|
| + this.markdown = this._unindent(markdownElement.textContent);
|
| + }
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Renders `markdown` to HTML when the element is attached.
|
| + *
|
| + * This serves a dual purpose:
|
| + *
|
| + * * Prevents unnecessary work (no need to render when not visible).
|
| + *
|
| + * * `attached` fires top-down, so we can give ancestors a chance to
|
| + * register listeners for the `syntax-highlight` event _before_ we render
|
| + * any markdown.
|
| + *
|
| + */
|
| + attached: function() {
|
| + this._attached = true;
|
| + this.render();
|
| + },
|
| +
|
| + detached: function() {
|
| + this._attached = false;
|
| + },
|
| +
|
| + /**
|
| + * Renders `markdown` into this element's DOM.
|
| + *
|
| + * This is automatically called whenever the `markdown` property is changed.
|
| + *
|
| + * The only case where you should be calling this is if you are providing
|
| + * markdown via `<script type="text/markdown">` after this element has been
|
| + * constructed (or updating that markdown).
|
| + */
|
| + render: function() {
|
| + if (!this._attached) return;
|
| + if (!this.markdown) {
|
| + this.$.content.innerHTML = '';
|
| + return;
|
| + }
|
| +
|
| + this.$.content.innerHTML = marked(this.markdown, {
|
| + highlight: this._highlight.bind(this),
|
| + });
|
| + },
|
| +
|
| + _highlight: function(code, lang) {
|
| + var event = this.fire('syntax-highlight', {code: code, lang: lang});
|
| + return event.detail.code || code;
|
| + },
|
| +
|
| + _unindent: function(text) {
|
| + if (!text) return text;
|
| + var lines = text.replace(/\t/g, ' ').split('\n');
|
| + var indent = lines.reduce(function(prev, line) {
|
| + if (/^\s*$/.test(line)) return prev; // Completely ignore blank lines.
|
| +
|
| + var lineIndent = line.match(/^(\s*)/)[0].length;
|
| + if (prev === null) return lineIndent;
|
| + return lineIndent < prev ? lineIndent : prev;
|
| + }, null);
|
| +
|
| + return lines.map(function(l) { return l.substr(indent); }).join('\n');
|
| + },
|
| +
|
| + });
|
| +
|
| +</script>
|
|
|