mancha
Version:
Javscript HTML rendering engine
103 lines (102 loc) • 5.13 kB
TypeScript
import type { ParserParams, RenderParams } from "./interfaces.js";
import type { StoreState } from "./store.js";
import { SignalStore } from "./store.js";
export type EvalListener = (result: unknown, dependencies: string[]) => unknown;
/**
* Represents an abstract class for rendering and manipulating HTML content.
* Extends the `ReactiveProxyStore` class.
*
* @template T - The type of the store state. Defaults to `StoreState`.
*/
export declare abstract class IRenderer<T extends StoreState = StoreState> extends SignalStore<T> {
abstract readonly impl: string;
protected debugging: boolean;
protected readonly dirpath: string;
readonly _skipNodes: Set<Node>;
readonly _customElements: Map<string, Node>;
abstract parseHTML(content: string, params?: ParserParams): Document | DocumentFragment;
abstract serializeHTML(root: DocumentFragment | Node): string;
abstract createElement(tag: string, owner?: Document | null): Element;
abstract createComment(content: string, owner?: Document | null): Node;
abstract textContent(node: Node, tag: string): void;
/**
* Sets the debugging flag for the current instance.
*
* @param flag - The flag indicating whether debugging is enabled or disabled.
* @returns The current instance of the class.
*/
debug(flag: boolean): this;
/**
* Fetches the remote file at the specified path and returns its content as a string.
* @param fpath - The path of the remote file to fetch.
* @param params - Optional parameters for the fetch operation.
* @returns A promise that resolves to the content of the remote file as a string.
*/
fetchRemote(fpath: string, params?: RenderParams): Promise<string>;
/**
* Fetches a local path and returns its content as a string.
*
* @param fpath - The file path of the resource.
* @param params - Optional render parameters.
* @returns A promise that resolves to the fetched resource as a string.
*/
fetchLocal(fpath: string, params?: RenderParams): Promise<string>;
/**
* Preprocesses a string content with optional rendering and parsing parameters.
*
* @param content - The string content to preprocess.
* @param params - Optional rendering and parsing parameters.
* @returns A promise that resolves to a DocumentFragment representing the preprocessed content.
*/
preprocessString(content: string, params?: RenderParams & ParserParams): Promise<Document | DocumentFragment>;
/**
* Preprocesses a remote file by fetching its content and applying preprocessing steps.
* @param fpath - The path to the remote file.
* @param params - Optional parameters for rendering and parsing.
* @returns A Promise that resolves to a DocumentFragment representing the preprocessed content.
*/
preprocessRemote(fpath: string, params?: RenderParams & ParserParams): Promise<Document | DocumentFragment>;
/**
* Preprocesses a local file by fetching its content and applying preprocessing steps.
* @param fpath - The path to the local file.
* @param params - Optional parameters for rendering and parsing.
* @returns A promise that resolves to the preprocessed document fragment.
*/
preprocessLocal(fpath: string, params?: RenderParams & ParserParams): Promise<Document | DocumentFragment>;
/**
* Creates a subrenderer from the current renderer instance.
* @returns A new instance of the renderer with the same state as the original.
*/
subrenderer(): IRenderer;
/**
* Logs the provided arguments if debugging is enabled.
* @param args - The arguments to be logged.
*/
log(...args: unknown[]): void;
/**
* Preprocesses a node by applying all the registered preprocessing plugins.
*
* @template T - The type of the input node.
* @param {T} root - The root node to preprocess.
* @param {RenderParams} [params] - Optional parameters for preprocessing.
* @returns {Promise<T>} - A promise that resolves to the preprocessed node.
*/
preprocessNode<T extends Document | DocumentFragment | Node>(root: T, params?: RenderParams): Promise<T>;
/**
* Renders the node and applies all the registered rendering plugins.
*
* @template T - The type of the root node (Document, DocumentFragment, or Node).
* @param {T} root - The root node to render.
* @param {RenderParams} [params] - Optional parameters for rendering.
* @returns {Promise<T>} - A promise that resolves to the fully rendered root node.
*/
renderNode<T extends Document | DocumentFragment | Node>(root: T, params?: RenderParams): Promise<T>;
/**
* Mounts the Mancha application to a root element in the DOM.
*
* @param root - The root element to mount the application to.
* @param params - Optional parameters for rendering the application.
* @returns A promise that resolves when the mounting process is complete.
*/
mount(root: Document | DocumentFragment | Node, params?: RenderParams): Promise<void>;
}