0a8bb3a453
refactor: 彻底移除所有 Mermaid 支持
...
- 从 argontheme.js 移除所有 Mermaid 相关代码和注释
- 从 style.css 移除所有 Mermaid 样式(约 300 行)
- 移除代码高亮中跳过 mermaid 容器的逻辑
- 移除 PJAX 清理函数中的 Mermaid 引用
- 删除临时清理脚本和空文档
2026-01-27 10:42:08 +08:00
135c2269c7
fix: 修复 Mermaid 渲染问题
...
- 启用代码块转换功能(移除 convertMermaidCodeblocks 中的 return 语句)
- 添加完整的 Mermaid 代码块检测选择器
- 修复首页预览中显示原始 Mermaid 代码的问题
- 添加 argon_remove_mermaid_from_preview 函数过滤预览内容
- 更新三个文章预览模板,在预览中用 [Mermaid 图表] 替代原始代码
2026-01-27 00:28:25 +08:00
4aaa3b7772
fix: 增强 Mermaid 代码提取的鲁棒性
...
- 使用 innerText 替代 textContent,更好地保留换行符
- 添加详细的调试日志,记录原始和最终提取的代码
- 添加代码完整性验证,检测过短的代码
- 修复代码被截断的问题
2026-01-25 13:39:29 +08:00
577c5c2a3c
feat: 优化 Mermaid 初始化配置,支持多种图表类型
...
- 添加 ER 图配置(需求 2.3)
- 添加状态图配置(需求 2.4)
- 添加类图、饼图、Git 图、用户旅程图配置
- 优化注释,明确标注需求对应关系
- 保持主题自动切换和安全级别配置(需求 2.1)
- 完成任务 2.2
2026-01-25 13:13:00 +08:00
2fa1948501
feat: 实现 Mermaid 库加载等待机制
...
- 添加 waitForMermaid() 函数,使用 Promise 实现异步等待
- 设置超时机制(默认 5000ms),防止无限等待
- 使用轮询检查库加载状态(每 100ms 检查一次)
- 记录加载时间和状态日志,便于调试
- 将 renderAllCharts() 改为 async 函数,渲染前等待库加载
- 将 init() 函数改为 async 函数,使用 waitForMermaid() 替代原来的 setInterval
- 添加完整的 JSDoc 注释,说明参数和返回值
- 遵循项目代码规范(Tab 缩进、单引号、严格相等)
- 完成任务 2.1
2026-01-25 13:09:42 +08:00
9e4888f28c
feat: 添加 Mermaid 渲染状态标记
...
- 在渲染成功后添加 data-mermaid-rendered 属性
- 在 isRendered() 函数中检查该属性(已实现)
- 覆盖三种渲染路径:标准 API、旧版 API、init 降级方案
- 确保已渲染的代码块不会被重复渲染
- 遵循项目代码规范(Tab 缩进、单引号、JSDoc 注释)
- 完成任务 1.3
2026-01-25 13:02:16 +08:00
8f7165cede
feat: 实现 Mermaid 代码块检测函数 - 实现 detectMermaidBlocks 和 isRendered 函数,识别两种格式的 Mermaid 代码块并过滤已渲染的块
2026-01-25 12:54:45 +08:00
9f31bbe372
feat: 实现 Mermaid 导出功能
...
- 添加导出按钮到工具栏,支持 PNG 和 SVG 格式导出
- 实现导出菜单,点击导出按钮显示格式选项
- PNG 导出:将 SVG 转换为 PNG 图片并下载
- SVG 导出:保存 SVG 代码为文件并下载
- 导出时保持图表当前的缩放级别和样式
- 添加导出错误处理,显示友好的错误提示
- 导出菜单支持点击外部关闭
- 添加导出菜单样式,支持夜间模式
- 移动端导出菜单适配,调整按钮大小和位置
- 错误提示自动消失(3秒后)
需求:15.1, 15.2, 15.3, 15.4, 15.5
2026-01-25 01:59:27 +08:00
1c15e46ad6
feat: 实现 Mermaid 全屏模式
...
- 在工具栏添加全屏按钮(⛶ 图标)
- 实现全屏模式进入和退出功能
- 全屏模式下保持缩放和拖拽功能可用
- 支持 ESC 键退出全屏
- 退出全屏时恢复图表原始状态(缩放级别和滚动位置)
- 全屏模式下禁用页面滚动
- 添加全屏按钮激活状态样式
- 在清理函数中添加全屏事件监听器清理
- 全屏模式下工具栏始终可见,背景更明显
- 全屏容器占满整个视口,居中显示图表
需求:14.1, 14.2, 14.3, 14.4, 14.5
2026-01-25 01:53:31 +08:00
1ec2ebc279
feat: 优化 Mermaid 响应式设计
...
- 移动端工具栏适配:按钮放大至 40px,便于触摸操作
- 双指缩放手势:支持双指捏合缩放,以触摸中心为缩放点
- 单指拖拽移动:支持单指拖拽平移图表
- 触摸事件优化:使用 requestAnimationFrame 提升响应速度
- 横屏模式优化:限制图表高度,工具栏更紧凑,隐藏提示文本
- 添加触摸距离和中心点计算辅助函数
- 完善触摸状态管理(touchstart/touchmove/touchend/touchcancel)
需求:16.1, 16.2, 16.3, 16.4, 16.5
2026-01-25 01:45:39 +08:00
6309a2236b
feat: 优化 Mermaid 错误提示显示效果
...
- 增强错误容器视觉设计(渐变背景、阴影效果、悬停动画)
- 添加错误图标脉冲动画,提升视觉吸引力
- 优化错误信息显示(错误类型标签、消息框样式)
- 新增错误行号提取功能,支持多种行号格式
- 改进代码查看区域样式(summary 悬停效果、代码块阴影)
- 完善夜间模式适配(深色渐变背景、优化颜色对比度)
- 删除重复的 CSS 样式定义(第 17050 行)
- 统一使用 .mermaid-error-* 类名规范
需求:19.1, 19.2, 19.3, 19.4, 19.5
2026-01-25 01:38:36 +08:00
66df8348be
feat: 优化 Mermaid 拖拽功能
...
- 7.1 改进拖拽响应:使用 requestAnimationFrame 优化性能,避免频繁的 DOM 操作
- 7.2 优化拖拽视觉反馈:增强光标样式,添加跨浏览器的文本选择禁用
- 7.3 智能启用拖拽:检测图表是否需要拖拽,未缩放且完全可见时自动禁用
需求:13.1, 13.2, 13.3, 13.4, 13.5
2026-01-25 01:30:21 +08:00
39d340fb49
feat: 增强 Mermaid 缩放功能
...
- 6.1 实现以鼠标为中心的缩放:滚轮缩放时自动调整滚动位置,保持鼠标指向的内容不变
- 6.2 优化缩放动画:按钮点击使用平滑过渡,滚轮缩放禁用过渡以获得更流畅的体验
- 6.3 实现智能缩放:双击图表时,默认大小放大到 2 倍,其他情况重置到 1 倍
- 6.4 优化缩放按钮状态:达到最大/最小缩放级别时自动禁用对应按钮
需求:12.1, 12.2, 12.3, 12.4, 12.5, 20.3
2026-01-25 01:25:13 +08:00
927e9c29d1
feat: 优化 Mermaid 渲染性能
...
- 12.1 实现批量渲染:使用 requestAnimationFrame 分批渲染,避免阻塞主线程
- 12.2 添加加载动画:显示加载状态和旋转动画,提供视觉反馈
- 12.3 实现延迟渲染:优先渲染视口内图表,延迟渲染视口外图表
- 12.4 优化错误处理:单个图表渲染失败不影响其他图表
需求:18.1, 18.2, 18.3, 18.4, 18.5
2026-01-25 01:13:16 +08:00
8ba6a15a8a
feat: 实现 Mermaid 主题自动同步功能
...
- 在 setDarkmode() 中触发 argon:theme-switched 事件
- 优化 reRenderCharts() 函数,保持图表缩放级别和滚动位置
- 添加淡入淡出过渡动画,提升视觉体验
- 只替换 SVG 内容,保留容器结构和控制按钮
- 主题切换失败时保持原样,不影响用户体验
需求:17.1, 17.2, 17.3, 17.4, 17.5
2026-01-25 01:03:38 +08:00
0616150dae
feat: 实现 PJAX 内联脚本执行器
...
- 添加 executeScript() 函数:
- 创建新的 script 元素并复制内容
- 复制所有属性(包括 async、defer)
- 添加错误捕获和日志记录
- 满足需求 4.4, 4.5
- 添加 executeInlineScripts() 函数:
- 提取新页面中的所有 script 标签
- 区分内联脚本和外部脚本
- 按 DOM 顺序执行脚本
- 错误隔离机制(单个脚本失败不影响其他脚本)
- 返回执行结果统计
- 满足需求 4.1-4.4
- 在 pjax:complete 事件中调用:
- 在其他模块初始化之前执行
- 添加错误处理
- 满足需求 4.1-4.5
满足需求:4.1-4.5(内联脚本执行)
2026-01-25 00:47:28 +08:00
6a45d0ab06
feat: 重构 PJAX 事件处理器,添加 Mermaid 渲染支持
...
- 优化 pjax:beforeReplace 事件:
- 添加详细的需求映射注释(需求 1.1-1.4)
- 明确说明清理内容包含 Mermaid 实例
- 优化 pjax:complete 事件:
- 添加 Mermaid 图表渲染调用(需求 3.6)
- 添加 MathJax 和 KaTeX 渲染注释
- 添加用户自定义回调注释
- 满足需求 1.5, 1.6(模块初始化和错误隔离)
- 优化 pjax:end 事件:
- 添加需求映射注释(需求 1.7)
- 保持现有功能不变
- 更新顶部注释说明:
- 明确包含 Mermaid 渲染
- 添加完整的需求映射说明
满足需求:1.1-1.7, 3.6
2026-01-25 00:41:35 +08:00
1781e3bd79
feat: 优化 Lazyload 生命周期管理
...
- 添加全局 lazyloadScrollHandler 变量,用于降级方案的清理
- 优化 lazyloadInit() 函数:
- 增强 Observer 存在性检查,添加 try-catch 错误处理
- 清理旧的滚动监听器(降级方案)
- 添加详细的调试日志
- IntersectionObserver 初始化失败时自动降级
- 优化 loadImageOptimized() 函数:
- 使用 requestAnimationFrame 优化 DOM 操作
- 图片加载失败时取消 Observer 监听
- 没有 data-src 时取消 Observer 监听
- 优化 lazyloadFallback() 降级方案:
- 保存 handler 引用到全局变量
- 所有图片加载完成后自动清理监听器
- 优化 cleanupLazyloadObserver() 函数:
- 同时清理 Observer 和滚动监听器
- 添加完善的错误处理
- 移除 cleanupEventListeners() 中的重复清理代码
满足需求:2.1, 2.2, 2.4, 2.5, 3.1-3.3, 8.2
2026-01-25 00:31:33 +08:00
8180a87b89
feat: 实现统一的资源清理管理器
...
- 封装 cleanupPjaxResources() 函数,统一管理所有资源清理
- 添加 cleanupLazyloadObserver() - 清理 Lazyload Observer
- 添加 cleanupZoomifyInstances() - 清理 Zoomify 实例
- 添加 cleanupTippyInstances() - 清理 Tippy 实例
- 添加 cleanupMermaidInstances() - 清理 Mermaid 实例和事件监听器
- 添加 cleanupDynamicStyles() - 清理动态 style 标签
- 添加 cleanupDynamicScripts() - 清理动态 script 标签
- 添加 cleanupEventListeners() - 清理事件监听器
- 每个清理函数都包含错误处理和调试日志
- 满足需求 1.1-1.4, 2.3, 6.1
2026-01-25 00:20:33 +08:00
dde868021e
feat: 添加 Mermaid 图表拖拽和提示功能
...
- 添加鼠标左键拖拽移动图表
- 拖拽时显示 grabbing 光标,平时显示 grab 光标
- 添加底部提示文本:按住 Ctrl+滚轮缩放 | 拖拽移动
- 提示文本鼠标悬停时显示,支持夜间模式
- 防止拖拽时选中文本
2026-01-24 23:41:02 +08:00
a163e7a2a0
feat: 添加 Mermaid 图表缩放功能
...
- 图表容器宽度占满,只留文章边距(margin: 20px -20px)
- 添加缩放控制按钮:放大、缩小、重置
- 支持 Ctrl+滚轮缩放
- 缩放范围:50%-300%,步进 25%
- 响应式适配:移动端自动调整边距和按钮大小
- 夜间模式适配缩放控制按钮样式
2026-01-24 23:36:12 +08:00
28f0a1265e
feat: 更新 Mermaid 到 v11 并优化错误处理
...
- 更新 Mermaid 库版本从 v10 升级到 v11.12.2
- 优化错误处理逻辑,避免重复嵌套错误容器
- 修复查看源代码时可能出现的嵌套报错问题
- 改进渲染前检查,跳过已处理的错误容器和已渲染的图表
- 优化重新渲染逻辑,只处理成功渲染的图表,排除错误容器
- 增强代码提取逻辑,优先使用传入的代码参数
- 添加主题切换时的智能判断,避免不必要的重新渲染
- 更新 functions.php 中的 CDN 地址到 v11
- 更新 settings.php 中的预览功能 CDN 地址到 v11
- 改进错误容器的 DOM 结构,使用独立元素而非 innerHTML
2026-01-24 22:46:00 +08:00
4200ea118c
debug: 添加详细的代码提取调试日志
...
- 在 convertMermaidCodeblocks 中添加代码长度和内容日志
- 在 extractMermaidCode 中添加详细的提取信息
- 输出元素 HTML 以便排查问题
2026-01-24 21:57:23 +08:00
094a55b80a
fix: 修复 Mermaid 代码块缩进和 API 兼容性问题
...
- 添加智能缩进清理:移除统一缩进但保持相对缩进
- 添加 Mermaid API 版本检测和兼容性处理
- 支持 Mermaid 10.x (render Promise API)
- 支持 Mermaid 8.x (mermaidAPI.render 回调 API)
- 添加降级方案 (mermaid.init 方法)
- 增强错误处理和调试日志
- 修复代码提取时的空格问题
2026-01-24 21:49:50 +08:00
29bfd284e0
feat: 实现 Mermaid 代码块魔改支持
...
- 添加 convertMermaidCodeblocks() 函数,在代码高亮前拦截 mermaid 代码块
- 支持标准 Markdown 代码块 (\\\mermaid) 渲染
- 更新 detectMermaidBlocks() 添加 mermaid-from-codeblock 选择器
- 更新 extractMermaidCode() 支持新容器类型
- 创建测试文件 test-codeblock-magic.html
- 更新用户文档、开发者文档和 FAQ
- 完全绕过代码高亮和 WordPress 格式化
- 支持 PJAX 页面切换
- 特殊字符和换行符正确保留
2026-01-24 21:35:12 +08:00
32c2a72d2b
feat: 添加 Mermaid Shortcode 支持(推荐方式)
...
- 新增 [mermaid]...[/mermaid] shortcode
- 支持 theme、width、height、align 参数
- 不依赖 WP-Markdown 的处理方式
- 不会被 WordPress 自动格式化破坏
- 在原生编辑器中清晰可见
- 添加完整的使用指南和示例
2026-01-24 21:02:47 +08:00
bf8f973e91
fix: 修复 Mermaid 容器语法的换行符和特殊字符问题
...
## 问题描述
用户报告 Mermaid 图表仍然渲染失败:
1. `flowchart TDStart` - `TD` 和 `Start` 之间没有换行符(有两个空格)
2. 箭头符号变成全角 `–>` 而不是 `-->`
## 根本原因分析
### 问题 1: 换行符丢失
WP-Markdown 可能将整个容器语法内容放在**一个** `<p>` 元素中:
```html
<p>::: mermaid<br>flowchart TD<br>Start --> End<br>:::</p>
```
而不是多个独立的 `<p>` 元素。之前的代码只处理了多元素的情况。
### 问题 2: 特殊字符转换
WordPress 的自动格式化功能会将某些字符转换为排版字符:
- `--` → `–` (U+2013 EN DASH)
- `---` → `—` (U+2014 EM DASH)
- `->` → `→` (U+2192 RIGHTWARDS ARROW)
这些字符在 Mermaid 语法中有特殊含义,必须保持原样。
## 修复方案
### 1. 支持单元素容器语法
在 `extractContainerContent()` 函数中添加检测逻辑:
```javascript
// 检查是否整个内容都在一个元素中
if (startText.includes(':::') && startText.lastIndexOf(':::') > 10) {
// 整个容器语法在一个元素中
let fullText = this.htmlToText(startHTML);
// 移除开始和结束标记
fullText = fullText.replace(/^:::\s*mermaid\s*/i, '').trim();
fullText = fullText.replace(/:::\s*$/, '').trim();
// 创建容器并返回
}
```
### 2. 增强 htmlToText() 函数
添加更多字符转换规则:
```javascript
// HTML 实体
.replace(/–/g, '-') // EN DASH
.replace(/—/g, '--') // EM DASH
.replace(/→/g, '->') // RIGHTWARDS ARROW
.replace(/–/g, '-') // EN DASH (named entity)
.replace(/—/g, '--') // EM DASH (named entity)
.replace(/→/g, '->'); // RIGHTWARDS ARROW (named entity)
// Unicode 字符
.replace(/–/g, '-') // U+2013 EN DASH
.replace(/—/g, '--') // U+2014 EM DASH
.replace(/→/g, '->'); // U+2192 RIGHTWARDS ARROW
```
### 3. 添加详细调试日志
```javascript
this.logDebug('检查元素,textContent: ' + startText.substring(0, 50));
this.logDebug('innerHTML: ' + startHTML.substring(0, 100));
this.logDebug('检测到单元素容器语法');
this.logDebug('转换后的完整文本: ' + fullText.substring(0, 200));
this.logDebug('移除标记后的代码: ' + fullText.substring(0, 200));
```
## 处理流程
### 单元素容器语法
```
1. 检测到 ::: mermaid 开始标记
2. 检查 textContent 中是否包含结束标记 :::
3. 如果包含,说明整个内容在一个元素中
4. 提取 innerHTML
原始: "::: mermaid<br>flowchart TD<br>Start –> End<br>:::"
5. 使用 htmlToText() 转换
- <br> → \n
- – → -
- → → ->
结果: "::: mermaid\nflowchart TD\nStart --> End\n:::"
6. 移除开始和结束标记
结果: "flowchart TD\nStart --> End"
7. 创建容器元素存储代码
```
### 多元素容器语法(保持原有逻辑)
```
1. 检测到 ::: mermaid 开始标记
2. 遍历后续兄弟元素
3. 收集所有内容直到 ::: 结束标记
4. 使用 \n 连接所有行
5. 创建容器元素存储代码
```
## 测试验证
### 测试用例 1: 单元素容器语法
```html
<p>::: mermaid<br>
flowchart TD<br>
A[开始] –> B[处理]<br>
B –> C[结束]<br>
:::</p>
```
预期结果:
```
flowchart TD
A[开始] --> B[处理]
B --> C[结束]
```
### 测试用例 2: 多元素容器语法
```html
<p>::: mermaid</p>
<p>flowchart TD</p>
<p>A --> B</p>
<p>:::</p>
```
预期结果:
```
flowchart TD
A --> B
```
### 测试用例 3: 复杂流程图(AI 评论审核)
- 100+ 个节点
- 多行文本(`<br/>` 标签)
- 箭头符号(`-->`, `-->`)
- 样式定义(`style` 语句)
## 影响范围
- 仅影响 Markdown 容器语法(`::: mermaid ... :::`)
- 不影响其他格式(`<div class="mermaid">`, `<pre><code>` 等)
- 向后兼容,支持单元素和多元素两种情况
## 相关文件
- `argontheme.js` - 修改 `extractContainerContent()` 和 `htmlToText()`
- `tests/test-ai-comment-flow.md` - 测试文档
## 技术细节
### WordPress 自动格式化
WordPress 的 `wptexturize()` 函数会自动转换以下字符:
- `--` → `–` (EN DASH)
- `---` → `—` (EM DASH)
- `->` → `→` (RIGHTWARDS ARROW)
- `(c)` → `©` (COPYRIGHT SIGN)
- `(r)` → `®` (REGISTERED SIGN)
- `(tm)` → `™` (TRADE MARK SIGN)
这些转换对于普通文本是有益的,但对于代码块(如 Mermaid)是有害的。
### 解决方案
1. **禁用自动格式化**(不推荐)
- 会影响整个网站的排版
- 需要修改 WordPress 核心代码
2. **在提取时反转换**(推荐)✅
- 只影响 Mermaid 代码块
- 不影响其他内容
- 易于维护
### 字符映射表
| 原始字符 | HTML 实体 | Unicode | 显示 |
|---------|----------|---------|------|
| `-` | `-` | U+002D | - |
| `--` | `–` / `–` | U+2013 | – |
| `---` | `—` / `—` | U+2014 | — |
| `->` | `→` / `→` | U+2192 | → |
## 注意事项
1. **性能影响**:增加了字符串替换操作,但性能影响可忽略
2. **安全性**:只处理 Mermaid 代码块,不执行任何脚本
3. **兼容性**:支持所有现代浏览器
4. **调试**:添加详细日志,便于排查问题
## 后续优化
1. 考虑使用 DOMParser 解析 HTML,更可靠
2. 添加更多特殊字符的转换规则
3. 支持自定义字符映射表
4. 添加单元测试
## 参考资料
- [WordPress wptexturize() 函数](https://developer.wordpress.org/reference/functions/wptexturize/ )
- [Unicode 字符表](https://unicode-table.com/ )
- [Mermaid 语法文档](https://mermaid.js.org/intro/syntax-reference.html )
2026-01-24 20:56:43 +08:00
b4ba37a6c5
fix: 修复 Mermaid 容器语法换行符丢失问题
...
## 问题描述
用户提供的 AI 评论审核流程 Mermaid 图表渲染失败,错误信息显示:
- `flowchart TDStart` - `TD` 和 `Start` 之间缺少换行符
- 箭头符号被转换成全角 `–>` 而不是 `-->`
## 根本原因
WP-Markdown 插件将容器语法 `::: mermaid ... :::` 转换为 HTML 时:
1. 每一行代码都被包裹在 `<p>` 标签中
2. 行内的换行使用 `<br>` 标签表示
3. 使用 `textContent` 或 `innerText` 提取时,`<br>` 标签被忽略或转换为空格
4. 导致多行代码被合并成一行,Mermaid 语法解析失败
## 修复方案
### 1. 新增 `htmlToText()` 辅助函数
```javascript
htmlToText(html) {
// 将 <br> 和 <br/> 转换为换行符
let text = html.replace(/<br\s*\/?>/gi, '\n');
// 移除其他 HTML 标签
text = text.replace(/<[^>]+>/g, '');
// 解码 HTML 实体
text = text
.replace(/ /g, ' ')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, "'");
return text;
}
```
### 2. 改进 `extractContainerContent()` 函数
- 使用 `innerHTML` 而不是 `textContent` 或 `innerText`
- 调用 `htmlToText()` 将 `<br>` 标签转换为换行符
- 保留所有换行符和空行
- 添加详细的调试日志
### 3. 处理流程
```
1. 检测到 ::: mermaid 开始标记
2. 提取 innerHTML(包含 <br> 标签)
3. 使用 htmlToText() 转换:
- <br> → \n
- 移除其他 HTML 标签
- 解码 HTML 实体
4. 收集所有行内容
5. 使用 \n 连接所有行
6. 创建容器元素存储完整代码
```
## 测试验证
### 测试用例 1:简单流程图
```markdown
::: mermaid
flowchart TD
A[开始] --> B[处理]
B --> C[结束]
:::
```
### 测试用例 2:复杂流程图(AI 评论审核)
- 包含 100+ 个节点
- 包含多行文本(`<br/>` 标签)
- 包含箭头符号(`-->`, `-->`)
- 包含样式定义(`style` 语句)
### 预期结果
- ✅ 所有换行符正确保留
- ✅ 箭头符号不被转换
- ✅ 多行文本正确显示
- ✅ 样式定义正确应用
## 影响范围
- 仅影响 Markdown 容器语法(`::: mermaid ... :::`)
- 不影响其他格式(`<div class="mermaid">`, `<pre><code>` 等)
- 向后兼容,不影响现有功能
## 相关文件
- `argontheme.js` - 修改 `extractContainerContent()` 和新增 `htmlToText()`
- `tests/test-ai-comment-flow.md` - 测试文档
- `docs/mermaid-usage-guide.md` - 使用指南
## 技术细节
### HTML 结构示例
WP-Markdown 生成的 HTML:
```html
<p>::: mermaid<br>
flowchart TD<br>
Start([用户提交评论]) --> PreProcess[预处理]<br>
:::</p>
```
### 提取过程
1. **原始 HTML**: `::: mermaid<br>flowchart TD<br>Start --> End<br>:::`
2. **htmlToText()**: `::: mermaid\nflowchart TD\nStart --> End\n:::`
3. **移除标记**: `flowchart TD\nStart --> End`
4. **最终代码**:
```
flowchart TD
Start --> End
```
## 注意事项
1. **性能影响**:使用 `innerHTML` 和正则替换,性能影响可忽略
2. **安全性**:只处理 Mermaid 代码块,不执行任何脚本
3. **兼容性**:支持所有现代浏览器
4. **调试**:添加详细日志,便于排查问题
## 后续优化
1. 考虑支持更多 Markdown 容器语法(如 `::: warning`, `::: tip` 等)
2. 优化正则表达式性能
3. 添加单元测试
2026-01-24 20:49:32 +08:00
b6d9f8c47e
fix: 修复容器语法和 WP-Markdown 的两个关键问题
...
- 修复 WP-Markdown document.write 重复输出问题
- 改进容器语法检测,支持跨多个元素收集内容
- 解决空行导致内容被分割成多个元素的问题
2026-01-24 20:41:08 +08:00
0ac57949ae
fix: 修复代码高亮和容器语法的两个关键问题
...
- 代码高亮排除 mermaid 代码块,避免干扰渲染
- 容器语法正确处理空行,不再截断内容
- 添加测试页面验证修复效果
2026-01-24 20:14:48 +08:00
4c0569afaf
feat: add WP-Markdown special format support
...
- Detect script tags with document.write() in extractMermaidCode
- Extract Mermaid code from document.write() content
- Support escape character decoding (backslash-n, quotes, etc)
- Add comprehensive test file for WP-Markdown format validation
- Requirements: 10.5
2026-01-23 23:49:24 +08:00
f36a96d3b6
feat: 实现 Mermaid 插件兼容层
...
- 添加插件检测函数(WP Githuber MD、Markdown Block、Code Syntax Block)
- 实现 Mermaid 库加载状态检测
- 添加重复加载防护逻辑,避免与插件冲突
- 在设置页显示插件兼容性状态
- 修改库加载逻辑,当检测到插件时跳过加载
- 在 JavaScript 端添加库加载状态标记
- Requirements: 9.1, 9.2, 9.3, 9.4, 9.5
2026-01-23 23:36:12 +08:00
1d5899ce7e
feat: 实现 Mermaid 库加载失败的降级处理机制
...
- 添加多 CDN 备选方案(jsdelivr、unpkg、本地镜像)
- 实现递归加载逻辑,主 CDN 失败时自动尝试备用 CDN
- 添加 onerror 事件处理,捕获库加载失败
- 所有 CDN 失败时显示友好的错误提示
- 在错误提示中保留原始代码供用户查看
- 添加详细的控制台日志输出
- 创建 PHP 和 HTML 测试文件验证功能
- 暴露 MermaidRenderer 到全局作用域供降级处理使用
Requirements: 1.4, 2.3, 7.1, 7.2, 7.3, 7.4, 7.5
2026-01-23 23:12:05 +08:00
43b695bd66
feat: 实现 Mermaid JavaScript 渲染引擎
...
- 在 argontheme.js 中添加完整的 Mermaid 渲染引擎模块
- 实现 Mermaid 配置初始化函数(支持主题自动切换)
- 实现主题获取函数(根据页面 darkmode 类返回对应主题)
- 实现代码块检测器(支持 div.mermaid、pre code.language-mermaid、pre[data-lang]、code.mermaid 四种格式)
- 实现批量渲染函数(一次 DOM 遍历,批量渲染所有图表)
- 实现错误处理机制(显示友好错误提示,保留原始代码)
- 实现样式增强(淡入动画、响应式 SVG)
- 实现主题切换监听器(监听 argon:theme-switched 事件和 darkmode class 变化)
- 实现图表重新渲染功能(主题切换时自动重新渲染)
- 实现渲染缓存机制(避免重复渲染)
- 添加调试日志系统(支持 debugMode 配置)
- 在 DOMContentLoaded 事件中自动初始化
- 暴露 ArgonMermaidRenderer 到全局(用于 PJAX 等场景)
- Requirements: 2.1, 2.5, 10.1, 10.2, 10.3
2026-01-23 23:02:25 +08:00
c0e21840f1
fix: 修复评论提交后表单状态未清除的问题
...
- 将表单重置代码移到 success 回调的最前面,确保优先执行
- 将表单重置与 UI 更新(插入评论、滚动)分离,避免异常影响表单重置
- 确保评论内容、验证码、Geetest 状态都能正确清除
- 修复需要刷新页面才能再次发送评论的问题
2026-01-23 16:41:02 +08:00
f2c807edf0
feat: 移除所有文章加载动画相关代码
...
- 移除pjax:afterGetContainers中的加载动画逻辑
- 移除pjax:beforeReplace中的动画清理代码
- 删除CSS中的loading-css-animation样式
- 删除CSS中的loading-dot动画样式
- 删除CSS中的post-pjax-loading相关样式
- 删除CSS中的post-list-pjax-loading相关样式
- 删除loading-animation关键帧动画
2026-01-23 15:45:57 +08:00
5ee608537e
fix: 完善文章加载动画的状态恢复逻辑
...
- 在pjax:beforeReplace中恢复所有隐藏卡片的opacity和pointer-events
- 确保页面切换后所有卡片都能正常显示和交互
- 保持无!important的纯净实现方式
2026-01-23 15:40:24 +08:00
c3acaea5e2
fix: 移除important并通过禁用transition解决问题
...
- 找到根本原因:post-preview的transition: all导致opacity被动画恢复
- 解决方案:临时禁用transition,设置opacity,然后恢复
- 添加footer隐藏功能
- 让被点击的卡片居中显示
- 清理时恢复footer和卡片位置
2026-01-23 15:37:57 +08:00
85af3dcdd1
fix: 通过attr设置style添加important强制隐藏
...
- 使用attr方法直接修改style属性
- 添加!important确保优先级最高
- 移除调试日志,保持代码简洁
- 这是最终解决方案
2026-01-23 15:32:03 +08:00
d0fff9952e
fix: 使用JavaScript强制隐藏其他文章卡片
...
- 添加直接CSS操作强制设置opacity为0
- 将opacity检查延迟100ms,等待CSS生效
- 这样可以绕过CSS选择器优先级问题
- 保留调试日志用于后续优化
2026-01-23 15:28:34 +08:00
6fad1244a8
fix: 移除important并添加详细调试日志
...
- 移除CSS中的!important,避免叠屎山
- 添加详细的console.log调试信息
- 输出每个卡片的opacity值和loading状态
- 方便通过浏览器控制台定位问题
2026-01-23 15:16:50 +08:00
aed0fb5c47
fix: 增强CSS选择器优先级并添加调试日志
...
- 为所有opacity相关CSS规则添加!important确保优先级
- 为.post-pjax-loading添加position: relative
- 添加console.log调试信息,方便排查问题
- 严格遵守设置项,只在启用进入文章动画时生效
2026-01-23 13:59:46 +08:00
dc11338ca2
fix: 修复文章加载动画功能无论是否启用都能正常工作
...
- 修改CSS选择器从.post-preview改为.post,匹配所有文章卡片
- 修改JavaScript选择器从article.post-preview改为article.post
- 添加#main.article-list限定,只在文章列表页生效
- 修复清理代码,确保能正确移除所有文章的加载状态
2026-01-23 13:50:36 +08:00
2de0cfb8de
refactor: 将TODO折叠按钮移至未完成任务下方
...
- 折叠按钮现在作为已完成任务区域的分隔栏显示
- 分隔栏包含已完成图标、文字和数量徽章
- 点击分隔栏可折叠/展开已完成任务
- 桌面端和移动端都采用相同的设计
- 优化了视觉层次,更符合用户使用习惯
2026-01-23 13:09:56 +08:00
9f8b560d20
feat: 为TODO列表添加折叠已完成任务功能
...
- 添加折叠/展开已完成任务的按钮,显示已完成数量
- 实现流畅的折叠展开动画效果(高度、透明度、位移)
- 优化删除和完成任务的动画,增加缩放效果
- 同时支持桌面端和移动端
- 折叠按钮在没有已完成任务时自动隐藏
- 使用 CSS transition 实现平滑的进入退出动画
2026-01-23 13:04:43 +08:00
00a6ee0db2
fix: 修复评论提交后无法再次提交的问题
...
- 评论提交成功后调用 geetestCaptcha.reset() 重置验证码实例
- 清空数学验证码输入框(之前错误地自动填充答案)
- 确保用户可以连续提交多条评论而无需刷新页面
2026-01-22 18:58:09 +08:00
adf3852a74
feat: 完善用户名-评论联合检测功能
...
- 改为立即同步执行 AI 检测,不再延迟
- 管理员可看到原用户名:用户-XXXXXXXX (原用户名: xxx)
- 添加前台删除评论功能(仅管理员可见)
- 删除按钮使用红色 outline-danger 样式
- 删除前弹出确认对话框
- 删除后淡出动画并移除评论元素
- 完整的成功/失败提示
2026-01-22 18:41:44 +08:00
0ae1472e79
fix: 修复开启进入文章动画时文章加载不正常的问题
...
- 在 pjax:beforeReplace 事件中清理文章列表的 PJAX 加载状态
- 移除 post-preview 元素的 loading 动画和 transform 样式
- 清理 post-list-pjax-loading 类,避免影响新页面
- 优化 post-full 动画,添加 transform-origin 确保动画流畅
- 通过 :not(.no-animation) 选择器支持禁用动画的场景
2026-01-22 15:57:22 +08:00
cb5c65d611
fix: 修复TODO在非停靠状态时不会折叠的问题
...
- 在所有关闭侧边栏的操作中添加折叠所有面板的逻辑
- 包括点击遮罩、关闭按钮、链接、搜索和目录跳转等场景
- 确保侧边栏关闭时所有折叠面板(TODO、文章目录等)都会自动收起
2026-01-22 15:40:02 +08:00
4515831d7f
chore: 清理临时文件和测试文件
...
- 删除临时测试文件 (test-*.html, test-*.js)
- 删除临时文档文件 (GPU_ACCELERATION_USAGE.md, RENDER_OPTIMIZER_USAGE.md)
- 删除测试 HTML 文件 (argon-memory-manager.test.html, argon-performance.test.html)
- 整理文档到 specs 目录下
2026-01-22 10:42:19 +08:00