vue-editify 0.2.17 → 0.2.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. package/examples/App.vue +4 -12
  2. package/lib/components/colors/colors.vue.d.ts +9 -0
  3. package/lib/components/colors/props.d.ts +4 -0
  4. package/lib/components/tooltip/tooltip.vue.d.ts +1 -1
  5. package/lib/core/function.d.ts +112 -64
  6. package/lib/core/rule.d.ts +23 -17
  7. package/lib/core/shortcut.d.ts +36 -0
  8. package/lib/core/tool.d.ts +12 -16
  9. package/lib/editify/editify.vue.d.ts +162 -15
  10. package/lib/editify/props.d.ts +1 -5
  11. package/lib/editify/toolbar/props.d.ts +1 -1
  12. package/lib/editify/toolbar/toolbar.vue.d.ts +3 -3
  13. package/lib/editify.es.js +13660 -12954
  14. package/lib/editify.umd.js +2 -2
  15. package/lib/feature/align.d.ts +0 -14
  16. package/lib/feature/heading.d.ts +0 -14
  17. package/lib/feature/lineHeight.d.ts +0 -14
  18. package/lib/feature/orderList.d.ts +1 -3
  19. package/lib/feature/task.d.ts +0 -14
  20. package/lib/feature/unorderList.d.ts +1 -3
  21. package/lib/index.d.ts +164 -17
  22. package/package.json +2 -2
  23. package/src/components/button/button.vue +3 -3
  24. package/src/components/checkbox/checkbox.vue +1 -1
  25. package/src/components/colors/colors.vue +4 -4
  26. package/src/components/colors/props.ts +6 -1
  27. package/src/components/insertAttachment/insertAttachment.vue +1 -1
  28. package/src/components/insertImage/insertImage.vue +1 -1
  29. package/src/components/insertLink/insertLink.vue +1 -1
  30. package/src/components/insertVideo/insertVideo.vue +1 -1
  31. package/src/components/layer/layer.vue +9 -3
  32. package/src/components/tooltip/tooltip.vue +1 -1
  33. package/src/components/updateLink/updateLink.vue +1 -1
  34. package/src/core/function.ts +873 -491
  35. package/src/core/rule.ts +86 -368
  36. package/src/core/shortcut.ts +386 -0
  37. package/src/core/tool.ts +111 -159
  38. package/src/css/var.less +0 -10
  39. package/src/editify/editify.less +85 -39
  40. package/src/editify/editify.vue +204 -88
  41. package/src/editify/menu/menu.vue +2 -3
  42. package/src/editify/props.ts +1 -6
  43. package/src/editify/toolbar/props.ts +2 -2
  44. package/src/editify/toolbar/toolbar.vue +12 -12
  45. package/src/feature/align.ts +2 -62
  46. package/src/feature/attachment.ts +14 -27
  47. package/src/feature/backColor.ts +2 -1
  48. package/src/feature/bold.ts +1 -1
  49. package/src/feature/code.ts +1 -1
  50. package/src/feature/codeBlock.ts +3 -3
  51. package/src/feature/fontFamily.ts +1 -1
  52. package/src/feature/fontSize.ts +1 -1
  53. package/src/feature/foreColor.ts +2 -1
  54. package/src/feature/formatClear.ts +1 -1
  55. package/src/feature/fullScreen.ts +1 -1
  56. package/src/feature/heading.ts +5 -76
  57. package/src/feature/image.ts +1 -1
  58. package/src/feature/indent.ts +1 -1
  59. package/src/feature/infoBlock.ts +6 -37
  60. package/src/feature/italic.ts +1 -1
  61. package/src/feature/lineHeight.ts +2 -78
  62. package/src/feature/link.ts +1 -1
  63. package/src/feature/mathformula.ts +4 -51
  64. package/src/feature/orderList.ts +168 -37
  65. package/src/feature/quote.ts +3 -3
  66. package/src/feature/redo.ts +1 -1
  67. package/src/feature/separator.ts +1 -1
  68. package/src/feature/sourceView.ts +1 -1
  69. package/src/feature/strikethrough.ts +1 -1
  70. package/src/feature/sub.ts +1 -1
  71. package/src/feature/super.ts +1 -1
  72. package/src/feature/table.ts +3 -3
  73. package/src/feature/task.ts +4 -58
  74. package/src/feature/underline.ts +1 -1
  75. package/src/feature/undo.ts +1 -1
  76. package/src/feature/unorderList.ts +108 -37
  77. package/src/feature/video.ts +1 -1
  78. package/src/icon/iconfont.css +39 -3
  79. package/src/icon/iconfont.ttf +0 -0
  80. package/src/icon/iconfont.woff +0 -0
  81. package/src/index.ts +13 -11
  82. package/src/locale/en_US.ts +109 -110
  83. package/src/locale/zh_CN.ts +11 -12
  84. package/lib/feature/panel.d.ts +0 -18
  85. package/src/feature/panel.ts +0 -107
package/examples/App.vue CHANGED
@@ -22,6 +22,7 @@ const menuConfig = ref({
22
22
  sourceView: {
23
23
  show: true
24
24
  },
25
+ heading: {},
25
26
  fullScreen: {
26
27
  show: true
27
28
  },
@@ -53,19 +54,10 @@ const menuConfig = ref({
53
54
  }
54
55
  })
55
56
  const toolbarConfig = ref({
56
- use: true
57
+ use: true,
58
+ text: {}
57
59
  })
58
- const val = ref<string>(
59
- `<div data-editify-info="true" style="background-color: rgba(3, 168, 243, 0.15); color: rgb(3, 168, 243);"><span>调用domRender方法会先对编辑器内的元素进行格式化处理,然后会更新编辑器dom内容,渲染到视图上</span></div><p><br></p><p><br></p><h5><span>如何规范化校验(格式化)?</span></h5><p><br></p><h5><span>null</span></h5><div data-editify-list="ul"><span>stack数组元素只能是block元素,同时block元素只会出现在根部,如果某个元素的子元素是block元素,那么该block元素会被转为inline元素或者inblock元素(对于被转为inblock的block元素,其行为值behavior为"block")</span></div><div data-editify-list="ul"><span>inblock与其他元素不能同时存在于子元素数组中,如果某个元素的子元素数组中含有inblock元素,那么其他子元素也必然是inblock元素,否则该inblock元素会被转为inline元素</span></div><div data-editify-list="ul"><span>inblock元素的父元素必然是block元素或者inblock元素</span></div><div data-editify-list="ul"><span>换行符清除规则:换行符与其他元素不能同时存在,并且如果某个元素下存在多个换行符则会被清除为一个换行符</span></div><div data-editify-list="ul"><span>兄弟元素合并策略:相邻的两个文本元素的styles和marks相同则会被合并;相邻的两个行内元素的parsedom、styles和marks相同则会被合并(如果两个元素中有元素的locked属性为true则无法进行合并)</span></div><div data-editify-list="ul"><span>父子元素合并策略:父元素的子元素只有一个,并且该子元素是文本元素,父元素是parsedom==AlexElement.TEXT_NODE的行内元素,则子元素会父元素进行合并;父元素的子元素只有一个,inline元素、inblock元素如果与父元素的parsedom一致,marks和styles也一致,那么会与父元素合并(如果两个元素中有元素的locked属性为true则无法进行合并)</span></div><div data-editify-list="ul"><span>多个连续空白文本字符合并策略:文本元素内的空白文本值如果存在多个连续的情况下,会被合并成一个空白文本值</span></div><div data-editify-list="ul"><span>元素进行规范化处理时,会从stack依次进行遍历处理,当遍历子元素时,也是从第一个子元素开始依次遍历</span></div><p><br></p><blockquote><span>以上是编辑器内部的默认规范化处理规则,当然,编辑器对外提供了让我们自定义额外规则的能力,它便是AlexEditor的属性renderRules</span></blockquote><p><br></p><p><br></p><h5><span>使用renderRules自定义额外的规范化校验规则</span></h5><p><br></p><p><span>renderRules是一个数组,数组中可以定义多个函数,每个函数都会在调用formatElementStack方法时进行调用</span></p><pre data-editify-element="42" data-editify-hljs="javascript"><span class="editify-hljs-comment">//例如将&lt;b&gt;标签转为&lt;span&gt;标签</span><span>
60
- </span><span class="editify-hljs-keyword">const</span><span> parseCode = </span><span class="editify-hljs-keyword">function</span><span>(</span><span class="editify-hljs-params">element</span><span>){
61
- </span><span class="editify-hljs-keyword">if</span><span> (element.</span><span class="editify-hljs-property">parsedom</span><span> == </span><span class="editify-hljs-string">'b'</span><span>) {
62
- element.</span><span class="editify-hljs-property">parsedom</span><span> = </span><span class="editify-hljs-string">'span'</span><span>
63
-  element.</span><span class="editify-hljs-property">styles</span><span> = {
64
-  </span><span class="editify-hljs-string">'font-weight'</span><span>:</span><span class="editify-hljs-string">'bold'</span><span>
65
-  }
66
- }
67
- }</span></pre>`
68
- )
60
+ const val = ref<string>(`<p>333</p>`)
69
61
  </script>
70
62
  <style lang="less">
71
63
  html,
@@ -17,6 +17,10 @@ declare const _default: import('vue').DefineComponent<{
17
17
  type: BooleanConstructor;
18
18
  default: boolean;
19
19
  };
20
+ zIndex: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
20
24
  }, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
25
  change: (...args: any[]) => void;
22
26
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -36,11 +40,16 @@ declare const _default: import('vue').DefineComponent<{
36
40
  type: BooleanConstructor;
37
41
  default: boolean;
38
42
  };
43
+ zIndex: {
44
+ type: NumberConstructor;
45
+ default: number;
46
+ };
39
47
  }>> & {
40
48
  onChange?: ((...args: any[]) => any) | undefined;
41
49
  }, {
42
50
  tooltip: boolean;
43
51
  color: string;
52
+ zIndex: number;
44
53
  value: string;
45
54
  data: ButtonOptionsItemType[];
46
55
  }, {}>;
@@ -18,5 +18,9 @@ export declare const ColorsProps: {
18
18
  type: BooleanConstructor;
19
19
  default: boolean;
20
20
  };
21
+ zIndex: {
22
+ type: NumberConstructor;
23
+ default: number;
24
+ };
21
25
  };
22
26
  export type ColorsPropsType = ExtractPublicPropTypes<typeof ColorsProps>;
@@ -38,8 +38,8 @@ declare const __VLS_component: import('vue').DefineComponent<{
38
38
  }>>, {
39
39
  disabled: boolean;
40
40
  zIndex: number;
41
- content: string;
42
41
  block: boolean;
42
+ content: string;
43
43
  }, {}>;
44
44
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
45
45
  export default _default;
@@ -6,6 +6,31 @@ export type ElementMatchConfigType = {
6
6
  marks?: ObjectType;
7
7
  styles?: ObjectType;
8
8
  };
9
+ /** --------------------------------代码块操作相关函数------------------------------------------------ */
10
+ /**
11
+ * 更新代码块内的光标位置
12
+ * @param editor
13
+ * @param element
14
+ * @param originalTextElements
15
+ * @param newElements
16
+ * @returns
17
+ */
18
+ export declare const updateRangeInPre: (editor: AlexEditor, element: AlexElement, originalTextElements: AlexElement[], newElements: AlexElement[]) => void;
19
+ /** --------------------------------表格操作相关函数--------------------------------------------- */
20
+ /**
21
+ * 自动隐藏被合并的单元格
22
+ * @param editor
23
+ * @param rowElements
24
+ */
25
+ export declare const autoHideMergedTableCells: (editor: AlexEditor, rowElements: AlexElement[]) => void;
26
+ /**
27
+ * 自动补全表格行和列
28
+ * @param editor
29
+ * @param rowElements
30
+ * @param rowNumber
31
+ * @param columnNumber
32
+ */
33
+ export declare const autocompleteTableCells: (editor: AlexEditor, rowElements: AlexElement[], rowNumber: number, columnNumber: number) => void;
9
34
  /**
10
35
  * 清空单元格的内容并隐藏
11
36
  * @param editor
@@ -40,6 +65,7 @@ export declare const getTableSize: (rowElements: AlexElement[]) => {
40
65
  rowNumber: number;
41
66
  columnNumber: number;
42
67
  };
68
+ /** --------------------------------通用的元素判断函数----------------------------------------------- */
43
69
  /**
44
70
  * Open API:判断元素是否符合指定的条件
45
71
  * @param element
@@ -62,6 +88,7 @@ export declare const getMatchElementByElement: (element: AlexElement, config: El
62
88
  * @returns
63
89
  */
64
90
  export declare const getMatchElementByRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, config: ElementMatchConfigType) => AlexElement | null;
91
+ /** --------------------------------列表判断函数---------------------------------------------------------- */
65
92
  /**
66
93
  * Open API:判断元素是否有序或者无序列表,不做空元素判断
67
94
  * @param element
@@ -92,6 +119,7 @@ export declare const hasListInRange: (editor: AlexEditor, dataRangeCaches: AlexE
92
119
  * @returns
93
120
  */
94
121
  export declare const rangeIsInList: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, ordered?: boolean | undefined) => boolean;
122
+ /** --------------------------------任务列表判断函数----------------------------------------------- */
95
123
  /**
96
124
  * Open API:判断元素是否任务列表,不做空元素判断
97
125
  * @param element
@@ -118,6 +146,7 @@ export declare const hasTaskInRange: (editor: AlexEditor, dataRangeCaches: AlexE
118
146
  * @returns
119
147
  */
120
148
  export declare const rangeIsInTask: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
149
+ /** --------------------------------附件判断函数------------------------------------------------- */
121
150
  /**
122
151
  * Open API:判断元素是否附件,不做空元素判断
123
152
  * @param element
@@ -131,6 +160,7 @@ export declare const elementIsAttachment: (element: AlexElement) => boolean;
131
160
  * @returns
132
161
  */
133
162
  export declare const hasAttachmentInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
163
+ /** --------------------------------数学公式判断函数--------------------------------------------- */
134
164
  /**
135
165
  * Open API:判断元素是否数学公式,不做空元素判断
136
166
  * @param element
@@ -150,25 +180,7 @@ export declare const getMathformulaByElement: (element: AlexElement) => AlexElem
150
180
  * @returns
151
181
  */
152
182
  export declare const hasMathformulaInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
153
- /**
154
- * Open API:判断元素是否面板,不做空元素判断
155
- * @param el
156
- * @returns
157
- */
158
- export declare const elementIsPanel: (element: AlexElement) => boolean;
159
- /**
160
- * Open API:判断元素是否在面板内,是的话返回面板元素,否则返回null
161
- * @param el
162
- * @returns
163
- */
164
- export declare const getPanelByElement: (element: AlexElement) => AlexElement | null;
165
- /**
166
- * Open API:选区是否含有面板,不一定是同一个面板,只要含有面板即返回true
167
- * @param editor
168
- * @param dataRangeCaches
169
- * @returns
170
- */
171
- export declare const hasPanelInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
183
+ /** --------------------------------信息块判断函数---------------------------------------------- */
172
184
  /**
173
185
  * Open API:判断元素是否信息块,不做空元素判断
174
186
  * @param el
@@ -195,6 +207,7 @@ export declare const hasInfoBlockInRange: (editor: AlexEditor, dataRangeCaches:
195
207
  * @returns
196
208
  */
197
209
  export declare const rangeIsInInfoBlock: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
210
+ /** --------------------------------代码块判断函数------------------------------------------------ */
198
211
  /**
199
212
  * Open API:选区是否含有代码块,不一定是同一个代码块,只要含有代码块即返回true
200
213
  * @param editor
@@ -202,6 +215,15 @@ export declare const rangeIsInInfoBlock: (editor: AlexEditor, dataRangeCaches: A
202
215
  * @returns
203
216
  */
204
217
  export declare const hasPreInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
218
+ /** --------------------------------表格判断函数------------------------------------------------- */
219
+ /**
220
+ * Open API:选区是否含有表格,不一定是同一个表格,只要含有表格即返回true
221
+ * @param editor
222
+ * @param dataRangeCaches
223
+ * @returns
224
+ */
225
+ export declare const hasTableInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
226
+ /** --------------------------------引用判断函数----------------------------------------------- */
205
227
  /**
206
228
  * Open API:选区是否含有引用,不一定是同一个引用,只要含有引用即返回true
207
229
  * @param editor
@@ -210,19 +232,21 @@ export declare const hasPreInRange: (editor: AlexEditor, dataRangeCaches: AlexEl
210
232
  */
211
233
  export declare const hasQuoteInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
212
234
  /**
213
- * Open API:选区是否含有链接,不一定是同一个链接,只要含有链接即返回true
235
+ * Open API:选区是否全部在引用内,不一定是同一个引用
214
236
  * @param editor
215
237
  * @param dataRangeCaches
216
238
  * @returns
217
239
  */
218
- export declare const hasLinkInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
240
+ export declare const rangeIsInQuote: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
241
+ /** --------------------------------链接判断函数-------------------------------------------------- */
219
242
  /**
220
- * Open API:选区是否含有表格,不一定是同一个表格,只要含有表格即返回true
243
+ * Open API:选区是否含有链接,不一定是同一个链接,只要含有链接即返回true
221
244
  * @param editor
222
245
  * @param dataRangeCaches
223
246
  * @returns
224
247
  */
225
- export declare const hasTableInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
248
+ export declare const hasLinkInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
249
+ /** --------------------------------图片视频判断函数--------------------------------------------- */
226
250
  /**
227
251
  * Open API:选区是否含有图片,不一定是同一个图片,只要含有图片即返回true
228
252
  * @param editor
@@ -237,13 +261,14 @@ export declare const hasImageInRange: (editor: AlexEditor, dataRangeCaches: Alex
237
261
  * @returns
238
262
  */
239
263
  export declare const hasVideoInRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
264
+ /** --------------------文本元素标记和样式相关函数--------------------------------------- */
240
265
  /**
241
- * Open API:选区是否全部在引用内,不一定是同一个引用
266
+ * 获取光标选取内的扁平化元素数组(可能会分割文本元素导致stack变更,同时也会更新选取元素和光标位置)
242
267
  * @param editor
243
268
  * @param dataRangeCaches
244
269
  * @returns
245
270
  */
246
- export declare const rangeIsInQuote: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => boolean;
271
+ export declare const getFlatElementsByRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => AlexElement[];
247
272
  /**
248
273
  * Open API:查询光标所在的文本元素是否具有某个样式
249
274
  * @param editor
@@ -253,6 +278,22 @@ export declare const rangeIsInQuote: (editor: AlexEditor, dataRangeCaches: AlexE
253
278
  * @returns
254
279
  */
255
280
  export declare const queryTextStyle: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, name: string, value?: string | number) => boolean;
281
+ /**
282
+ * Open API:设置文本元素的样式
283
+ * @param editor
284
+ * @param dataRangeCaches
285
+ * @param styles 值为{ 'font-weight':'bold' }这类格式
286
+ * @returns
287
+ */
288
+ export declare const setTextStyle: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, styles: ObjectType) => void;
289
+ /**
290
+ * Open API:移除文本元素的样式
291
+ * @param editor
292
+ * @param dataRangeCaches
293
+ * @param styleNames 样式名称数组,如果不存在则移除全部样式
294
+ * @returns
295
+ */
296
+ export declare const removeTextStyle: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, styleNames?: string[]) => void;
256
297
  /**
257
298
  * Open API:查询光标所在的文本元素是否具有某个标记
258
299
  * @param editor
@@ -263,18 +304,22 @@ export declare const queryTextStyle: (editor: AlexEditor, dataRangeCaches: AlexE
263
304
  */
264
305
  export declare const queryTextMark: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, name: string, value?: string | number) => boolean;
265
306
  /**
266
- * Open API:获取选区内的文字内容
307
+ * Open API:设置文本元素的标记
308
+ * @param editor
267
309
  * @param dataRangeCaches
310
+ * @param marks 值为{ 'class':'a' }这类格式
268
311
  * @returns
269
312
  */
270
- export declare const getRangeText: (dataRangeCaches: AlexElementsRangeType) => string;
313
+ export declare const setTextMark: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, marks: ObjectType) => void;
271
314
  /**
272
- * 获取光标选取内的扁平化元素数组(可能会分割文本元素导致stack变更,同时也会更新选取元素和光标位置)
315
+ * Open API:移除文本元素的标记
273
316
  * @param editor
274
317
  * @param dataRangeCaches
318
+ * @param markNames 标记名称数组,如果不存在则移除全部标记
275
319
  * @returns
276
320
  */
277
- export declare const getFlatElementsByRange: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => AlexElement[];
321
+ export declare const removeTextMark: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, markNames?: string[]) => void;
322
+ /** --------------------------------元素转换函数-------------------------------------------------- */
278
323
  /**
279
324
  * 将某个元素转为段落标签
280
325
  * @param element
@@ -293,15 +338,29 @@ export declare const elementToList: (element: AlexElement, ordered?: boolean | u
293
338
  * @returns
294
339
  */
295
340
  export declare const elementToTask: (element: AlexElement) => void;
341
+ /** --------------------------------封装的功能函数----------------------------------------------- */
342
+ /**
343
+ * Open API:获取选区内的文字内容
344
+ * @param dataRangeCaches
345
+ * @returns
346
+ */
347
+ export declare const getRangeText: (dataRangeCaches: AlexElementsRangeType) => string;
296
348
  /**
297
- * 设置标题
349
+ * Open API:给元素两侧加上空白文本元素
350
+ * @param editor
351
+ * @param element
352
+ */
353
+ export declare const addSpaceTextToBothSides: (editor: AlexEditor, element: AlexElement) => void;
354
+ /** --------------------------------菜单功能函数----------------------------------------------------- */
355
+ /**
356
+ * Open API:设置标题,支持h1-h6和p
298
357
  * @param editor
299
358
  * @param dataRangeCaches
300
359
  * @param editTrans
301
360
  * @param parsedom
302
361
  * @returns
303
362
  */
304
- export declare const setHeading: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, editTrans: (key: string) => any, parsedom: string) => void;
363
+ export declare const setHeading: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, parsedom: string) => void;
305
364
  /**
306
365
  * Open API:根级块元素或者内部块元素增加缩进
307
366
  * @param editor
@@ -347,39 +406,7 @@ export declare const setList: (editor: AlexEditor, dataRangeCaches: AlexElements
347
406
  */
348
407
  export declare const setTask: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => void;
349
408
  /**
350
- * Open API:设置文本元素的样式
351
- * @param editor
352
- * @param dataRangeCaches
353
- * @param styles 值为{ 'font-weight':'bold' }这类格式
354
- * @returns
355
- */
356
- export declare const setTextStyle: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, styles: ObjectType) => void;
357
- /**
358
- * Open API:设置文本元素的标记
359
- * @param editor
360
- * @param dataRangeCaches
361
- * @param marks 值为{ 'class':'a' }这类格式
362
- * @returns
363
- */
364
- export declare const setTextMark: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, marks: ObjectType) => void;
365
- /**
366
- * Open API:移除文本元素的样式
367
- * @param editor
368
- * @param dataRangeCaches
369
- * @param styleNames 样式名称数组,如果不存在则移除全部样式
370
- * @returns
371
- */
372
- export declare const removeTextStyle: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, styleNames?: string[]) => void;
373
- /**
374
- * Open API:移除文本元素的标记
375
- * @param editor
376
- * @param dataRangeCaches
377
- * @param markNames 标记名称数组,如果不存在则移除全部标记
378
- * @returns
379
- */
380
- export declare const removeTextMark: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, markNames?: string[]) => void;
381
- /**
382
- * Open API:设置块元素或者根级块元素的行高
409
+ * Open API:设置内部块元素或者根级块元素的行高
383
410
  * @param editor
384
411
  * @param dataRangeCaches
385
412
  * @param value
@@ -431,3 +458,24 @@ export declare const insertCodeBlock: (editor: AlexEditor, dataRangeCaches: Alex
431
458
  * @returns
432
459
  */
433
460
  export declare const insertSeparator: (editor: AlexEditor) => void;
461
+ /**
462
+ * Open API:插入附件
463
+ * @param editor
464
+ * @param url 附件地址
465
+ * @param name 附件名称
466
+ */
467
+ export declare const insertAttachment: (editor: AlexEditor, url: string, name: string) => void;
468
+ /**
469
+ * Open API:插入数学公式
470
+ * @param editor
471
+ * @param dataRangeCaches
472
+ * @param mathContent 数学公式字符串
473
+ * @param errorCallback 错误处理
474
+ */
475
+ export declare const insertMathformula: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, mathContent: string, errorCallback?: (err: Error) => void) => void;
476
+ /**
477
+ * Open API:插入信息块
478
+ * @param editor
479
+ * @param dataRangeCaches
480
+ */
481
+ export declare const insertInfoBlock: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType) => void;
@@ -2,43 +2,49 @@ import { AlexEditor, AlexElement } from 'alex-editor';
2
2
  import { LanguagesItemType } from '../hljs';
3
3
 
4
4
  /**
5
- * 元素格式化时转换ol和li标签
5
+ * 有序列表和无序列表的格式化处理
6
6
  * @param editor
7
7
  * @param element
8
8
  */
9
- export declare const parseList: (editor: AlexEditor, element: AlexElement) => void;
9
+ export declare const listHandle: (editor: AlexEditor, element: AlexElement) => void;
10
10
  /**
11
- * 元素格式化时处理有序列表的序号值
11
+ * 图片格式化处理
12
12
  * @param editor
13
13
  * @param element
14
14
  */
15
- export declare const orderdListHandle: (editor: AlexEditor, element: AlexElement) => void;
15
+ export declare const imageHandle: (_editor: AlexEditor, element: AlexElement) => void;
16
16
  /**
17
- * 元素格式化时处理常规元素(图片、视频、分隔线、行内代码)
17
+ * 视频格式化处理
18
18
  * @param editor
19
19
  * @param element
20
20
  */
21
- export declare const commonElementHandle: (editor: AlexEditor, element: AlexElement) => void;
21
+ export declare const videoHandle: (editor: AlexEditor, element: AlexElement) => void;
22
22
  /**
23
- * 元素格式化时处理表格:th转为td
23
+ * 分隔线格式化处理
24
24
  * @param editor
25
25
  * @param element
26
26
  */
27
- export declare const tableThTdHandle: (_editor: AlexEditor, element: AlexElement) => void;
27
+ export declare const separatorHandle: (editor: AlexEditor, element: AlexElement) => void;
28
28
  /**
29
- * 元素格式化时处理表格:格式化表格
29
+ * 链接格式化处理
30
30
  * @param editor
31
31
  * @param element
32
32
  */
33
- export declare const tableFormatHandle: (editor: AlexEditor, element: AlexElement) => void;
33
+ export declare const linkHandle: (_editor: AlexEditor, element: AlexElement) => void;
34
34
  /**
35
- * 元素格式化时处理表格:处理光标在表格隐藏单元格内的情况
35
+ * 行内代码格式化处理
36
+ * @param _editor
37
+ * @param element
38
+ */
39
+ export declare const codeHandle: (_editor: AlexEditor, element: AlexElement) => void;
40
+ /**
41
+ * 表格格式化处理
36
42
  * @param editor
37
43
  * @param element
38
44
  */
39
- export declare const tableRangeMergedHandle: (editor: AlexEditor, element: AlexElement) => void;
45
+ export declare const tableHandle: (editor: AlexEditor, element: AlexElement) => void;
40
46
  /**
41
- * 元素格式化时处理pre,将pre的内容根据语言进行样式处理
47
+ * 代码块格式化处理
42
48
  * @param editor
43
49
  * @param element
44
50
  * @param highlight
@@ -46,27 +52,27 @@ export declare const tableRangeMergedHandle: (editor: AlexEditor, element: AlexE
46
52
  */
47
53
  export declare const preHandle: (editor: AlexEditor, element: AlexElement, highlight: boolean, languages: (string | LanguagesItemType)[]) => void;
48
54
  /**
49
- * 元素格式化时处理附件元素
55
+ * 附件格式化处理
50
56
  * @param editor
51
57
  * @param element
52
58
  * @param $editTrans
53
59
  */
54
60
  export declare const attachmentHandle: (editor: AlexEditor, element: AlexElement, $editTrans: (key: string) => any) => void;
55
61
  /**
56
- * 元素格式化时处理数学公式元素
62
+ * 数学公式格式化处理
57
63
  * @param editor
58
64
  * @param element
59
65
  */
60
66
  export declare const mathformulaHandle: (editor: AlexEditor, element: AlexElement) => void;
61
67
  /**
62
- * 元素格式化时处理信息块元素
68
+ * 信息块格式化处理
63
69
  * @param editor
64
70
  * @param element
65
71
  * @param color
66
72
  */
67
73
  export declare const infoBlockHandle: (_editor: AlexEditor, element: AlexElement, color: string) => void;
68
74
  /**
69
- * 元素格式化时处理一些特殊的内部块元素,转为根级块元素
75
+ * 一些特殊的内部块元素,转为根级块元素
70
76
  * @param editor
71
77
  * @param element
72
78
  */
@@ -0,0 +1,36 @@
1
+ import { ShortcutType } from './tool';
2
+
3
+ export type ShortcutConfigType = {
4
+ heading: ShortcutType;
5
+ indent: ShortcutType;
6
+ quote: ShortcutType;
7
+ separator: ShortcutType;
8
+ align: ShortcutType;
9
+ orderList: ShortcutType;
10
+ unorderList: ShortcutType;
11
+ task: ShortcutType;
12
+ bold: ShortcutType;
13
+ underline: ShortcutType;
14
+ italic: ShortcutType;
15
+ strikethrough: ShortcutType;
16
+ code: ShortcutType;
17
+ super: ShortcutType;
18
+ sub: ShortcutType;
19
+ formatClear: ShortcutType;
20
+ fontSize: ShortcutType;
21
+ fontFamily: ShortcutType;
22
+ lineHeight: ShortcutType;
23
+ foreColor: ShortcutType;
24
+ backColor: ShortcutType;
25
+ link: ShortcutType;
26
+ image: ShortcutType;
27
+ video: ShortcutType;
28
+ table: ShortcutType;
29
+ codeBlock: ShortcutType;
30
+ sourceView: ShortcutType;
31
+ fullScreen: ShortcutType;
32
+ attachment: ShortcutType;
33
+ mathformula: ShortcutType;
34
+ infoBlock: ShortcutType;
35
+ };
36
+ export declare const config: ShortcutConfigType;
@@ -1,4 +1,5 @@
1
- import { App, Component, VNode } from 'vue';
1
+ import { App, Component, Ref, VNode } from 'vue';
2
+ import { AlexEditor, AlexElementsRangeType } from 'alex-editor';
2
3
  import { LocaleType } from '../locale';
3
4
  import { Button, ButtonOptionsItemType, ButtonTypeType } from '../components/button';
4
5
  import { InsertImageUploadErrorType } from '../components/insertImage';
@@ -17,11 +18,19 @@ export type ButtonOptionsConfigType = {
17
18
  foreColor?: (string | number | ButtonOptionsItemType)[];
18
19
  backColor?: (string | number | ButtonOptionsItemType)[];
19
20
  };
21
+ export type ShortcutType = {
22
+ title: string;
23
+ define: ((event: KeyboardEvent) => boolean | {
24
+ [code: string]: boolean;
25
+ }) | null;
26
+ operation?: (editor: AlexEditor, dataRangeCaches: AlexElementsRangeType, isSourceView: Ref<boolean>, isFullScreen: Ref<boolean>, code?: string) => void;
27
+ };
20
28
  export interface MenuButtonType {
21
29
  show?: boolean;
22
30
  leftBorder?: boolean;
23
31
  rightBorder?: boolean;
24
32
  disabled?: boolean;
33
+ shortcut?: ShortcutType;
25
34
  }
26
35
  export interface MenuSelectButtonType extends MenuButtonType {
27
36
  options?: (string | number | ButtonOptionsItemType)[];
@@ -75,6 +84,7 @@ export type MenuCustomButtonType = {
75
84
  options?: ButtonOptionsItemType[];
76
85
  value?: string | number;
77
86
  hideScroll?: boolean;
87
+ shortcut?: ShortcutType;
78
88
  onLayerShow?: (name: string, btnInstance: InstanceType<typeof Button>) => void;
79
89
  onLayerShown?: (name: string, btnInstance: InstanceType<typeof Button>) => void;
80
90
  onLayerHidden?: (name: string, btnInstance: InstanceType<typeof Button>) => void;
@@ -87,11 +97,6 @@ export type CodeBlockToolbarType = {
87
97
  languages?: MenuSelectButtonType;
88
98
  };
89
99
  export type TextToolbarType = {
90
- heading?: MenuDisplayButtonType;
91
- align?: MenuSelectButtonType;
92
- orderList?: MenuButtonType;
93
- unorderList?: MenuButtonType;
94
- task?: MenuButtonType;
95
100
  bold?: MenuButtonType;
96
101
  italic?: MenuButtonType;
97
102
  strikethrough?: MenuButtonType;
@@ -101,7 +106,6 @@ export type TextToolbarType = {
101
106
  sub?: MenuButtonType;
102
107
  fontSize?: MenuDisplayButtonType;
103
108
  fontFamily?: MenuDisplayButtonType;
104
- lineHeight?: MenuDisplayButtonType;
105
109
  foreColor?: MenuSelectButtonType;
106
110
  backColor?: MenuSelectButtonType;
107
111
  formatClear?: MenuButtonType;
@@ -146,7 +150,6 @@ export type MenuSequenceType = {
146
150
  fullScreen?: number;
147
151
  attachment?: number;
148
152
  mathformula?: number;
149
- panel?: number;
150
153
  infoBlock?: number;
151
154
  };
152
155
  export type MenuModeType = 'default' | 'inner' | 'fixed';
@@ -191,7 +194,6 @@ export type MenuConfigType = {
191
194
  fullScreen?: MenuButtonType;
192
195
  attachment?: MenuAttachmentButtonType;
193
196
  mathformula?: MenuMathformulaButtonType;
194
- panel?: MenuButtonType;
195
197
  infoBlock?: MenuButtonType;
196
198
  extends?: MenuExtendType;
197
199
  };
@@ -213,12 +215,6 @@ export declare const mergeObject: (o1: ObjectType, o2: ObjectType) => ObjectType
213
215
  * @returns
214
216
  */
215
217
  export declare const queryHasValue: (obj: ObjectType, name: string, value?: string | number) => boolean;
216
- /**
217
- * 深拷贝函数
218
- * @param data
219
- * @returns
220
- */
221
- export declare const cloneData: (data: any) => any;
222
218
  /**
223
219
  * 获取菜单按钮列表数据配置
224
220
  * @param editTrans
@@ -231,7 +227,7 @@ export declare const getButtonOptionsConfig: (editTrans: (key: string) => any) =
231
227
  * @param editLocale
232
228
  * @returns
233
229
  */
234
- export declare const getToolbarConfig: (editTrans: (key: string) => any, editLocale: LocaleType) => ToolbarConfigType;
230
+ export declare const getToolbarConfig: (editTrans: (key: string) => any) => ToolbarConfigType;
235
231
  /**
236
232
  * 菜单栏全量配置
237
233
  * @param editTrans