feat: 升级 CodeMirror 编辑器并新增 Markdown 工具栏
This commit is contained in:
+12
-1
@@ -83,6 +83,14 @@ Schema、资源、Pandoc capability、错误码、结果、诊断、耗时、MIM
|
||||
现有主题、图片和 Markdown 安全渲染能力,为后续 Server 与 Desktop DOCX
|
||||
引擎返回同一种准备结果。本阶段未新增 HTTP 路由、IPC 或 Pandoc 调用。
|
||||
|
||||
`v0.6.0` 阶段 4 已将左侧原生文本框升级为 CodeMirror 6,并建立项目
|
||||
自有 Markdown 命令注册层和响应式基础工具栏。当前支持撤销、重做、
|
||||
H1~H6、加粗、斜体、删除线、行内代码、代码块、引用、三类列表、尺寸
|
||||
表格和分隔线;链接、图片等功能化工具延后。现有实现保留受控 Markdown
|
||||
状态、防抖预览、文件工作流、文档脏状态、折叠恢复焦点及编辑/预览滚动
|
||||
同步。外部文档替换会重置历史,单次工具栏操作形成一个 CodeMirror
|
||||
事务。
|
||||
|
||||
## 2. 已完成
|
||||
|
||||
### 2.1 项目骨架
|
||||
@@ -919,6 +927,9 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
|
||||
- `apps/web/src/PreviewPageControl.tsx` 和 `preview-page.ts` 负责当前页输入、
|
||||
页码边界、滚动页识别和快速跳转。
|
||||
- `apps/web/src/preview-zoom.ts` 和 `PreviewZoomControl.tsx` 负责预览缩放缓存、边界和控制界面。
|
||||
- `apps/web/src/MarkdownEditor.tsx` 负责 CodeMirror 受控状态、文档历史
|
||||
重建、快捷键、焦点和滚动容器适配;`MarkdownToolbar.tsx` 与
|
||||
`markdown-editor-commands.ts` 负责可扩展命令注册和基础工具栏。
|
||||
- `packages/markdown-echarts` 负责 ECharts YAML 协议、验证、安全过滤、
|
||||
Markdown-it 插件、浏览器 SVG 渲染和分页样式。
|
||||
- `apps/server/src/pdf-engine.ts` 负责 Chromium 生命周期、并发、网络限制、分页调用和 PDF 输出。
|
||||
@@ -962,7 +973,7 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
|
||||
- 阶段 2:已冻结 Pandoc `3.9.0.2`、许可证、Docker 与 Desktop
|
||||
分发方式;
|
||||
- 阶段 3:已实现 DOCX 共享模型和跨端导出协议;
|
||||
- 阶段 4:实现 CodeMirror 6 与可扩展基础 Markdown 工具栏;
|
||||
- 阶段 4:已实现 CodeMirror 6 与可扩展基础 Markdown 工具栏;
|
||||
- 阶段 5~8:依次实现资源预处理、动态 reference.docx、Pandoc 转换服务
|
||||
以及 Web/Desktop 导出交互;
|
||||
- 阶段 9~10:完成自动化和 Word/WPS 互操作验收,再构建正式发布产物。
|
||||
|
||||
+22
-7
@@ -1,6 +1,7 @@
|
||||
# v0.6.0 DOCX 导出与 Markdown 工具栏设计
|
||||
|
||||
状态:阶段 1~3 已完成,DOCX 架构、Pandoc 分发及共享协议已经冻结。
|
||||
状态:阶段 1~4 已完成,DOCX 共享协议和 Markdown 编辑器基础能力已经
|
||||
落地。
|
||||
|
||||
## 1. 版本目标
|
||||
|
||||
@@ -211,8 +212,8 @@ Desktop 只提供平台运行时、传输与保存能力。
|
||||
|
||||
左侧编辑器采用:
|
||||
|
||||
- `@uiw/react-codemirror`;
|
||||
- `@codemirror/lang-markdown`;
|
||||
- `@uiw/react-codemirror` `4.25.11`;
|
||||
- `@codemirror/lang-markdown` `6.5.1`;
|
||||
- CodeMirror 6 的状态、选区、事务、历史和快捷键扩展。
|
||||
|
||||
不引入带独立 Markdown 预览的完整编辑器,避免复制现有安全渲染和统一
|
||||
@@ -245,6 +246,11 @@ interface MarkdownEditorCommand {
|
||||
- 根据编辑器或平台状态禁用;
|
||||
- 注册快捷键。
|
||||
|
||||
当前实现在 `apps/web/src/markdown-editor-commands.ts` 维护项目自有命令
|
||||
注册表和纯文本变换函数,`MarkdownEditor.tsx` 只负责 CodeMirror 适配,
|
||||
`MarkdownToolbar.tsx` 只负责 React 工具栏呈现。后续 Front Matter 或
|
||||
ECharts 工具可以增加命令与面板入口,不需要修改编辑器内核。
|
||||
|
||||
### 5.3 v0.6.0 基础命令
|
||||
|
||||
- 撤销、重做;
|
||||
@@ -253,12 +259,16 @@ interface MarkdownEditorCommand {
|
||||
- 行内代码、代码块;
|
||||
- 引用;
|
||||
- 有序列表、无序列表和任务列表;
|
||||
- 链接、图片;
|
||||
- 表格;
|
||||
- 通过尺寸网格快速插入 `1~10` 列、`2~10` 行的表格;
|
||||
- 分隔线。
|
||||
|
||||
Front Matter 表单工具和 ECharts YAML 工具不在 `v0.6.0` 实现,但必须
|
||||
能够在后续版本中以命令和面板扩展接入,不再次更换编辑器。
|
||||
链接、图片、Front Matter 表单工具和 ECharts YAML 工具不在 `v0.6.0`
|
||||
实现,但必须能够在后续版本中以命令和面板扩展接入,不再次更换编辑器。
|
||||
|
||||
选中多行后执行有序列表、无序列表或任务列表,应在一次事务中为每个非空
|
||||
行生成对应 Markdown 标记。有序列表按非空行连续编号。表格尺寸中的行数
|
||||
包含表头,不包含 Markdown 分隔语法行;例如 `3 × 4` 生成 3 列、1 行
|
||||
表头和 3 行内容。
|
||||
|
||||
### 5.4 兼容性要求
|
||||
|
||||
@@ -278,6 +288,11 @@ Front Matter 表单工具和 ECharts YAML 工具不在 `v0.6.0` 实现,但必
|
||||
外部文件加载不得污染用户的撤销历史;工具栏的一次操作应形成一次清晰
|
||||
的撤销步骤。
|
||||
|
||||
当前通过独立的文档版本标识重建 CodeMirror 状态:用户键入和工具栏操作
|
||||
保留在当前撤销历史中;新建、打开、重载、教程及主题示例切换会开始新的
|
||||
历史。编辑器适配层同时暴露真实滚动容器和聚焦能力,继续复用原有预览
|
||||
滚动同步与折叠逻辑。
|
||||
|
||||
## 6. API、安全与运行约束
|
||||
|
||||
### 6.1 API 与 IPC
|
||||
|
||||
Reference in New Issue
Block a user