dioxus-mind-elixir
Rust + Dioxus 脑图组件,基于 Mind Elixir Core 的数据与交互设计,以 Rust 惯用方式重写。
0.1.0 首版发布候选,Rust 1.85+ / Dioxus 0.7.10。包含纯文本脑图、插件、共享大纲、XMind 和 Web 图片/静态 HTML 导出。当前正在完成 crates.io 发布准备,尚未上传。
平台边界: Web 已通过 Chromium 自动化;macOS Desktop 已做运行检查。Desktop 实时图片/HTML 捕获返回明确的平台错误;真实 OS 输入法候选确认、Safari 与 Windows/Linux Desktop 运行仍待验证。此版本不承诺 Mind Elixir 全功能兼容。
当前可运行:四方向布局、严格 JSON、节点增删改/复制/批量移动、折叠、快照撤销/重做、共享状态、纯文本多行编辑、视口平移/缩放/居中、主题与可继承 CSS 变量。另含大纲、节点拖放、多选/框选、菜单、结构快捷键与导出。
运行核心试验台
需要 Rust 1.85+、Dioxus CLI 0.7.10;macOS Desktop 需要 Xcode Command Line Tools。首次 Web 构建会由 dx 安装所需构建工具。
# Web
# 或 Desktop;分别运行,不要同时启用两个 renderer
也可从仓库根目录执行 cargo run -p mind-elixir-core-tests --features desktop。Desktop 推荐使用 dx,以生成完整应用包。示例样式通过 include_str! 随 Rust 编译,无需 npm 或复制 assets。
第一阶段只读示例继续保留在 examples/basic。核心自动化独立运行:
详见 核心测试说明 和 Rust 浏览器回归。
最小接入
正式上传 crates.io 后可通过以下配置接入;发布前可用本地 path 验证。renderer 由宿主选择:
[]
= { = "0.1.0", = ["web"] }
= { = "0.7.10", = false, = ["web", "launch"] }
use *;
use ;
库不默认启用 renderer、日志或开发工具。Web 宿主在关闭 Dioxus 默认特性时,可以启用本库 web feature,补齐 Dioxus 0.7.10 history 对 web-sys/Location 的要求,并启用实际 CSS 捕获:
= { = "0.1.0", = ["web"] }
只使用核心 Web 视图时,也可像本仓库 basic 示例一样单独启用 web-sys/Location。Desktop 宿主启用 Dioxus 的 desktop feature,不启用本库 web feature。
| 能力 | Web(web feature) |
Desktop |
|---|---|---|
| 四方向脑图、共享大纲、操作/历史、插件 | Chromium 已验证 | macOS 已做运行检查 |
| JSON、文本、XMind、宿主保存接口 | 支持 | 支持 |
| 实际 CSS/字体的 SVG、PNG、JPEG、WebP、静态 HTML 捕获 | 支持;受字体/CORS、资源、浏览器编码器限制 | 暂不支持,返回平台错误 |
| 导出 HTML 继续编辑 | 静态查看,不含编辑器 | 静态查看,不含编辑器 |
完整行为差异、字段兼容和未验证项见 第三阶段记录。
样式定制
变量可放在组件、父容器或外部样式表上,库不在根节点重置变量:
}
完整清单见 CSS 变量。Dioxus resize 事件触发重新测量;组件的 measurement_revision 提供显式重测入口。组件原生支持视口缩放;仅做外部位置/transform 动画时需显式重测。
检查
core 和 plugins 均有独立可运行的测试应用和浏览器回归包。组件测试代码和浏览器客户端用 Rust 编写,启动脚本仅负责进程编排。
设计与许可
- 首版发布准备记录
- 变更日志
- 第三阶段实现、官方插件版本、平台与验证边界
- 独立插件应用 / 插件浏览器回归
- 实施计划
- 第二阶段记录、兼容范围与待验收项
- 第一阶段记录
- 来源与行为映射
- MIT:本项目许可、上游许可、来源声明
项目不维护手写 TS/JS 功能代码;Dioxus/WebView/WASM 工具链仍有自己的运行支持和生成绑定。
运行插件试验台
# Desktop 单独运行:dx serve --platform desktop
use_plugins(handle, Plugin::builtins()) 安装能力并保留返回的 guard;Toolbar、EditableMindMap、Outline 使用同一个 handle。导出为 plugins::export::ExportFile,宿主可使用 save_with 替换保存接口。Web 实时捕获需依赖启用 web feature,Desktop 不启用此 feature。