@textbus/platform-browser
Version:
Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.
91 lines (90 loc) • 2.86 kB
TypeScript
import { Attribute, Component, ContentType, Formatter, FormatValue, Slot, Textbus } from '@textbus/core';
import { ViewOptions } from './browser-module';
/**
* 插槽解析器
*/
export interface SlotParser {
/**
* 将指定 DOM 节点解析为插槽数据
* @param childSlot 储存数据的插槽
* @param slotRootElement 插槽的根节点
* @param slotContentHostElement 插槽的内容节点
*
* 注意:当不传入内容节点时,Textbus 会把根节点当成内容节点
*/ <T extends Slot>(childSlot: T, slotRootElement: Element, slotContentHostElement?: Element): T;
}
/**
* 组件加载器
*/
export interface ComponentLoader {
/** 识别组件的匹配方法 */
match(element: Element, returnableContentTypes: ContentType[]): boolean;
/** 读取组件内容的方法 */
read(element: Element, textbus: Textbus, slotParser: SlotParser): Component | Slot | void;
}
export interface FormatLoaderReadResult<T = FormatValue> {
formatter: Formatter<T>;
value: T;
}
/**
* 格式加载器
*/
export interface FormatLoader<T = FormatValue> {
/**
* 匹配一个 DOM 节点是否是某个格式节点
* @param element
*/
match(element: Element): boolean;
/**
* 读取匹配到的节点,并返回读取后的信息
* @param element
*/
read(element: Element): FormatLoaderReadResult<T>;
}
export interface AttributeLoaderReadResult<T = FormatValue> {
attribute: Attribute<T>;
value: T;
}
/**
* 属性加载器
*/
export interface AttributeLoader<T = FormatValue> {
/**
* 匹配一个 DOM 节点是否是某个属性节点
* @param element
*/
match(element: Element): boolean;
/**
* 读取匹配到的节点,并返回读取后的信息
* @param element
*/
read(element: Element): AttributeLoaderReadResult<T>;
}
/**
* 用于解析 HTML,并把 HTML 内容转换为 Textbus 可以支持的组件或插槽数据
*/
export declare class Parser {
private textbus;
static parseHTML(html: string): HTMLElement;
componentLoaders: ComponentLoader[];
formatLoaders: FormatLoader<any>[];
attributeLoaders: AttributeLoader<any>[];
constructor(options: ViewOptions, textbus: Textbus);
/**
* 使用指定的组件加载器解析一段 HTML 字符串或 DOM 元素
* @param html
* @param rootComponentLoader
*/
parseDoc(html: string | HTMLElement, rootComponentLoader: ComponentLoader): void | Slot | Component<import("@textbus/core").State>;
/**
* 将一段 HTML 或 DOM 元素解析到指定插槽
* @param html
* @param rootSlot
*/
parse(html: string | HTMLElement, rootSlot: Slot): Slot;
private readComponent;
private readText;
private readFormats;
private readSlot;
private applyFormats;
}