For AI agents: the complete documentation index is available at https://a3s-lab.github.io/Office/docs/0.1.0/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/Office/docs/0.1.0/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/Office/docs/0.1.0/components/markdown.md.
  • 简体中文
  • 0.1.0
  • MarkdownEditor

    MarkdownEditor 默认使用可拖动分隔线的“左侧源码、右侧预览”模式。 Markdown 字符串始终是唯一持久化来源,TipTap 提供可视化编辑能力。

    属性

    属性类型必填默认值说明
    contentMarkdownContent受控 Markdown 内容。
    onChange(content: MarkdownContent) => void返回完整的新内容。
    previewbooleanfalse只读渲染。
    saveStatusstring由宿主管理的保存状态。
    fileActionsreadonly OfficeFileAction[][]宿主文件操作。
    extensionsExtensions[]附加 TipTap Extension。
    getSelectionMenuItemsGetMarkdownSelectionMenuItems内置菜单替换源码与可视化界面的选区菜单。
    theme'light' | 'dark' | 'system''system'配色模式。

    内容结构

    interface MarkdownContent {
      type: 'markdown';
      markdown: string;
    }

    受控源码历史会合并连续输入,把明确命令保留为独立记录,在撤销和重做时恢复源码选区, 并在宿主替换内容后重新建立历史基线。

    选区菜单

    宿主菜单同时覆盖源码和可视化选区。快照通过 selection.surface 标识当前界面,并提供 精确选中文本、相邻内容、完整 Markdown、渲染后的纯文本和安全的替换、插入命令。

    import type { GetMarkdownSelectionMenuItems } from '@a3s-lab/office/core';
    
    const getSelectionMenuItems: GetMarkdownSelectionMenuItems = (context) => [
      {
        id: 'summarize',
        label: '总结',
        run: async () => {
          const summary = await summarize(context.document.markdown);
          await context.commands.replaceText(summary);
        },
      },
    ];

    新增 Node 或 Mark 的 Extension 必须同时提供 Markdown 解析与序列化规则,否则结构无法 在切换源码视图后保留。