Private
Public Access
1
0

重构:文件系统模块化架构,增强 Markdown 渲染

- 拆分 FileSystem.vue 为模块化组件架构
- 新增 Markdown Mermaid 图表渲染支持
- 新增 180+ 编程语言代码高亮
- 修复编辑/预览模式切换渲染问题
- 优化亮色/暗色模式主题适配
- 新增 TypeScript 类型定义
This commit is contained in:
2026-02-04 03:31:22 +08:00
parent eb2cbad17b
commit a5d30684ed
119 changed files with 11244 additions and 12042 deletions

View File

@@ -26,6 +26,7 @@ export const STORAGE_KEYS = {
SIDEBAR_VISIBLE: 'app-filesystem-sidebar-visible',
FAVORITE_FILES: 'app-filesystem-favorite-files',
EDIT_MODE: 'app-filesystem-edit-mode', // HTML/Markdown 编辑模式状态
FILE_DRAFT: 'app-filesystem-file-draft', // 文件草稿
},
// 设备测试模块
@@ -56,7 +57,8 @@ export const FILE_EXTENSIONS = {
// 视频文件
VIDEO_BROWSER: ['mp4', 'webm', 'ogg', 'mov', 'm4v'], // 浏览器原生支持
VIDEO_EXTERNAL: ['avi', 'mkv', 'wmv', 'flv', 'rmvb', '3gp', 'ts', 'mts'], // 需要外部播放器
VIDEO_EXTERNAL: ['avi', 'mkv', 'wmv', 'flv', 'rmvb', '3gp', 'mts'], // 需要外部播放器(注意:不用 'ts' 避免 TypeScript 冲突)
VIDEO: ['mp4', 'webm', 'ogg', 'mov', 'm4v', 'avi', 'mkv', 'wmv', 'flv', 'rmvb', '3gp', 'mts'], // 所有视频
// 音频文件
AUDIO: ['mp3', 'wav', 'flac', 'aac', 'ogg', 'm4a', 'opus', 'webm'],
@@ -69,10 +71,16 @@ export const FILE_EXTENSIONS = {
// 代码文件
CODE: [
'js', 'ts', 'jsx', 'tsx', 'vue', 'py', 'java', 'c', 'cpp', 'h', 'go', 'rs', 'php', 'rb', 'cs', 'swift', 'kt',
'scala', 'css', 'scss', 'sass', 'less', 'json', 'xml', 'yaml', 'yml', 'sql', 'sh', 'bat', 'ps1'
'js', 'ts', 'jsx', 'tsx', 'cts', 'mts', 'cjs', 'mjs',
'vue', 'py', 'java', 'c', 'cpp', 'h', 'go', 'rs', 'php', 'rb', 'cs', 'swift', 'kt',
'scala', 'css', 'scss', 'sass', 'less', 'json', 'xml', 'yaml', 'yml', 'sql', 'sh', 'bat', 'ps1',
'flow', 'props', 'pch', 'cc', 'cxx', 'hpp', 'hxx', 'tcc', 'defs', 'makefile', 'mk', 'cmake',
'tex', 'm', 'r', 'matlab', 'latex', 'rst', 'adoc'
],
// 纯文本文件
TEXT: ['txt', 'text', 'log', 'md', 'markdown', 'rst', 'adoc', 'tex', 'msg', 'csv', 'tsv'],
// 标记语言文件(用于特殊预览)
MARKUP: ['html', 'htm', 'md', 'markdown'],
@@ -316,3 +324,45 @@ export const FILE_SIZE_THRESHOLDS = {
LARGE_FILE: 100 * 1024, // 100KB - 大文件检测阈值
MAX_TEXT_DISPLAY: 5 * 1024 * 1024, // 5MB - 文本文件最大显示大小
}
/**
* UI 文本常量
* @description 界面上显示的固定文本
*/
export const UI_TEXT = {
// 对话框标题
CREATE_FILE: '📄 新建文件',
CREATE_FOLDER: '📁 新建文件夹',
RENAME_FILE: '重命名文件',
DELETE_CONFIRM: '确认删除',
// 按钮文本
CONFIRM: '确定',
CANCEL: '取消',
CREATE: '创建',
SAVE: '保存',
DELETE: '删除',
// 提示信息
FILE_NAME_EMPTY: '请输入内容',
FILE_NAME_INVALID: '文件名包含非法字符',
FOLDER_NAME_INVALID: '文件夹名包含非法字符',
FILE_EXISTS: '文件已存在',
FOLDER_EXISTS: '文件夹已存在',
SELECT_DIRECTORY: '请先选择一个目录',
CREATE_SUCCESS: '创建成功',
CREATE_FAILED: '创建失败',
// 输入提示
ENTER_FILE_NAME: '请输入文件名(如: todo.md',
ENTER_FOLDER_NAME: '请输入文件夹名称',
}
/**
* 验证规则
* @description 数据验证的正则表达式规则
*/
export const VALIDATION_RULES = {
// Windows 文件名非法字符
ILLEGAL_FILE_NAME_CHARS: /[<>:"/\\|?*]/,
}