zero-md
Version:
Ridiculously simple zero-config markdown displayer
103 lines (102 loc) • 2.87 kB
TypeScript
/**
* @typedef {object} ZeroMdRenderObject
* @property {'styles'|'body'} [target]
* @property {string} [text]
* @property {string} [hash]
* @property {boolean} [changed]
* @property {string} [baseUrl]
* @property {boolean} [stamped]
*/
export default class ZeroMdBase extends HTMLElement {
static get observedAttributes(): string[];
set src(val: string);
get src(): string;
get auto(): boolean;
get bodyClass(): string;
version: any;
template: string;
_clicked: any;
_observer: MutationObserver;
_loaded: boolean;
/** @type {HTMLElement|ShadowRoot} */
root: HTMLElement | ShadowRoot;
/**
* @param {string} name
* @param {string} old
* @param {string} val
*/
attributeChangedCallback(name: string, old: string, val: string): void;
connectedCallback(): Promise<void>;
ready: boolean;
disconnectedCallback(): void;
_observe(): void;
/**
* Async load function that runs after constructor. Like constructor, only runs once.
* @returns {Promise<*>}
*/
load(): Promise<any>;
/**
* Async parse function that takes in markdown and returns the html-formatted string.
* Can use any md parser you prefer, like marked.js
* @param {ZeroMdRenderObject} obj
* @returns {Promise<string>}
*/
parse({ text }: ZeroMdRenderObject): Promise<string>;
/**
* Scroll to heading id
* @param {string} id
*/
goto(id: string): void;
/**
* Convert html string to document fragment
* @param {string} html
* @returns {DocumentFragment}
*/
frag(html: string): DocumentFragment;
/**
* Compute 32-bit DJB2a hash in base36
* @param {string} str
* @returns {string}
*/
hash(str: string): string;
/**
* Await the next tick
* @returns {Promise<*>}
*/
tick(): Promise<any>;
/**
* Fire custom event
* @param {string} name
* @param {*} [detail]
*/
fire(name: string, detail?: any): void;
/**
* Retrieve raw style templates and markdown strings
* @param {ZeroMdRenderObject} obj
* @returns {Promise<ZeroMdRenderObject>}
*/
read(obj: ZeroMdRenderObject): Promise<ZeroMdRenderObject>;
/**
* Stamp parsed html strings into dom
* @param {ZeroMdRenderObject} obj
* @returns {Promise<ZeroMdRenderObject>}
*/
stamp(obj: ZeroMdRenderObject): Promise<ZeroMdRenderObject>;
/**
* Start rendering
* @param {{ fire?: boolean, goto?: string|false }} obj
* @returns {Promise<*>}
*/
render({ fire, goto }?: {
fire?: boolean;
goto?: string | false;
}): Promise<any>;
}
export type ZeroMdRenderObject = {
target?: "styles" | "body";
text?: string;
hash?: string;
changed?: boolean;
baseUrl?: string;
stamped?: boolean;
};