# lin-mind

> a mind plugins secondary development from lu-mind-mapping

Latest version **1.3.3** (published 2023-06-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install lin-mind
pnpm add lin-mind
yarn add lin-mind
bun add lin-mind
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.3 |
| Published | 2023-06-12 |
| First published | 2023-04-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 753.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | linloop |
| Maintainers | linloop |
| Keywords | mind-plugins |

## Links

- npm: https://www.npmjs.com/package/lin-mind
- npm.io page: https://npm.io/package/lin-mind

## Recent versions

- 1.3.3 (latest) — 2023-06-12
- 1.3.2 — 2023-06-07
- 1.3.1 — 2023-06-07
- 1.3.0 — 2023-06-05
- 1.2.27 — 2023-06-05
- 1.2.26 — 2023-06-05
- 1.2.25 — 2023-06-05
- 1.2.24 — 2023-06-01
- 1.2.23 — 2023-06-01
- 1.2.22 — 2023-05-31
- 1.2.21 — 2023-05-31
- 1.2.20 — 2023-05-31
- 1.2.19 — 2023-05-31
- 1.2.18 — 2023-05-30
- 1.2.17 — 2023-05-30
- … 59 more at https://npm.io/package/lin-mind/versions

## README

## lin-mind

lin-mind 是一个无框架依赖的思维导图内核,本项目是基于[Mind elixir](https://github.com/ssshooter/mind-elixir-core)的功能上进行二次开发，
所以本项目大部分功能与用法均与Mind elixir相同。

## 建议
本项目是根据公司业务需求，在原项目([Mind elixir](https://github.com/ssshooter/mind-elixir-core))进行的二次开发。而且，本项目的功能也可能会随业务需求不定时进行改动，如果
需要一个稳定的版本，强烈建议使用原项目[Mind elixir](https://github.com/ssshooter/mind-elixir-core)，个人认为该项目已满足大部分日常使用。

## 如何使用

### 安装

#### NPM

```bash
npm i lin-mind -S
```

```javascript
import MindElixir, { E } from 'lin-mind'
```

### HTML 结构

```html
<div id="map"></div>
<style>
  #map {
    height: 500px;
    width: 100%;
  }
</style>
```

### 初始化

```javascript
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')

```

### 数据结构

```javascript
// 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',
}
```

### 事件处理

```javascript
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)
})
```

### 数据导出

```javascript
mind.getAllData() // javascript object, see src/example.js
mind.getAllDataString() // stringify object
mind.getAllDataMd() // markdown
```

### 输出图片

**WIP**

```javascript
import painter from 'lin-mind/painter'
painter.exportSvg()
painter.exportPng()
```

### 操作拦截

```javascript
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
    },
  },
})
```


## 感谢

[canvg](https://github.com/canvg/canvg)  
[Mind elixir](https://github.com/ssshooter/mind-elixir-core)  
[lu-mind-mapping](https://github.com/luchenwei9266/lu-mind-mapping.git)

---
_Source: https://npm.io/package/lin-mind · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
