import Node from '../node/Node'; import HTMLElement from '../html-element/HTMLElement'; import IDocumentFragment from '../document-fragment/IDocumentFragment'; import INode from '../node/INode'; import IHTMLTemplateElement from './IHTMLTemplateElement'; /** * HTML Template Element. * * Reference: * https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement. */ export default class HTMLTemplateElement extends HTMLElement implements IHTMLTemplateElement { private _contentElement; /** * Returns the content. * * @returns Content. */ get content(): IDocumentFragment; /** * Previous sibling. * * @returns Node. */ get previousSibling(): INode; /** * Next sibling. * * @returns Node. */ get nextSibling(): INode; /** * First child. * * @returns Node. */ get firstChild(): INode; /** * Last child. * * @returns Node. */ get lastChild(): INode; /** * Append a child node to childNodes. * * @param node Node to append. * @returns Appended node. */ appendChild(node: INode): INode; /** * Remove Child element from childNodes array. * * @param node Node to remove. */ removeChild(node: Node): INode; /** * Inserts a node before another. * * @param newNode Node to insert. * @param referenceNode Node to insert before. * @returns Inserted node. */ insertBefore(newNode: INode, referenceNode: INode): INode; /** * Replaces a node with another. * * @param newChild New child. * @param oldChild Old child. * @returns Replaced node. */ replaceChild(newChild: INode, oldChild: INode): INode; /** * Clones a node. * * @override * @param [deep=false] "true" to clone deep. * @returns Cloned node. */ cloneNode(deep?: boolean): IHTMLTemplateElement; }