mind-elixir 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/dist/LayoutSsr.iife.js +1 -1
- package/dist/LayoutSsr.js +32 -31
- package/dist/MindElixir.css +1 -0
- package/dist/MindElixir.iife.js +4 -4
- package/dist/MindElixir.js +911 -954
- package/dist/MindElixirLite.css +1 -0
- package/dist/MindElixirLite.iife.js +4 -4
- package/dist/MindElixirLite.js +528 -585
- package/dist/example.iife.js +3 -3
- package/dist/example.js +1 -1
- package/dist/types/arrow.d.ts +1 -1
- package/dist/types/docs.d.ts +2 -2
- package/dist/types/index.d.ts +11 -11
- package/dist/types/methods.d.ts +39 -39
- package/dist/types/nodeOperation.d.ts +1 -1
- package/dist/types/plugin/keypress.d.ts +1 -1
- package/dist/types/summary.d.ts +1 -1
- package/dist/types/types/index.d.ts +9 -8
- package/dist/types/utils/index.d.ts +4 -404
- package/dist/types/utils/pubsub.d.ts +3 -2
- package/dist/types/utils/svg.d.ts +1 -1
- package/dist/types/viselect/src/EventEmitter.d.ts +13 -0
- package/dist/types/viselect/src/index.d.ts +112 -0
- package/dist/types/viselect/src/types.d.ts +85 -0
- package/dist/types/viselect/src/utils/arrayify.d.ts +1 -0
- package/dist/types/viselect/src/utils/browser.d.ts +2 -0
- package/dist/types/viselect/src/utils/css.d.ts +10 -0
- package/dist/types/viselect/src/utils/domRect.d.ts +1 -0
- package/dist/types/viselect/src/utils/events.d.ts +29 -0
- package/dist/types/viselect/src/utils/frames.d.ts +7 -0
- package/dist/types/viselect/src/utils/intersects.d.ts +9 -0
- package/dist/types/viselect/src/utils/matchesTrigger.d.ts +16 -0
- package/dist/types/viselect/src/utils/selectAll.d.ts +8 -0
- package/package.json +40 -36
- package/readme.md +430 -432
- package/dist/style.css +0 -1
- package/readme/es.md +0 -430
- package/readme/fr.md +0 -430
- package/readme/ja.md +0 -429
- package/readme/ko.md +0 -430
- package/readme/pt.md +0 -430
- package/readme/ru.md +0 -430
- package/readme/zh.md +0 -430
package/readme/ja.md
DELETED
|
@@ -1,429 +0,0 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="https://docs.mind-elixir.com" target="_blank" rel="noopener noreferrer">
|
|
3
|
-
<img width="150" src="https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png" alt="mindelixir logo2">
|
|
4
|
-
</a>
|
|
5
|
-
<h1 align="center">Mind Elixir</h1>
|
|
6
|
-
</p>
|
|
7
|
-
|
|
8
|
-
<p align="center">
|
|
9
|
-
<a href="https://www.npmjs.com/package/mind-elixir">
|
|
10
|
-
<img src="https://img.shields.io/npm/v/mind-elixir" alt="version">
|
|
11
|
-
</a>
|
|
12
|
-
<a href="https://github.com/ssshooter/mind-elixir-core/blob/master/LICENSE">
|
|
13
|
-
<img src="https://img.shields.io/npm/l/mind-elixir" alt="license">
|
|
14
|
-
</a>
|
|
15
|
-
<a href="https://app.codacy.com/gh/ssshooter/mind-elixir-core?utm_source=github.com&utm_medium=referral&utm_content=ssshooter/mind-elixir-core&utm_campaign=Badge_Grade_Settings">
|
|
16
|
-
<img src="https://api.codacy.com/project/badge/Grade/09fadec5bf094886b30cea6aabf3a88b" alt="code quality">
|
|
17
|
-
</a>
|
|
18
|
-
<a href="https://bundlephobia.com/result?p=mind-elixir">
|
|
19
|
-
<img src="https://badgen.net/bundlephobia/dependency-count/mind-elixir" alt="dependency-count">
|
|
20
|
-
</a>
|
|
21
|
-
<a href="https://packagephobia.com/result?p=mind-elixir">
|
|
22
|
-
<img src="https://packagephobia.com/badge?p=mind-elixir" alt="package size">
|
|
23
|
-
</a>
|
|
24
|
-
</p>
|
|
25
|
-
|
|
26
|
-
[English](/readme.md) |
|
|
27
|
-
[中文](/readme/zh.md) |
|
|
28
|
-
[Español](/readme/es.md) |
|
|
29
|
-
[Français](/readme/fr.md) |
|
|
30
|
-
[Português](/readme/pt.md) |
|
|
31
|
-
[Русский](/readme/ru.md) |
|
|
32
|
-
[日本語](/readme/ja.md) |
|
|
33
|
-
[한국어](/readme/ko.md)
|
|
34
|
-
|
|
35
|
-
Mind Elixirは、オープンソースのJavaScriptマインドマップコアです。お好みのフロントエンドフレームワークと組み合わせて使用できます。
|
|
36
|
-
|
|
37
|
-
特徴:
|
|
38
|
-
|
|
39
|
-
- 軽量
|
|
40
|
-
- 高パフォーマンス
|
|
41
|
-
- フレームワーク非依存
|
|
42
|
-
- プラグイン対応
|
|
43
|
-
- ドラッグ&ドロップ/ノード編集プラグイン内蔵
|
|
44
|
-
- SVG/PNG/HTMLとしてエクスポート可能
|
|
45
|
-
- ノードの要約
|
|
46
|
-
- 一括操作対応
|
|
47
|
-
- 元に戻す/やり直し
|
|
48
|
-
- 効率的なショートカット
|
|
49
|
-
- CSSカスタマイズが容易
|
|
50
|
-
|
|
51
|
-
<details>
|
|
52
|
-
<summary>目次</summary>
|
|
53
|
-
|
|
54
|
-
- [デモを試す](#デモを試す)
|
|
55
|
-
- [プレイグラウンド](#プレイグラウンド)
|
|
56
|
-
- [ドキュメント](#ドキュメント)
|
|
57
|
-
- [使い方](#使い方)
|
|
58
|
-
- [インストール](#インストール)
|
|
59
|
-
- [NPM](#npm)
|
|
60
|
-
- [スクリプトタグ](#スクリプトタグ)
|
|
61
|
-
- [初期化](#初期化)
|
|
62
|
-
- [データ構造](#データ構造)
|
|
63
|
-
- [イベントハンドリング](#イベントハンドリング)
|
|
64
|
-
- [データのエクスポートとインポート](#データのエクスポートとインポート)
|
|
65
|
-
- [操作ガード](#操作ガード)
|
|
66
|
-
- [画像としてエクスポート](#画像としてエクスポート)
|
|
67
|
-
- [方法1](#方法1)
|
|
68
|
-
- [方法2](#方法2)
|
|
69
|
-
- [テーマ](#テーマ)
|
|
70
|
-
- [ショートカット](#ショートカット)
|
|
71
|
-
- [エコシステム](#エコシステム)
|
|
72
|
-
- [開発](#開発)
|
|
73
|
-
- [謝辞](#謝辞)
|
|
74
|
-
- [貢献者](#貢献者)
|
|
75
|
-
|
|
76
|
-
</details>
|
|
77
|
-
|
|
78
|
-
## デモを試す
|
|
79
|
-
|
|
80
|
-

|
|
81
|
-
|
|
82
|
-
https://mind-elixir.com/
|
|
83
|
-
|
|
84
|
-
### プレイグラウンド
|
|
85
|
-
|
|
86
|
-
- Vanilla JS - https://codepen.io/ssshooter/pen/OJrJowN
|
|
87
|
-
- React - https://codesandbox.io/s/mind-elixir-3-x-react-18-x-vy9fcq
|
|
88
|
-
- Vue3 - https://codesandbox.io/s/mind-elixir-3-x-vue3-lth484
|
|
89
|
-
- Vue2 - https://codesandbox.io/s/mind-elixir-3-x-vue-2-x-5kdfjp
|
|
90
|
-
|
|
91
|
-
## ドキュメント
|
|
92
|
-
|
|
93
|
-
https://docs.mind-elixir.com/
|
|
94
|
-
|
|
95
|
-
## 使い方
|
|
96
|
-
|
|
97
|
-
### インストール
|
|
98
|
-
|
|
99
|
-
#### NPM
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
npm i mind-elixir -S
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
```javascript
|
|
106
|
-
import MindElixir from 'mind-elixir'
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
#### スクリプトタグ
|
|
110
|
-
|
|
111
|
-
```html
|
|
112
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/mind-elixir/dist/MindElixir.js"></script>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### 初期化
|
|
116
|
-
|
|
117
|
-
```html
|
|
118
|
-
<div id="map"></div>
|
|
119
|
-
<style>
|
|
120
|
-
#map {
|
|
121
|
-
height: 500px;
|
|
122
|
-
width: 100%;
|
|
123
|
-
}
|
|
124
|
-
</style>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**重要な変更** バージョン1.0.0以降、`data`は`options`ではなく`init()`に渡す必要があります。
|
|
128
|
-
|
|
129
|
-
```javascript
|
|
130
|
-
import MindElixir from 'mind-elixir'
|
|
131
|
-
import example from 'mind-elixir/dist/example1'
|
|
132
|
-
|
|
133
|
-
let options = {
|
|
134
|
-
el: '#map', // またはHTMLDivElement
|
|
135
|
-
direction: MindElixir.LEFT,
|
|
136
|
-
draggable: true, // デフォルトはtrue
|
|
137
|
-
contextMenu: true, // デフォルトはtrue
|
|
138
|
-
toolBar: true, // デフォルトはtrue
|
|
139
|
-
nodeMenu: true, // デフォルトはtrue
|
|
140
|
-
keypress: true, // デフォルトはtrue
|
|
141
|
-
locale: 'ja', // [zh_CN,zh_TW,en,ja,pt,ru] PRs募集中
|
|
142
|
-
overflowHidden: false, // デフォルトはfalse
|
|
143
|
-
mainLinkStyle: 2, // [1,2] デフォルトは1
|
|
144
|
-
mouseSelectionButton: 0, // 0は左クリック、2は右クリック、デフォルトは0
|
|
145
|
-
contextMenuOption: {
|
|
146
|
-
focus: true,
|
|
147
|
-
link: true,
|
|
148
|
-
extend: [
|
|
149
|
-
{
|
|
150
|
-
name: 'ノード編集',
|
|
151
|
-
onclick: () => {
|
|
152
|
-
alert('拡張メニュー')
|
|
153
|
-
},
|
|
154
|
-
},
|
|
155
|
-
],
|
|
156
|
-
},
|
|
157
|
-
before: {
|
|
158
|
-
insertSibling(el, obj) {
|
|
159
|
-
return true
|
|
160
|
-
},
|
|
161
|
-
async addChild(el, obj) {
|
|
162
|
-
await sleep()
|
|
163
|
-
return true
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
let mind = new MindElixir(options)
|
|
169
|
-
|
|
170
|
-
mind.install(plugin) // プラグインのインストール
|
|
171
|
-
|
|
172
|
-
// 新しいマップデータの作成
|
|
173
|
-
const data = MindElixir.new('新しいトピック')
|
|
174
|
-
// または `example`
|
|
175
|
-
// または `.getData()`の戻り値
|
|
176
|
-
mind.init(data)
|
|
177
|
-
|
|
178
|
-
// ノードの取得
|
|
179
|
-
MindElixir.E('node-id')
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### データ構造
|
|
183
|
-
|
|
184
|
-
```javascript
|
|
185
|
-
// 現在のノードデータ構造
|
|
186
|
-
const nodeData = {
|
|
187
|
-
topic: 'ノードのトピック',
|
|
188
|
-
id: 'bd1c24420cd2c2f5',
|
|
189
|
-
style: { fontSize: '32', color: '#3298db', background: '#ecf0f1' },
|
|
190
|
-
expanded: true,
|
|
191
|
-
parent: null,
|
|
192
|
-
tags: ['タグ'],
|
|
193
|
-
icons: ['😀'],
|
|
194
|
-
hyperLink: 'https://github.com/ssshooter/mind-elixir-core',
|
|
195
|
-
image: {
|
|
196
|
-
url: 'https://raw.githubusercontent.com/ssshooter/mind-elixir-core/master/images/logo2.png', // 必須
|
|
197
|
-
height: 90, // 必須
|
|
198
|
-
width: 90, // 必須
|
|
199
|
-
},
|
|
200
|
-
children: [
|
|
201
|
-
{
|
|
202
|
-
topic: '子ノード',
|
|
203
|
-
id: 'xxxx',
|
|
204
|
-
// ...
|
|
205
|
-
},
|
|
206
|
-
],
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### イベントハンドリング
|
|
211
|
-
|
|
212
|
-
```javascript
|
|
213
|
-
mind.bus.addListener('operation', operation => {
|
|
214
|
-
console.log(operation)
|
|
215
|
-
// return {
|
|
216
|
-
// name: action name,
|
|
217
|
-
// obj: target object
|
|
218
|
-
// }
|
|
219
|
-
|
|
220
|
-
// name: [insertSibling|addChild|removeNode|beginEdit|finishEdit]
|
|
221
|
-
// obj: target
|
|
222
|
-
|
|
223
|
-
// name: moveNode
|
|
224
|
-
// obj: {from:target1,to:target2}
|
|
225
|
-
})
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
mind.bus.addListener('selectNodes', nodes => {
|
|
229
|
-
console.log(nodes)
|
|
230
|
-
})
|
|
231
|
-
|
|
232
|
-
mind.bus.addListener('expandNode', node => {
|
|
233
|
-
console.log('expandNode: ', node)
|
|
234
|
-
})
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### データのエクスポートとインポート
|
|
238
|
-
|
|
239
|
-
```javascript
|
|
240
|
-
// データのエクスポート
|
|
241
|
-
const data = mind.getData() // JavaScriptオブジェクト、src/example.jsを参照
|
|
242
|
-
mind.getDataString() // オブジェクトを文字列化
|
|
243
|
-
|
|
244
|
-
// データのインポート
|
|
245
|
-
// 初期化
|
|
246
|
-
let mind = new MindElixir(options)
|
|
247
|
-
mind.init(data)
|
|
248
|
-
// データの更新
|
|
249
|
-
mind.refresh(data)
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### 操作ガード
|
|
253
|
-
|
|
254
|
-
```javascript
|
|
255
|
-
let mind = new MindElixir({
|
|
256
|
-
// ...
|
|
257
|
-
before: {
|
|
258
|
-
insertSibling(el, obj) {
|
|
259
|
-
console.log(el, obj)
|
|
260
|
-
if (this.currentNode.nodeObj.parent.root) {
|
|
261
|
-
return false
|
|
262
|
-
}
|
|
263
|
-
return true
|
|
264
|
-
},
|
|
265
|
-
async addChild(el, obj) {
|
|
266
|
-
await sleep()
|
|
267
|
-
if (this.currentNode.nodeObj.parent.root) {
|
|
268
|
-
return false
|
|
269
|
-
}
|
|
270
|
-
return true
|
|
271
|
-
},
|
|
272
|
-
},
|
|
273
|
-
})
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
## 画像としてエクスポート
|
|
277
|
-
|
|
278
|
-
### 方法1
|
|
279
|
-
|
|
280
|
-
```typescript
|
|
281
|
-
const mind = {
|
|
282
|
-
/** mind elixir instance */
|
|
283
|
-
}
|
|
284
|
-
const downloadPng = async () => {
|
|
285
|
-
const blob = await mind.exportPng() // Blobを取得
|
|
286
|
-
if (!blob) return
|
|
287
|
-
const url = URL.createObjectURL(blob)
|
|
288
|
-
const a = document.createElement('a')
|
|
289
|
-
a.href = url
|
|
290
|
-
a.download = 'filename.png'
|
|
291
|
-
a.click()
|
|
292
|
-
URL.revokeObjectURL(url)
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### 方法2
|
|
297
|
-
|
|
298
|
-
`@ssshooter/modern-screenshot`をインストールし、次に実行します:
|
|
299
|
-
|
|
300
|
-
```typescript
|
|
301
|
-
import { domToPng } from '@ssshooter/modern-screenshot'
|
|
302
|
-
|
|
303
|
-
const download = async () => {
|
|
304
|
-
const dataUrl = await domToPng(mind.nodes, {
|
|
305
|
-
onCloneNode: node => {
|
|
306
|
-
const n = node as HTMLDivElement
|
|
307
|
-
n.style.position = ''
|
|
308
|
-
n.style.top = ''
|
|
309
|
-
n.style.left = ''
|
|
310
|
-
n.style.bottom = ''
|
|
311
|
-
n.style.right = ''
|
|
312
|
-
},
|
|
313
|
-
padding: 300,
|
|
314
|
-
quality: 1,
|
|
315
|
-
})
|
|
316
|
-
const link = document.createElement('a')
|
|
317
|
-
link.download = 'screenshot.png'
|
|
318
|
-
link.href = dataUrl
|
|
319
|
-
link.click()
|
|
320
|
-
}
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
## テーマ
|
|
324
|
-
|
|
325
|
-
```javascript
|
|
326
|
-
const options = {
|
|
327
|
-
// ...
|
|
328
|
-
theme: {
|
|
329
|
-
name: 'Dark',
|
|
330
|
-
// メインラインのカラーパレット
|
|
331
|
-
palette: ['#848FA0', '#748BE9', '#D2F9FE', '#4145A5', '#789AFA', '#706CF4', '#EF987F', '#775DD5', '#FCEECF', '#DA7FBC'],
|
|
332
|
-
// CSS変数の上書き
|
|
333
|
-
cssVar: {
|
|
334
|
-
'--main-color': '#ffffff',
|
|
335
|
-
'--main-bgcolor': '#4c4f69',
|
|
336
|
-
'--color': '#cccccc',
|
|
337
|
-
'--bgcolor': '#252526',
|
|
338
|
-
'--panel-color': '255, 255, 255',
|
|
339
|
-
'--panel-bgcolor': '45, 55, 72',
|
|
340
|
-
},
|
|
341
|
-
// すべての変数は/src/index.lessを参照
|
|
342
|
-
},
|
|
343
|
-
// ...
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// ...
|
|
347
|
-
|
|
348
|
-
mind.changeTheme({
|
|
349
|
-
name: 'Latte',
|
|
350
|
-
palette: ['#dd7878', '#ea76cb', '#8839ef', '#e64553', '#fe640b', '#df8e1d', '#40a02b', '#209fb5', '#1e66f5', '#7287fd'],
|
|
351
|
-
cssVar: {
|
|
352
|
-
'--main-color': '#444446',
|
|
353
|
-
'--main-bgcolor': '#ffffff',
|
|
354
|
-
'--color': '#777777',
|
|
355
|
-
'--bgcolor': '#f6f6f6',
|
|
356
|
-
},
|
|
357
|
-
})
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
Mind Elixirは`prefers-color-scheme`の変更を監視しません。スキームが変更された場合は、テーマを**手動で**変更してください。
|
|
361
|
-
|
|
362
|
-
## ショートカット
|
|
363
|
-
|
|
364
|
-
| ショートカット | 機能 |
|
|
365
|
-
| ------------------ | -------------------------------- |
|
|
366
|
-
| Enter | 兄弟ノードを挿入 |
|
|
367
|
-
| Tab | 子ノードを挿入 |
|
|
368
|
-
| F1 | マップを中央に配置 |
|
|
369
|
-
| F2 | 現在のノードの編集を開始 |
|
|
370
|
-
| ↑ | 前の兄弟ノードを選択 |
|
|
371
|
-
| ↓ | 次の兄弟ノードを選択 |
|
|
372
|
-
| ← / → | 親または最初の子ノードを選択 |
|
|
373
|
-
| PageUp / Alt + ↑ | ノードを上に移動 |
|
|
374
|
-
| PageDown / Alt + ↓ | ノードを下に移動 |
|
|
375
|
-
| Ctrl + ↑ | レイアウトパターンをサイドに変更 |
|
|
376
|
-
| Ctrl + ← | レイアウトパターンを左に変更 |
|
|
377
|
-
| Ctrl + → | レイアウトパターンを右に変更 |
|
|
378
|
-
| Ctrl + C | 現在のノードをコピー |
|
|
379
|
-
| Ctrl + V | コピーしたノードを貼り付け |
|
|
380
|
-
| Ctrl + "+" | マインドマップをズームイン |
|
|
381
|
-
| Ctrl + "-" | マインドマップをズームアウト |
|
|
382
|
-
| Ctrl + 0 | ズームレベルをリセット |
|
|
383
|
-
|
|
384
|
-
## エコシステム
|
|
385
|
-
|
|
386
|
-
- [@mind-elixir/node-menu](https://github.com/ssshooter/node-menu)
|
|
387
|
-
- [@mind-elixir/node-menu-neo](https://github.com/ssshooter/node-menu-neo)
|
|
388
|
-
- [@mind-elixir/export-xmind](https://github.com/ssshooter/export-xmind)
|
|
389
|
-
- [@mind-elixir/export-html](https://github.com/ssshooter/export-html)
|
|
390
|
-
- [mind-elixir-react](https://github.com/ssshooter/mind-elixir-react)
|
|
391
|
-
|
|
392
|
-
PRsは大歓迎です!
|
|
393
|
-
|
|
394
|
-
## 開発
|
|
395
|
-
|
|
396
|
-
```
|
|
397
|
-
pnpm i
|
|
398
|
-
pnpm dev
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
`dev.dist.ts`で生成されたファイルをテストします:
|
|
402
|
-
|
|
403
|
-
```
|
|
404
|
-
pnpm build
|
|
405
|
-
pnpm link ./
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
ドキュメントを更新します:
|
|
409
|
-
|
|
410
|
-
```
|
|
411
|
-
# api-extractorをインストール
|
|
412
|
-
pnpm install -g @microsoft/api-extractor
|
|
413
|
-
# /src/docs.tsを維持
|
|
414
|
-
# ドキュメントを生成
|
|
415
|
-
pnpm doc
|
|
416
|
-
pnpm doc:md
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
## 謝辞
|
|
420
|
-
|
|
421
|
-
- [@viselect/vanilla](https://github.com/simonwep/selection/tree/master/packages/vanilla)
|
|
422
|
-
|
|
423
|
-
## 貢献者
|
|
424
|
-
|
|
425
|
-
Mind Elixirへの貢献に感謝します!あなたのサポートと献身がこのプロジェクトをより良くします。
|
|
426
|
-
|
|
427
|
-
<a href="https://github.com/SSShooter/mind-elixir-core/graphs/contributors">
|
|
428
|
-
<img src="https://contrib.rocks/image?repo=SSShooter/mind-elixir-core&columns=6" />
|
|
429
|
-
</a>
|