Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add TypeScript declarations to marked-element #88

Merged
merged 5 commits into from
Mar 1, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
bower_components*
bower-*.json
node_modules
5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,13 @@ addons:
chrome: stable
before_script:
- polymer lint
- >-
npm run update-types && git diff --exit-code || (echo -e
'\n\033[31mERROR:\033[0m Typings are stale. Please run "npm run
update-types".' && false)
install:
- npm install -g polymer-cli
- npm install
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this? Travis automatically runs it?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't automatically run this when it is in the install section

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I see. Our Travis files seem inconsistent, some of the other ones don't use the install section at all.

https://github.com/PolymerElements/iron-behaviors/blob/master/.travis.yml

Oh well, fine.

- polymer install --variants
script:
- polymer test
Expand Down
5 changes: 5 additions & 0 deletions gen-tsd.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"removeReferences": [
"../marked/lib/marked.d.ts"
]
}
208 changes: 208 additions & 0 deletions marked-element.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
/**
* DO NOT EDIT
*
* This file was automatically generated by
* https://github.com/Polymer/gen-typescript-declarations
*
* To modify these typings, edit the source file(s):
* marked-element.html
*/

/// <reference path="../polymer/types/polymer.d.ts" />
/// <reference path="marked-import.d.ts" />

/**
* Element wrapper for the [marked](https://github.com/chjj/marked) library.
*
* `<marked-element>` accepts Markdown source and renders it to a child
* element with the class `markdown-html`. This child element can be styled
* as you would a normal DOM element. If you do not provide a child element
* with the `markdown-html` class, the Markdown source will still be rendered,
* but to a shadow DOM child that cannot be styled.
*
*
* ### Markdown Content
*
* The Markdown source can be specified several ways:
*
* #### Use the `markdown` attribute to bind markdown
*
* <marked-element markdown="`Markdown` is _awesome_!">
* <div slot="markdown-html"></div>
* </marked-element>
*
* #### Use `<script type="text/markdown">` element child to inline markdown
*
* <marked-element>
* <div slot="markdown-html"></div>
* <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>
*
* #### Use `<script type="text/markdown" src="URL">` element child to specify remote markdown
*
* <marked-element>
* <div slot="markdown-html"></div>
* <script type="text/markdown" src="../guidelines.md"></script>
* </marked-element>
*
* Note that the `<script type="text/markdown">` approach is *static*. Changes to
* the script content will *not* update the rendered markdown!
*
* Though, you can data bind to the `src` attribute to change the markdown.
*
* ```html
* <marked-element>
* <div slot="markdown-html"></div>
* <script type="text/markdown" src$="[[source]]"></script>
* </marked-element>
* ...
* <script>
* ...
* this.source = '../guidelines.md';
* </script>
* ```
*
* ### Styling
* If you are using a child with the `markdown-html` class, you can style it
* as you would a regular DOM element:
*
* [slot="markdown-html"] p {
* color: red;
* }
*
* [slot="markdown-html"] td:first-child {
* padding-left: 24px;
* }
*/
interface MarkedElementElement extends Polymer.Element {

/**
* The markdown source that should be rendered by this element.
*/
markdown: string|null|undefined;

/**
* Enable GFM line breaks (regular newlines instead of two spaces for breaks)
*/
breaks: boolean|null|undefined;

/**
* Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.
*/
pedantic: boolean|null|undefined;

/**
* Function used to customize a renderer based on the [API specified in the Marked
* library](https://github.com/chjj/marked#overriding-renderer-methods).
* It takes one argument: a marked renderer object, which is mutated by the function.
*/
renderer: Function|null|undefined;

/**
* Sanitize the output. Ignore any HTML that has been input.
*/
sanitize: boolean|null|undefined;

/**
* Function used to customize a sanitize behavior.
* It takes one argument: element String without text Contents.
*
* e.g. `<div>` `<a href="/">` `</p>'.
* Note: To enable this function, must set `sanitize` to true.
* WARNING: If you are using this option to untrusted text, you must to prevent XSS Attacks.
*/
sanitizer: Function|null|undefined;

/**
* If true, disables the default sanitization of any markdown received by
* a request and allows fetched unsanitized markdown
*
* e.g. fetching markdown via `src` that has HTML.
* Note: this value overrides `sanitize` if a request is made.
*/
disableRemoteSanitization: boolean|null|undefined;

/**
* Use "smart" typographic punctuation for things like quotes and dashes.
*/
smartypants: boolean|null|undefined;

/**
* Callback function invoked by Marked after HTML has been rendered.
* It must take two arguments: err and text and must return the resulting text.
*/
callback: Function|null|undefined;

/**
* A reference to the XMLHttpRequest instance used to generate the
* network request.
*/
readonly xhr: XMLHttpRequest|null;
readonly outputElement: any;
ready(): void;

/**
* 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(): void;
detached(): void;

/**
* Unindents the markdown source that will be rendered.
*/
unindent(text: string): string;

/**
* 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(): void;

/**
* Fired when the content is being processed and before it is rendered.
* Provides an opportunity to highlight code blocks based on the programming language used. This
* is also known as syntax highlighting. One example would be to use a prebuilt syntax
* highlighting library, e.g with [highlightjs](https://highlightjs.org/).
*/
_highlight(code: string, lang: string): string;
_unindent(text: string): string;

/**
* Fired when the XHR finishes loading
*/
_request(url: string): any;

/**
* Fired when an error is received while fetching remote markdown content.
*/
_handleError(e: Event): void;
_onScriptAttributeChanged(mutation: MutationRecord[]): void;
}

interface HTMLElementTagNameMap {
"marked-element": MarkedElementElement;
}
15 changes: 15 additions & 0 deletions marked-element.html
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@

/**
* Unindents the markdown source that will be rendered.
*
* @param {string} text
* @return {string}
*/
unindent: function(text) {
return this._unindent(text);
Expand Down Expand Up @@ -315,13 +318,20 @@
* is also known as syntax highlighting. One example would be to use a prebuilt syntax
* highlighting library, e.g with [highlightjs](https://highlightjs.org/).
*
* @param {string} code
* @param {string} lang
* @return {string}
* @event syntax-highlight
*/
_highlight: function(code, lang) {
var event = this.fire('syntax-highlight', {code: code, lang: lang}, {composed: true});
return event.detail.code || code;
},

/**
* @param {string} text
* @return {string}
*/
_unindent: function(text) {
if (!text) return text;
var lines = text.replace(/\t/g, ' ').split('\n');
Expand All @@ -339,6 +349,7 @@
/**
* Fired when the XHR finishes loading
*
* @param {string} url
* @event marked-loadend
*/
_request: function(url) {
Expand Down Expand Up @@ -372,6 +383,7 @@
/**
* Fired when an error is received while fetching remote markdown content.
*
* @param {!Event} e
* @event marked-request-error
*/
_handleError: function(e) {
Expand All @@ -381,6 +393,9 @@
}
},

/**
* @param {!Array<!MutationRecord>} mutation
*/
_onScriptAttributeChanged: function(mutation) {
if (mutation[0].attributeName !== 'src') {
return;
Expand Down
10 changes: 10 additions & 0 deletions marked-import.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* DO NOT EDIT
*
* This file was automatically generated by
* https://github.com/Polymer/gen-typescript-declarations
*
* To modify these typings, edit the source file(s):
* marked-import.html
*/

Loading