vue-editify 0.2.17 → 0.2.19

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 (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