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.

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 解析与序列化规则,否则结构无法 在切换源码视图后保留。