New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

zb-mind-elixir

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zb-mind-elixir

Mind elixir is a free open source mind map core.

latest
Source
npmnpm
Version
1.0.5
Version published
Weekly downloads
6
Maintainers
1
Weekly downloads
 
Created
Source

illustrate

The content is based on the original author and the following configuration items have been added:

{
  "lastEdit": true, // Can only the last level node change the description
  "customStyle": true, // Do need to change the style, label, and URL functions
  "maxDepth": 5, // Maximum depth of child nodes created
  "memoName": "功能描述" // Describe the name of the field, only change the display, and the returned data is still memo
}

mindelixir logo

version license code quality dependency-count dependency-count

中文 README

Mind elixir is a free open source mind map core.

  • High performance
  • Lightweight
  • Framework agnostic
  • Pluginable
  • Build-in drag and drop / node edit plugin
Table of Contents

Doc

https://doc.mind-elixir.com/

Try now

mindelixir

https://mind-elixir.com/

Playground

Vanilla JS

https://codepen.io/ssshooter/pen/GVQRYK

Use with React

https://codesandbox.io/s/mind-elixir-react-9sisb

Use with Vue

https://codesandbox.io/s/mind-elixir-vue-nqjjl

Use with Vue3

https://codesandbox.io/s/mind-elixir-vue3-dtcq6u

Usage

Install

NPM

npm i mind-elixir -S
import MindElixir, { E } from 'mind-elixir'

Script tag

<script src="https://cdn.jsdelivr.net/npm/mind-elixir/dist/MindElixir.js"></script>

HTML structure

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

Init

Breaking Change since 1.0.0, data should be passed to init(), not options.

import MindElixir, { E } from 'mind-elixir'
import example from 'mind-elixir/dist/example1'

let options = {
  el: '#map', // or HTMLDivElement
  direction: MindElixir.LEFT,
  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,ru] waiting for PRs
  lastEdit: true, // Can only the last level node change the description
  customStyle: true, // Do need to change the style, label, and URL functions
  maxDepth: 5, // Maximum depth of child nodes created
  memoName: '功能描述', // Describe the name of the field, only change the display, and the returned data is still memo
  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.install(plugin) // install your plugin

// create new map data
const data = MindElixir.new('new topic')
// or `example`
// or the data return from `.getAllData()`
mind.init(data)

// get a node
E('node-id')

Data Structure

// whole node data structure up to now
nodeData = {
  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',
  image: {
    url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo.png', // required
    // you need to query the height and width of the image and calculate the appropriate value to display the image
    height: 90, // required
    width: 300, // required
  },
  children: [
    {
      topic: 'child',
      id: 'xxxx',
      // ...
    },
  ],
}

Event Handling

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

Data Export And Import

// data export
const data = mind.getAllData() // javascript object, see src/example.js
mind.getAllDataString() // stringify object
mind.getAllDataMd() // markdown

// data import
// initiate
let mind = new MindElixir(options)
mind.init(data)
// data update
mind.refresh(data)

Operation Guards

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

Not only core

FAQs

Package last updated on 04 May 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts