@kaitify/core 0.0.1-beta.1

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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/examples/App.vue +342 -0
  4. package/examples/content.js +1 -0
  5. package/examples/main.ts +4 -0
  6. package/examples/test.html +23 -0
  7. package/lib/extensions/Extension.d.ts +172 -0
  8. package/lib/extensions/align/index.d.ts +10 -0
  9. package/lib/extensions/attachment/index.d.ts +29 -0
  10. package/lib/extensions/back-color/index.d.ts +9 -0
  11. package/lib/extensions/blockquote/index.d.ts +12 -0
  12. package/lib/extensions/bold/index.d.ts +9 -0
  13. package/lib/extensions/code/index.d.ts +12 -0
  14. package/lib/extensions/code-block/hljs.d.ts +12 -0
  15. package/lib/extensions/code-block/index.d.ts +15 -0
  16. package/lib/extensions/color/index.d.ts +9 -0
  17. package/lib/extensions/font-family/index.d.ts +9 -0
  18. package/lib/extensions/font-size/index.d.ts +9 -0
  19. package/lib/extensions/heading/index.d.ts +13 -0
  20. package/lib/extensions/history/index.d.ts +10 -0
  21. package/lib/extensions/horizontal/index.d.ts +7 -0
  22. package/lib/extensions/image/index.d.ts +26 -0
  23. package/lib/extensions/indent/index.d.ts +8 -0
  24. package/lib/extensions/index.d.ts +29 -0
  25. package/lib/extensions/italic/index.d.ts +9 -0
  26. package/lib/extensions/line-height/index.d.ts +9 -0
  27. package/lib/extensions/link/index.d.ts +27 -0
  28. package/lib/extensions/list/index.d.ts +18 -0
  29. package/lib/extensions/math/index.d.ts +11 -0
  30. package/lib/extensions/strikethrough/index.d.ts +9 -0
  31. package/lib/extensions/subscript/index.d.ts +9 -0
  32. package/lib/extensions/superscript/index.d.ts +9 -0
  33. package/lib/extensions/table/index.d.ts +21 -0
  34. package/lib/extensions/task/index.d.ts +12 -0
  35. package/lib/extensions/text/index.d.ts +14 -0
  36. package/lib/extensions/underline/index.d.ts +9 -0
  37. package/lib/extensions/video/index.d.ts +27 -0
  38. package/lib/index.d.ts +3 -0
  39. package/lib/kaitify-core.es.js +38337 -0
  40. package/lib/kaitify-core.umd.js +2 -0
  41. package/lib/model/Editor.d.ts +504 -0
  42. package/lib/model/History.d.ts +42 -0
  43. package/lib/model/KNode.d.ts +258 -0
  44. package/lib/model/Selection.d.ts +29 -0
  45. package/lib/model/config/dom-observe.d.ts +10 -0
  46. package/lib/model/config/event-handler.d.ts +33 -0
  47. package/lib/model/config/format-patch.d.ts +25 -0
  48. package/lib/model/config/format-rules.d.ts +37 -0
  49. package/lib/model/config/function.d.ts +84 -0
  50. package/lib/model/index.d.ts +6 -0
  51. package/lib/tools/index.d.ts +49 -0
  52. package/lib/view/index.d.ts +21 -0
  53. package/lib/view/js-render/dom-patch.d.ts +65 -0
  54. package/lib/view/js-render/index.d.ts +5 -0
  55. package/package.json +52 -0
  56. package/src/css/style.less +56 -0
  57. package/src/css/var.less +45 -0
  58. package/src/extensions/Extension.ts +200 -0
  59. package/src/extensions/align/index.ts +115 -0
  60. package/src/extensions/attachment/icon.svg +1 -0
  61. package/src/extensions/attachment/index.ts +293 -0
  62. package/src/extensions/attachment/style.less +25 -0
  63. package/src/extensions/back-color/index.ts +56 -0
  64. package/src/extensions/blockquote/index.ts +144 -0
  65. package/src/extensions/blockquote/style.less +16 -0
  66. package/src/extensions/bold/index.ts +77 -0
  67. package/src/extensions/code/index.ts +295 -0
  68. package/src/extensions/code/style.less +14 -0
  69. package/src/extensions/code-block/hljs.less +183 -0
  70. package/src/extensions/code-block/hljs.ts +95 -0
  71. package/src/extensions/code-block/index.ts +308 -0
  72. package/src/extensions/code-block/style.less +20 -0
  73. package/src/extensions/color/index.ts +56 -0
  74. package/src/extensions/font-family/index.ts +80 -0
  75. package/src/extensions/font-size/index.ts +56 -0
  76. package/src/extensions/heading/index.ts +164 -0
  77. package/src/extensions/heading/style.less +42 -0
  78. package/src/extensions/history/index.ts +96 -0
  79. package/src/extensions/horizontal/index.ts +45 -0
  80. package/src/extensions/horizontal/style.less +13 -0
  81. package/src/extensions/image/index.ts +242 -0
  82. package/src/extensions/image/style.less +8 -0
  83. package/src/extensions/indent/index.ts +98 -0
  84. package/src/extensions/index.ts +29 -0
  85. package/src/extensions/italic/index.ts +77 -0
  86. package/src/extensions/line-height/index.ts +113 -0
  87. package/src/extensions/link/index.ts +184 -0
  88. package/src/extensions/link/style.less +19 -0
  89. package/src/extensions/list/index.ts +410 -0
  90. package/src/extensions/list/style.less +19 -0
  91. package/src/extensions/math/index.ts +233 -0
  92. package/src/extensions/math/style.less +21 -0
  93. package/src/extensions/strikethrough/index.ts +78 -0
  94. package/src/extensions/subscript/index.ts +77 -0
  95. package/src/extensions/superscript/index.ts +77 -0
  96. package/src/extensions/table/index.ts +1148 -0
  97. package/src/extensions/table/style.less +71 -0
  98. package/src/extensions/task/index.ts +243 -0
  99. package/src/extensions/task/style.less +59 -0
  100. package/src/extensions/text/index.ts +359 -0
  101. package/src/extensions/underline/index.ts +78 -0
  102. package/src/extensions/video/index.ts +273 -0
  103. package/src/extensions/video/style.less +8 -0
  104. package/src/index.ts +9 -0
  105. package/src/model/Editor.ts +1963 -0
  106. package/src/model/History.ts +115 -0
  107. package/src/model/KNode.ts +677 -0
  108. package/src/model/Selection.ts +39 -0
  109. package/src/model/config/dom-observe.ts +184 -0
  110. package/src/model/config/event-handler.ts +237 -0
  111. package/src/model/config/format-patch.ts +215 -0
  112. package/src/model/config/format-rules.ts +218 -0
  113. package/src/model/config/function.ts +1018 -0
  114. package/src/model/index.ts +6 -0
  115. package/src/tools/index.ts +156 -0
  116. package/src/view/index.ts +46 -0
  117. package/src/view/js-render/dom-patch.ts +324 -0
  118. package/src/view/js-render/index.ts +210 -0
  119. package/vite-env.d.ts +2 -0
@@ -0,0 +1,504 @@
1
+ import { KNode, KNodeMarksType, KNodeMatchOptionType, KNodeStylesType } from './KNode';
2
+ import { Selection } from './Selection';
3
+ import { History } from './History';
4
+ import { RuleFunctionType } from './config/format-rules';
5
+ import { Extension } from '../extensions';
6
+ /**
7
+ * 编辑器获取光标范围内节点数据的类型
8
+ */
9
+ export type EditorSelectedType = {
10
+ node: KNode;
11
+ offset: number[] | false;
12
+ };
13
+ /**
14
+ * 编辑器命令集合类型
15
+ */
16
+ export interface EditorCommandsType {
17
+ [name: string]: ((...args: any[]) => any | void) | undefined;
18
+ }
19
+ /**
20
+ * 编辑器配置入参类型
21
+ */
22
+ export type EditorConfigureOptionType = {
23
+ /**
24
+ * 编辑器渲染的dom或者选择器
25
+ */
26
+ el: HTMLElement | string;
27
+ /**
28
+ * 是否允许复制
29
+ */
30
+ allowCopy?: boolean;
31
+ /**
32
+ * 是否允许粘贴
33
+ */
34
+ allowPaste?: boolean;
35
+ /**
36
+ * 是否允许剪切
37
+ */
38
+ allowCut?: boolean;
39
+ /**
40
+ * 是否允许粘贴html
41
+ */
42
+ allowPasteHtml?: boolean;
43
+ /**
44
+ * 剪切板同时存在文件和html/text时,是否优先粘贴文件
45
+ */
46
+ priorityPasteFiles?: boolean;
47
+ /**
48
+ * 自定义编辑器内渲染文本节点的真实标签
49
+ */
50
+ textRenderTag?: string;
51
+ /**
52
+ * 自定义编辑内渲染默认块级节点的真实标签,即段落标签
53
+ */
54
+ blockRenderTag?: string;
55
+ /**
56
+ * 自定义编辑器内定义需要置空的标签
57
+ */
58
+ emptyRenderTags?: string[];
59
+ /**
60
+ * 自定义编辑器内额外保留的标签
61
+ */
62
+ extraKeepTags?: string[];
63
+ /**
64
+ * 自定义扩展数组
65
+ */
66
+ extensions?: Extension[];
67
+ /**
68
+ * 自定义节点数组格式化规则
69
+ */
70
+ formatRules?: RuleFunctionType[];
71
+ /**
72
+ * 自定义dom转为非文本节点的后续处理
73
+ */
74
+ domParseNodeCallback?: (this: Editor, node: KNode) => KNode;
75
+ /**
76
+ * 视图渲染时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要自定义渲染视图
77
+ */
78
+ onUpdateView?: (this: Editor, init: boolean) => boolean | Promise<boolean>;
79
+ /**
80
+ * 编辑器粘贴纯文本时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理
81
+ */
82
+ onPasteText?: (this: Editor, text: string) => boolean | Promise<boolean>;
83
+ /**
84
+ * 编辑器粘贴html内容时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理
85
+ */
86
+ onPasteHtml?: (this: Editor, nodes: KNode[], html: string) => boolean | Promise<boolean>;
87
+ /**
88
+ * 编辑器粘贴图片时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理
89
+ */
90
+ onPasteImage?: (this: Editor, file: File) => boolean | Promise<boolean>;
91
+ /**
92
+ * 编辑器粘贴视频时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理
93
+ */
94
+ onPasteVideo?: (this: Editor, file: File) => boolean | Promise<boolean>;
95
+ /**
96
+ * 编辑器粘贴除了图片和视频以外的文件时触发,需要自定义处理
97
+ */
98
+ onPasteFile?: (this: Editor, file: File) => void | Promise<void>;
99
+ /**
100
+ * 编辑器内容改变时触发
101
+ */
102
+ onChange?: (this: Editor, newVal: string, oldVal: string) => void;
103
+ /**
104
+ * 编辑器光标发生变化时触发
105
+ */
106
+ onSelectionUpdate?: (this: Editor, selection: Selection) => void;
107
+ /**
108
+ * 换行时触发,参数为换行操作后光标所在的块节点
109
+ */
110
+ onInsertParagraph?: (this: Editor, node: KNode) => void;
111
+ /**
112
+ * 完成删除时触发
113
+ */
114
+ onDeleteComplete?: (this: Editor) => void;
115
+ /**
116
+ * 光标在编辑器内时键盘按下触发
117
+ */
118
+ onKeydown?: (this: Editor, event: KeyboardEvent) => void;
119
+ /**
120
+ * 光标在编辑器内时键盘松开触发
121
+ */
122
+ onKeyup?: (this: Editor, event: KeyboardEvent) => void;
123
+ /**
124
+ * 编辑器聚焦时触发
125
+ */
126
+ onFocus?: (this: Editor, event: FocusEvent) => void;
127
+ /**
128
+ * 编辑器失焦时触发
129
+ */
130
+ onBlur?: (this: Editor, event: FocusEvent) => void;
131
+ /**
132
+ * 节点粘贴保留标记的自定义方法
133
+ */
134
+ pasteKeepMarks?: (this: Editor, node: KNode) => KNodeMarksType;
135
+ /**
136
+ * 节点粘贴保留样式的自定义方法
137
+ */
138
+ pasteKeepStyles?: (this: Editor, node: KNode) => KNodeStylesType;
139
+ /**
140
+ * 视图更新前回调方法
141
+ */
142
+ beforeUpdateView?: (this: Editor) => void;
143
+ /**
144
+ * 视图更新后回调方法
145
+ */
146
+ afterUpdateView?: (this: Editor) => void;
147
+ /**
148
+ * 在删除和换行操作中块节点从其父节点中抽离出去成为与父节点同级的节点后触发,如果返回true则表示继续使用默认逻辑,会将该节点转为段落,返回false则不走默认逻辑,需要自定义处理
149
+ */
150
+ onDetachMentBlockFromParentCallback?: (this: Editor, node: KNode) => boolean;
151
+ /**
152
+ * 编辑器updateView执行时,通过比对新旧节点数组获取需要格式化的节点,在这些节点被格式化前,触发此方法,回调参数即当前需要被格式化的节点,该方法返回一个节点,返回的节点将会被格式化,如果你不需要任何特殊处理,返回入参提供的节点即可
153
+ */
154
+ beforePatchNodeToFormat?: (this: Editor, node: KNode) => KNode;
155
+ /**
156
+ * 编辑器的初始默认值
157
+ */
158
+ value: string;
159
+ /**
160
+ * 编辑器初始是否可编辑,默认true
161
+ */
162
+ editable?: boolean;
163
+ /**
164
+ * 是否自动聚焦
165
+ */
166
+ autofocus?: boolean;
167
+ /**
168
+ * 编辑器内容只有一个段落时的占位符内容
169
+ */
170
+ placeholder?: string;
171
+ /**
172
+ * 是否深色模式
173
+ */
174
+ dark?: boolean;
175
+ };
176
+ /**
177
+ * 编辑器核心类
178
+ */
179
+ export declare class Editor {
180
+ /**
181
+ * 编辑器的真实dom【初始化后不可修改】【open】
182
+ */
183
+ $el?: HTMLElement;
184
+ /**
185
+ * 是否允许复制【初始化后可以修改】【open】
186
+ */
187
+ allowCopy: boolean;
188
+ /**
189
+ * 是否允许粘贴【初始化后可以修改】【open】
190
+ */
191
+ allowPaste: boolean;
192
+ /**
193
+ * 是否允许剪切【初始化后可以修改】【open】
194
+ */
195
+ allowCut: boolean;
196
+ /**
197
+ * 是否允许粘贴html【初始化后可以修改】【open】
198
+ */
199
+ allowPasteHtml: boolean;
200
+ /**
201
+ * 剪切板同时存在文件和html/text时,是否优先粘贴文件【初始化后可以修改】【open】
202
+ */
203
+ priorityPasteFiles: boolean;
204
+ /**
205
+ * 编辑器内渲染文本节点的真实标签【初始化后不建议修改】【open】
206
+ */
207
+ textRenderTag: string;
208
+ /**
209
+ * 编辑内渲染默认块级节点的真实标签,即段落标签【初始化后不建议修改】【open】
210
+ */
211
+ blockRenderTag: string;
212
+ /**
213
+ * 编辑器内定义需要置空的标签【初始化后不建议修改】【open】
214
+ */
215
+ emptyRenderTags: string[];
216
+ /**
217
+ * 编辑器内额外保留的标签【初始化后不建议修改】【open】
218
+ */
219
+ extraKeepTags: string[];
220
+ /**
221
+ * 扩展数组【初始化后不可修改】【open】
222
+ */
223
+ extensions: Extension[];
224
+ /**
225
+ * 编辑器的节点数组格式化规则【初始化后不可修改】【open】
226
+ */
227
+ formatRules: RuleFunctionType[];
228
+ /**
229
+ * 自定义dom转为非文本节点的后续处理【初始化后不可修改】
230
+ */
231
+ domParseNodeCallback?: (this: Editor, node: KNode) => KNode;
232
+ /**
233
+ * 视图渲染时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要自定义渲染视图【初始化后不可修改】
234
+ */
235
+ onUpdateView?: (this: Editor, init: boolean) => boolean | Promise<boolean>;
236
+ /**
237
+ * 编辑器粘贴纯文本时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理【初始化后不可修改】
238
+ */
239
+ onPasteText?: (this: Editor, text: string) => boolean | Promise<boolean>;
240
+ /**
241
+ * 编辑器粘贴html内容时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理【初始化后不可修改】
242
+ */
243
+ onPasteHtml?: (this: Editor, nodes: KNode[], html: string) => boolean | Promise<boolean>;
244
+ /**
245
+ * 编辑器粘贴图片时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理【初始化后不可修改】
246
+ */
247
+ onPasteImage?: (this: Editor, file: File) => boolean | Promise<boolean>;
248
+ /**
249
+ * 编辑器粘贴视频时触发,如果返回true则表示继续使用默认逻辑,返回false则不走默认逻辑,需要进行自定义处理【初始化后不可修改】
250
+ */
251
+ onPasteVideo?: (this: Editor, file: File) => boolean | Promise<boolean>;
252
+ /**
253
+ * 编辑器粘贴除了图片和视频以外的文件时触发,需要自定义处理【初始化后不可修改】
254
+ */
255
+ onPasteFile?: (this: Editor, file: File) => void | Promise<void>;
256
+ /**
257
+ * 编辑器内容改变触发【初始化后不可修改】
258
+ */
259
+ onChange?: (this: Editor, newVal: string, oldVal: string) => void;
260
+ /**
261
+ * 编辑器光标发生变化【初始化后不可修改】
262
+ */
263
+ onSelectionUpdate?: (this: Editor, selection: Selection) => void;
264
+ /**
265
+ * 换行时触发,参数为换行操作后光标所在的块节点
266
+ */
267
+ onInsertParagraph?: (this: Editor, node: KNode) => void;
268
+ /**
269
+ * 完成删除时触发【初始化后不可修改】
270
+ */
271
+ onDeleteComplete?: (this: Editor) => void;
272
+ /**
273
+ * 光标在编辑器内时键盘按下触发【初始化后不可修改】
274
+ */
275
+ onKeydown?: (this: Editor, event: KeyboardEvent) => void;
276
+ /**
277
+ * 光标在编辑器内时键盘松开触发【初始化后不可修改】
278
+ */
279
+ onKeyup?: (this: Editor, event: KeyboardEvent) => void;
280
+ /**
281
+ * 编辑器聚焦时触发【初始化后不可修改】
282
+ */
283
+ onFocus?: (this: Editor, event: FocusEvent) => void;
284
+ /**
285
+ * 编辑器失焦时触发【初始化后不可修改】
286
+ */
287
+ onBlur?: (this: Editor, event: FocusEvent) => void;
288
+ /**
289
+ * 节点粘贴保留标记的自定义方法【初始化后不可修改】
290
+ */
291
+ pasteKeepMarks?: (this: Editor, node: KNode) => KNodeMarksType;
292
+ /**
293
+ * 节点粘贴保留样式的自定义方法【初始化后不可修改】
294
+ */
295
+ pasteKeepStyles?: (this: Editor, node: KNode) => KNodeStylesType;
296
+ /**
297
+ * 视图更新前回调方法【初始化后不可修改】
298
+ */
299
+ beforeUpdateView?: (this: Editor) => void;
300
+ /**
301
+ * 视图更新后回调方法【初始化后不可修改】
302
+ */
303
+ afterUpdateView?: (this: Editor) => void;
304
+ /**
305
+ * 在删除和换行操作中块节点节点从其父节点中抽离出去成为与父节点同级的节点后触发,如果返回true则表示继续使用默认逻辑,会将该节点转为段落,返回false则不走默认逻辑,需要自定义处理【初始化后不可修改】
306
+ */
307
+ onDetachMentBlockFromParentCallback?: (this: Editor, node: KNode) => boolean;
308
+ /**
309
+ * 编辑器updateView执行时,通过比对新旧节点数组获取需要格式化的节点,在这些节点被格式化前,触发此方法,回调参数即当前需要被格式化的节点,该方法返回一个节点,返回的节点将会被格式化,如果你不需要任何特殊处理,返回入参提供的节点即可【初始化后不可修改】
310
+ */
311
+ beforePatchNodeToFormat?: (this: Editor, node: KNode) => KNode;
312
+ /**
313
+ * 唯一id【不可修改】【open】
314
+ */
315
+ guid: number;
316
+ /**
317
+ * 虚拟光标【不建议修改】【open】
318
+ */
319
+ selection: Selection;
320
+ /**
321
+ * 历史记录【不建议修改】【open】
322
+ */
323
+ history: History;
324
+ /**
325
+ * 命令集合【不可修改】【open】
326
+ */
327
+ commands: EditorCommandsType;
328
+ /**
329
+ * 节点数组【不建议修改】【open】
330
+ */
331
+ stackNodes: KNode[];
332
+ /**
333
+ * 旧节点数组【不可修改】
334
+ */
335
+ oldStackNodes: KNode[];
336
+ /**
337
+ * 是否在输入中文【不可修改】
338
+ */
339
+ isComposition: boolean;
340
+ /**
341
+ * 是否编辑器内部渲染真实光标引起selctionChange事件【不可修改】
342
+ */
343
+ internalCauseSelectionChange: boolean;
344
+ /**
345
+ * 是否用户操作的删除行为,如果是用户操作的删除行为,则在处理不可编辑的节点是会删除该节点,如果是API调用的删除方法则走正常的删除逻辑【不可修改】
346
+ */
347
+ isUserDelection: boolean;
348
+ /**
349
+ * dom监听【不可修改】
350
+ */
351
+ domObserver: MutationObserver | null;
352
+ /**
353
+ * 如果编辑器内有滚动条,滚动编辑器到光标可视范围
354
+ */
355
+ scrollViewToSelection(): void;
356
+ /**
357
+ * 根据dom查找到编辑内的对应节点
358
+ */
359
+ findNode(dom: HTMLElement): KNode;
360
+ /**
361
+ * 根据编辑器内的node查找真实dom
362
+ */
363
+ findDom(node: KNode): HTMLElement;
364
+ /**
365
+ * 设置编辑器是否可编辑
366
+ */
367
+ setEditable(editable: boolean): void;
368
+ /**
369
+ * 判断编辑器是否可编辑
370
+ */
371
+ isEditable(): boolean;
372
+ /**
373
+ * 设置编辑器是否深色模式
374
+ */
375
+ setDark(dark: boolean): void;
376
+ /**
377
+ * 是否深色模式
378
+ */
379
+ isDark(): boolean;
380
+ /**
381
+ * dom转KNode
382
+ */
383
+ domParseNode(dom: Node): KNode;
384
+ /**
385
+ * html转KNode
386
+ */
387
+ htmlParseNode(html: string): KNode[];
388
+ /**
389
+ * 将指定节点所在的块节点转为段落
390
+ */
391
+ toParagraph(node: KNode): void;
392
+ /**
393
+ * 指定的块节点是否是一个段落
394
+ */
395
+ isParagraph(node: KNode): boolean;
396
+ /**
397
+ * 将指定节点添加到某个节点的子节点数组里
398
+ */
399
+ addNode(node: KNode, parentNode: KNode, index?: number | undefined): void;
400
+ /**
401
+ * 将指定节点添加到某个节点前面
402
+ */
403
+ addNodeBefore(node: KNode, target: KNode): void;
404
+ /**
405
+ * 将指定节点添加到某个节点后面
406
+ */
407
+ addNodeAfter(node: KNode, target: KNode): void;
408
+ /**
409
+ * 获取某个节点内的最后一个可以设置光标点的节点,包括自身
410
+ */
411
+ getLastSelectionNodeInChildren(node: KNode): KNode | null;
412
+ /**
413
+ * 获取某个节点内的第一个可以设置光标点的节点,包括自身
414
+ */
415
+ getFirstSelectionNodeInChildren(node: KNode): KNode | null;
416
+ /**
417
+ * 查找指定节点之前可以设置为光标点的非空节点,不包括自身
418
+ */
419
+ getPreviousSelectionNode(node: KNode): KNode | null;
420
+ /**
421
+ * 查找指定节点之后可以设置为光标点的非空节点,不包括自身
422
+ */
423
+ getNextSelectionNode(node: KNode): KNode | null;
424
+ /**
425
+ * 设置光标到指定节点内部的起始处,如果没有指定节点则设置光标到编辑器起始处,start表示只设置起点,end表示只设置终点,all表示起点和终点都设置
426
+ */
427
+ setSelectionBefore(node?: KNode, type?: 'all' | 'start' | 'end' | undefined): void;
428
+ /**
429
+ * 设置光标到指定节点内部的末尾处,如果没有指定节点则设置光标到编辑器末尾处,start表示只设置起点,end表示只设置终点,all表示起点和终点都设置
430
+ */
431
+ setSelectionAfter(node?: KNode, type?: 'all' | 'start' | 'end' | undefined): void;
432
+ /**
433
+ * 更新指定光标到离当前光标点最近的节点上,start表示只更新起点,end表示只更新终点,all表示起点和终点都更新,不包括当前光标所在节点
434
+ */
435
+ updateSelectionRecently(type?: 'all' | 'start' | 'end' | undefined): void;
436
+ /**
437
+ * 判断光标是否在某个节点内,start表示只判断起点,end表示只判断终点,all表示起点和终点都判断
438
+ */
439
+ isSelectionInNode(node: KNode, type?: 'all' | 'start' | 'end' | undefined): boolean;
440
+ /**
441
+ * 获取光标选区内的节点数据
442
+ */
443
+ getSelectedNodes(): EditorSelectedType[];
444
+ /**
445
+ * 判断光标范围内的可聚焦节点是否全都在同一个符合条件节点内,如果是返回那个符合条件的节点,否则返回null
446
+ */
447
+ getMatchNodeBySelection(options: KNodeMatchOptionType): KNode | null;
448
+ /**
449
+ * 判断光标范围内的可聚焦节点是否全都在符合条件的(不一定是同一个)节点内
450
+ */
451
+ isSelectionNodesAllMatch(options: KNodeMatchOptionType): boolean;
452
+ /**
453
+ * 判断光标范围内是否有可聚焦节点在符合条件的节点内
454
+ */
455
+ isSelectionNodesSomeMatch(options: KNodeMatchOptionType): boolean;
456
+ /**
457
+ * 获取所有在光标范围内的可聚焦节点,该方法拿到的可聚焦节点(文本)可能部分区域不在光标范围内
458
+ */
459
+ getFocusNodesBySelection(type?: 'all' | 'closed' | 'text' | undefined): KNode[];
460
+ /**
461
+ * 获取所有在光标范围内的可聚焦节点,该方法可能会切割部分文本节点,摒弃其不在光标范围内的部分,所以也可能会更新光标的位置
462
+ */
463
+ getFocusSplitNodesBySelection(type?: 'all' | 'closed' | 'text' | undefined): KNode[];
464
+ /**
465
+ * 向选区插入文本
466
+ */
467
+ insertText(text: string): void;
468
+ /**
469
+ * 向选区进行换行,如果所在块节点只有占位符并且块节点不是段落则会转为段落
470
+ */
471
+ insertParagraph(): void;
472
+ /**
473
+ * 向选区插入节点,cover为true表示当向某个只有占位符的非固定块节点插入另一个非固定块节点时是否覆盖此节点,而不是直接插入进去
474
+ */
475
+ insertNode(node: KNode, cover?: boolean | undefined): void;
476
+ /**
477
+ * 对选区进行删除
478
+ */
479
+ delete(): void;
480
+ /**
481
+ * 更新编辑器视图
482
+ */
483
+ updateView(updateRealSelection?: boolean | undefined, unPushHistory?: boolean | undefined): Promise<void>;
484
+ /**
485
+ * 根据selection更新编辑器真实光标
486
+ */
487
+ updateRealSelection(): Promise<void>;
488
+ /**
489
+ * 重新渲染编辑器视图,不会触发onChange
490
+ */
491
+ review(value: string): Promise<void>;
492
+ /**
493
+ * 销毁编辑器的方法
494
+ */
495
+ destroy(): void;
496
+ /**
497
+ * 获取编辑器的纯文本内容
498
+ */
499
+ getText(): string;
500
+ /**
501
+ * 配置编辑器,返回创建的编辑器
502
+ */
503
+ static configure(options: EditorConfigureOptionType): Promise<Editor>;
504
+ }
@@ -0,0 +1,42 @@
1
+ import { KNode } from './KNode';
2
+ import { Selection } from './Selection';
3
+ /**
4
+ * 历史记录的record类型
5
+ */
6
+ export type HistoryRecordType = {
7
+ nodes: KNode[];
8
+ selection: Selection;
9
+ };
10
+ /**
11
+ * 历史记录
12
+ */
13
+ export declare class History {
14
+ /**
15
+ * 存放历史记录的堆栈
16
+ */
17
+ records: HistoryRecordType[];
18
+ /**
19
+ * 存放撤销记录的堆栈
20
+ */
21
+ redoRecords: HistoryRecordType[];
22
+ /**
23
+ * 复制selection
24
+ */
25
+ cloneSelection(newNodes: KNode[], selection: Selection): Selection;
26
+ /**
27
+ * 保存新的记录
28
+ */
29
+ setState(nodes: KNode[], selection: Selection): void;
30
+ /**
31
+ * 撤销操作:返回上一个历史记录
32
+ */
33
+ setUndo(): HistoryRecordType | null;
34
+ /**
35
+ * 重做操作:返回下一个历史记录
36
+ */
37
+ setRedo(): HistoryRecordType | null;
38
+ /**
39
+ * 更新当前记录的编辑器的光标
40
+ */
41
+ updateSelection(selection: Selection): void;
42
+ }