vue-editify 0.0.16 → 0.0.18
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 +6 -2
- package/lib/editify.es.js +510 -288
- package/lib/editify.umd.js +1 -1
- package/lib/style.css +1 -1
- package/package.json +3 -3
- package/src/Editify.vue +192 -95
- package/src/core/index.js +3 -0
- package/src/index.js +1 -1
package/src/Editify.vue
CHANGED
@@ -119,10 +119,10 @@ export default {
|
|
119
119
|
}
|
120
120
|
//如果是外部修改,需要重新渲染编辑器
|
121
121
|
this.editor.stack = this.editor.parseHtml(newVal)
|
122
|
+
this.editor.range = null
|
122
123
|
this.editor.formatElementStack()
|
123
|
-
this.editor.range.anchor.moveToStart(this.editor.stack[0])
|
124
|
-
this.editor.range.focus.moveToStart(this.editor.stack[0])
|
125
124
|
this.editor.domRender()
|
125
|
+
this.editor.rangeRender()
|
126
126
|
},
|
127
127
|
//代码视图切换
|
128
128
|
isSourceView(newValue) {
|
@@ -430,6 +430,9 @@ export default {
|
|
430
430
|
else {
|
431
431
|
element.marks['data-editify-task'] = 'checked'
|
432
432
|
}
|
433
|
+
if (!this.editor.range) {
|
434
|
+
this.editor.initRange()
|
435
|
+
}
|
433
436
|
this.editor.range.anchor.moveToEnd(element)
|
434
437
|
this.editor.range.focus.moveToEnd(element)
|
435
438
|
this.editor.formatElementStack()
|
@@ -533,6 +536,9 @@ export default {
|
|
533
536
|
const key = node.getAttribute('data-editify-element')
|
534
537
|
if (key) {
|
535
538
|
const element = this.editor.getElementByKey(key)
|
539
|
+
if (!this.editor.range) {
|
540
|
+
this.editor.initRange()
|
541
|
+
}
|
536
542
|
this.editor.range.anchor.moveToStart(element)
|
537
543
|
this.editor.range.focus.moveToEnd(element)
|
538
544
|
this.editor.rangeRender()
|
@@ -687,6 +693,9 @@ export default {
|
|
687
693
|
if (this.disabled) {
|
688
694
|
return null
|
689
695
|
}
|
696
|
+
if (!this.editor.range) {
|
697
|
+
return null
|
698
|
+
}
|
690
699
|
if (this.editor.range.anchor.element.isEqual(this.editor.range.focus.element)) {
|
691
700
|
return this.getParsedomElementByElement(this.editor.range.anchor.element, parsedom)
|
692
701
|
}
|
@@ -723,6 +732,9 @@ export default {
|
|
723
732
|
if (this.disabled) {
|
724
733
|
return
|
725
734
|
}
|
735
|
+
if (!this.editor.range) {
|
736
|
+
return
|
737
|
+
}
|
726
738
|
const element = this.getCurrentParsedomElement(parsedom)
|
727
739
|
if (element) {
|
728
740
|
element.toEmpty()
|
@@ -736,6 +748,9 @@ export default {
|
|
736
748
|
if (this.disabled) {
|
737
749
|
return
|
738
750
|
}
|
751
|
+
if (!this.editor.range) {
|
752
|
+
return
|
753
|
+
}
|
739
754
|
const link = this.getCurrentParsedomElement('a')
|
740
755
|
if (link) {
|
741
756
|
link.parsedom = AlexElement.TEXT_NODE
|
@@ -751,6 +766,9 @@ export default {
|
|
751
766
|
if (this.disabled) {
|
752
767
|
return
|
753
768
|
}
|
769
|
+
if (!this.editor.range) {
|
770
|
+
return
|
771
|
+
}
|
754
772
|
const values = getButtonOptionsConfig(this.$editTrans, this.$editLocale).heading.map(item => {
|
755
773
|
return item.value
|
756
774
|
})
|
@@ -785,6 +803,9 @@ export default {
|
|
785
803
|
if (this.disabled) {
|
786
804
|
return
|
787
805
|
}
|
806
|
+
if (!this.editor.range) {
|
807
|
+
return
|
808
|
+
}
|
788
809
|
//起点和终点在一起
|
789
810
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
790
811
|
const block = this.editor.range.anchor.element.getBlock()
|
@@ -824,6 +845,9 @@ export default {
|
|
824
845
|
if (this.disabled) {
|
825
846
|
return
|
826
847
|
}
|
848
|
+
if (!this.editor.range) {
|
849
|
+
return
|
850
|
+
}
|
827
851
|
//起点和终点在一起
|
828
852
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
829
853
|
const block = this.editor.range.anchor.element.getBlock()
|
@@ -863,6 +887,9 @@ export default {
|
|
863
887
|
if (this.disabled) {
|
864
888
|
return
|
865
889
|
}
|
890
|
+
if (!this.editor.range) {
|
891
|
+
return
|
892
|
+
}
|
866
893
|
const active = this.queryTextStyle(name, value)
|
867
894
|
if (active) {
|
868
895
|
this.editor.removeTextStyle([name])
|
@@ -884,6 +911,9 @@ export default {
|
|
884
911
|
if (this.disabled) {
|
885
912
|
return
|
886
913
|
}
|
914
|
+
if (!this.editor.range) {
|
915
|
+
return
|
916
|
+
}
|
887
917
|
const active = this.queryTextMark(name, value)
|
888
918
|
if (active) {
|
889
919
|
this.editor.removeTextMark([name])
|
@@ -905,6 +935,9 @@ export default {
|
|
905
935
|
if (this.disabled) {
|
906
936
|
return
|
907
937
|
}
|
938
|
+
if (!this.editor.range) {
|
939
|
+
return
|
940
|
+
}
|
908
941
|
this.editor.removeTextStyle()
|
909
942
|
this.editor.removeTextMark()
|
910
943
|
this.editor.formatElementStack()
|
@@ -916,6 +949,9 @@ export default {
|
|
916
949
|
if (this.disabled) {
|
917
950
|
return
|
918
951
|
}
|
952
|
+
if (!this.editor.range) {
|
953
|
+
return
|
954
|
+
}
|
919
955
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
920
956
|
const block = this.editor.range.anchor.element.getBlock()
|
921
957
|
const inblock = this.editor.range.anchor.element.getInblock()
|
@@ -1009,6 +1045,9 @@ export default {
|
|
1009
1045
|
if (this.disabled) {
|
1010
1046
|
return
|
1011
1047
|
}
|
1048
|
+
if (!this.editor.range) {
|
1049
|
+
return
|
1050
|
+
}
|
1012
1051
|
//起点和终点在一起
|
1013
1052
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1014
1053
|
const block = this.editor.range.anchor.element.getBlock()
|
@@ -1046,6 +1085,9 @@ export default {
|
|
1046
1085
|
if (this.disabled) {
|
1047
1086
|
return
|
1048
1087
|
}
|
1088
|
+
if (!this.editor.range) {
|
1089
|
+
return
|
1090
|
+
}
|
1049
1091
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1050
1092
|
const block = this.editor.range.anchor.element.getBlock()
|
1051
1093
|
const inblock = this.editor.range.anchor.element.getInblock()
|
@@ -1109,6 +1151,9 @@ export default {
|
|
1109
1151
|
if (this.disabled) {
|
1110
1152
|
return
|
1111
1153
|
}
|
1154
|
+
if (!this.editor.range) {
|
1155
|
+
return
|
1156
|
+
}
|
1112
1157
|
const fn = element => {
|
1113
1158
|
if (element.hasStyles()) {
|
1114
1159
|
if (element.styles.hasOwnProperty('text-indent')) {
|
@@ -1157,6 +1202,9 @@ export default {
|
|
1157
1202
|
if (this.disabled) {
|
1158
1203
|
return
|
1159
1204
|
}
|
1205
|
+
if (!this.editor.range) {
|
1206
|
+
return
|
1207
|
+
}
|
1160
1208
|
const fn = element => {
|
1161
1209
|
if (element.hasStyles() && element.styles.hasOwnProperty('text-indent')) {
|
1162
1210
|
let val = element.styles['text-indent']
|
@@ -1177,7 +1225,7 @@ export default {
|
|
1177
1225
|
fn(block)
|
1178
1226
|
}
|
1179
1227
|
} else {
|
1180
|
-
const result = this.getElementsByRange(true, false)
|
1228
|
+
const result = this.editor.getElementsByRange(true, false)
|
1181
1229
|
result.forEach(item => {
|
1182
1230
|
const block = item.element.getBlock()
|
1183
1231
|
const inblock = item.element.getInblock()
|
@@ -1197,6 +1245,9 @@ export default {
|
|
1197
1245
|
if (this.disabled) {
|
1198
1246
|
return
|
1199
1247
|
}
|
1248
|
+
if (!this.editor.range) {
|
1249
|
+
return
|
1250
|
+
}
|
1200
1251
|
if (!url || typeof url != 'string') {
|
1201
1252
|
throw new Error('An image address must be given')
|
1202
1253
|
}
|
@@ -1219,6 +1270,9 @@ export default {
|
|
1219
1270
|
if (this.disabled) {
|
1220
1271
|
return
|
1221
1272
|
}
|
1273
|
+
if (!this.editor.range) {
|
1274
|
+
return
|
1275
|
+
}
|
1222
1276
|
if (!url || typeof url != 'string') {
|
1223
1277
|
throw new Error('A video address must be given')
|
1224
1278
|
}
|
@@ -1244,171 +1298,199 @@ export default {
|
|
1244
1298
|
},
|
1245
1299
|
//api:选区是否含有代码块样式
|
1246
1300
|
hasPreStyle() {
|
1301
|
+
if (!this.editor.range) {
|
1302
|
+
return false
|
1303
|
+
}
|
1247
1304
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1248
1305
|
return this.editor.range.anchor.element.isPreStyle()
|
1249
|
-
} else {
|
1250
|
-
const result = this.editor.getElementsByRange(true, false)
|
1251
|
-
return result.some(item => {
|
1252
|
-
return item.element.isPreStyle()
|
1253
|
-
})
|
1254
1306
|
}
|
1307
|
+
const result = this.editor.getElementsByRange(true, false)
|
1308
|
+
return result.some(item => {
|
1309
|
+
return item.element.isPreStyle()
|
1310
|
+
})
|
1255
1311
|
},
|
1256
1312
|
//api:选区是否含有引用
|
1257
1313
|
hasQuote() {
|
1314
|
+
if (!this.editor.range) {
|
1315
|
+
return false
|
1316
|
+
}
|
1258
1317
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1259
1318
|
const block = this.editor.range.anchor.element.getBlock()
|
1260
1319
|
return block.parsedom == 'blockquote'
|
1261
|
-
} else {
|
1262
|
-
const result = this.editor.getElementsByRange(true, false)
|
1263
|
-
return result.some(item => {
|
1264
|
-
if (item.element.isBlock()) {
|
1265
|
-
return item.element.parsedom == 'blockquote'
|
1266
|
-
} else {
|
1267
|
-
const block = item.element.getBlock()
|
1268
|
-
return block.parsedom == 'blockquote'
|
1269
|
-
}
|
1270
|
-
})
|
1271
1320
|
}
|
1321
|
+
const result = this.editor.getElementsByRange(true, false)
|
1322
|
+
return result.some(item => {
|
1323
|
+
if (item.element.isBlock()) {
|
1324
|
+
return item.element.parsedom == 'blockquote'
|
1325
|
+
} else {
|
1326
|
+
const block = item.element.getBlock()
|
1327
|
+
return block.parsedom == 'blockquote'
|
1328
|
+
}
|
1329
|
+
})
|
1272
1330
|
},
|
1273
1331
|
//api:选区是否含有列表
|
1274
1332
|
hasList(ordered = false) {
|
1333
|
+
if (!this.editor.range) {
|
1334
|
+
return false
|
1335
|
+
}
|
1275
1336
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1276
1337
|
const block = this.editor.range.anchor.element.getBlock()
|
1277
1338
|
return blockIsList(block, ordered)
|
1278
|
-
} else {
|
1279
|
-
const result = this.editor.getElementsByRange(true, false)
|
1280
|
-
return result.some(item => {
|
1281
|
-
if (item.element.isBlock()) {
|
1282
|
-
return blockIsList(item.element, ordered)
|
1283
|
-
} else {
|
1284
|
-
const block = item.element.getBlock()
|
1285
|
-
return blockIsList(block, ordered)
|
1286
|
-
}
|
1287
|
-
})
|
1288
1339
|
}
|
1340
|
+
const result = this.editor.getElementsByRange(true, false)
|
1341
|
+
return result.some(item => {
|
1342
|
+
if (item.element.isBlock()) {
|
1343
|
+
return blockIsList(item.element, ordered)
|
1344
|
+
} else {
|
1345
|
+
const block = item.element.getBlock()
|
1346
|
+
return blockIsList(block, ordered)
|
1347
|
+
}
|
1348
|
+
})
|
1289
1349
|
},
|
1290
1350
|
//api:选区是否含有链接
|
1291
1351
|
hasLink() {
|
1352
|
+
if (!this.editor.range) {
|
1353
|
+
return false
|
1354
|
+
}
|
1292
1355
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1293
1356
|
return !!this.getParsedomElementByElement(this.editor.range.anchor.element, 'a')
|
1294
|
-
} else {
|
1295
|
-
const result = this.editor.getElementsByRange(true, true).filter(item => {
|
1296
|
-
return item.element.isText()
|
1297
|
-
})
|
1298
|
-
return result.some(item => {
|
1299
|
-
return !!this.getParsedomElementByElement(item.element, 'a')
|
1300
|
-
})
|
1301
1357
|
}
|
1358
|
+
const result = this.editor.getElementsByRange(true, true).filter(item => {
|
1359
|
+
return item.element.isText()
|
1360
|
+
})
|
1361
|
+
return result.some(item => {
|
1362
|
+
return !!this.getParsedomElementByElement(item.element, 'a')
|
1363
|
+
})
|
1302
1364
|
},
|
1303
1365
|
//api:选区是否含有表格
|
1304
1366
|
hasTable() {
|
1367
|
+
if (!this.editor.range) {
|
1368
|
+
return false
|
1369
|
+
}
|
1305
1370
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1306
1371
|
const block = this.editor.range.anchor.element.getBlock()
|
1307
1372
|
return block.parsedom == 'table'
|
1308
|
-
} else {
|
1309
|
-
const result = this.editor.getElementsByRange(true, false)
|
1310
|
-
return result.some(item => {
|
1311
|
-
if (item.element.isBlock()) {
|
1312
|
-
return item.element.parsedom == 'table'
|
1313
|
-
} else {
|
1314
|
-
const block = item.element.getBlock()
|
1315
|
-
return block.parsedom == 'table'
|
1316
|
-
}
|
1317
|
-
})
|
1318
1373
|
}
|
1374
|
+
const result = this.editor.getElementsByRange(true, false)
|
1375
|
+
return result.some(item => {
|
1376
|
+
if (item.element.isBlock()) {
|
1377
|
+
return item.element.parsedom == 'table'
|
1378
|
+
} else {
|
1379
|
+
const block = item.element.getBlock()
|
1380
|
+
return block.parsedom == 'table'
|
1381
|
+
}
|
1382
|
+
})
|
1319
1383
|
},
|
1320
1384
|
//api:选区是否含有任务列表
|
1321
1385
|
hasTask() {
|
1386
|
+
if (!this.editor.range) {
|
1387
|
+
return false
|
1388
|
+
}
|
1322
1389
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1323
1390
|
const block = this.editor.range.anchor.element.getBlock()
|
1324
1391
|
return blockIsTask(block)
|
1325
|
-
} else {
|
1326
|
-
const result = this.editor.getElementsByRange(true, false)
|
1327
|
-
return result.some(item => {
|
1328
|
-
if (item.element.isBlock()) {
|
1329
|
-
return blockIsTask(item.element)
|
1330
|
-
} else {
|
1331
|
-
const block = item.element.getBlock()
|
1332
|
-
return blockIsTask(block)
|
1333
|
-
}
|
1334
|
-
})
|
1335
1392
|
}
|
1393
|
+
const result = this.editor.getElementsByRange(true, false)
|
1394
|
+
return result.some(item => {
|
1395
|
+
if (item.element.isBlock()) {
|
1396
|
+
return blockIsTask(item.element)
|
1397
|
+
} else {
|
1398
|
+
const block = item.element.getBlock()
|
1399
|
+
return blockIsTask(block)
|
1400
|
+
}
|
1401
|
+
})
|
1336
1402
|
},
|
1337
1403
|
//选区是否含有图片
|
1338
1404
|
hasImage() {
|
1405
|
+
if (!this.editor.range) {
|
1406
|
+
return false
|
1407
|
+
}
|
1339
1408
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1340
1409
|
return this.editor.range.anchor.element.isClosed() && this.editor.range.anchor.element.parsedom == 'img'
|
1341
|
-
} else {
|
1342
|
-
const result = this.editor.getElementsByRange(true, true)
|
1343
|
-
return result.some(item => {
|
1344
|
-
return item.element.isClosed() && item.element.parsedom == 'img'
|
1345
|
-
})
|
1346
1410
|
}
|
1411
|
+
const result = this.editor.getElementsByRange(true, true)
|
1412
|
+
return result.some(item => {
|
1413
|
+
return item.element.isClosed() && item.element.parsedom == 'img'
|
1414
|
+
})
|
1347
1415
|
},
|
1348
1416
|
//选区是否含有视频
|
1349
1417
|
hasVideo() {
|
1418
|
+
if (!this.editor.range) {
|
1419
|
+
return false
|
1420
|
+
}
|
1350
1421
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1351
1422
|
return this.editor.range.anchor.element.isClosed() && this.editor.range.anchor.element.parsedom == 'video'
|
1352
|
-
} else {
|
1353
|
-
const result = this.editor.getElementsByRange(true, true)
|
1354
|
-
return result.some(item => {
|
1355
|
-
return item.element.isClosed() && item.element.parsedom == 'video'
|
1356
|
-
})
|
1357
1423
|
}
|
1424
|
+
const result = this.editor.getElementsByRange(true, true)
|
1425
|
+
return result.some(item => {
|
1426
|
+
return item.element.isClosed() && item.element.parsedom == 'video'
|
1427
|
+
})
|
1358
1428
|
},
|
1359
1429
|
//api:选区是否全部在引用内
|
1360
1430
|
inQuote() {
|
1431
|
+
if (!this.editor.range) {
|
1432
|
+
return false
|
1433
|
+
}
|
1361
1434
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1362
1435
|
const block = this.editor.range.anchor.element.getBlock()
|
1363
1436
|
return block.parsedom == 'blockquote'
|
1364
|
-
} else {
|
1365
|
-
const result = this.editor.getElementsByRange(true, false)
|
1366
|
-
return result.every(item => {
|
1367
|
-
if (item.element.isBlock()) {
|
1368
|
-
return item.element.parsedom == 'blockquote'
|
1369
|
-
} else {
|
1370
|
-
const block = item.element.getBlock()
|
1371
|
-
return block.parsedom == 'blockquote'
|
1372
|
-
}
|
1373
|
-
})
|
1374
1437
|
}
|
1438
|
+
const result = this.editor.getElementsByRange(true, false)
|
1439
|
+
return result.every(item => {
|
1440
|
+
if (item.element.isBlock()) {
|
1441
|
+
return item.element.parsedom == 'blockquote'
|
1442
|
+
} else {
|
1443
|
+
const block = item.element.getBlock()
|
1444
|
+
return block.parsedom == 'blockquote'
|
1445
|
+
}
|
1446
|
+
})
|
1375
1447
|
},
|
1376
1448
|
//api:选区是否全部在列表内
|
1377
1449
|
inList(ordered = false) {
|
1450
|
+
if (!this.editor.range) {
|
1451
|
+
return false
|
1452
|
+
}
|
1378
1453
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1379
1454
|
const block = this.editor.range.anchor.element.getBlock()
|
1380
1455
|
return blockIsList(block, ordered)
|
1381
|
-
} else {
|
1382
|
-
const result = this.editor.getElementsByRange(true, false)
|
1383
|
-
return result.every(item => {
|
1384
|
-
if (item.element.isBlock()) {
|
1385
|
-
return blockIsList(item.element, ordered)
|
1386
|
-
} else {
|
1387
|
-
const block = item.element.getBlock()
|
1388
|
-
return blockIsList(block, ordered)
|
1389
|
-
}
|
1390
|
-
})
|
1391
1456
|
}
|
1457
|
+
const result = this.editor.getElementsByRange(true, false)
|
1458
|
+
return result.every(item => {
|
1459
|
+
if (item.element.isBlock()) {
|
1460
|
+
return blockIsList(item.element, ordered)
|
1461
|
+
} else {
|
1462
|
+
const block = item.element.getBlock()
|
1463
|
+
return blockIsList(block, ordered)
|
1464
|
+
}
|
1465
|
+
})
|
1392
1466
|
},
|
1393
1467
|
//api:选区是否全部在任务列表里
|
1394
1468
|
inTask() {
|
1469
|
+
if (!this.editor.range) {
|
1470
|
+
return false
|
1471
|
+
}
|
1395
1472
|
if (this.editor.range.anchor.isEqual(this.editor.range.focus)) {
|
1396
1473
|
const block = this.editor.range.anchor.element.getBlock()
|
1397
1474
|
return blockIsTask(block)
|
1398
|
-
} else {
|
1399
|
-
const result = this.editor.getElementsByRange(true, false)
|
1400
|
-
return result.every(item => {
|
1401
|
-
if (item.element.isBlock()) {
|
1402
|
-
return blockIsTask(item.element)
|
1403
|
-
} else {
|
1404
|
-
const block = item.element.getBlock()
|
1405
|
-
return blockIsTask(block)
|
1406
|
-
}
|
1407
|
-
})
|
1408
1475
|
}
|
1476
|
+
const result = this.editor.getElementsByRange(true, false)
|
1477
|
+
return result.every(item => {
|
1478
|
+
if (item.element.isBlock()) {
|
1479
|
+
return blockIsTask(item.element)
|
1480
|
+
} else {
|
1481
|
+
const block = item.element.getBlock()
|
1482
|
+
return blockIsTask(block)
|
1483
|
+
}
|
1484
|
+
})
|
1409
1485
|
},
|
1410
1486
|
//api:创建一个空的表格
|
1411
1487
|
insertTable(rowLength, colLength) {
|
1488
|
+
if (this.disabled) {
|
1489
|
+
return
|
1490
|
+
}
|
1491
|
+
if (!this.editor.range) {
|
1492
|
+
return
|
1493
|
+
}
|
1412
1494
|
const table = new AlexElement('block', 'table', null, null, null)
|
1413
1495
|
const tbody = new AlexElement('inblock', 'tbody', null, null, null)
|
1414
1496
|
this.editor.addElementTo(tbody, table)
|
@@ -1439,6 +1521,9 @@ export default {
|
|
1439
1521
|
if (this.disabled) {
|
1440
1522
|
return
|
1441
1523
|
}
|
1524
|
+
if (!this.editor.range) {
|
1525
|
+
return
|
1526
|
+
}
|
1442
1527
|
const pre = this.getCurrentParsedomElement('pre')
|
1443
1528
|
if (pre) {
|
1444
1529
|
let content = ''
|
@@ -1517,6 +1602,9 @@ export default {
|
|
1517
1602
|
if (this.disabled) {
|
1518
1603
|
return
|
1519
1604
|
}
|
1605
|
+
if (!this.editor.range) {
|
1606
|
+
return
|
1607
|
+
}
|
1520
1608
|
this.editor.insertText(text)
|
1521
1609
|
this.editor.formatElementStack()
|
1522
1610
|
this.editor.domRender()
|
@@ -1527,6 +1615,9 @@ export default {
|
|
1527
1615
|
if (this.disabled) {
|
1528
1616
|
return
|
1529
1617
|
}
|
1618
|
+
if (!this.editor.range) {
|
1619
|
+
return
|
1620
|
+
}
|
1530
1621
|
const elements = this.editor.parseHtml(html)
|
1531
1622
|
for (let i = 0; i < elements.length; i++) {
|
1532
1623
|
this.editor.insertElement(elements[i], false)
|
@@ -1861,6 +1952,12 @@ export default {
|
|
1861
1952
|
:deep(a) {
|
1862
1953
|
cursor: pointer;
|
1863
1954
|
}
|
1955
|
+
|
1956
|
+
:deep(table) {
|
1957
|
+
td:not(:last-child)::after {
|
1958
|
+
cursor: auto;
|
1959
|
+
}
|
1960
|
+
}
|
1864
1961
|
}
|
1865
1962
|
}
|
1866
1963
|
|
package/src/core/index.js
CHANGED
@@ -353,6 +353,9 @@ export const tableHandle = function (element) {
|
|
353
353
|
|
354
354
|
//更新代码块内的光标位置
|
355
355
|
const updateRangeInPre = function (element, originalTextElements, newElements) {
|
356
|
+
if (!this.range) {
|
357
|
+
return
|
358
|
+
}
|
356
359
|
//如果虚拟光标的起点在代码块内对虚拟光标的起点进行重新定位
|
357
360
|
if (this.range.anchor.element.getBlock().isEqual(element)) {
|
358
361
|
//获取起点所在文本元素的在所有文本元素中的序列
|
package/src/index.js
CHANGED