vue-editify 0.0.46 → 0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/examples/App.vue +3 -13
- package/lib/editify.es.js +377 -353
- package/lib/editify.umd.js +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -2
- package/src/Editify.vue +151 -143
- package/src/components/bussiness/Menu.vue +14 -14
- package/src/components/bussiness/Toolbar.vue +46 -48
- package/src/index.js +1 -1
package/src/Editify.vue
CHANGED
@@ -61,8 +61,8 @@ export default {
|
|
61
61
|
//类型
|
62
62
|
type: 'text'
|
63
63
|
},
|
64
|
-
//
|
65
|
-
|
64
|
+
//rangeUpdate更新延时器
|
65
|
+
updateTimer: null,
|
66
66
|
//菜单栏是否可以使用标识
|
67
67
|
canUseMenu: false
|
68
68
|
}
|
@@ -236,76 +236,71 @@ export default {
|
|
236
236
|
removeScroll(this.$refs.content)
|
237
237
|
},
|
238
238
|
//工具条显示判断
|
239
|
-
handleToolbar() {
|
239
|
+
handleToolbar(useCache = false) {
|
240
240
|
if (this.disabled || this.isSourceView) {
|
241
241
|
return
|
242
242
|
}
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
this.
|
248
|
-
this
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
this.toolbarOptions.
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
this.toolbarOptions.
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
this.toolbarOptions.
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
this.toolbarOptions.
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
this.toolbarOptions.
|
243
|
+
this.hideToolbar()
|
244
|
+
this.$nextTick(() => {
|
245
|
+
const table = this.getCurrentParsedomElement('table', useCache)
|
246
|
+
const pre = this.getCurrentParsedomElement('pre', true)
|
247
|
+
const link = this.getCurrentParsedomElement('a', true)
|
248
|
+
const image = this.getCurrentParsedomElement('img', true)
|
249
|
+
const video = this.getCurrentParsedomElement('video', true)
|
250
|
+
if (link) {
|
251
|
+
this.toolbarOptions.type = 'link'
|
252
|
+
this.toolbarOptions.node = `[data-editify-uid="${this.uid}"] [data-editify-element="${link.key}"]`
|
253
|
+
if (this.toolbarOptions.show) {
|
254
|
+
this.$refs.toolbar.$refs.layer.setPosition()
|
255
|
+
} else {
|
256
|
+
this.toolbarOptions.show = true
|
257
|
+
}
|
258
|
+
} else if (image) {
|
259
|
+
this.toolbarOptions.type = 'image'
|
260
|
+
this.toolbarOptions.node = `[data-editify-uid="${this.uid}"] [data-editify-element="${image.key}"]`
|
261
|
+
if (this.toolbarOptions.show) {
|
262
|
+
this.$refs.toolbar.$refs.layer.setPosition()
|
263
|
+
} else {
|
264
|
+
this.toolbarOptions.show = true
|
265
|
+
}
|
266
|
+
} else if (video) {
|
267
|
+
this.toolbarOptions.type = 'video'
|
268
|
+
this.toolbarOptions.node = `[data-editify-uid="${this.uid}"] [data-editify-element="${video.key}"]`
|
269
|
+
if (this.toolbarOptions.show) {
|
270
|
+
this.$refs.toolbar.$refs.layer.setPosition()
|
271
|
+
} else {
|
272
|
+
this.toolbarOptions.show = true
|
273
|
+
}
|
274
|
+
} else if (table) {
|
275
|
+
this.toolbarOptions.type = 'table'
|
276
|
+
this.toolbarOptions.node = `[data-editify-uid="${this.uid}"] [data-editify-element="${table.key}"]`
|
277
|
+
if (this.toolbarOptions.show) {
|
278
|
+
this.$refs.toolbar.$refs.layer.setPosition()
|
279
|
+
} else {
|
280
|
+
this.toolbarOptions.show = true
|
281
|
+
}
|
282
|
+
} else if (pre) {
|
283
|
+
this.toolbarOptions.type = 'codeBlock'
|
284
|
+
this.toolbarOptions.node = `[data-editify-uid="${this.uid}"] [data-editify-element="${pre.key}"]`
|
285
|
+
if (this.toolbarOptions.show) {
|
286
|
+
this.$refs.toolbar.$refs.layer.setPosition()
|
287
|
+
} else {
|
288
|
+
this.toolbarOptions.show = true
|
289
|
+
}
|
290
|
+
} else {
|
291
|
+
const result = this.editor.getElementsByRange(true).flatIncludes.filter(item => {
|
292
|
+
return item.element.isText()
|
293
|
+
})
|
294
|
+
if (result.length && !this.hasTable(true) && !this.hasPreStyle(true) && !this.hasLink(true) && !this.hasImage(true) && !this.hasVideo(true)) {
|
295
|
+
this.toolbarOptions.type = 'text'
|
289
296
|
if (this.toolbarOptions.show) {
|
290
297
|
this.$refs.toolbar.$refs.layer.setPosition()
|
291
298
|
} else {
|
292
299
|
this.toolbarOptions.show = true
|
293
300
|
}
|
294
|
-
} else {
|
295
|
-
const result = this.editor.getElementsByRange(true, true).filter(item => {
|
296
|
-
return item.element.isText()
|
297
|
-
})
|
298
|
-
if (result.length && !this.hasTable() && !this.hasPreStyle() && !this.hasLink() && !this.hasImage() && !this.hasVideo()) {
|
299
|
-
this.toolbarOptions.type = 'text'
|
300
|
-
if (this.toolbarOptions.show) {
|
301
|
-
this.$refs.toolbar.$refs.layer.setPosition()
|
302
|
-
} else {
|
303
|
-
this.toolbarOptions.show = true
|
304
|
-
}
|
305
|
-
}
|
306
301
|
}
|
307
|
-
}
|
308
|
-
}
|
302
|
+
}
|
303
|
+
})
|
309
304
|
},
|
310
305
|
//重新定义编辑器合并元素的逻辑
|
311
306
|
handleCustomMerge(ele, preEle) {
|
@@ -581,17 +576,29 @@ export default {
|
|
581
576
|
this.$emit('insertparagraph', this.value)
|
582
577
|
},
|
583
578
|
//编辑器焦点更新
|
584
|
-
handleRangeUpdate(
|
579
|
+
handleRangeUpdate() {
|
585
580
|
if (this.disabled) {
|
586
581
|
return
|
587
582
|
}
|
588
|
-
if (this.
|
589
|
-
this.
|
590
|
-
}
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
583
|
+
if (this.updateTimer) {
|
584
|
+
clearTimeout(this.updateTimer)
|
585
|
+
}
|
586
|
+
this.updateTimer = setTimeout(() => {
|
587
|
+
//如果使用工具条或者菜单栏
|
588
|
+
if (this.toolbarConfig.use || this.menuConfig.use) {
|
589
|
+
//先获取选区内的元素设置内部缓存
|
590
|
+
this.editor.getElementsByRange()
|
591
|
+
//如果使用工具条
|
592
|
+
if (this.toolbarConfig.use) {
|
593
|
+
this.handleToolbar(true)
|
594
|
+
}
|
595
|
+
//如果使用菜单栏
|
596
|
+
if (this.menuConfig.use) {
|
597
|
+
this.$refs.menu.handleRangeUpdate(true)
|
598
|
+
}
|
599
|
+
}
|
600
|
+
}, 200)
|
601
|
+
this.$emit('rangeupdate', this.value)
|
595
602
|
},
|
596
603
|
//编辑器复制
|
597
604
|
handleCopy(text, html) {
|
@@ -606,7 +613,7 @@ export default {
|
|
606
613
|
this.$emit('paste-text', data)
|
607
614
|
},
|
608
615
|
//编辑器粘贴html
|
609
|
-
handlePasteHtml(elements
|
616
|
+
handlePasteHtml(elements) {
|
610
617
|
const keepStyles = Object.assign(pasteKeepData.styles, this.pasteKeepStyles || {})
|
611
618
|
const keepMarks = Object.assign(pasteKeepData.marks, this.pasteKeepMarks || {})
|
612
619
|
//粘贴html时过滤元素的样式和属性
|
@@ -710,7 +717,7 @@ export default {
|
|
710
717
|
return this.getParsedomElementByElement(element.parent, parsedom)
|
711
718
|
},
|
712
719
|
//api:获取光标是否在指定标签元素下,如果是返回该标签元素,否则返回null
|
713
|
-
getCurrentParsedomElement(parsedom) {
|
720
|
+
getCurrentParsedomElement(parsedom, useCache = false) {
|
714
721
|
if (this.disabled) {
|
715
722
|
return null
|
716
723
|
}
|
@@ -720,7 +727,7 @@ export default {
|
|
720
727
|
if (this.editor.range.anchor.element.isEqual(this.editor.range.focus.element)) {
|
721
728
|
return this.getParsedomElementByElement(this.editor.range.anchor.element, parsedom)
|
722
729
|
}
|
723
|
-
const arr = this.editor.getElementsByRange(
|
730
|
+
const arr = this.editor.getElementsByRange(useCache).includes.map(item => {
|
724
731
|
return this.getParsedomElementByElement(item.element, parsedom)
|
725
732
|
})
|
726
733
|
let hasNull = arr.some(el => {
|
@@ -749,14 +756,14 @@ export default {
|
|
749
756
|
return null
|
750
757
|
},
|
751
758
|
//api:删除光标所在的指定标签元素
|
752
|
-
deleteByParsedom(parsedom, isRender = true) {
|
759
|
+
deleteByParsedom(parsedom, isRender = true, useCache = false) {
|
753
760
|
if (this.disabled) {
|
754
761
|
return
|
755
762
|
}
|
756
763
|
if (!this.editor.range) {
|
757
764
|
return
|
758
765
|
}
|
759
|
-
const element = this.getCurrentParsedomElement(parsedom)
|
766
|
+
const element = this.getCurrentParsedomElement(parsedom, useCache)
|
760
767
|
if (element) {
|
761
768
|
element.toEmpty()
|
762
769
|
if (isRender) {
|
@@ -767,14 +774,14 @@ export default {
|
|
767
774
|
}
|
768
775
|
},
|
769
776
|
//api:当光标在链接上时可以移除链接
|
770
|
-
removeLink(isRender = true) {
|
777
|
+
removeLink(isRender = true, useCache = false) {
|
771
778
|
if (this.disabled) {
|
772
779
|
return
|
773
780
|
}
|
774
781
|
if (!this.editor.range) {
|
775
782
|
return
|
776
783
|
}
|
777
|
-
const link = this.getCurrentParsedomElement('a')
|
784
|
+
const link = this.getCurrentParsedomElement('a', useCache)
|
778
785
|
if (link) {
|
779
786
|
link.parsedom = AlexElement.TEXT_NODE
|
780
787
|
delete link.marks.target
|
@@ -787,7 +794,7 @@ export default {
|
|
787
794
|
}
|
788
795
|
},
|
789
796
|
//api:设置标题
|
790
|
-
setHeading(parsedom, isRender = true) {
|
797
|
+
setHeading(parsedom, isRender = true, useCache = false) {
|
791
798
|
if (this.disabled) {
|
792
799
|
return
|
793
800
|
}
|
@@ -807,7 +814,7 @@ export default {
|
|
807
814
|
//设置标题
|
808
815
|
block.parsedom = parsedom
|
809
816
|
} else {
|
810
|
-
const result = this.editor.getElementsByRange(
|
817
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
811
818
|
result.forEach(el => {
|
812
819
|
if (el.element.isBlock()) {
|
813
820
|
blockToParagraph(el.element)
|
@@ -826,7 +833,7 @@ export default {
|
|
826
833
|
}
|
827
834
|
},
|
828
835
|
//api:插入有序列表 ordered为true表示有序列表
|
829
|
-
setList(ordered, isRender = true) {
|
836
|
+
setList(ordered, isRender = true, useCache = false) {
|
830
837
|
if (this.disabled) {
|
831
838
|
return
|
832
839
|
}
|
@@ -846,7 +853,7 @@ export default {
|
|
846
853
|
//起点和终点不在一起
|
847
854
|
else {
|
848
855
|
let blocks = []
|
849
|
-
const result = this.editor.getElementsByRange(
|
856
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
850
857
|
result.forEach(item => {
|
851
858
|
const block = item.element.getBlock()
|
852
859
|
const exist = blocks.some(el => block.isEqual(el))
|
@@ -870,7 +877,7 @@ export default {
|
|
870
877
|
}
|
871
878
|
},
|
872
879
|
//api:插入任务列表
|
873
|
-
setTask(isRender = true) {
|
880
|
+
setTask(isRender = true, useCache = false) {
|
874
881
|
if (this.disabled) {
|
875
882
|
return
|
876
883
|
}
|
@@ -890,7 +897,7 @@ export default {
|
|
890
897
|
//起点和终点不在一起
|
891
898
|
else {
|
892
899
|
let blocks = []
|
893
|
-
const result = this.editor.getElementsByRange(
|
900
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
894
901
|
result.forEach(item => {
|
895
902
|
const block = item.element.getBlock()
|
896
903
|
const exist = blocks.some(el => block.isEqual(el))
|
@@ -914,20 +921,20 @@ export default {
|
|
914
921
|
}
|
915
922
|
},
|
916
923
|
//api:设置样式
|
917
|
-
setTextStyle(name, value, isRender = true) {
|
924
|
+
setTextStyle(name, value, isRender = true, useCache = false) {
|
918
925
|
if (this.disabled) {
|
919
926
|
return
|
920
927
|
}
|
921
928
|
if (!this.editor.range) {
|
922
929
|
return
|
923
930
|
}
|
924
|
-
const active = this.queryTextStyle(name, value)
|
931
|
+
const active = this.queryTextStyle(name, value, useCache)
|
925
932
|
if (active) {
|
926
|
-
this.editor.removeTextStyle([name])
|
933
|
+
this.editor.removeTextStyle([name], true)
|
927
934
|
} else {
|
928
935
|
let styles = {}
|
929
936
|
styles[name] = value
|
930
|
-
this.editor.setTextStyle(styles)
|
937
|
+
this.editor.setTextStyle(styles, true)
|
931
938
|
}
|
932
939
|
if (isRender) {
|
933
940
|
this.editor.formatElementStack()
|
@@ -936,24 +943,24 @@ export default {
|
|
936
943
|
}
|
937
944
|
},
|
938
945
|
//api:查询是否具有某个样式
|
939
|
-
queryTextStyle(name, value, useCache) {
|
946
|
+
queryTextStyle(name, value, useCache = false) {
|
940
947
|
return this.editor.queryTextStyle(name, value, useCache)
|
941
948
|
},
|
942
949
|
//api:设置标记
|
943
|
-
setTextMark(name, value, isRender = true) {
|
950
|
+
setTextMark(name, value, isRender = true, useCache = false) {
|
944
951
|
if (this.disabled) {
|
945
952
|
return
|
946
953
|
}
|
947
954
|
if (!this.editor.range) {
|
948
955
|
return
|
949
956
|
}
|
950
|
-
const active = this.queryTextMark(name, value)
|
957
|
+
const active = this.queryTextMark(name, value, useCache)
|
951
958
|
if (active) {
|
952
|
-
this.editor.removeTextMark([name])
|
959
|
+
this.editor.removeTextMark([name], true)
|
953
960
|
} else {
|
954
961
|
let marks = {}
|
955
962
|
marks[name] = value
|
956
|
-
this.editor.setTextMark(marks)
|
963
|
+
this.editor.setTextMark(marks, true)
|
957
964
|
}
|
958
965
|
if (isRender) {
|
959
966
|
this.editor.formatElementStack()
|
@@ -962,19 +969,20 @@ export default {
|
|
962
969
|
}
|
963
970
|
},
|
964
971
|
//api:查询是否具有某个标记
|
965
|
-
queryTextMark(name, value, useCache) {
|
972
|
+
queryTextMark(name, value, useCache = false) {
|
966
973
|
return this.editor.queryTextMark(name, value, useCache)
|
967
974
|
},
|
968
975
|
//api:清除文本样式和标记
|
969
|
-
formatText(isRender = true) {
|
976
|
+
formatText(isRender = true, useCache = false) {
|
970
977
|
if (this.disabled) {
|
971
978
|
return
|
972
979
|
}
|
973
980
|
if (!this.editor.range) {
|
974
981
|
return
|
975
982
|
}
|
976
|
-
this.editor.removeTextStyle()
|
977
|
-
|
983
|
+
this.editor.removeTextStyle(null, useCache)
|
984
|
+
//这里不能使用缓存,因为removeTextStyle会更新光标位置
|
985
|
+
this.editor.removeTextMark(null)
|
978
986
|
if (isRender) {
|
979
987
|
this.editor.formatElementStack()
|
980
988
|
this.editor.domRender()
|
@@ -982,7 +990,7 @@ export default {
|
|
982
990
|
}
|
983
991
|
},
|
984
992
|
//api:设置对齐方式,参数取值justify/left/right/center
|
985
|
-
setAlign(value, isRender = true) {
|
993
|
+
setAlign(value, isRender = true, useCache = false) {
|
986
994
|
if (this.disabled) {
|
987
995
|
return
|
988
996
|
}
|
@@ -1010,7 +1018,7 @@ export default {
|
|
1010
1018
|
}
|
1011
1019
|
}
|
1012
1020
|
} else {
|
1013
|
-
const result = this.editor.getElementsByRange(
|
1021
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1014
1022
|
result.forEach(el => {
|
1015
1023
|
if (el.element.isBlock() || el.element.isInblock()) {
|
1016
1024
|
if (el.element.hasStyles()) {
|
@@ -1080,7 +1088,7 @@ export default {
|
|
1080
1088
|
}
|
1081
1089
|
},
|
1082
1090
|
//api:插入引用
|
1083
|
-
setQuote(isRender = true) {
|
1091
|
+
setQuote(isRender = true, useCache = false) {
|
1084
1092
|
if (this.disabled) {
|
1085
1093
|
return
|
1086
1094
|
}
|
@@ -1099,7 +1107,7 @@ export default {
|
|
1099
1107
|
//起点和终点不在一起
|
1100
1108
|
else {
|
1101
1109
|
let blocks = []
|
1102
|
-
const result = this.editor.getElementsByRange(
|
1110
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1103
1111
|
result.forEach(item => {
|
1104
1112
|
const block = item.element.getBlock()
|
1105
1113
|
const exist = blocks.some(el => block.isEqual(el))
|
@@ -1122,7 +1130,7 @@ export default {
|
|
1122
1130
|
}
|
1123
1131
|
},
|
1124
1132
|
//api:设置行高
|
1125
|
-
setLineHeight(value, isRender = true) {
|
1133
|
+
setLineHeight(value, isRender = true, useCache = false) {
|
1126
1134
|
if (this.disabled) {
|
1127
1135
|
return
|
1128
1136
|
}
|
@@ -1150,7 +1158,7 @@ export default {
|
|
1150
1158
|
}
|
1151
1159
|
}
|
1152
1160
|
} else {
|
1153
|
-
const result = this.editor.getElementsByRange(
|
1161
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1154
1162
|
result.forEach(el => {
|
1155
1163
|
if (el.element.isBlock() || el.element.isInblock()) {
|
1156
1164
|
if (el.element.hasStyles()) {
|
@@ -1190,7 +1198,7 @@ export default {
|
|
1190
1198
|
}
|
1191
1199
|
},
|
1192
1200
|
//api:增加缩进
|
1193
|
-
setIndentIncrease(isRender = true) {
|
1201
|
+
setIndentIncrease(isRender = true, useCache = false) {
|
1194
1202
|
if (this.disabled) {
|
1195
1203
|
return
|
1196
1204
|
}
|
@@ -1225,7 +1233,7 @@ export default {
|
|
1225
1233
|
fn(block)
|
1226
1234
|
}
|
1227
1235
|
} else {
|
1228
|
-
const result = this.editor.getElementsByRange(
|
1236
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1229
1237
|
result.forEach(item => {
|
1230
1238
|
const block = item.element.getBlock()
|
1231
1239
|
const inblock = item.element.getInblock()
|
@@ -1243,7 +1251,7 @@ export default {
|
|
1243
1251
|
}
|
1244
1252
|
},
|
1245
1253
|
//api:减少缩进
|
1246
|
-
setIndentDecrease(isRender = true) {
|
1254
|
+
setIndentDecrease(isRender = true, useCache = false) {
|
1247
1255
|
if (this.disabled) {
|
1248
1256
|
return
|
1249
1257
|
}
|
@@ -1270,7 +1278,7 @@ export default {
|
|
1270
1278
|
fn(block)
|
1271
1279
|
}
|
1272
1280
|
} else {
|
1273
|
-
const result = this.editor.getElementsByRange(
|
1281
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1274
1282
|
result.forEach(item => {
|
1275
1283
|
const block = item.element.getBlock()
|
1276
1284
|
const inblock = item.element.getInblock()
|
@@ -1288,7 +1296,7 @@ export default {
|
|
1288
1296
|
}
|
1289
1297
|
},
|
1290
1298
|
//api:插入图片
|
1291
|
-
insertImage(url, isRender = true) {
|
1299
|
+
insertImage(url, isRender = true, useCache = false) {
|
1292
1300
|
if (this.disabled) {
|
1293
1301
|
return
|
1294
1302
|
}
|
@@ -1307,7 +1315,7 @@ export default {
|
|
1307
1315
|
null,
|
1308
1316
|
null
|
1309
1317
|
)
|
1310
|
-
this.editor.insertElement(image)
|
1318
|
+
this.editor.insertElement(image, true, useCache)
|
1311
1319
|
if (isRender) {
|
1312
1320
|
this.editor.formatElementStack()
|
1313
1321
|
this.editor.domRender()
|
@@ -1315,7 +1323,7 @@ export default {
|
|
1315
1323
|
}
|
1316
1324
|
},
|
1317
1325
|
//api:插入视频
|
1318
|
-
insertVideo(url, isRender = true) {
|
1326
|
+
insertVideo(url, isRender = true, useCache = false) {
|
1319
1327
|
if (this.disabled) {
|
1320
1328
|
return
|
1321
1329
|
}
|
@@ -1334,7 +1342,7 @@ export default {
|
|
1334
1342
|
null,
|
1335
1343
|
null
|
1336
1344
|
)
|
1337
|
-
this.editor.insertElement(video)
|
1345
|
+
this.editor.insertElement(video, true, useCache)
|
1338
1346
|
const leftSpace = AlexElement.getSpaceElement()
|
1339
1347
|
const rightSpace = AlexElement.getSpaceElement()
|
1340
1348
|
this.editor.addElementAfter(rightSpace, video)
|
@@ -1348,20 +1356,20 @@ export default {
|
|
1348
1356
|
}
|
1349
1357
|
},
|
1350
1358
|
//api:选区是否含有代码块样式
|
1351
|
-
hasPreStyle() {
|
1359
|
+
hasPreStyle(useCache = false) {
|
1352
1360
|
if (!this.editor.range) {
|
1353
1361
|
return false
|
1354
1362
|
}
|
1355
1363
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1356
1364
|
return this.editor.range.anchor.element.isPreStyle()
|
1357
1365
|
}
|
1358
|
-
const result = this.editor.getElementsByRange(
|
1366
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1359
1367
|
return result.some(item => {
|
1360
1368
|
return item.element.isPreStyle()
|
1361
1369
|
})
|
1362
1370
|
},
|
1363
1371
|
//api:选区是否含有引用
|
1364
|
-
hasQuote() {
|
1372
|
+
hasQuote(useCache = false) {
|
1365
1373
|
if (!this.editor.range) {
|
1366
1374
|
return false
|
1367
1375
|
}
|
@@ -1369,7 +1377,7 @@ export default {
|
|
1369
1377
|
const block = this.editor.range.anchor.element.getBlock()
|
1370
1378
|
return block.parsedom == 'blockquote'
|
1371
1379
|
}
|
1372
|
-
const result = this.editor.getElementsByRange(
|
1380
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1373
1381
|
return result.some(item => {
|
1374
1382
|
if (item.element.isBlock()) {
|
1375
1383
|
return item.element.parsedom == 'blockquote'
|
@@ -1380,7 +1388,7 @@ export default {
|
|
1380
1388
|
})
|
1381
1389
|
},
|
1382
1390
|
//api:选区是否含有列表
|
1383
|
-
hasList(ordered = false) {
|
1391
|
+
hasList(ordered = false, useCache = false) {
|
1384
1392
|
if (!this.editor.range) {
|
1385
1393
|
return false
|
1386
1394
|
}
|
@@ -1388,7 +1396,7 @@ export default {
|
|
1388
1396
|
const block = this.editor.range.anchor.element.getBlock()
|
1389
1397
|
return blockIsList(block, ordered)
|
1390
1398
|
}
|
1391
|
-
const result = this.editor.getElementsByRange(
|
1399
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1392
1400
|
return result.some(item => {
|
1393
1401
|
if (item.element.isBlock()) {
|
1394
1402
|
return blockIsList(item.element, ordered)
|
@@ -1399,14 +1407,14 @@ export default {
|
|
1399
1407
|
})
|
1400
1408
|
},
|
1401
1409
|
//api:选区是否含有链接
|
1402
|
-
hasLink() {
|
1410
|
+
hasLink(useCache = false) {
|
1403
1411
|
if (!this.editor.range) {
|
1404
1412
|
return false
|
1405
1413
|
}
|
1406
1414
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1407
1415
|
return !!this.getParsedomElementByElement(this.editor.range.anchor.element, 'a')
|
1408
1416
|
}
|
1409
|
-
const result = this.editor.getElementsByRange(
|
1417
|
+
const result = this.editor.getElementsByRange(useCache).flatIncludes.filter(item => {
|
1410
1418
|
return item.element.isText()
|
1411
1419
|
})
|
1412
1420
|
return result.some(item => {
|
@@ -1414,7 +1422,7 @@ export default {
|
|
1414
1422
|
})
|
1415
1423
|
},
|
1416
1424
|
//api:选区是否含有表格
|
1417
|
-
hasTable() {
|
1425
|
+
hasTable(useCache = false) {
|
1418
1426
|
if (!this.editor.range) {
|
1419
1427
|
return false
|
1420
1428
|
}
|
@@ -1422,7 +1430,7 @@ export default {
|
|
1422
1430
|
const block = this.editor.range.anchor.element.getBlock()
|
1423
1431
|
return block.parsedom == 'table'
|
1424
1432
|
}
|
1425
|
-
const result = this.editor.getElementsByRange(
|
1433
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1426
1434
|
return result.some(item => {
|
1427
1435
|
if (item.element.isBlock()) {
|
1428
1436
|
return item.element.parsedom == 'table'
|
@@ -1433,7 +1441,7 @@ export default {
|
|
1433
1441
|
})
|
1434
1442
|
},
|
1435
1443
|
//api:选区是否含有任务列表
|
1436
|
-
hasTask() {
|
1444
|
+
hasTask(useCache = false) {
|
1437
1445
|
if (!this.editor.range) {
|
1438
1446
|
return false
|
1439
1447
|
}
|
@@ -1441,7 +1449,7 @@ export default {
|
|
1441
1449
|
const block = this.editor.range.anchor.element.getBlock()
|
1442
1450
|
return blockIsTask(block)
|
1443
1451
|
}
|
1444
|
-
const result = this.editor.getElementsByRange(
|
1452
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1445
1453
|
return result.some(item => {
|
1446
1454
|
if (item.element.isBlock()) {
|
1447
1455
|
return blockIsTask(item.element)
|
@@ -1452,33 +1460,33 @@ export default {
|
|
1452
1460
|
})
|
1453
1461
|
},
|
1454
1462
|
//api:选区是否含有图片
|
1455
|
-
hasImage() {
|
1463
|
+
hasImage(useCache = false) {
|
1456
1464
|
if (!this.editor.range) {
|
1457
1465
|
return false
|
1458
1466
|
}
|
1459
1467
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1460
1468
|
return this.editor.range.anchor.element.isClosed() && this.editor.range.anchor.element.parsedom == 'img'
|
1461
1469
|
}
|
1462
|
-
const result = this.editor.getElementsByRange(
|
1470
|
+
const result = this.editor.getElementsByRange(useCache).flatIncludes
|
1463
1471
|
return result.some(item => {
|
1464
1472
|
return item.element.isClosed() && item.element.parsedom == 'img'
|
1465
1473
|
})
|
1466
1474
|
},
|
1467
1475
|
//api:选区是否含有视频
|
1468
|
-
hasVideo() {
|
1476
|
+
hasVideo(useCache = false) {
|
1469
1477
|
if (!this.editor.range) {
|
1470
1478
|
return false
|
1471
1479
|
}
|
1472
1480
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1473
1481
|
return this.editor.range.anchor.element.isClosed() && this.editor.range.anchor.element.parsedom == 'video'
|
1474
1482
|
}
|
1475
|
-
const result = this.editor.getElementsByRange(
|
1483
|
+
const result = this.editor.getElementsByRange(useCache).flatIncludes
|
1476
1484
|
return result.some(item => {
|
1477
1485
|
return item.element.isClosed() && item.element.parsedom == 'video'
|
1478
1486
|
})
|
1479
1487
|
},
|
1480
1488
|
//api:选区是否全部在引用内
|
1481
|
-
inQuote() {
|
1489
|
+
inQuote(useCache = false) {
|
1482
1490
|
if (!this.editor.range) {
|
1483
1491
|
return false
|
1484
1492
|
}
|
@@ -1486,7 +1494,7 @@ export default {
|
|
1486
1494
|
const block = this.editor.range.anchor.element.getBlock()
|
1487
1495
|
return block.parsedom == 'blockquote'
|
1488
1496
|
}
|
1489
|
-
const result = this.editor.getElementsByRange(
|
1497
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1490
1498
|
return result.every(item => {
|
1491
1499
|
if (item.element.isBlock()) {
|
1492
1500
|
return item.element.parsedom == 'blockquote'
|
@@ -1497,7 +1505,7 @@ export default {
|
|
1497
1505
|
})
|
1498
1506
|
},
|
1499
1507
|
//api:选区是否全部在列表内
|
1500
|
-
inList(ordered = false) {
|
1508
|
+
inList(ordered = false, useCache = false) {
|
1501
1509
|
if (!this.editor.range) {
|
1502
1510
|
return false
|
1503
1511
|
}
|
@@ -1505,7 +1513,7 @@ export default {
|
|
1505
1513
|
const block = this.editor.range.anchor.element.getBlock()
|
1506
1514
|
return blockIsList(block, ordered)
|
1507
1515
|
}
|
1508
|
-
const result = this.editor.getElementsByRange(
|
1516
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1509
1517
|
return result.every(item => {
|
1510
1518
|
if (item.element.isBlock()) {
|
1511
1519
|
return blockIsList(item.element, ordered)
|
@@ -1516,7 +1524,7 @@ export default {
|
|
1516
1524
|
})
|
1517
1525
|
},
|
1518
1526
|
//api:选区是否全部在任务列表里
|
1519
|
-
inTask() {
|
1527
|
+
inTask(useCache = false) {
|
1520
1528
|
if (!this.editor.range) {
|
1521
1529
|
return false
|
1522
1530
|
}
|
@@ -1524,7 +1532,7 @@ export default {
|
|
1524
1532
|
const block = this.editor.range.anchor.element.getBlock()
|
1525
1533
|
return blockIsTask(block)
|
1526
1534
|
}
|
1527
|
-
const result = this.editor.getElementsByRange(
|
1535
|
+
const result = this.editor.getElementsByRange(useCache).includes
|
1528
1536
|
return result.every(item => {
|
1529
1537
|
if (item.element.isBlock()) {
|
1530
1538
|
return blockIsTask(item.element)
|
@@ -1535,7 +1543,7 @@ export default {
|
|
1535
1543
|
})
|
1536
1544
|
},
|
1537
1545
|
//api:创建一个空的表格
|
1538
|
-
insertTable(rowLength, colLength, isRender = true) {
|
1546
|
+
insertTable(rowLength, colLength, isRender = true, useCache = false) {
|
1539
1547
|
if (this.disabled) {
|
1540
1548
|
return
|
1541
1549
|
}
|
@@ -1555,7 +1563,7 @@ export default {
|
|
1555
1563
|
}
|
1556
1564
|
this.editor.addElementTo(row, tbody)
|
1557
1565
|
}
|
1558
|
-
this.editor.insertElement(table)
|
1566
|
+
this.editor.insertElement(table, true, useCache)
|
1559
1567
|
//在表格后创建一个段落
|
1560
1568
|
const paragraph = new AlexElement('block', AlexElement.BLOCK_NODE, null, null, null)
|
1561
1569
|
const breakEl = new AlexElement('closed', 'br', null, null, null)
|
@@ -1570,14 +1578,14 @@ export default {
|
|
1570
1578
|
}
|
1571
1579
|
},
|
1572
1580
|
//api:插入代码块
|
1573
|
-
insertCodeBlock(isRender = true) {
|
1581
|
+
insertCodeBlock(isRender = true, useCache = false) {
|
1574
1582
|
if (this.disabled) {
|
1575
1583
|
return
|
1576
1584
|
}
|
1577
1585
|
if (!this.editor.range) {
|
1578
1586
|
return
|
1579
1587
|
}
|
1580
|
-
const pre = this.getCurrentParsedomElement('pre')
|
1588
|
+
const pre = this.getCurrentParsedomElement('pre', useCache)
|
1581
1589
|
if (pre) {
|
1582
1590
|
let content = ''
|
1583
1591
|
AlexElement.flatElements(pre.children)
|
@@ -1608,10 +1616,10 @@ export default {
|
|
1608
1616
|
}
|
1609
1617
|
//起点和终点不在一起
|
1610
1618
|
else {
|
1611
|
-
let result = this.editor.getElementsByRange(true
|
1619
|
+
let result = this.editor.getElementsByRange(true).includes
|
1612
1620
|
this.editor.range.anchor.moveToStart(result[0].element.getBlock())
|
1613
1621
|
this.editor.range.focus.moveToEnd(result[result.length - 1].element.getBlock())
|
1614
|
-
const res = this.editor.getElementsByRange(true
|
1622
|
+
const res = this.editor.getElementsByRange(true).flatIncludes.filter(el => el.element.isText())
|
1615
1623
|
const obj = {}
|
1616
1624
|
res.forEach(el => {
|
1617
1625
|
if (obj[el.element.getBlock().key]) {
|
@@ -1653,14 +1661,14 @@ export default {
|
|
1653
1661
|
}
|
1654
1662
|
},
|
1655
1663
|
//api:插入文本
|
1656
|
-
insertText(text, isRender = true) {
|
1664
|
+
insertText(text, isRender = true, useCache = false) {
|
1657
1665
|
if (this.disabled) {
|
1658
1666
|
return
|
1659
1667
|
}
|
1660
1668
|
if (!this.editor.range) {
|
1661
1669
|
return
|
1662
1670
|
}
|
1663
|
-
this.editor.insertText(text)
|
1671
|
+
this.editor.insertText(text, useCache)
|
1664
1672
|
if (isRender) {
|
1665
1673
|
this.editor.formatElementStack()
|
1666
1674
|
this.editor.domRender()
|
@@ -1668,7 +1676,7 @@ export default {
|
|
1668
1676
|
}
|
1669
1677
|
},
|
1670
1678
|
//api:插入html
|
1671
|
-
insertHtml(html, isRender = true) {
|
1679
|
+
insertHtml(html, isRender = true, useCache = false) {
|
1672
1680
|
if (this.disabled) {
|
1673
1681
|
return
|
1674
1682
|
}
|
@@ -1677,7 +1685,7 @@ export default {
|
|
1677
1685
|
}
|
1678
1686
|
const elements = this.editor.parseHtml(html)
|
1679
1687
|
for (let i = 0; i < elements.length; i++) {
|
1680
|
-
this.editor.insertElement(elements[i], false)
|
1688
|
+
this.editor.insertElement(elements[i], false, i == 0 ? useCache : false)
|
1681
1689
|
}
|
1682
1690
|
if (isRender) {
|
1683
1691
|
this.editor.formatElementStack()
|