lin-mind
v1.3.3
Published
a mind plugins secondary development from lu-mind-mapping
Downloads
38
Readme
lin-mind
lin-mind 是一个无框架依赖的思维导图内核,本项目是基于Mind elixir的功能上进行二次开发, 所以本项目大部分功能与用法均与Mind elixir相同。
建议
本项目是根据公司业务需求,在原项目(Mind elixir)进行的二次开发。而且,本项目的功能也可能会随业务需求不定时进行改动,如果 需要一个稳定的版本,强烈建议使用原项目Mind elixir,个人认为该项目已满足大部分日常使用。
如何使用
安装
NPM
npm i lin-mind -S
import MindElixir, { E } from 'lin-mind'
HTML 结构
<div id="map"></div>
<style>
#map {
height: 500px;
width: 100%;
}
</style>
初始化
import MindElixir, { E } from 'lin-mind'
import { exportSvg, exportPng } from './painter'
import example from './example1'
let options = {
el: '#map',
direction: MindElixir.LEFT,
// create new map data
data: MindElixir.new('new topic') or example,
// the data return from `.getAllData()`
draggable: true, // default true
contextMenu: true, // default true
toolBar: true, // default true
nodeMenu: true, // default true
keypress: true, // default true
locale: 'en', // [zh_CN,zh_TW,en,ja,pt] waiting for PRs
overflowHidden: false, // default false
primaryLinkStyle: 2, // [1,2] default 1
primaryNodeVerticalGap: 15, // default 25
primaryNodeHorizontalGap: 15, // default 65
contextMenuOption: {
focus: true,
link: true,
extend: [
{
name: 'Node edit',
onclick: () => {
alert('extend menu')
},
},
],
},
allowUndo: false,
before: {
insertSibling(el, obj) {
return true
},
async addChild(el, obj) {
await sleep()
return true
},
},
}
let mind = new MindElixir(options)
mind.init()
// get a node
E('node-id')
数据结构
// whole node data structure up to now
{
topic: 'node topic',
id: 'bd1c24420cd2c2f5',
style: { fontSize: '32', color: '#3298db', background: '#ecf0f1' },
parent: null,
tags: ['Tag'],
icons: ['😀'],
hyperLink: 'https://github.com/ssshooter/mind-elixir-core',
}
事件处理
mind.bus.addListener('operation', operation => {
console.log(operation)
// return {
// name: action name,
// obj: target object
// }
// name: [insertSibling|addChild|removeNode|beginEdit|finishEdit]
// obj: target
// name: moveNode
// obj: {from:target1,to:target2}
})
mind.bus.addListener('selectNode', node => {
console.log(node)
})
mind.bus.addListener('expandNode', node => {
console.log('expandNode: ', node)
})
数据导出
mind.getAllData() // javascript object, see src/example.js
mind.getAllDataString() // stringify object
mind.getAllDataMd() // markdown
输出图片
WIP
import painter from 'lin-mind/painter'
painter.exportSvg()
painter.exportPng()
操作拦截
let mind = new MindElixir({
...
before: {
insertSibling(el, obj) {
console.log(el, obj)
if (this.currentNode.nodeObj.parent.root) {
return false
}
return true
},
async addChild(el, obj) {
await sleep()
if (this.currentNode.nodeObj.parent.root) {
return false
}
return true
},
},
})