0.1.04 文件树与导入mmap

This commit is contained in:
liaibo
2026-01-07 18:38:56 +08:00
parent 103e36b1c5
commit 294d1d5fb1
28 changed files with 2703 additions and 442 deletions
@@ -464,10 +464,9 @@ const MindmapBlockView = ({
const onFsChange = () => {
const active = Boolean(document.fullscreenElement);
setFullscreenApiActive(active);
// 用户按 ESC 退出浏览器全屏时,同步退出沉浸式全屏界面
if (!active && localFullscreen) {
setLocalFullscreen(false);
}
// 注意:浏览器在打开原生对话框(例如 file picker / alert / confirm)时可能会自动退出
// Fullscreen API。此时不应退出“沉浸式全屏”UI,否则会导致用户在全屏编辑中执行导入/新建
// 等操作时被强制退出全屏。
};
document.addEventListener("fullscreenchange", onFsChange);
@@ -1432,7 +1431,7 @@ const MindmapBlockView = ({
const data = await xmindParser.default.parseXmindFile(blob, (content) => {
const list = content;
if (list.length > 1) {
window.alert("检测到 XMind 多画布,自动导入第一个画布。");
window.alert("检测到 XMind 多画布,自动导入第一个画布。");
}
return list.length > 0 ? list[0] : content;
});
@@ -1442,6 +1441,16 @@ const MindmapBlockView = ({
return;
}
// MindManager (.mmap)
if (ext === "mmap") {
const { parseMindManagerMmapFile } = await import("./mindmapMindManagerImport");
const data = await parseMindManagerMmapFile(file);
mindmap?.setData(data);
mindmap?.command.clearHistory();
debouncedPersist(data);
return;
}
// Markdown
if (ext === "md" || ext === "markdown") {
const { transformMarkdownTo } = await import(
@@ -1458,7 +1467,7 @@ const MindmapBlockView = ({
return;
}
window.alert("暂不支持该文件类型,请选择 .json / .smm / .xmind / .md");
window.alert("暂不支持该文件类型,请选择 .json / .smm / .xmind / .mmap / .md");
} catch (error) {
console.error(error);
window.alert("导入失败:文件格式或内容错误");
@@ -1798,7 +1807,7 @@ const MindmapBlockView = ({
>
<div className="fixed left-0 right-0 top-0 z-30 flex h-12 items-center justify-between border-b border-gray-200 bg-white/90 px-4 backdrop-blur">
<div className="text-sm font-medium text-gray-700">
{fullscreenApiActive ? "(全屏)" : ""}
{fullscreenApiActive ? "·真" : ""}
</div>
<button
type="button"