vue-editify 0.2.14 → 0.2.16
Sign up to get free protection for your applications and to get access to all the features.
- package/examples/App.vue +41 -88
- package/lib/components/button/button.vue.d.ts +62 -60
- package/lib/components/button/index.d.ts +4 -0
- package/lib/components/button/props.d.ts +12 -1
- package/lib/components/checkbox/checkbox.vue.d.ts +9 -9
- package/lib/components/checkbox/index.d.ts +4 -0
- package/lib/components/checkbox/props.d.ts +2 -2
- package/lib/components/colors/colors.vue.d.ts +4 -4
- package/lib/components/colors/index.d.ts +4 -0
- package/lib/components/colors/props.d.ts +2 -2
- package/lib/components/icon/index.d.ts +4 -0
- package/lib/components/insertAttachment/index.d.ts +4 -0
- package/lib/{plugins/attachment → components}/insertAttachment/insertAttachment.vue.d.ts +3 -3
- package/lib/{plugins/attachment → components}/insertAttachment/props.d.ts +1 -1
- package/lib/components/insertImage/index.d.ts +4 -0
- package/lib/components/insertImage/insertImage.vue.d.ts +3 -3
- package/lib/components/insertImage/props.d.ts +1 -1
- package/lib/components/insertLink/index.d.ts +4 -0
- package/lib/components/insertLink/insertLink.vue.d.ts +6 -6
- package/lib/components/insertLink/props.d.ts +3 -3
- package/lib/components/insertMathformula/index.d.ts +4 -0
- package/lib/{plugins/mathformula → components}/insertMathformula/insertMathformula.vue.d.ts +3 -3
- package/lib/{plugins/mathformula → components}/insertMathformula/props.d.ts +2 -2
- package/lib/components/insertTable/index.d.ts +4 -0
- package/lib/components/insertTable/insertTable.vue.d.ts +3 -3
- package/lib/components/insertTable/props.d.ts +2 -2
- package/lib/components/insertVideo/index.d.ts +4 -0
- package/lib/components/insertVideo/insertVideo.vue.d.ts +3 -3
- package/lib/components/insertVideo/props.d.ts +1 -1
- package/lib/components/layer/index.d.ts +4 -0
- package/lib/components/layer/layer.vue.d.ts +10 -8
- package/lib/components/tooltip/index.d.ts +4 -0
- package/lib/components/tooltip/tooltip.vue.d.ts +6 -4
- package/lib/components/triangle/index.d.ts +4 -0
- package/lib/components/triangle/triangle.vue.d.ts +1 -1
- package/lib/components/updateLink/index.d.ts +4 -0
- package/lib/components/updateLink/props.d.ts +17 -0
- package/lib/components/updateLink/updateLink.vue.d.ts +38 -0
- package/lib/core/function.d.ts +113 -36
- package/lib/core/rule.d.ts +20 -0
- package/lib/core/tool.d.ts +36 -34
- package/lib/editify/editify.vue.d.ts +18 -28
- package/lib/editify/menu/index.d.ts +4 -0
- package/lib/{components → editify}/menu/menu.vue.d.ts +3 -4
- package/lib/{components → editify}/menu/props.d.ts +1 -1
- package/lib/editify/props.d.ts +3 -7
- package/lib/editify/toolbar/index.d.ts +4 -0
- package/lib/{components → editify}/toolbar/props.d.ts +2 -2
- package/lib/{components → editify}/toolbar/toolbar.vue.d.ts +53 -53
- package/lib/editify.es.js +38964 -37727
- package/lib/editify.umd.js +2 -2
- package/lib/feature/align.d.ts +32 -0
- package/lib/feature/attachment.d.ts +18 -0
- package/lib/feature/backColor.d.ts +32 -0
- package/lib/feature/bold.d.ts +32 -0
- package/lib/feature/code.d.ts +32 -0
- package/lib/feature/codeBlock.d.ts +32 -0
- package/lib/feature/fontFamily.d.ts +32 -0
- package/lib/feature/fontSize.d.ts +32 -0
- package/lib/feature/foreColor.d.ts +32 -0
- package/lib/feature/formatClear.d.ts +32 -0
- package/lib/feature/fullScreen.d.ts +18 -0
- package/lib/feature/heading.d.ts +32 -0
- package/lib/feature/image.d.ts +32 -0
- package/lib/feature/indent.d.ts +18 -0
- package/lib/feature/infoBlock.d.ts +18 -0
- package/lib/feature/italic.d.ts +32 -0
- package/lib/feature/lineHeight.d.ts +32 -0
- package/lib/feature/link.d.ts +26 -0
- package/lib/feature/mathformula.d.ts +22 -0
- package/lib/feature/orderList.d.ts +32 -0
- package/lib/feature/panel.d.ts +18 -0
- package/lib/feature/quote.d.ts +18 -0
- package/lib/feature/redo.d.ts +18 -0
- package/lib/feature/separator.d.ts +18 -0
- package/lib/feature/sourceView.d.ts +18 -0
- package/lib/feature/strikethrough.d.ts +32 -0
- package/lib/feature/sub.d.ts +32 -0
- package/lib/feature/super.d.ts +32 -0
- package/lib/feature/table.d.ts +32 -0
- package/lib/feature/task.d.ts +32 -0
- package/lib/feature/underline.d.ts +32 -0
- package/lib/feature/undo.d.ts +18 -0
- package/lib/feature/unorderList.d.ts +32 -0
- package/lib/feature/video.d.ts +38 -0
- package/lib/index.d.ts +194 -202
- package/package.json +5 -5
- package/src/components/button/button.vue +21 -24
- package/src/components/button/index.ts +5 -0
- package/src/components/button/props.ts +14 -1
- package/src/components/checkbox/checkbox.vue +1 -1
- package/src/components/checkbox/index.ts +5 -0
- package/src/components/checkbox/props.ts +1 -1
- package/src/components/colors/colors.vue +3 -3
- package/src/components/colors/index.ts +5 -0
- package/src/components/colors/props.ts +2 -2
- package/src/components/icon/index.ts +5 -0
- package/src/components/insertAttachment/index.ts +5 -0
- package/src/{plugins/attachment → components}/insertAttachment/insertAttachment.vue +4 -2
- package/src/{plugins/attachment → components}/insertAttachment/props.ts +1 -1
- package/src/components/insertImage/index.ts +5 -0
- package/src/components/insertImage/insertImage.vue +5 -5
- package/src/components/insertImage/props.ts +1 -1
- package/src/components/insertLink/index.ts +5 -0
- package/src/components/insertLink/insertLink.vue +10 -10
- package/src/components/insertLink/props.ts +3 -3
- package/src/components/insertMathformula/index.ts +5 -0
- package/src/{plugins/mathformula → components}/insertMathformula/props.ts +2 -2
- package/src/components/insertTable/index.ts +5 -0
- package/src/components/insertTable/props.ts +2 -2
- package/src/components/insertVideo/index.ts +5 -0
- package/src/components/insertVideo/insertVideo.vue +2 -2
- package/src/components/insertVideo/props.ts +1 -1
- package/src/components/layer/index.ts +5 -0
- package/src/components/layer/layer.vue +42 -4
- package/src/components/tooltip/index.ts +5 -0
- package/src/components/tooltip/tooltip.vue +1 -1
- package/src/components/triangle/index.ts +5 -0
- package/src/components/triangle/triangle.vue +1 -1
- package/src/components/updateLink/index.ts +5 -0
- package/src/components/updateLink/props.ts +21 -0
- package/src/components/{toolbar/toolbar.less → updateLink/updateLink.less} +4 -20
- package/src/components/updateLink/updateLink.vue +74 -0
- package/src/core/function.ts +289 -97
- package/src/core/rule.ts +108 -29
- package/src/core/tool.ts +237 -81
- package/src/editify/editify.less +4 -0
- package/src/editify/editify.vue +183 -194
- package/src/editify/menu/index.ts +5 -0
- package/src/editify/menu/menu.vue +215 -0
- package/src/{components → editify}/menu/props.ts +1 -1
- package/src/editify/props.ts +7 -11
- package/src/editify/toolbar/index.ts +5 -0
- package/src/{components → editify}/toolbar/props.ts +1 -1
- package/src/editify/toolbar/toolbar.less +10 -0
- package/src/editify/toolbar/toolbar.vue +103 -0
- package/src/feature/align.ts +126 -0
- package/src/feature/attachment.ts +108 -0
- package/src/feature/backColor.ts +169 -0
- package/src/feature/bold.ts +134 -0
- package/src/feature/code.ts +134 -0
- package/src/feature/codeBlock.ts +201 -0
- package/src/feature/fontFamily.ts +138 -0
- package/src/feature/fontSize.ts +140 -0
- package/src/feature/foreColor.ts +171 -0
- package/src/feature/formatClear.ts +116 -0
- package/src/feature/fullScreen.ts +57 -0
- package/src/feature/heading.ts +152 -0
- package/src/feature/image.ts +222 -0
- package/src/feature/indent.ts +72 -0
- package/src/feature/infoBlock.ts +93 -0
- package/src/feature/italic.ts +134 -0
- package/src/feature/lineHeight.ts +163 -0
- package/src/feature/link.ts +146 -0
- package/src/feature/mathformula.ts +146 -0
- package/src/feature/orderList.ts +114 -0
- package/src/feature/panel.ts +107 -0
- package/src/feature/quote.ts +60 -0
- package/src/feature/redo.ts +56 -0
- package/src/feature/separator.ts +61 -0
- package/src/feature/sourceView.ts +59 -0
- package/src/feature/strikethrough.ts +134 -0
- package/src/feature/sub.ts +134 -0
- package/src/feature/super.ts +134 -0
- package/src/feature/table.ts +981 -0
- package/src/feature/task.ts +114 -0
- package/src/feature/underline.ts +134 -0
- package/src/feature/undo.ts +56 -0
- package/src/feature/unorderList.ts +114 -0
- package/src/feature/video.ts +335 -0
- package/src/hljs/index.ts +1 -1
- package/src/index.ts +82 -25
- package/src/locale/en_US.ts +3 -3
- package/src/locale/zh_CN.ts +3 -3
- package/lib/plugins/attachment/index.d.ts +0 -37
- package/lib/plugins/infoBlock/index.d.ts +0 -55
- package/lib/plugins/mathformula/index.d.ts +0 -49
- package/lib/plugins/panel/index.d.ts +0 -48
- package/src/components/menu/menu.vue +0 -1655
- package/src/components/toolbar/toolbar.vue +0 -1677
- package/src/plugins/attachment/index.ts +0 -237
- package/src/plugins/infoBlock/index.ts +0 -238
- package/src/plugins/mathformula/index.ts +0 -295
- package/src/plugins/panel/index.ts +0 -228
- package/tsconfig.json +0 -31
- package/tsconfig.node.json +0 -11
- /package/src/{plugins/attachment → components}/insertAttachment/insertAttachment.less +0 -0
- /package/src/{plugins/mathformula → components}/insertMathformula/insertMathformula.less +0 -0
- /package/src/{plugins/mathformula → components}/insertMathformula/insertMathformula.vue +0 -0
- /package/src/{components → editify}/menu/menu.less +0 -0
package/src/core/rule.ts
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
import { AlexEditor, AlexElement, AlexElementCreateConfigType } from 'alex-editor'
|
2
|
-
import { common as DapCommon } from 'dap-util'
|
2
|
+
import { common as DapCommon, color as DapColor } from 'dap-util'
|
3
3
|
import { LanguagesItemType, getHljsHtml } from '@/hljs'
|
4
|
-
import {
|
5
|
-
import { isPanel } from '@/plugins/panel'
|
6
|
-
import { isInfoBlock } from '@/plugins/infoBlock'
|
4
|
+
import { getTableSize, getCellSpanNumber, elementIsList, elementIsTask, elementIsAttachment, elementIsMathformula, elementIsInfoBlock, elementIsPanel } from './function'
|
7
5
|
|
8
6
|
/**
|
9
7
|
* 自动补全表格行和列
|
@@ -287,11 +285,11 @@ export const parseList = (editor: AlexEditor, element: AlexElement) => {
|
|
287
285
|
*/
|
288
286
|
export const orderdListHandle = (editor: AlexEditor, element: AlexElement) => {
|
289
287
|
//有序列表的序号处理
|
290
|
-
if (
|
288
|
+
if (!element.isEmpty() && elementIsList(element, true)) {
|
291
289
|
//获取前一个元素
|
292
290
|
const previousElement = editor.getPreviousElement(element)
|
293
291
|
//如果前一个元素存在并且也是有序列表
|
294
|
-
if (previousElement &&
|
292
|
+
if (previousElement && !previousElement.isEmpty() && elementIsList(previousElement, true)) {
|
295
293
|
const previousValue = Number(previousElement.marks!['data-editify-value'])
|
296
294
|
element.marks!['data-editify-value'] = previousValue + 1
|
297
295
|
}
|
@@ -374,35 +372,25 @@ export const tableThTdHandle = (_editor: AlexEditor, element: AlexElement) => {
|
|
374
372
|
* @param element
|
375
373
|
*/
|
376
374
|
export const tableFormatHandle = (editor: AlexEditor, element: AlexElement) => {
|
377
|
-
if (element.parsedom == 'table') {
|
378
|
-
|
379
|
-
'data-editify-element': element.key
|
380
|
-
}
|
375
|
+
if (element.hasChildren() && element.parsedom == 'table') {
|
376
|
+
//设置key到marks上
|
381
377
|
if (element.hasMarks()) {
|
382
|
-
Object.assign(element.marks!,
|
383
|
-
|
384
|
-
|
385
|
-
}
|
386
|
-
const styles = {
|
387
|
-
'white-space': 'pre-wrap',
|
388
|
-
'word-break': 'break-word'
|
389
|
-
}
|
390
|
-
if (element.hasStyles()) {
|
391
|
-
Object.assign(element.styles!, styles)
|
378
|
+
Object.assign(element.marks!, {
|
379
|
+
'data-editify-element': element.key
|
380
|
+
})
|
392
381
|
} else {
|
393
|
-
element.
|
382
|
+
element.marks = {
|
383
|
+
'data-editify-element': element.key
|
384
|
+
}
|
394
385
|
}
|
386
|
+
//扁平化处理子元素
|
395
387
|
const elements = AlexElement.flatElements(element.children!)
|
396
388
|
//所有的行元素
|
397
|
-
const rows = elements.filter(el =>
|
398
|
-
return el.parsedom == 'tr'
|
399
|
-
})
|
389
|
+
const rows = elements.filter(el => el.parsedom == 'tr')
|
400
390
|
//获取表格实际应该的规格
|
401
391
|
const { rowNumber, columnNumber } = getTableSize(rows)
|
402
|
-
|
403
|
-
let colgroup = elements.find(el =>
|
404
|
-
return el.parsedom == 'colgroup'
|
405
|
-
})
|
392
|
+
//获取表格的colgroup元素
|
393
|
+
let colgroup = elements.find(el => el.parsedom == 'colgroup')
|
406
394
|
//如果colgroup元素存在
|
407
395
|
if (colgroup) {
|
408
396
|
//遍历每个col元素设置默认的width:'auto
|
@@ -629,6 +617,97 @@ export const preHandle = (editor: AlexEditor, element: AlexElement, highlight: b
|
|
629
617
|
}
|
630
618
|
}
|
631
619
|
|
620
|
+
/**
|
621
|
+
* 元素格式化时处理附件元素
|
622
|
+
* @param editor
|
623
|
+
* @param element
|
624
|
+
* @param $editTrans
|
625
|
+
*/
|
626
|
+
export const attachmentHandle = (editor: AlexEditor, element: AlexElement, $editTrans: (key: string) => any) => {
|
627
|
+
if (!element.isEmpty() && elementIsAttachment(element)) {
|
628
|
+
//设置title
|
629
|
+
element.marks!['title'] = $editTrans('attachmentDownloadTitle')
|
630
|
+
//如果名称没有则设置名称
|
631
|
+
if (!element.marks!['data-editify-attachment-name']) {
|
632
|
+
element.marks!['data-editify-attachment-name'] = $editTrans('attachmentDefaultName')
|
633
|
+
}
|
634
|
+
//前一个元素
|
635
|
+
const previousElement = editor.getPreviousElement(element)
|
636
|
+
//后一个元素
|
637
|
+
const newTextElement = editor.getNextElement(element)
|
638
|
+
//如果不存在前一个元素或者前一个元素不是空白元素则设置空白元素
|
639
|
+
if (!previousElement || !previousElement.isSpaceText()) {
|
640
|
+
const spaceText = AlexElement.getSpaceElement()
|
641
|
+
editor.addElementBefore(spaceText, element)
|
642
|
+
}
|
643
|
+
//如果不存在后一个元素或者后一个元素不是空白元素则设置空白元素
|
644
|
+
if (!newTextElement || !newTextElement.isSpaceText()) {
|
645
|
+
const spaceText = AlexElement.getSpaceElement()
|
646
|
+
editor.addElementAfter(spaceText, element)
|
647
|
+
}
|
648
|
+
//如果光标在元素上则更新光标位置
|
649
|
+
if (editor.range && element.isContains(editor.range.anchor.element)) {
|
650
|
+
editor.range.anchor.moveToEnd(editor.getNextElement(element)!)
|
651
|
+
}
|
652
|
+
if (editor.range && element.isContains(editor.range.focus.element)) {
|
653
|
+
editor.range.focus.moveToEnd(editor.getNextElement(element)!)
|
654
|
+
}
|
655
|
+
}
|
656
|
+
}
|
657
|
+
|
658
|
+
/**
|
659
|
+
* 元素格式化时处理数学公式元素
|
660
|
+
* @param editor
|
661
|
+
* @param element
|
662
|
+
*/
|
663
|
+
export const mathformulaHandle = (editor: AlexEditor, element: AlexElement) => {
|
664
|
+
//给元素设置两侧的空白字符
|
665
|
+
if (!element.isEmpty() && elementIsMathformula(element)) {
|
666
|
+
//前一个元素
|
667
|
+
const previousElement = editor.getPreviousElement(element)
|
668
|
+
//后一个元素
|
669
|
+
const newTextElement = editor.getNextElement(element)
|
670
|
+
//如果不存在前一个元素或者前一个元素不是空白元素则设置空白元素
|
671
|
+
if (!previousElement || !previousElement.isSpaceText()) {
|
672
|
+
const spaceText = AlexElement.getSpaceElement()
|
673
|
+
editor.addElementBefore(spaceText, element)
|
674
|
+
}
|
675
|
+
//如果不存在后一个元素或者后一个元素不是空白元素则设置空白元素
|
676
|
+
if (!newTextElement || !newTextElement.isSpaceText()) {
|
677
|
+
const spaceText = AlexElement.getSpaceElement()
|
678
|
+
editor.addElementAfter(spaceText, element)
|
679
|
+
}
|
680
|
+
//如果光标在元素上则更新光标位置
|
681
|
+
if (editor.range && element.isContains(editor.range.anchor.element)) {
|
682
|
+
editor.range.anchor.moveToEnd(editor.getNextElement(element)!)
|
683
|
+
}
|
684
|
+
if (editor.range && element.isContains(editor.range.focus.element)) {
|
685
|
+
editor.range.focus.moveToEnd(editor.getNextElement(element)!)
|
686
|
+
}
|
687
|
+
}
|
688
|
+
}
|
689
|
+
|
690
|
+
/**
|
691
|
+
* 元素格式化时处理信息块元素
|
692
|
+
* @param editor
|
693
|
+
* @param element
|
694
|
+
* @param color
|
695
|
+
*/
|
696
|
+
export const infoBlockHandle = (_editor: AlexEditor, element: AlexElement, color: string) => {
|
697
|
+
if (elementIsInfoBlock(element) && color) {
|
698
|
+
const parseColor = DapColor.hex2rgb(color)
|
699
|
+
if (element.hasStyles()) {
|
700
|
+
element.styles!['background-color'] = `rgba(${parseColor[0]},${parseColor[1]},${parseColor[2]},0.15)`
|
701
|
+
element.styles!['color'] = color
|
702
|
+
} else {
|
703
|
+
element.styles = {
|
704
|
+
'background-color': `rgba(${parseColor[0]},${parseColor[1]},${parseColor[2]},0.15)`,
|
705
|
+
color: color
|
706
|
+
}
|
707
|
+
}
|
708
|
+
}
|
709
|
+
}
|
710
|
+
|
632
711
|
/**
|
633
712
|
* 元素格式化时处理一些特殊的内部块元素,转为根级块元素
|
634
713
|
* @param editor
|
@@ -637,7 +716,7 @@ export const preHandle = (editor: AlexEditor, element: AlexElement, highlight: b
|
|
637
716
|
export const specialInblockHandle = (editor: AlexEditor, element: AlexElement) => {
|
638
717
|
if (element.hasChildren()) {
|
639
718
|
element.children!.forEach(el => {
|
640
|
-
if (
|
719
|
+
if (elementIsList(el, true) || elementIsList(el, false) || elementIsTask(el) || elementIsInfoBlock(el) || elementIsPanel(el) || ['blockquote', 'pre', 'table', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p'].includes(el.parsedom!)) {
|
641
720
|
const newEl = el.clone()
|
642
721
|
newEl.type = 'block'
|
643
722
|
const block = element.getBlock()
|