kakidash 0.2.0 → 0.2.2
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/README.ja.md +119 -123
- package/README.md +120 -123
- package/dist/index.d.ts +56 -7
- package/dist/kakidash.cjs +6 -4
- package/dist/kakidash.es.js +3965 -1171
- package/dist/kakidash.umd.js +6 -4
- package/package.json +6 -1
package/README.ja.md
CHANGED
|
@@ -22,6 +22,7 @@ Kakidashのミッションは、**アウトプット速度の最大化**です
|
|
|
22
22
|
- フォントサイズ変更
|
|
23
23
|
- 太字 (Bold)、斜体 (Italic)
|
|
24
24
|
- カラーパレットによる色変更 (Style Editor)
|
|
25
|
+
- **テーマ**: 複数の組み込みテーマ (Default, Simple, Colorful, Dark) の切り替え
|
|
25
26
|
- **アイコン設定**: コマンドパレットからのフラットアイコン追加・削除 (`m` key)
|
|
26
27
|
- **インタラクション**:
|
|
27
28
|
- ドラッグ&ドロップによるノード移動・並び替え
|
|
@@ -29,7 +30,11 @@ Kakidashのミッションは、**アウトプット速度の最大化**です
|
|
|
29
30
|
- ズーム、パン (画面移動)
|
|
30
31
|
- **画像対応**: クリップボードからの画像貼り付け
|
|
31
32
|
- **Auto Link**: ノード内のURLを自動検出し、クリック可能なリンクに変換
|
|
32
|
-
- **インポート/エクスポート**:
|
|
33
|
+
- **インポート/エクスポート**:
|
|
34
|
+
- JSON形式でのデータ保存・読み込み。
|
|
35
|
+
- XMindファイル(.xmind)のインポート。
|
|
36
|
+
- **画像エクスポート**: PNGおよびSVG形式でのマインドマップ画像出力(コマンドパレット > Export)。
|
|
37
|
+
- **Markdownエクスポート**: マインドマップをMarkdown形式で出力(コマンドパレット > Export > Markdown)。
|
|
33
38
|
- **開発者向け**:
|
|
34
39
|
- TypeScript対応
|
|
35
40
|
- 読み取り専用 (Read-only) モード
|
|
@@ -51,26 +56,28 @@ pnpm add kakidash
|
|
|
51
56
|
```html
|
|
52
57
|
<!DOCTYPE html>
|
|
53
58
|
<html lang="ja">
|
|
54
|
-
<head>
|
|
55
|
-
<meta charset="UTF-8"
|
|
59
|
+
<head>
|
|
60
|
+
<meta charset="UTF-8" />
|
|
56
61
|
<title>Kakidash Demo</title>
|
|
57
62
|
<style>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
/* コンテナのサイズ指定は必須です */
|
|
64
|
+
#mindmap-container {
|
|
65
|
+
width: 100vw;
|
|
66
|
+
height: 100vh;
|
|
67
|
+
border: 1px solid #ccc; /* 境界線はお好みで */
|
|
68
|
+
margin: 0;
|
|
69
|
+
padding: 0;
|
|
70
|
+
overflow: hidden; /* コンテナ内でのスクロールを防ぐため */
|
|
71
|
+
}
|
|
72
|
+
body {
|
|
73
|
+
margin: 0;
|
|
74
|
+
}
|
|
68
75
|
</style>
|
|
69
|
-
</head>
|
|
70
|
-
<body>
|
|
76
|
+
</head>
|
|
77
|
+
<body>
|
|
71
78
|
<div id="mindmap-container"></div>
|
|
72
79
|
<!-- Script挿入場所 -->
|
|
73
|
-
</body>
|
|
80
|
+
</body>
|
|
74
81
|
</html>
|
|
75
82
|
```
|
|
76
83
|
|
|
@@ -82,7 +89,7 @@ pnpm add kakidash
|
|
|
82
89
|
pnpm add kakidash
|
|
83
90
|
```
|
|
84
91
|
|
|
85
|
-
|
|
92
|
+
````typescript
|
|
86
93
|
import { Kakidash } from 'kakidash';
|
|
87
94
|
|
|
88
95
|
// コンテナ取得
|
|
@@ -99,7 +106,16 @@ const kakidash = new Kakidash(container, {
|
|
|
99
106
|
|
|
100
107
|
// 必要に応じて初期データをロードしたり、ノードを追加したりします
|
|
101
108
|
kakidash.addNode(kakidash.getRootId(), 'Hello World');
|
|
102
|
-
|
|
109
|
+
|
|
110
|
+
### 3. テーマの切り替え
|
|
111
|
+
|
|
112
|
+
テーマを動的に切り替えることができます:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
kakidash.setTheme('dark'); // 'default', 'simple', 'colorful', 'dark'
|
|
116
|
+
````
|
|
117
|
+
|
|
118
|
+
````
|
|
103
119
|
|
|
104
120
|
#### B. ブラウザ直接読み込み (Script Tag / CDN)
|
|
105
121
|
|
|
@@ -120,12 +136,12 @@ kakidash.addNode(kakidash.getRootId(), 'Hello World');
|
|
|
120
136
|
// 初期化
|
|
121
137
|
const container = document.getElementById('mindmap-container');
|
|
122
138
|
const kakidash = new Kakidash(container);
|
|
123
|
-
|
|
139
|
+
|
|
124
140
|
// 動作確認
|
|
125
141
|
// 動作確認
|
|
126
142
|
console.log('Kakidash initialized:', kakidash);
|
|
127
143
|
</script>
|
|
128
|
-
|
|
144
|
+
````
|
|
129
145
|
|
|
130
146
|
## スタイルのカスタマイズ
|
|
131
147
|
|
|
@@ -136,28 +152,28 @@ kakidash.addNode(kakidash.getRootId(), 'Hello World');
|
|
|
136
152
|
// 設定は内部に保存されます
|
|
137
153
|
kakidash.updateGlobalStyles({
|
|
138
154
|
// ルートノード(中心)のスタイル
|
|
139
|
-
rootNode: {
|
|
155
|
+
rootNode: {
|
|
140
156
|
border: '4px solid gold',
|
|
141
157
|
background: '#ffeeee',
|
|
142
|
-
color: '#333' // フォント色
|
|
158
|
+
color: '#333', // フォント色
|
|
143
159
|
},
|
|
144
|
-
|
|
160
|
+
|
|
145
161
|
// 子ノード(枝)のスタイル
|
|
146
|
-
childNode: {
|
|
147
|
-
border: '2px dashed blue',
|
|
162
|
+
childNode: {
|
|
163
|
+
border: '2px dashed blue',
|
|
148
164
|
background: 'white',
|
|
149
|
-
color: '#555' // フォント色
|
|
165
|
+
color: '#555', // フォント色
|
|
150
166
|
},
|
|
151
|
-
|
|
167
|
+
|
|
152
168
|
// 接続線の色
|
|
153
|
-
connection: {
|
|
154
|
-
color: 'orange'
|
|
169
|
+
connection: {
|
|
170
|
+
color: 'orange',
|
|
155
171
|
},
|
|
156
|
-
|
|
172
|
+
|
|
157
173
|
// マインドマップ全体の背景
|
|
158
174
|
canvas: {
|
|
159
|
-
background: '#fafafa' // 透明にする場合は 'transparent'
|
|
160
|
-
}
|
|
175
|
+
background: '#fafafa', // 透明にする場合は 'transparent'
|
|
176
|
+
},
|
|
161
177
|
});
|
|
162
178
|
|
|
163
179
|
// 2. カスタムテーマを有効化してスタイルを反映
|
|
@@ -168,13 +184,13 @@ kakidash.setTheme('custom');
|
|
|
168
184
|
|
|
169
185
|
すべての値は標準的なCSSの文字列として指定可能です。
|
|
170
186
|
|
|
171
|
-
| オブジェクト
|
|
172
|
-
|
|
|
173
|
-
| `rootNode`, `childNode` | `border`
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
| `connection`
|
|
177
|
-
| `canvas`
|
|
187
|
+
| オブジェクト | プロパティ | 説明 | 例 |
|
|
188
|
+
| ----------------------- | ------------ | -------------------- | ------------------------------------------------- |
|
|
189
|
+
| `rootNode`, `childNode` | `border` | 枠線の指定 | `'2px solid red'`, `'none'` |
|
|
190
|
+
| | `background` | 背景色 | `'#ffffff'`, `'rgba(0,0,0,0.5)'`, `'transparent'` |
|
|
191
|
+
| | `color` | 文字色 | `'#333'`, `'black'` |
|
|
192
|
+
| `connection` | `color` | 接続線の色 | `'#ccc'`, `'orange'` |
|
|
193
|
+
| `canvas` | `background` | キャンバス全体の背景 | `'#f0f0f0'`, `'transparent'` |
|
|
178
194
|
|
|
179
195
|
## API Reference
|
|
180
196
|
|
|
@@ -202,15 +218,15 @@ kakidash.setTheme('custom');
|
|
|
202
218
|
|
|
203
219
|
### Events
|
|
204
220
|
|
|
205
|
-
| Event Name
|
|
206
|
-
|
|
|
207
|
-
| `node:select`
|
|
208
|
-
| `node:add`
|
|
209
|
-
| `node:remove`
|
|
210
|
-
| `node:update`
|
|
211
|
-
| `node:move`
|
|
212
|
-
| `model:load`
|
|
213
|
-
| `model:change` | `void`
|
|
221
|
+
| Event Name | Payload | Description |
|
|
222
|
+
| -------------- | ------------------------------------------------------------ | ------------------------------------------ |
|
|
223
|
+
| `node:select` | `string \| null` | ノードが選択されたときに発火します。 |
|
|
224
|
+
| `node:add` | `{ id: string; topic: string }` | 新しいノードが追加されたときに発火します。 |
|
|
225
|
+
| `node:remove` | `string` | ノードが削除されたときに発火します。 |
|
|
226
|
+
| `node:update` | `{ id: string; topic?: string; icon?: string }` | ノードが更新されたときに発火します。 |
|
|
227
|
+
| `node:move` | `{ nodeId: string; newParentId: string; position?: string }` | ノードが移動されたときに発火します。 |
|
|
228
|
+
| `model:load` | `MindMapData` | データがロードされたときに発火します。 |
|
|
229
|
+
| `model:change` | `void` | データモデルが変更されたときに発火します。 |
|
|
214
230
|
|
|
215
231
|
```typescript
|
|
216
232
|
kakidash.on('node:select', (nodeId) => {
|
|
@@ -229,7 +245,7 @@ const kakidash = new Kakidash(container, {
|
|
|
229
245
|
shortcuts: {
|
|
230
246
|
// 'addChild' を Ctrl+N に変更する例
|
|
231
247
|
addChild: [{ key: 'n', ctrlKey: true }],
|
|
232
|
-
}
|
|
248
|
+
},
|
|
233
249
|
});
|
|
234
250
|
```
|
|
235
251
|
|
|
@@ -239,41 +255,19 @@ const kakidash = new Kakidash(container, {
|
|
|
239
255
|
|
|
240
256
|
```json
|
|
241
257
|
{
|
|
242
|
-
"navUp": [
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
],
|
|
246
|
-
"
|
|
247
|
-
{ "key": "ArrowDown" },
|
|
248
|
-
{ "key": "j" }
|
|
249
|
-
],
|
|
250
|
-
"navLeft": [
|
|
251
|
-
{ "key": "ArrowLeft" },
|
|
252
|
-
{ "key": "h" }
|
|
253
|
-
],
|
|
254
|
-
"navRight": [
|
|
255
|
-
{ "key": "ArrowRight" },
|
|
256
|
-
{ "key": "l" }
|
|
257
|
-
],
|
|
258
|
-
"addChild": [
|
|
259
|
-
{ "key": "Tab" },
|
|
260
|
-
{ "key": "a" }
|
|
261
|
-
],
|
|
258
|
+
"navUp": [{ "key": "ArrowUp" }, { "key": "k" }],
|
|
259
|
+
"navDown": [{ "key": "ArrowDown" }, { "key": "j" }],
|
|
260
|
+
"navLeft": [{ "key": "ArrowLeft" }, { "key": "h" }],
|
|
261
|
+
"navRight": [{ "key": "ArrowRight" }, { "key": "l" }],
|
|
262
|
+
"addChild": [{ "key": "Tab" }, { "key": "a" }],
|
|
262
263
|
"insertParent": [
|
|
263
264
|
{ "key": "Tab", "shiftKey": true },
|
|
264
265
|
{ "key": "a", "shiftKey": true }
|
|
265
266
|
],
|
|
266
267
|
"addSibling": [{ "key": "Enter" }],
|
|
267
268
|
"addSiblingBefore": [{ "key": "Enter", "shiftKey": true }],
|
|
268
|
-
"deleteNode": [
|
|
269
|
-
|
|
270
|
-
{ "key": "Backspace" }
|
|
271
|
-
],
|
|
272
|
-
"beginEdit": [
|
|
273
|
-
{ "key": "i" },
|
|
274
|
-
{ "key": " " },
|
|
275
|
-
{ "key": "F2" }
|
|
276
|
-
],
|
|
269
|
+
"deleteNode": [{ "key": "Delete" }, { "key": "Backspace" }],
|
|
270
|
+
"beginEdit": [{ "key": "i" }, { "key": " " }, { "key": "F2" }],
|
|
277
271
|
"copy": [
|
|
278
272
|
{ "key": "c", "ctrlKey": true },
|
|
279
273
|
{ "key": "c", "metaKey": true }
|
|
@@ -298,14 +292,8 @@ const kakidash = new Kakidash(container, {
|
|
|
298
292
|
],
|
|
299
293
|
"bold": [{ "key": "b", "shiftKey": true }],
|
|
300
294
|
"italic": [{ "key": "i", "shiftKey": true }],
|
|
301
|
-
"increaseFontSize": [
|
|
302
|
-
|
|
303
|
-
{ "key": "." }
|
|
304
|
-
],
|
|
305
|
-
"decreaseFontSize": [
|
|
306
|
-
{ "key": "<", "shiftKey": true },
|
|
307
|
-
{ "key": "," }
|
|
308
|
-
],
|
|
295
|
+
"increaseFontSize": [{ "key": ">", "shiftKey": true }, { "key": "." }],
|
|
296
|
+
"decreaseFontSize": [{ "key": "<", "shiftKey": true }, { "key": "," }],
|
|
309
297
|
"zoomIn": [{ "key": "[" }],
|
|
310
298
|
"zoomOut": [{ "key": "]" }],
|
|
311
299
|
"resetZoom": [{ "key": ":" }],
|
|
@@ -324,51 +312,55 @@ const kakidash = new Kakidash(container, {
|
|
|
324
312
|
## Shortcuts
|
|
325
313
|
|
|
326
314
|
### General
|
|
327
|
-
|
|
328
|
-
|
|
|
329
|
-
|
|
|
330
|
-
| `
|
|
331
|
-
| `
|
|
332
|
-
| `
|
|
333
|
-
| `
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
336
|
-
| `
|
|
337
|
-
| `
|
|
338
|
-
| `
|
|
339
|
-
| `Ctrl/Cmd +
|
|
340
|
-
| `Ctrl/Cmd +
|
|
341
|
-
| `Ctrl/Cmd +
|
|
342
|
-
| `Ctrl/Cmd +
|
|
343
|
-
| `
|
|
344
|
-
| `
|
|
345
|
-
| `
|
|
346
|
-
| `
|
|
347
|
-
| `
|
|
348
|
-
| `
|
|
349
|
-
|
|
|
350
|
-
|
|
|
315
|
+
|
|
316
|
+
| Key | Description |
|
|
317
|
+
| ----------------------------------- | --------------------------------------- |
|
|
318
|
+
| `m` | コマンドパレット (検索 / アイコン) |
|
|
319
|
+
| `Arrow Keys` | ノード間の移動 |
|
|
320
|
+
| `h` / `j` / `k` / `l` | ノード間の移動 (Vim風) |
|
|
321
|
+
| `F2` / `DblClick` / `Space` / `i` | ノードの編集を開始 (画像の場合はズーム) |
|
|
322
|
+
| `Enter` | 兄弟ノードを追加 (下) |
|
|
323
|
+
| `Shift + Enter` | 兄弟ノードを追加 (上) |
|
|
324
|
+
| `Tab` / `a` | 子ノードを追加 |
|
|
325
|
+
| `Shift + Tab` / `Shift + a` | 親ノードを挿入 |
|
|
326
|
+
| `Delete` / `Backspace` | ノードを削除 |
|
|
327
|
+
| `Ctrl/Cmd + z` | 元に戻す (Undo) |
|
|
328
|
+
| `Ctrl/Cmd + Shift + z` / `Ctrl + y` | やり直し (Redo) |
|
|
329
|
+
| `Ctrl/Cmd + C` | コピー |
|
|
330
|
+
| `Ctrl/Cmd + X` | 切り取り |
|
|
331
|
+
| `Ctrl/Cmd + V` | 貼り付け (画像も可) |
|
|
332
|
+
| `Drag` (Canvas) | 画面のパン (移動) |
|
|
333
|
+
| `Wheel` | 上下スクロール (パン) |
|
|
334
|
+
| `Shift + Wheel` | 左右スクロール (パン) |
|
|
335
|
+
| `Ctrl/Cmd + Wheel` | ズームイン/アウト |
|
|
336
|
+
| `[` | キャンバス拡大 |
|
|
337
|
+
| `]` | キャンバス縮小 |
|
|
338
|
+
| `:` | ズームリセット |
|
|
339
|
+
| Click `+/-` / `f` | ノードの展開/折り畳み |
|
|
351
340
|
|
|
352
341
|
### Editing (Text Input)
|
|
353
|
-
|
|
354
|
-
|
|
|
355
|
-
|
|
|
356
|
-
| `
|
|
357
|
-
| `
|
|
342
|
+
|
|
343
|
+
| Key | Description |
|
|
344
|
+
| --------------- | ---------------- |
|
|
345
|
+
| `Enter` | 編集を確定 |
|
|
346
|
+
| `Shift + Enter` | 改行 |
|
|
347
|
+
| `Esc` | 編集をキャンセル |
|
|
358
348
|
|
|
359
349
|
### Styling (Since selection)
|
|
360
|
-
|
|
361
|
-
|
|
|
362
|
-
|
|
|
363
|
-
| `Shift +
|
|
364
|
-
| `Shift +
|
|
365
|
-
| `Shift +
|
|
366
|
-
| `Shift +
|
|
367
|
-
| `
|
|
350
|
+
|
|
351
|
+
| Key | Description |
|
|
352
|
+
| --------------------------- | ----------------------------- |
|
|
353
|
+
| `Shift + b` | 太字 (Bold) 切り替え |
|
|
354
|
+
| `Shift + i` | 斜体 (Italic) 切り替え |
|
|
355
|
+
| `Shift + . (>)` / `.` | フォントサイズ拡大 |
|
|
356
|
+
| `Shift + , (<)` / `,` | フォントサイズ縮小 |
|
|
357
|
+
| `Shift + ArrowLeft / Right` | ノード幅の変更 |
|
|
358
|
+
| `1` - `7` | ノードの色を変更 (パレット順) |
|
|
368
359
|
|
|
369
360
|
## アーキテクチャ
|
|
370
361
|
|
|
371
362
|
ソフトウェアアーキテクチャの詳細や内部モジュールの依存関係については、以下を参照してください:
|
|
363
|
+
|
|
372
364
|
- [ソフトウェアアーキテクチャ設計書](./docs/SOFTWARE_ARCHITECTURE_ja.md)
|
|
373
365
|
|
|
374
366
|
## Development
|
|
@@ -417,6 +409,10 @@ pnpm test:e2e
|
|
|
417
409
|
pnpm turbo run test:e2e
|
|
418
410
|
```
|
|
419
411
|
|
|
412
|
+
> [!NOTE]
|
|
413
|
+
> E2Eテストの実行にはブラウザとシステム依存関係のインストールが必要です。初回実行時や依存関係エラーが発生した場合は、以下のコマンドを実行してください:
|
|
414
|
+
> `npx playwright install --with-deps`
|
|
415
|
+
|
|
420
416
|
### Lint
|
|
421
417
|
|
|
422
418
|
```bash
|