ja.md
July 25, 2026 · View on GitHub
Mind Elixir Core
English | 中文 | Español | Français | Português | Русский | 日本語 | 한국어
Mind Elixirは、オープンソースのJavaScriptマインドマップコアです。お好みのフロントエンドフレームワークと組み合わせて使用できます。
特徴
🎨 ユーザーエクスペリエンス
- 滑らかな操作感 - スムーズで直感的な操作性
- 洗練されたデザイン - 清潔でモダンなインターフェース
- モバイル対応 - モバイルデバイスのタッチイベントをサポート
- 効率的なショートカット - パワーユーザー向けのキーボードショートカット
⚡ パフォーマンスとアーキテクチャ
- 軽量 - 最小バンドルサイズ
- 高性能 - 大規模なマインドマップ用に最適化
- フレームワーク非依存 - 任意のフロントエンドフレームワークで動作
- プラグイン可能 - 拡張可能なアーキテクチャ
🛠️ コア機能
- インタラクティブ編集 - 組み込みのドラッグ&ドロップ / ノード編集機能
- 一括操作 - 複数ノードの選択と操作
- 元に戻す/やり直し - 完全な操作履歴
- ノード接続と要約 - カスタムノードリンクとコンテンツ要約
📤 エクスポートとカスタマイゼーション
- 複数のエクスポート形式 - SVG / PNG / HTML エクスポート
- 簡単なスタイリング - CSS変数でマインドマップをカスタマイズ
- テーマサポート - 組み込みテーマとカスタムスタイリング
目次
デモを試す

プレイグラウンド
- Vanilla JS - https://codepen.io/ssshooter/pen/vEOqWjE
- React - https://codesandbox.io/p/devbox/mind-elixir-3-x-react-18-x-forked-f3mtcd
- Vue3 - https://codesandbox.io/p/sandbox/mind-elixir-3-x-vue3-lth484
ドキュメント
使い方
インストール
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以降、dataはoptionsではなく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の変更を監視しません。スキームが変更された場合は、テーマを手動で変更してください。
ショートカット
詳細については、ショートカットガイドを参照してください。
誰が使っているか
エコシステム
- @mind-elixir/node-menu
- @mind-elixir/node-menu-neo
- @mind-elixir/export-xmind
- @mind-elixir/export-html
- mind-elixir-react
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.js が dist/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への貢献に感謝します!あなたのサポートと献身がこのプロジェクトをより良くします。