ja.md

July 25, 2026 · View on GitHub

mindelixir logo2

Mind Elixir Core

SSShooter%2Fmind-elixir-core | Trendshift

version license code quality dependency-count package size

English | 中文 | Español | Français | Português | Русский | 日本語 | 한국어

Mind Elixirは、オープンソースのJavaScriptマインドマップコアです。お好みのフロントエンドフレームワークと組み合わせて使用できます。

特徴

🎨 ユーザーエクスペリエンス

  • 滑らかな操作感 - スムーズで直感的な操作性
  • 洗練されたデザイン - 清潔でモダンなインターフェース
  • モバイル対応 - モバイルデバイスのタッチイベントをサポート
  • 効率的なショートカット - パワーユーザー向けのキーボードショートカット

パフォーマンスとアーキテクチャ

  • 軽量 - 最小バンドルサイズ
  • 高性能 - 大規模なマインドマップ用に最適化
  • フレームワーク非依存 - 任意のフロントエンドフレームワークで動作
  • プラグイン可能 - 拡張可能なアーキテクチャ

🛠️ コア機能

  • インタラクティブ編集 - 組み込みのドラッグ&ドロップ / ノード編集機能
  • 一括操作 - 複数ノードの選択と操作
  • 元に戻す/やり直し - 完全な操作履歴
  • ノード接続と要約 - カスタムノードリンクとコンテンツ要約

📤 エクスポートとカスタマイゼーション

  • 複数のエクスポート形式 - SVG / PNG / HTML エクスポート
  • 簡単なスタイリング - CSS変数でマインドマップをカスタマイズ
  • テーマサポート - 組み込みテーマとカスタムスタイリング

v5 破壊的変更

目次

デモを試す

mindelixir

https://mind-elixir.com/

プレイグラウンド

ドキュメント

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

使い方

インストール

NPM

npm i mind-elixir -S
import MindElixir from 'mind-elixir'

スクリプトタグ

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

CSSファイルに追加:

@import 'https://cdn.jsdelivr.net/npm/mind-elixir/dist/style.css';

初期化

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

重要な変更 バージョン1.0.0以降、dataoptionsではなくinit()に渡す必要があります。

import MindElixir from 'mind-elixir'
import { ja } from 'mind-elixir/i18n'
import example from 'mind-elixir/dist/example1'

let options = {
  el: '#map', // またはHTMLDivElement
  direction: MindElixir.LEFT,
  draggable: true, // デフォルトはtrue
  contextMenu: true, // デフォルトはtrue
  toolBar: true, // デフォルトはtrue
  keypress: true, // デフォルトはtrue
  overflowHidden: false, // デフォルトはfalse
  mouseSelectionButton: 0, // 0は左クリック、2は右クリック、デフォルトは0
  contextMenu: {
    locale: ja,
    focus: true,
    link: true,
    extend: [
      {
        name: 'ノード編集',
        onclick: () => {
          alert('拡張メニュー')
        },
      },
    ],
  },
  before: {
    insertSibling(el, obj) {
      return true
    },
    async addChild(el, obj) {
      await sleep()
      return true
    },
  },
}

let mind = new MindElixir(options)

mind.install(plugin) // プラグインのインストール

// 新しいマップデータの作成
const data = MindElixir.new('新しいトピック')
// または `example`
// または `.getData()`の戻り値
mind.init(data)

// ノードの取得
MindElixir.E('node-id')

データ構造

// 現在のノードデータ構造
const nodeData = {
  topic: 'ノードのトピック',
  id: 'bd1c24420cd2c2f5',
  style: { fontSize: '32', color: '#3298db', background: '#ecf0f1' },
  expanded: true,
  parent: null,
  tags: ['タグ'],
  icons: ['😀'],
  hyperLink: 'https://github.com/ssshooter/mind-elixir-core',
  image: {
    url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png', // 必須
    height: 90, // 必須
    width: 90, // 必須
  },
  children: [
    {
      topic: '子ノード',
      id: 'xxxx',
      // ...
    },
  ],
}

イベントハンドリング

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('selectNodes', nodes => {
  console.log(nodes)
})

mind.bus.addListener('expandNode', node => {
  console.log('expandNode: ', node)
})

データのエクスポートとインポート

// データのエクスポート
const data = mind.getData() // JavaScriptオブジェクト、src/example.jsを参照
mind.getDataString() // オブジェクトを文字列化

// データのインポート
// 初期化
let mind = new MindElixir(options)
mind.init(data)
// データの更新
mind.refresh(data)

Markdown サポート

Mind Elixirはカスタムmarkdown解析をサポートしています:

// Markdownを無効化(デフォルト)
let mind = new MindElixir({
  // markdownオプションを省略 - markdown処理なし
})

// カスタムmarkdownパーサーを使用
let mind = new MindElixir({
  markdown: text => {
    // カスタムmarkdown実装
    return text
      .replace(/\*\*(.*?)\*\*/g, '<strong>\$1</strong>')
      .replace(/\*(.*?)\*/g, '<em>\$1</em>')
      .replace(/`(.*?)`/g, '<code>\$1</code>')
  },
})

// 任意のmarkdownライブラリを使用(marked、markdown-itなど)
import { marked } from 'marked'
let mind = new MindElixir({
  markdown: text => marked(text),
})

操作ガード

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

画像としてエクスポート

@zumer/snapdomをインストールし、次に実行します:

import { snapdom } from '@zumer/snapdom'

const download = async () => {
  const result = await snapdom(mind.nodes)
  await result.download({ format: 'jpg', filename: 'my-capture' })
}

他のエクスポート形式と詳細なオプションについては、Mind Elixirドキュメントを参照してください。

非推奨API

⚠️ 非推奨mind.exportSvg()メソッドは非推奨であり、将来のバージョンで削除される予定です。

// 非推奨 - 新規プロジェクトでは使用しないでください
const svgData = await mind.exportSvg()

テーマ

const options = {
  // ...
  theme: {
    name: 'Dark',
    // メインラインのカラーパレット
    palette: ['#848FA0', '#748BE9', '#D2F9FE', '#4145A5', '#789AFA', '#706CF4', '#EF987F', '#775DD5', '#FCEECF', '#DA7FBC'],
    // CSS変数の上書き
    cssVar: {
      '--main-color': '#ffffff',
      '--main-bgcolor': '#4c4f69',
      '--color': '#cccccc',
      '--bgcolor': '#252526',
      '--panel-color': '255, 255, 255',
      '--panel-bgcolor': '45, 55, 72',
    },
    // すべての変数は/src/index.lessを参照
  },
  // ...
}

// ...

mind.changeTheme({
  name: 'Latte',
  palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'],
  cssVar: {
    '--main-color': '#444446',
    '--main-bgcolor': '#ffffff',
    '--color': '#777777',
    '--bgcolor': '#f6f6f6',
  },
})

Mind Elixirはprefers-color-schemeの変更を監視しません。スキームが変更された場合は、テーマを手動で変更してください。

ショートカット

詳細については、ショートカットガイドを参照してください。

誰が使っているか

エコシステム

PRsは大歓迎です!

開発

pnpm i
pnpm dev

dev.dist.tsで生成されたファイルをテストします:

pnpm build
pnpm link ./

ドキュメントを更新します:

# api-extractorをインストール
pnpm install -g @microsoft/api-extractor
# /src/docs.tsを維持
# ドキュメントを生成
pnpm doc
pnpm doc:md

MindElixir クラスメンバーの再生成:

MindElixir クラスのオプションとメソッドの宣言(src/index.ts// #region GENERATED ブロック)は、gen-members.jsdist/types のコンパイル済み宣言から生成します。これにより、公開される .d.ts と API ドキュメントに完全に展開されたシグネチャが表示されます。ミックスインされるメソッド(src/methods.ts)や Options インターフェース(src/types/index.ts)を変更した後は、次を実行してください:

pnpm tsc         # 最新の dist/types を出力
pnpm gen:members # src/index.ts の生成ブロックを書き換え

src/index.ts 末尾のコンパイル時ガードにより、ブロックが同期していない場合は tsc が失敗するため、再生成のし忘れは検出されます。

DeepWiki を使用してMind Elixirについて詳しく学ぶ

謝辞

貢献者

Mind Elixirへの貢献に感謝します!あなたのサポートと献身がこのプロジェクトをより良くします。