kakidash 0.0.4 → 0.0.8
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 +0 -0
- package/README.ja.md +121 -20
- package/README.md +121 -20
- package/dist/index.d.ts +41 -3
- package/dist/kakidash.cjs +8 -4
- package/dist/kakidash.es.js +794 -509
- package/dist/kakidash.umd.js +8 -4
- package/package.json +3 -3
package/LICENSE
CHANGED
|
File without changes
|
package/README.ja.md
CHANGED
|
@@ -27,7 +27,7 @@ Kakidashのミッションは、**アウトプット速度の最大化**です
|
|
|
27
27
|
- キーボードショートカットによる高速操作
|
|
28
28
|
- ズーム、パン (画面移動)
|
|
29
29
|
- **画像対応**: クリップボードからの画像貼り付け
|
|
30
|
-
- **インポート/エクスポート**: JSON形式でのデータ保存・読み込み
|
|
30
|
+
- **インポート/エクスポート**: JSON形式でのデータ保存・読み込み (フォーカス状態も含む)
|
|
31
31
|
- **開発者向け**:
|
|
32
32
|
- TypeScript対応
|
|
33
33
|
- 読み取り専用 (Read-only) モード
|
|
@@ -87,10 +87,10 @@ import { Kakidash } from 'kakidash';
|
|
|
87
87
|
const container = document.getElementById('mindmap-container');
|
|
88
88
|
|
|
89
89
|
// インスタンス化
|
|
90
|
-
const
|
|
90
|
+
const kakidash = new Kakidash(container);
|
|
91
91
|
|
|
92
92
|
// 必要に応じて初期データをロードしたり、ノードを追加したりします
|
|
93
|
-
|
|
93
|
+
kakidash.addNode(kakidash.getRootId(), 'Hello World');
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
#### B. ブラウザ直接読み込み (Script Tag / CDN)
|
|
@@ -111,10 +111,10 @@ board.addNode(board.getRootId(), 'Hello World');
|
|
|
111
111
|
|
|
112
112
|
// 初期化
|
|
113
113
|
const container = document.getElementById('mindmap-container');
|
|
114
|
-
const
|
|
114
|
+
const kakidash = new Kakidash(container);
|
|
115
115
|
|
|
116
116
|
// 動作確認
|
|
117
|
-
console.log('Kakidash initialized:',
|
|
117
|
+
console.log('Kakidash initialized:', kakidash);
|
|
118
118
|
</script>
|
|
119
119
|
```
|
|
120
120
|
|
|
@@ -123,28 +123,127 @@ board.addNode(board.getRootId(), 'Hello World');
|
|
|
123
123
|
### Methods
|
|
124
124
|
|
|
125
125
|
- **`new Kakidash(container: HTMLElement)`**: インスタンスを生成します。
|
|
126
|
-
- **`
|
|
127
|
-
- **`
|
|
128
|
-
- **`
|
|
129
|
-
- **`
|
|
130
|
-
- **`
|
|
126
|
+
- **`kakidash.addNode(parentId, topic)`**: 指定した親ノードに新しい子ノードを追加します。
|
|
127
|
+
- **`kakidash.getData()`**: 現在のマインドマップデータをJSONオブジェクトとして取得します。
|
|
128
|
+
- **`kakidash.loadData(data)`**: JSONデータを読み込み、マインドマップを描画します。
|
|
129
|
+
- **`kakidash.updateLayout(mode)`**: レイアウトモードを変更します ('Standard', 'Left', 'Right')。
|
|
130
|
+
- **`kakidash.setReadOnly(boolean)`**: 読み取り専用モードを切り替えます。
|
|
131
|
+
- **`kakidash.setMaxNodeWidth(width: number)`**: テキストノードの最大幅を設定します(-1で無制限)。
|
|
132
|
+
- **`kakidash.getMaxNodeWidth()`**: 現在の最大ノード幅を取得します。
|
|
133
|
+
- **`kakidash.undo()`**: 変更を元に戻します。
|
|
134
|
+
- **`kakidash.redo()`**: 元に戻した変更をやり直します。
|
|
135
|
+
- **`kakidash.toggleFold(nodeId)`**: ノードの折り畳み/展開を切り替えます。
|
|
136
|
+
- **`kakidash.getSelectedNodeId()`**: 現在選択されているノードのIDを取得します。
|
|
137
|
+
- **`kakidash.on(event, listener)`**: イベントリスナーを登録します。
|
|
138
|
+
- **`kakidash.off(event, listener)`**: イベントリスナーを削除します。
|
|
131
139
|
|
|
132
140
|
### Events
|
|
133
141
|
|
|
142
|
+
| Event Name | Payload | Description |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| `node:select` | `string \| null` | ノードが選択されたときに発火します。 |
|
|
145
|
+
| `node:add` | `{ id: string; topic: string }` | 新しいノードが追加されたときに発火します。 |
|
|
146
|
+
| `node:remove` | `string` | ノードが削除されたときに発火します。 |
|
|
147
|
+
| `node:update` | `{ id: string; topic: string }` | ノードが更新されたときに発火します。 |
|
|
148
|
+
| `node:move` | `{ nodeId: string; newParentId: string; position?: string }` | ノードが移動されたときに発火します。 |
|
|
149
|
+
| `model:load` | `MindMapData` | データがロードされたときに発火します。 |
|
|
150
|
+
| `model:change` | `void` | データモデルが変更されたときに発火します。 |
|
|
151
|
+
|
|
134
152
|
```typescript
|
|
135
|
-
|
|
153
|
+
kakidash.on('node:select', (nodeId) => {
|
|
136
154
|
console.log('Selected:', nodeId);
|
|
137
155
|
});
|
|
156
|
+
```
|
|
138
157
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
158
|
+
## Configuration
|
|
159
|
+
|
|
160
|
+
### Custom Shortcuts
|
|
142
161
|
|
|
143
|
-
|
|
144
|
-
|
|
162
|
+
コンストラクタのオプションでキーボードショートカットをカスタマイズできます。
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
const kakidash = new Kakidash(container, {
|
|
166
|
+
shortcuts: {
|
|
167
|
+
// 'addChild' を Ctrl+N に変更する例
|
|
168
|
+
addChild: [{ key: 'n', ctrlKey: true }],
|
|
169
|
+
}
|
|
145
170
|
});
|
|
146
171
|
```
|
|
147
172
|
|
|
173
|
+
### Default Shortcuts Configuration (JSON)
|
|
174
|
+
|
|
175
|
+
以下はデフォルト設定の全量です。必要なキーのみを部分的に上書きできます。
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"navUp": [
|
|
180
|
+
{ "key": "ArrowUp" },
|
|
181
|
+
{ "key": "k" }
|
|
182
|
+
],
|
|
183
|
+
"navDown": [
|
|
184
|
+
{ "key": "ArrowDown" },
|
|
185
|
+
{ "key": "j" }
|
|
186
|
+
],
|
|
187
|
+
"navLeft": [
|
|
188
|
+
{ "key": "ArrowLeft" },
|
|
189
|
+
{ "key": "h" }
|
|
190
|
+
],
|
|
191
|
+
"navRight": [
|
|
192
|
+
{ "key": "ArrowRight" },
|
|
193
|
+
{ "key": "l" }
|
|
194
|
+
],
|
|
195
|
+
"addChild": [{ "key": "Tab" }],
|
|
196
|
+
"insertParent": [{ "key": "Tab", "shiftKey": true }],
|
|
197
|
+
"addSibling": [{ "key": "Enter" }],
|
|
198
|
+
"addSiblingBefore": [{ "key": "Enter", "shiftKey": true }],
|
|
199
|
+
"deleteNode": [
|
|
200
|
+
{ "key": "Delete" },
|
|
201
|
+
{ "key": "Backspace" }
|
|
202
|
+
],
|
|
203
|
+
"beginEdit": [
|
|
204
|
+
{ "key": "F2" },
|
|
205
|
+
{ "key": " " }
|
|
206
|
+
],
|
|
207
|
+
"copy": [
|
|
208
|
+
{ "key": "c", "ctrlKey": true },
|
|
209
|
+
{ "key": "c", "metaKey": true }
|
|
210
|
+
],
|
|
211
|
+
"paste": [
|
|
212
|
+
{ "key": "v", "ctrlKey": true },
|
|
213
|
+
{ "key": "v", "metaKey": true }
|
|
214
|
+
],
|
|
215
|
+
"cut": [
|
|
216
|
+
{ "key": "x", "ctrlKey": true },
|
|
217
|
+
{ "key": "x", "metaKey": true }
|
|
218
|
+
],
|
|
219
|
+
"undo": [
|
|
220
|
+
{ "key": "z", "ctrlKey": true },
|
|
221
|
+
{ "key": "z", "metaKey": true }
|
|
222
|
+
],
|
|
223
|
+
"redo": [
|
|
224
|
+
{ "key": "Z", "ctrlKey": true, "shiftKey": true },
|
|
225
|
+
{ "key": "Z", "metaKey": true, "shiftKey": true },
|
|
226
|
+
{ "key": "y", "ctrlKey": true },
|
|
227
|
+
{ "key": "y", "metaKey": true }
|
|
228
|
+
],
|
|
229
|
+
"bold": [{ "key": "b" }],
|
|
230
|
+
"italic": [{ "key": "i" }],
|
|
231
|
+
"zoomIn": [
|
|
232
|
+
{ "key": "+" },
|
|
233
|
+
{ "key": "=" }
|
|
234
|
+
],
|
|
235
|
+
"zoomOut": [{ "key": "-" }],
|
|
236
|
+
"toggleFold": [{ "key": "f" }],
|
|
237
|
+
"selectColor1": [{ "key": "1" }],
|
|
238
|
+
"selectColor2": [{ "key": "2" }],
|
|
239
|
+
"selectColor3": [{ "key": "3" }],
|
|
240
|
+
"selectColor4": [{ "key": "4" }],
|
|
241
|
+
"selectColor5": [{ "key": "5" }],
|
|
242
|
+
"selectColor6": [{ "key": "6" }],
|
|
243
|
+
"selectColor7": [{ "key": "7" }]
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
148
247
|
## Shortcuts
|
|
149
248
|
|
|
150
249
|
### General
|
|
@@ -152,13 +251,14 @@ board.on('model:change', () => {
|
|
|
152
251
|
| --- | --- |
|
|
153
252
|
| `Arrow Keys` | ノード間の移動 |
|
|
154
253
|
| `h` / `j` / `k` / `l` | ノード間の移動 (Vim風) |
|
|
155
|
-
| `F2` / `DblClick` | ノードの編集を開始 |
|
|
254
|
+
| `F2` / `DblClick` / `Space` | ノードの編集を開始 (画像の場合はズーム) |
|
|
156
255
|
| `Enter` | 兄弟ノードを追加 (下) |
|
|
157
256
|
| `Shift + Enter` | 兄弟ノードを追加 (上) |
|
|
158
257
|
| `Tab` | 子ノードを追加 |
|
|
159
258
|
| `Shift + Tab` | 親ノードを挿入 |
|
|
160
259
|
| `Delete` / `Backspace` | ノードを削除 |
|
|
161
|
-
| `Ctrl/Cmd +
|
|
260
|
+
| `Ctrl/Cmd + z` | 元に戻す (Undo) |
|
|
261
|
+
| `Ctrl/Cmd + Shift + z` / `Ctrl + y` | やり直し (Redo) |
|
|
162
262
|
| `Ctrl/Cmd + C` | コピー |
|
|
163
263
|
| `Ctrl/Cmd + X` | 切り取り |
|
|
164
264
|
| `Ctrl/Cmd + V` | 貼り付け (画像も可) |
|
|
@@ -166,6 +266,7 @@ board.on('model:change', () => {
|
|
|
166
266
|
| `Wheel` | 上下スクロール (パン) |
|
|
167
267
|
| `Shift + Wheel` | 左右スクロール (パン) |
|
|
168
268
|
| `Ctrl/Cmd + Wheel` | ズームイン/アウト |
|
|
269
|
+
| Click `+/-` / `f` | ノードの展開/折り畳み |
|
|
169
270
|
|
|
170
271
|
### Editing (Text Input)
|
|
171
272
|
| Key | Description |
|
|
@@ -177,8 +278,8 @@ board.on('model:change', () => {
|
|
|
177
278
|
### Styling (Since selection)
|
|
178
279
|
| Key | Description |
|
|
179
280
|
| --- | --- |
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
281
|
+
| `b` | 太字 (Bold) 切り替え |
|
|
282
|
+
| `i` | 斜体 (Italic) 切り替え |
|
|
182
283
|
| `+` | フォントサイズ拡大 |
|
|
183
284
|
| `-` | フォントサイズ縮小 |
|
|
184
285
|
| `1` - `7` | ノードの色を変更 (パレット順) |
|
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Master the shortcuts and expand your mind map at the speed of thought.
|
|
|
25
25
|
- Keyboard shortcuts for rapid operation.
|
|
26
26
|
- Zoom, Pan (Screen navigation).
|
|
27
27
|
- **Image Support**: Paste images from the clipboard.
|
|
28
|
-
- **Import/Export**: Save and load data in JSON format.
|
|
28
|
+
- **Import/Export**: Save and load data in JSON format (including focus state).
|
|
29
29
|
- **For Developers**:
|
|
30
30
|
- TypeScript support.
|
|
31
31
|
- Read-only mode.
|
|
@@ -84,10 +84,10 @@ import { Kakidash } from 'kakidash';
|
|
|
84
84
|
const container = document.getElementById('mindmap-container');
|
|
85
85
|
|
|
86
86
|
// Instantiate
|
|
87
|
-
const
|
|
87
|
+
const kakidash = new Kakidash(container);
|
|
88
88
|
|
|
89
89
|
// Add initial data or nodes if needed
|
|
90
|
-
|
|
90
|
+
kakidash.addNode(kakidash.getRootId(), 'Hello World');
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
#### B. Browser Direct Import (Script Tag / CDN)
|
|
@@ -107,9 +107,9 @@ Use the built `umd` file. The library will be exposed under the global variable
|
|
|
107
107
|
|
|
108
108
|
// Initialize
|
|
109
109
|
const container = document.getElementById('mindmap-container');
|
|
110
|
-
const
|
|
110
|
+
const kakidash = new Kakidash(container);
|
|
111
111
|
|
|
112
|
-
console.log('Kakidash initialized:',
|
|
112
|
+
console.log('Kakidash initialized:', kakidash);
|
|
113
113
|
</script>
|
|
114
114
|
```
|
|
115
115
|
|
|
@@ -118,28 +118,127 @@ Use the built `umd` file. The library will be exposed under the global variable
|
|
|
118
118
|
### Methods
|
|
119
119
|
|
|
120
120
|
- **`new Kakidash(container: HTMLElement)`**: Creates a new instance.
|
|
121
|
-
- **`
|
|
122
|
-
- **`
|
|
123
|
-
- **`
|
|
124
|
-
- **`
|
|
125
|
-
- **`
|
|
121
|
+
- **`kakidash.addNode(parentId, topic)`**: Adds a new child node to the specified parent node.
|
|
122
|
+
- **`kakidash.getData()`**: Retrieves current mindmap data as a JSON object.
|
|
123
|
+
- **`kakidash.loadData(data)`**: Loads JSON data and renders the mindmap.
|
|
124
|
+
- **`kakidash.updateLayout(mode)`**: Changes layout mode ('Standard', 'Left', 'Right').
|
|
125
|
+
- **`kakidash.setReadOnly(boolean)`**: Toggles read-only mode.
|
|
126
|
+
- **`kakidash.setMaxNodeWidth(width: number)`**: Sets main node width (-1 for unlimited).
|
|
127
|
+
- **`kakidash.getMaxNodeWidth()`**: Gets current max node width.
|
|
128
|
+
- **`kakidash.undo()`**: Undo the last change.
|
|
129
|
+
- **`kakidash.redo()`**: Redo the last undone change.
|
|
130
|
+
- **`kakidash.toggleFold(nodeId)`**: Toggle fold state of a node.
|
|
131
|
+
- **`kakidash.getSelectedNodeId()`**: Get the ID of the currently selected node.
|
|
132
|
+
- **`kakidash.on(event, listener)`**: Register an event listener.
|
|
133
|
+
- **`kakidash.off(event, listener)`**: Remove an event listener.
|
|
126
134
|
|
|
127
135
|
### Events
|
|
128
136
|
|
|
137
|
+
| Event Name | Payload | Description |
|
|
138
|
+
| --- | --- | --- |
|
|
139
|
+
| `node:select` | `string \| null` | Fired when a node is selected. |
|
|
140
|
+
| `node:add` | `{ id: string; topic: string }` | Fired when a new node is added. |
|
|
141
|
+
| `node:remove` | `string` | Fired when a node is removed. |
|
|
142
|
+
| `node:update` | `{ id: string; topic: string }` | Fired when a node is updated. |
|
|
143
|
+
| `node:move` | `{ nodeId: string; newParentId: string; position?: string }` | Fired when a node is moved. |
|
|
144
|
+
| `model:load` | `MindMapData` | Fired when data is loaded. |
|
|
145
|
+
| `model:change` | `void` | Fired when the data model changes. |
|
|
146
|
+
|
|
129
147
|
```typescript
|
|
130
|
-
|
|
148
|
+
kakidash.on('node:select', (nodeId) => {
|
|
131
149
|
console.log('Selected:', nodeId);
|
|
132
150
|
});
|
|
151
|
+
```
|
|
133
152
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
153
|
+
## Configuration
|
|
154
|
+
|
|
155
|
+
### Custom Shortcuts
|
|
137
156
|
|
|
138
|
-
|
|
139
|
-
|
|
157
|
+
You can customize keyboard shortcuts by passing an option to the constructor.
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
const kakidash = new Kakidash(container, {
|
|
161
|
+
shortcuts: {
|
|
162
|
+
// Override 'addChild' to Ctrl+N
|
|
163
|
+
addChild: [{ key: 'n', ctrlKey: true }],
|
|
164
|
+
}
|
|
140
165
|
});
|
|
141
166
|
```
|
|
142
167
|
|
|
168
|
+
### Default Shortcuts Configuration (JSON)
|
|
169
|
+
|
|
170
|
+
Here is the complete default configuration. You can partially override these keys.
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"navUp": [
|
|
175
|
+
{ "key": "ArrowUp" },
|
|
176
|
+
{ "key": "k" }
|
|
177
|
+
],
|
|
178
|
+
"navDown": [
|
|
179
|
+
{ "key": "ArrowDown" },
|
|
180
|
+
{ "key": "j" }
|
|
181
|
+
],
|
|
182
|
+
"navLeft": [
|
|
183
|
+
{ "key": "ArrowLeft" },
|
|
184
|
+
{ "key": "h" }
|
|
185
|
+
],
|
|
186
|
+
"navRight": [
|
|
187
|
+
{ "key": "ArrowRight" },
|
|
188
|
+
{ "key": "l" }
|
|
189
|
+
],
|
|
190
|
+
"addChild": [{ "key": "Tab" }],
|
|
191
|
+
"insertParent": [{ "key": "Tab", "shiftKey": true }],
|
|
192
|
+
"addSibling": [{ "key": "Enter" }],
|
|
193
|
+
"addSiblingBefore": [{ "key": "Enter", "shiftKey": true }],
|
|
194
|
+
"deleteNode": [
|
|
195
|
+
{ "key": "Delete" },
|
|
196
|
+
{ "key": "Backspace" }
|
|
197
|
+
],
|
|
198
|
+
"beginEdit": [
|
|
199
|
+
{ "key": "F2" },
|
|
200
|
+
{ "key": " " }
|
|
201
|
+
],
|
|
202
|
+
"copy": [
|
|
203
|
+
{ "key": "c", "ctrlKey": true },
|
|
204
|
+
{ "key": "c", "metaKey": true }
|
|
205
|
+
],
|
|
206
|
+
"paste": [
|
|
207
|
+
{ "key": "v", "ctrlKey": true },
|
|
208
|
+
{ "key": "v", "metaKey": true }
|
|
209
|
+
],
|
|
210
|
+
"cut": [
|
|
211
|
+
{ "key": "x", "ctrlKey": true },
|
|
212
|
+
{ "key": "x", "metaKey": true }
|
|
213
|
+
],
|
|
214
|
+
"undo": [
|
|
215
|
+
{ "key": "z", "ctrlKey": true },
|
|
216
|
+
{ "key": "z", "metaKey": true }
|
|
217
|
+
],
|
|
218
|
+
"redo": [
|
|
219
|
+
{ "key": "Z", "ctrlKey": true, "shiftKey": true },
|
|
220
|
+
{ "key": "Z", "metaKey": true, "shiftKey": true },
|
|
221
|
+
{ "key": "y", "ctrlKey": true },
|
|
222
|
+
{ "key": "y", "metaKey": true }
|
|
223
|
+
],
|
|
224
|
+
"bold": [{ "key": "b" }],
|
|
225
|
+
"italic": [{ "key": "i" }],
|
|
226
|
+
"zoomIn": [
|
|
227
|
+
{ "key": "+" },
|
|
228
|
+
{ "key": "=" }
|
|
229
|
+
],
|
|
230
|
+
"zoomOut": [{ "key": "-" }],
|
|
231
|
+
"toggleFold": [{ "key": "f" }],
|
|
232
|
+
"selectColor1": [{ "key": "1" }],
|
|
233
|
+
"selectColor2": [{ "key": "2" }],
|
|
234
|
+
"selectColor3": [{ "key": "3" }],
|
|
235
|
+
"selectColor4": [{ "key": "4" }],
|
|
236
|
+
"selectColor5": [{ "key": "5" }],
|
|
237
|
+
"selectColor6": [{ "key": "6" }],
|
|
238
|
+
"selectColor7": [{ "key": "7" }]
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
143
242
|
## Shortcuts
|
|
144
243
|
|
|
145
244
|
### General
|
|
@@ -147,13 +246,14 @@ board.on('model:change', () => {
|
|
|
147
246
|
| --- | --- |
|
|
148
247
|
| `Arrow Keys` | Navigate between nodes |
|
|
149
248
|
| `h` / `j` / `k` / `l` | Navigate between nodes (Vim-style) |
|
|
150
|
-
| `F2` / `DblClick` | Start editing node |
|
|
249
|
+
| `F2` / `DblClick` / `Space` | Start editing node (Space triggers zoom if image) |
|
|
151
250
|
| `Enter` | Add sibling node (below) |
|
|
152
251
|
| `Shift + Enter` | Add sibling node (above) |
|
|
153
252
|
| `Tab` | Add child node |
|
|
154
253
|
| `Shift + Tab` | Insert parent node |
|
|
155
254
|
| `Delete` / `Backspace` | Delete node |
|
|
156
|
-
| `Ctrl/Cmd +
|
|
255
|
+
| `Ctrl/Cmd + z` | Undo |
|
|
256
|
+
| `Ctrl/Cmd + Shift + z` / `Ctrl + y` | Redo |
|
|
157
257
|
| `Ctrl/Cmd + C` | Copy |
|
|
158
258
|
| `Ctrl/Cmd + X` | Cut |
|
|
159
259
|
| `Ctrl/Cmd + V` | Paste (Images supported) |
|
|
@@ -161,6 +261,7 @@ board.on('model:change', () => {
|
|
|
161
261
|
| `Wheel` | Vertical scroll (Pan) |
|
|
162
262
|
| `Shift + Wheel` | Horizontal scroll (Pan) |
|
|
163
263
|
| `Ctrl/Cmd + Wheel` | Zoom in/out |
|
|
264
|
+
| Click `+/-` / `f` | Toggle node folding |
|
|
164
265
|
|
|
165
266
|
### Editing (Text Input)
|
|
166
267
|
| Key | Description |
|
|
@@ -172,8 +273,8 @@ board.on('model:change', () => {
|
|
|
172
273
|
### Styling (Since selection)
|
|
173
274
|
| Key | Description |
|
|
174
275
|
| --- | --- |
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
276
|
+
| `b` | Toggle Bold |
|
|
277
|
+
| `i` | Toggle Italic |
|
|
177
278
|
| `+` | Increase font size |
|
|
178
279
|
| `-` | Decrease font size |
|
|
179
280
|
| `1` - `7` | Change node color (Palette order) |
|
package/dist/index.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class Kakidash extends TypedEventEmitter<KakidashEventMap> {
|
|
|
21
21
|
private scale;
|
|
22
22
|
private isBatching;
|
|
23
23
|
private animationFrameId;
|
|
24
|
-
|
|
24
|
+
private maxWidth;
|
|
25
|
+
constructor(container: HTMLElement, options?: KakidashOptions);
|
|
25
26
|
/**
|
|
26
27
|
* Adds a new child node to the specified parent.
|
|
27
28
|
* This is a pure data operation and does not trigger UI actions like auto-focus or scroll.
|
|
@@ -61,12 +62,30 @@ export declare class Kakidash extends TypedEventEmitter<KakidashEventMap> {
|
|
|
61
62
|
topic?: string;
|
|
62
63
|
style?: Partial<NodeStyle>;
|
|
63
64
|
}): void;
|
|
65
|
+
/**
|
|
66
|
+
* Undo the last change.
|
|
67
|
+
*/
|
|
68
|
+
undo(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Redo the last undone change.
|
|
71
|
+
*/
|
|
72
|
+
redo(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Toggle fold state of a node.
|
|
75
|
+
*/
|
|
76
|
+
toggleFold(nodeId: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get the ID of the currently selected node.
|
|
79
|
+
*/
|
|
80
|
+
getSelectedNodeId(): string | null;
|
|
64
81
|
updateNodeStyle(nodeId: string, style: Partial<NodeStyle>): void;
|
|
65
82
|
setTheme(theme: Theme): void;
|
|
66
83
|
getMindMap(): MindMap;
|
|
67
84
|
getNode(nodeId: string): Node_2 | undefined;
|
|
68
85
|
getRoot(): Node_2;
|
|
69
86
|
findNodes(predicate: (node: Node_2) => boolean): Node_2[];
|
|
87
|
+
setMaxNodeWidth(width: number): void;
|
|
88
|
+
getMaxNodeWidth(): number;
|
|
70
89
|
setReadOnly(readOnly: boolean): void;
|
|
71
90
|
destroy(): void;
|
|
72
91
|
batch(callback: () => void): void;
|
|
@@ -103,6 +122,7 @@ export declare class Kakidash extends TypedEventEmitter<KakidashEventMap> {
|
|
|
103
122
|
private getNodeDirection;
|
|
104
123
|
private startAnimationLoop;
|
|
105
124
|
private ensureNodeVisible;
|
|
125
|
+
private showShortcutModal;
|
|
106
126
|
}
|
|
107
127
|
|
|
108
128
|
export declare type KakidashEventMap = {
|
|
@@ -125,6 +145,18 @@ export declare type KakidashEventMap = {
|
|
|
125
145
|
'model:change': void;
|
|
126
146
|
};
|
|
127
147
|
|
|
148
|
+
export declare interface KakidashOptions {
|
|
149
|
+
shortcuts?: ShortcutConfig;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
declare interface KeyBinding {
|
|
153
|
+
key: string;
|
|
154
|
+
ctrlKey?: boolean;
|
|
155
|
+
metaKey?: boolean;
|
|
156
|
+
shiftKey?: boolean;
|
|
157
|
+
altKey?: boolean;
|
|
158
|
+
}
|
|
159
|
+
|
|
128
160
|
export declare type LayoutMode = 'Right' | 'Left' | 'Both';
|
|
129
161
|
|
|
130
162
|
declare class MindMap {
|
|
@@ -144,6 +176,7 @@ export declare interface MindMapData {
|
|
|
144
176
|
linkData?: any;
|
|
145
177
|
theme?: Theme;
|
|
146
178
|
direction?: number;
|
|
179
|
+
selectedId?: string;
|
|
147
180
|
}
|
|
148
181
|
|
|
149
182
|
declare interface MindMapNodeData {
|
|
@@ -157,7 +190,7 @@ declare interface MindMapNodeData {
|
|
|
157
190
|
};
|
|
158
191
|
children?: MindMapNodeData[];
|
|
159
192
|
root?: boolean;
|
|
160
|
-
|
|
193
|
+
isFolded?: boolean;
|
|
161
194
|
parentId?: string;
|
|
162
195
|
image?: string;
|
|
163
196
|
layoutSide?: 'left' | 'right';
|
|
@@ -172,7 +205,8 @@ declare class Node_2 {
|
|
|
172
205
|
isRoot: boolean;
|
|
173
206
|
image?: string;
|
|
174
207
|
layoutSide?: 'left' | 'right';
|
|
175
|
-
|
|
208
|
+
isFolded: boolean;
|
|
209
|
+
constructor(id: string, topic: string, parentId?: string | null, isRoot?: boolean, image?: string, layoutSide?: 'left' | 'right', isFolded?: boolean);
|
|
176
210
|
addChild(node: Node_2): void;
|
|
177
211
|
insertChild(node: Node_2, index: number): void;
|
|
178
212
|
removeChild(nodeId: string): void;
|
|
@@ -187,6 +221,10 @@ declare interface NodeStyle {
|
|
|
187
221
|
fontStyle?: string;
|
|
188
222
|
}
|
|
189
223
|
|
|
224
|
+
declare type ShortcutAction = 'navUp' | 'navDown' | 'navLeft' | 'navRight' | 'addChild' | 'insertParent' | 'addSibling' | 'addSiblingBefore' | 'deleteNode' | 'beginEdit' | 'copy' | 'paste' | 'cut' | 'undo' | 'redo' | 'bold' | 'italic' | 'zoomIn' | 'zoomOut' | 'toggleFold' | 'centerMap' | 'selectColor1' | 'selectColor2' | 'selectColor3' | 'selectColor4' | 'selectColor5' | 'selectColor6' | 'selectColor7';
|
|
225
|
+
|
|
226
|
+
export declare type ShortcutConfig = Partial<Record<ShortcutAction, KeyBinding[]>>;
|
|
227
|
+
|
|
190
228
|
declare type Theme = 'default' | 'simple' | 'colorful';
|
|
191
229
|
|
|
192
230
|
declare class TypedEventEmitter<EventMap extends Record<string, any>> {
|