From a15bd114147a94af98c336a32b91382390f3af4a Mon Sep 17 00:00:00 2001 From: KuroSago Date: Tue, 6 May 2025 18:38:27 +0800 Subject: [PATCH] =?UTF-8?q?//=20=E7=9B=91=E5=90=AC=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=BF=80=E6=B4=BB=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mind-map/src/store/helpers/usePlugin.ts | 3 +++ .../mind-map/src/store/modules/mindMap.ts | 18 ++++++++++++++++-- web3/packages/mind-map/src/types/index.d.ts | 4 ++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/web3/packages/mind-map/src/store/helpers/usePlugin.ts b/web3/packages/mind-map/src/store/helpers/usePlugin.ts index dd020371..351f0148 100644 --- a/web3/packages/mind-map/src/store/helpers/usePlugin.ts +++ b/web3/packages/mind-map/src/store/helpers/usePlugin.ts @@ -6,10 +6,13 @@ import MindMap from "simple-mind-map"; import ExportPDF from 'simple-mind-map/src/plugins/ExportPDF' import ExportXMind from 'simple-mind-map/src/plugins/ExportXMind' import Export from 'simple-mind-map/src/plugins/Export' +import MindMapLayoutPro from 'simple-mind-map/src/plugins/MindMapLayoutPro' + export function usePlugins(MindMapConstructor: typeof MindMap) { // 注册插件 MindMapConstructor.usePlugin(ExportPDF); MindMapConstructor.usePlugin(ExportXMind); MindMapConstructor.usePlugin(Export); + MindMapConstructor.usePlugin(MindMapLayoutPro) } \ No newline at end of file diff --git a/web3/packages/mind-map/src/store/modules/mindMap.ts b/web3/packages/mind-map/src/store/modules/mindMap.ts index 65f4c980..453ca08b 100644 --- a/web3/packages/mind-map/src/store/modules/mindMap.ts +++ b/web3/packages/mind-map/src/store/modules/mindMap.ts @@ -1,14 +1,15 @@ import { defineStore } from "pinia"; -import { ref } from "vue"; +import { ref , shallowRef } from "vue"; import { importFile } from "../helpers/import"; import { exportFile } from "../helpers/export"; import { usePlugins } from "../helpers/usePlugin"; import { insertChildNode } from "../helpers/insertChildNode"; import { insertSiblingNode } from "../helpers/insertSiblingNode"; +import type MindMapNode from "simple-mind-map/types/src/core/render/node/MindMapNode"; + import MindMap from "simple-mind-map"; -// 使用 defineStore 创建 store export const useMindMapStore = defineStore( "mindMapStore", () => { @@ -16,12 +17,17 @@ export const useMindMapStore = defineStore( const mindMapData = ref(null); + // 激活状态节点 + const activeNodes = shallowRef([]) + + usePlugins(MindMap); function initMindMap(container: HTMLElement) { mindMapInstance = new MindMap({ el: container, data : null, + layout: 'mindMap', fit: false, nodeTextEditZIndex: 1000, nodeNoteTooltipZIndex: 1000, @@ -30,10 +36,18 @@ export const useMindMapStore = defineStore( demonstrateConfig: { openBlankMode: true }, + }); + + // 监听节点激活事件 + mindMapInstance?.on('node_active', (_ : MindMapNode, activeNodeList : MindMapNode[]) => { + activeNodes.value = activeNodeList + }) } + + // 因为避免使用响应对象 function getMindMapInstance (): MindMap | null { return mindMapInstance; diff --git a/web3/packages/mind-map/src/types/index.d.ts b/web3/packages/mind-map/src/types/index.d.ts index f6ab991d..2e6a163e 100644 --- a/web3/packages/mind-map/src/types/index.d.ts +++ b/web3/packages/mind-map/src/types/index.d.ts @@ -22,4 +22,8 @@ declare module 'simple-mind-map/src/parse/markdown' { import markdown from 'simple-mind-map/types/src/parse/markdown'; export default markdown; } +declare module 'simple-mind-map/src/plugins/MindMapLayoutPro' { + import MindMapLayoutPro from 'simple-mind-map/types/src/plugins/MindMapLayoutPro'; + export default MindMapLayoutPro; +}