import Node from './node'; import NodeType from './type'; import TextNode from './text'; import Matcher from '../matcher'; export interface KeyAttributes { id?: string; class?: string; } export interface Attributes { [key: string]: string; } export interface RawAttributes { [key: string]: string; } export declare type InsertPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'; /** * HTMLElement, which contains a set of children. * * Note: this is a minimalist implementation, no complete tree * structure provided (no parentNode, nextSibling, * previousSibling etc). * @class HTMLElement * @extends {Node} */ export default class HTMLElement extends Node { private rawAttrs; parentNode: Node; private _attrs; private _rawAttrs; private _tag_name; id: string; classNames: string[]; /** * Node Type declaration. */ nodeType: NodeType; /** * Creates an instance of HTMLElement. * @param keyAttrs id and class attribute * @param [rawAttrs] attributes in string * * @memberof HTMLElement */ constructor(tagName: string, keyAttrs: KeyAttributes, rawAttrs?: string, parentNode?: Node); /** * Remove Child element from childNodes array * @param {HTMLElement} node node to remove */ removeChild(node: Node): void; /** * Exchanges given child with new child * @param {HTMLElement} oldNode node to exchange * @param {HTMLElement} newNode new node */ exchangeChild(oldNode: Node, newNode: Node): void; get tagName(): string; /** * Get escpaed (as-it) text value of current node and its children. * @return {string} text content */ get rawText(): string; /** * Get unescaped text value of current node and its children. * @return {string} text content */ get text(): string; /** * Get structured Text (with '\n' etc.) * @return {string} structured text */ get structuredText(): string; toString(): string; get innerHTML(): string; set_content(content: string | Node | Node[], options?: Options): void; get outerHTML(): string; /** * Trim element from right (in block) after seeing pattern in a TextNode. * @param {RegExp} pattern pattern to find * @return {HTMLElement} reference to current node */ trimRight(pattern: RegExp): this; /** * Get DOM structure * @return {string} strucutre */ get structure(): string; /** * Remove whitespaces in this sub tree. * @return {HTMLElement} pointer to this */ removeWhitespace(): this; /** * Query CSS selector to find matching nodes. * @param {string} selector Simplified CSS selector * @param {Matcher} selector A Matcher instance * @return {HTMLElement[]} matching elements */ querySelectorAll(selector: string | Matcher): HTMLElement[]; /** * Query CSS Selector to find matching node. * @param {string} selector Simplified CSS selector * @param {Matcher} selector A Matcher instance * @return {HTMLElement} matching node */ querySelector(selector: string | Matcher): HTMLElement; /** * Append a child node to childNodes * @param {Node} node node to append * @return {Node} node appended */ appendChild(node: T): T; /** * Get first child node * @return {Node} first child node */ get firstChild(): Node; /** * Get last child node * @return {Node} last child node */ get lastChild(): Node; /** * Get attributes * @return {Object} parsed and unescaped attributes */ get attributes(): Attributes; /** * Get escaped (as-it) attributes * @return {Object} parsed attributes */ get rawAttributes(): RawAttributes; removeAttribute(key: string): void; hasAttribute(key: string): boolean; /** * Get an attribute * @return {string} value of the attribute */ getAttribute(key: string): string | undefined; /** * Set an attribute value to the HTMLElement * @param {string} key The attribute name * @param {string} value The value to set, or null / undefined to remove an attribute */ setAttribute(key: string, value: string): void; /** * Replace all the attributes of the HTMLElement by the provided attributes * @param {Attributes} attributes the new attribute set */ setAttributes(attributes: Attributes): void; insertAdjacentHTML(where: InsertPosition, html: string): void; } export interface Options { lowerCaseTagName?: boolean; script?: boolean; style?: boolean; pre?: boolean; comment?: boolean; } /** * Parses HTML and returns a root element * Parse a chuck of HTML source. * @param {string} data html * @return {HTMLElement} root element */ export declare function parse(data: string, options?: Options): HTMLElement & { valid: boolean; }; export declare function parse(data: string, options?: Options & { noFix: false; }): HTMLElement & { valid: boolean; }; export declare function parse(data: string, options?: Options & { noFix: true; }): (HTMLElement | TextNode) & { valid: boolean; };