xfy
77a22bbfb1
feat(editor): tiptap 代码块 mermaid 实时预览
mermaid 代码块( ```mermaid )在富文本编辑器里此前只是普通源码,作者看不到
渲染效果。现在像数学公式、脚注一样在编辑器内直接预览:源码下方加预览区,
debounce 500ms 后渲染成 SVG,跟随站点 light/dark 主题切换,与前台文章页
渲染视觉完全一致。
一致性保证(核心):
- 同一份 mermaid 运行时:编辑器与前台都加载 /mermaid/mermaid.js(11.16.0)
- 同一套主题变量:经 @yggdrasil/shared 单一真相源(上一提交下沉)
- 同一份渲染配置:theme:'base' + securityLevel:'strict' + flowchart.curve:'basis'
- 同一主题切换机制:监听 THEME_CHANGE_EVENT(与 codemirror-editor 同范式)
实现:
- mermaid.ts:加载 bundle + renderMermaid(source, theme) 封装,与前台同逻辑
- code-block-view.ts:mermaid 块构造时建预览区;源码变化 debounce 重渲染;
renderToken 防竞态(快速改动只保留最新);主题事件重渲染;language 切入/切出
mermaid 时创建/移除预览区;destroy 清理 timer+监听+token
- 渲染失败显示错误态(accent 色左边框),源码仍可编辑修正
- 样式对齐前台 pre[data-mermaid-rendered]:flex 居中、SVG 等比缩放、Latte/Mocha 双主题
- 测试 mock mermaid 运行时,覆盖预览区生命周期、debounce、竞态、主题、错误、清理
服务端 markdown.rs / Dioxus.toml / Rust-JS 桥零改动。
2026-07-23 15:13:07 +08:00
..
2026-07-21 15:23:47 +08:00
2026-07-14 15:39:41 +08:00
2026-07-23 13:36:11 +08:00
2026-07-23 12:04:25 +08:00
2026-07-23 15:12:48 +08:00
2026-07-23 15:13:07 +08:00
2026-07-14 15:39:41 +08:00
2026-07-23 15:12:48 +08:00
2026-07-15 18:12:04 +08:00
2026-07-16 14:15:20 +08:00
2026-07-23 15:13:07 +08:00
2026-07-23 12:04:25 +08:00
2026-07-02 17:50:52 +08:00