import { ChartTypeConfig, Elements } from '../../el'; import { MarkdownEditorPlugin } from '../../plugin'; /** * 解析Markdown字符串的配置选项 */ export interface ParserMarkdownToSlateNodeConfig { /** 是否在新标签页打开链接 */ openLinksInNewTab?: boolean; /** 自定义段落标签(在 Slate 中可能不适用,保留用于兼容性) */ paragraphTag?: string; /** 是否正在输入中(打字机模式) */ typing?: boolean; config?: ChartTypeConfig[]; } /** * Markdown 到 Slate 节点解析器类 * * 将 Markdown 字符串解析为 Slate 编辑器节点,支持配置选项和插件。 * 使用类形式可以避免在函数调用链中传递配置参数和插件。 */ export declare class MarkdownToSlateParser { private config; private readonly plugins; constructor(config?: ParserMarkdownToSlateNodeConfig, plugins?: MarkdownEditorPlugin[]); /** * 解析 Markdown 字符串并返回解析后的结构和链接信息 * * @param md - 要解析的 Markdown 字符串 * @returns 一个包含解析后的元素数组和链接信息的对象 */ parse(md: string): { schema: Elements[]; links: { path: number[]; target: string; }[]; }; /** * 解析 Markdown AST 节点为 Slate 节点(类方法版本) * - 当有插件时,优先使用插件处理 * - 插件未处理时,使用默认处理逻辑 */ private parseNodes; /** * 处理单个元素(类方法版本) */ /** * 获取统一的元素处理器映射表 */ private getElementHandlers; private handleSingleElement; } /** * 解析Markdown字符串并返回解析后的结构和链接信息。 * * @param md - 要解析的Markdown字符串。 * @param plugins - 可选的Markdown编辑器插件数组,用于扩展解析功能。 * @param config - 可选的解析配置选项。 * @returns 一个包含解析后的元素数组和链接信息的对象。 * * @property schema - 解析后的元素数组。 * @property links - 包含路径和目标链接的对象数组。 * * @example * ```typescript * // 使用函数形式(向后兼容) * const result = parserMarkdownToSlateNode(markdown, plugins, { openLinksInNewTab: true }); * * // 使用类形式(推荐,避免配置传递问题) * const parser = new MarkdownToSlateParser( * { openLinksInNewTab: true }, * plugins * ); * const result = parser.parse(markdown); * ``` */ export declare const parserMarkdownToSlateNode: (md: string, plugins?: MarkdownEditorPlugin[], config?: ParserMarkdownToSlateNodeConfig) => { schema: Elements[]; links: { path: number[]; target: string; }[]; };