insertChildNode

This commit is contained in:
KuroSago 2025-05-06 17:47:59 +08:00
parent baa4fdc8a2
commit 5dbe82bd29
5 changed files with 60 additions and 8 deletions

View File

@ -8,6 +8,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import InsertChildNode from "./ToolBar/InsertChildNode.vue"; import InsertChildNode from "./ToolBar/InsertChildNode.vue";
import ImportBtn from "./ToolBar/importBtn.vue"; import ImportBtn from "./ToolBar/ImportBtn.vue";
import ExportBtn from "./ToolBar/ExportBtn.vue"; import ExportBtn from "./ToolBar/ExportBtn.vue";
</script> </script>

View File

@ -1,7 +1,26 @@
<!-- 插入子节点 --> <!-- 插入子节点 -->
<template> <template>
<div class="w-[80px] h-[80px] border">新增子节点</div> <div
@click="addNewChildNode"
class="w-[80px] h-[80px] flex justify-center items-center border"
>
新增子节点
</div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
</script> import { useMindMapStore } from "../../store/index";
const { insertChildNode } = useMindMapStore();
async function addNewChildNode() {
insertChildNode(
async () => {
return {
uid: "newChildNode",
text: "新节点22222",
};
}
);
}
</script>

View File

@ -0,0 +1,35 @@
import { useMindMapStore } from "../../store/index";
/**
*
* @param beforeInsertCallback
* @param nodeOptions
* @returns Promise
*/
export async function insertChildNode(
beforeInsertCallback: () => Promise<({ uid: number | string, text: string } | boolean)>,
nodeOptions: Record<string, any> = { uid: 313123123, text: "新节点" }
) {
const { getMindMapInstance } = useMindMapStore();
const _nodeOptions = {
...nodeOptions,
}
try {
// 如果提供了回调函数,先执行回调
const result = await beforeInsertCallback();
if (!result) return; // 如果直接 false 则不再执行插入操作
if (result) {
Object.assign(_nodeOptions, result);
}
// 执行插入子节点命令
return getMindMapInstance()?.execCommand("INSERT_CHILD_NODE", false, [], _nodeOptions);
} catch (error) {
console.error("插入子节点失败:", error);
throw error;
}
}

View File

@ -3,6 +3,7 @@ import { ref } from "vue";
import { importFile } from "../helpers/import"; import { importFile } from "../helpers/import";
import { exportFile } from "../helpers/export"; import { exportFile } from "../helpers/export";
import { usePlugins } from "../helpers/usePlugin"; import { usePlugins } from "../helpers/usePlugin";
import { insertChildNode } from "../helpers/insertChildNode";
import MindMap from "simple-mind-map"; import MindMap from "simple-mind-map";
@ -32,7 +33,7 @@ export const useMindMapStore = defineStore(
} }
// 因为避免使用响应对象
function getMindMapInstance (): MindMap | null { function getMindMapInstance (): MindMap | null {
return mindMapInstance; return mindMapInstance;
} }
@ -45,6 +46,7 @@ export const useMindMapStore = defineStore(
importFile, importFile,
exportFile, exportFile,
insertChildNode,
// func // func
initMindMap, initMindMap,

View File

@ -1,6 +1,3 @@
// 导入全局声明文件
/// <reference path="./global.d.ts" />
declare module 'simple-mind-map' { declare module 'simple-mind-map' {
import MindMap from 'simple-mind-map/types/index'; import MindMap from 'simple-mind-map/types/index';
export default MindMap export default MindMap
@ -21,7 +18,6 @@ declare module 'simple-mind-map/src/plugins/Export' {
export default Export; export default Export;
} }
// simple-mind-map/src/parse/markdown
declare module 'simple-mind-map/src/parse/markdown' { declare module 'simple-mind-map/src/parse/markdown' {
import markdown from 'simple-mind-map/types/src/parse/markdown'; import markdown from 'simple-mind-map/types/src/parse/markdown';
export default markdown; export default markdown;