import { AstNode } from './node'; import type { TokenTypes, LintError, AST } from '../base'; import type { ElementLike } from '../mixin/elementLike'; import type { AstNodes, AstText, Token, FileToken, LinkToken, RedirectTargetToken, ExtLinkToken, MagicLinkToken, ImageParameterToken, TranscludeToken } from '../internal'; declare type LinkTokens = LinkToken | RedirectTargetToken | ExtLinkToken | MagicLinkToken | ImageParameterToken; export interface CaretPosition { readonly offsetNode: AstNodes; readonly offset: number; } export interface AstElement extends AstNode, ElementLike { } /** * HTMLElement-like * * 类似HTMLElement */ export declare abstract class AstElement extends AstNode { #private; readonly name?: string; readonly data: undefined; /** number of child nodes / 子节点总数 */ get length(): number; set length(n: number); /** parent node / 父节点 */ get parentElement(): Token | undefined; /** visible text / 可见部分 */ get outerText(): string; /** invisible / 不可见 */ get hidden(): boolean; /** height of the inner / 内部高度 */ get clientHeight(): number | undefined; /** width of the inner / 内部宽度 */ get clientWidth(): number | undefined; /** all images, including gallery images / 所有图片,包括图库 */ get images(): FileToken[]; /** all internal, external and free external links / 所有内链、外链和自由外链 */ get links(): LinkTokens[]; /** all templates and modules / 所有模板和模块 */ get embeds(): TranscludeToken[]; constructor(); /** * Remove a child node * * 移除子节点 * @param i position of the child node / 移除位置 */ removeAt(i: number): AstNodes; /** * Insert a child node * * 插入子节点 * @param node node to be inserted / 待插入的子节点 * @param i position to be inserted at / 插入位置 * @throws `RangeError` 不能插入祖先或子节点 */ insertAt(node: T, i?: number): T; /** * Get the closest ancestor node that matches the selector * * 最近的符合选择器的祖先节点 * @param selector selector / 选择器 */ closest(selector: string): T | undefined; /** * Insert a batch of child nodes at the end * * 在末尾批量插入子节点 * @param elements nodes to be inserted / 插入节点 */ append(...elements: (AstNodes | string)[]): void; /** * Modify the text child node * * 修改文本子节点 * @param str new text / 新文本 * @param i position of the text child node / 子节点位置 * @throws `RangeError` 对应位置的子节点不是文本节点 */ setText(str: string, i?: number): string; /** * Get the caret position from the character index * * 找到给定位置 * @param index character index / 位置 */ caretPositionFromIndex(index?: number): CaretPosition | undefined; /** * Get the closest ancestor element from the character index * * 找到给定位置所在的最内层非文本节点 * @param index character index / 位置 */ elementFromIndex(index?: number): Token | undefined; /** * Get the closest ancestor element from the position * * 找到给定位置所在的最内层非文本节点 * @param x column number / 列数 * @param y line number / 行数 */ elementFromPoint(x: number, y: number): Token | undefined; /** * Save in JSON format * * 保存为JSON * @param file file name / 文件名 * @param depth depth of the node / 节点深度 * @param start */ json(file?: string, depth?: number, start?: number): AST; /** * Merge adjacent text child nodes * * 合并相邻的文本子节点 */ normalize(): void; /** * Check if the current element matches the selector * * 检查是否符合选择器 * @param selector selector / 选择器 */ matches(selector: string): this is T; /** * Insert a batch of child nodes at the start * * 在开头批量插入子节点 * @param elements nodes to be inserted / 插入节点 */ prepend(...elements: (AstNodes | string)[]): void; /** * Remove a child node * * 移除子节点 * @param node child node to be removed / 子节点 */ removeChild(node: T): T; /** * Replace all child nodes * * 批量替换子节点 * @param elements nodes to be inserted / 新的子节点 */ replaceChildren(...elements: (AstNodes | string)[]): void; /** * Insert a child node before the reference node * * 在指定位置前插入子节点 * @param child node to be inserted / 插入节点 * @param reference reference child node / 指定位置处的子节点 */ insertBefore(child: string, reference?: AstNodes): AstText; insertBefore(child: T, reference?: AstNodes): T; /** * Get the caret position from the point * * 找到给定位置 * @param x column number / 列数 * @param y line number / 行数 */ caretPositionFromPoint(x: number, y: number): CaretPosition | undefined; /** * Get all ancestor elements from the character index * * 找到给定位置所在的所有节点 * @param index character index / 位置 */ elementsFromIndex(index?: number): Token[]; /** * Get all ancestor elements from the position * * 找到给定位置所在的所有节点 * @param x column number / 列数 * @param y line number / 行数 */ elementsFromPoint(x: number, y: number): Token[]; } export {};