import { Transformer } from "./markmap"; /** * Mermaid 管理器(单例模式) * 统一管理 mermaid 代码块的存储、HTML 生成和 markdown 扩展 * 使用 workId 作为命名空间,避免多个 ISvgElement 实例互相影响 */ export declare class MermaidManager { private static instance; private mermaidCodeBlocksByWorkId; private constructor(); /** * 获取 MermaidManager 单例实例 */ static getInstance(): MermaidManager; /** * 生成唯一的 mermaid ID */ generateId(): string; /** * 生成 mermaid HTML 容器 * @param id mermaid ID * @param mermaidCode mermaid 代码(可选,如果提供则存储) * @param workId 工作 ID(用于命名空间隔离) * @returns HTML 字符串 */ createContainer(id: string, mermaidCode?: string, workId?: string): string; /** * 获取 mermaid 代码块 * @param id mermaid ID * @param workId 工作 ID(用于命名空间隔离) * @returns mermaid 代码或 undefined */ getCode(id: string, workId: string): string | undefined; /** * 清空指定 workId 的 mermaid 代码块 * @param workId 工作 ID(如果未提供,清空所有) */ clear(workId?: string): void; /** * 扩展 markdown-it 的渲染规则,处理 mermaid 代码块 * @param transformer Transformer 实例 * @param workId 工作 ID(用于命名空间隔离) */ extendMarkdown(transformer: Transformer, workId: string): void; static generateId(): string; static createContainer(id: string, mermaidCode?: string, workId?: string): string; static getCode(id: string, workId: string): string | undefined; static clear(workId?: string): void; static extendMarkdown(transformer: Transformer, workId: string): void; } /** * Mermaid 渲染器工具类 * 负责处理 markmap 中的 mermaid 图表渲染相关逻辑 */ export declare class MermaidRenderer { /** * 检查 markmap 节点及其子节点是否包含 mermaid 代码块 * @param node markmap 节点数据 * @returns 如果节点或其子节点包含 mermaid 代码块,返回 true */ static checkNodeHasMermaid(node: any): boolean; /** * 等待 DOM 更新后渲染 Mermaid 图表 * @param svgElement SVG 元素 * @param workId 工作 ID * @returns Promise */ static renderMermaidAfterDOMUpdate(svgElement: SVGSVGElement, workId: string): Promise; /** * 渲染所有 mermaid 容器中的图表 * @param svgElement SVG 元素 * @param workId 工作 ID * @returns Promise */ static renderMermaidBlocks(svgElement: SVGSVGElement, workId: string): Promise; /** * 检测是否是 Safari 浏览器 * @returns 如果是 Safari 返回 true,否则返回 false */ static isSafari(): boolean; /** * 将 mermaid SVG 从 foreignObject 移出,直接添加到 markmap SVG 中(Safari 兼容性处理) * 克隆 mermaid SVG 元素,设置正确的尺寸和位置,然后将 foreignObject 中的 mermaid-container 透明度设为 0 * @param svgElement markmap SVG 元素 * @returns Promise */ static transformMermaidSvgToMarkmapSvg(svgElement: SVGSVGElement): Promise; /** * 在 root 数据中注入 mermaid HTML * 找到包含 mermaid 代码块的节点,将 HTML 添加到其 content 中 * @param root markmap root 数据 * @param markdown markdown 文本 * @param workId 工作 ID(用于命名空间隔离) * @returns 修改后的 root 数据 */ static injectMermaidHtml(root: any, markdown: string, workId: string): any; /** * 解码 HTML 实体 * @param str HTML 字符串 * @returns 解码后的字符串 */ private static decodeHtmlEntities; /** * 检查 divElement 中是否包含 mermaid SVG 元素 * @param divElement HTMLDivElement 或 SVGSVGElement 元素 * @returns 如果包含 mermaid SVG 元素,返回 true,否则返回 false */ static hasMermaidSvg(divElement: HTMLDivElement | SVGSVGElement): boolean; }