vue-editify 0.0.50 → 0.1.0
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 +27 -45
- package/lib/editify.es.js +6877 -7829
- package/lib/editify.umd.js +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -2
- package/src/Editify.vue +262 -1240
- package/src/components/{bussiness/Menu.vue → Menu.vue} +238 -139
- package/src/components/{bussiness/Toolbar.vue → Toolbar.vue} +227 -141
- package/src/components/base/Button.vue +6 -6
- package/src/components/base/Checkbox.vue +4 -4
- package/src/components/base/Layer.vue +12 -12
- package/src/components/{bussiness → common}/InsertImage.vue +7 -7
- package/src/components/{bussiness → common}/InsertVideo.vue +7 -7
- package/src/core/function.js +1044 -0
- package/src/core/rule.js +239 -0
- package/src/core/{index.js → tool.js} +60 -296
- package/src/index.js +1 -1
- /package/src/components/{bussiness → common}/Colors.vue +0 -0
- /package/src/components/{bussiness → common}/InsertLink.vue +0 -0
- /package/src/components/{bussiness → common}/InsertTable.vue +0 -0
@@ -4,16 +4,16 @@
|
|
4
4
|
</div>
|
5
5
|
</template>
|
6
6
|
<script>
|
7
|
-
import Icon from '
|
8
|
-
import Button from '
|
9
|
-
import Colors from './Colors'
|
10
|
-
import InsertLink from './InsertLink'
|
11
|
-
import InsertImage from './InsertImage'
|
12
|
-
import InsertVideo from './InsertVideo'
|
13
|
-
import InsertTable from './InsertTable'
|
7
|
+
import Icon from './base/Icon'
|
8
|
+
import Button from './base/Button'
|
9
|
+
import Colors from './common/Colors'
|
10
|
+
import InsertLink from './common/InsertLink'
|
11
|
+
import InsertImage from './common/InsertImage'
|
12
|
+
import InsertVideo from './common/InsertVideo'
|
13
|
+
import InsertTable from './common/InsertTable'
|
14
14
|
import { h, getCurrentInstance } from 'vue'
|
15
|
-
import {
|
16
|
-
import
|
15
|
+
import { common as DapCommon } from 'dap-util'
|
16
|
+
import { getLinkText, setHeading, setIndentIncrease, setIndentDecrease, setQuote, setAlign, setList, setTask, setTextStyle, setTextMark, removeTextStyle, removeTextMark, setLineHeight, insertLink, insertImage, insertVideo, insertTable, insertCodeBlock, hasPreInRange, hasTableInRange, hasQuoteInRange, hasLinkInRange, isRangeInQuote, isRangeInList, isRangeInTask, queryTextStyle, queryTextMark, getCurrentParsedomElement } from '../core/function'
|
17
17
|
export default {
|
18
18
|
name: 'Menu',
|
19
19
|
props: {
|
@@ -22,11 +22,6 @@ export default {
|
|
22
22
|
type: Object,
|
23
23
|
default: null
|
24
24
|
},
|
25
|
-
//是否禁用整个菜单栏
|
26
|
-
disabled: {
|
27
|
-
type: Boolean,
|
28
|
-
default: false
|
29
|
-
},
|
30
25
|
//主题色
|
31
26
|
color: {
|
32
27
|
type: String,
|
@@ -338,6 +333,10 @@ export default {
|
|
338
333
|
}
|
339
334
|
},
|
340
335
|
computed: {
|
336
|
+
//整个菜单栏是否禁用
|
337
|
+
disabled() {
|
338
|
+
return this.$parent.disabled || !this.$parent.canUseMenu
|
339
|
+
},
|
341
340
|
//菜单名称数组
|
342
341
|
menuNames() {
|
343
342
|
return Object.keys(this.config.sequence).sort((a, b) => {
|
@@ -816,18 +815,7 @@ export default {
|
|
816
815
|
hideScroll: true,
|
817
816
|
onLayerShow: () => {
|
818
817
|
//存在选区的情况下预置链接文本值
|
819
|
-
|
820
|
-
const result = this.$parent.$parent.editor.getElementsByRange().flatIncludes
|
821
|
-
result.forEach(item => {
|
822
|
-
if (item.element.isText()) {
|
823
|
-
if (item.offset) {
|
824
|
-
text += item.element.textContent.substring(item.offset[0], item.offset[1])
|
825
|
-
} else {
|
826
|
-
text += item.element.textContent || ''
|
827
|
-
}
|
828
|
-
}
|
829
|
-
})
|
830
|
-
this.$parent.linkConfig.text = text
|
818
|
+
this.$parent.linkConfig.text = getLinkText(this.$parent.$parent)
|
831
819
|
}
|
832
820
|
},
|
833
821
|
{
|
@@ -1016,7 +1004,7 @@ export default {
|
|
1016
1004
|
}
|
1017
1005
|
|
1018
1006
|
/** 下面是拓展菜单的配置 */
|
1019
|
-
if (
|
1007
|
+
if (DapCommon.isObject(this.$parent.config.extends)) {
|
1020
1008
|
//获取菜单按钮的配置
|
1021
1009
|
const configuration = this.$parent.config.extends[this.name]
|
1022
1010
|
if (configuration) {
|
@@ -1082,9 +1070,14 @@ export default {
|
|
1082
1070
|
methods: {
|
1083
1071
|
//按钮操作触发函数
|
1084
1072
|
handleOperate(name, val) {
|
1073
|
+
//菜单栏禁用
|
1085
1074
|
if (this.disabled) {
|
1086
1075
|
return
|
1087
1076
|
}
|
1077
|
+
//没有获取焦点
|
1078
|
+
if (!this.$parent.editor.range) {
|
1079
|
+
return
|
1080
|
+
}
|
1088
1081
|
//撤销
|
1089
1082
|
if (name == 'undo') {
|
1090
1083
|
this.$parent.undo()
|
@@ -1095,109 +1088,208 @@ export default {
|
|
1095
1088
|
}
|
1096
1089
|
//设置标题
|
1097
1090
|
else if (name == 'heading') {
|
1098
|
-
this.$parent
|
1091
|
+
setHeading(this.$parent, val)
|
1092
|
+
this.$parent.editor.formatElementStack()
|
1093
|
+
this.$parent.editor.domRender()
|
1094
|
+
this.$parent.editor.rangeRender()
|
1099
1095
|
}
|
1100
1096
|
//设置缩进
|
1101
1097
|
else if (name == 'indent') {
|
1102
1098
|
//增加缩进
|
1103
1099
|
if (val == 'indent-increase') {
|
1104
|
-
this.$parent
|
1100
|
+
setIndentIncrease(this.$parent)
|
1105
1101
|
}
|
1106
1102
|
//减少缩进
|
1107
1103
|
else if (val == 'indent-decrease') {
|
1108
|
-
this.$parent
|
1104
|
+
setIndentDecrease(this.$parent)
|
1109
1105
|
}
|
1106
|
+
this.$parent.editor.formatElementStack()
|
1107
|
+
this.$parent.editor.domRender()
|
1108
|
+
this.$parent.editor.rangeRender()
|
1110
1109
|
}
|
1111
1110
|
//设置引用
|
1112
1111
|
else if (name == 'quote') {
|
1113
|
-
this.$parent
|
1112
|
+
setQuote(this.$parent)
|
1113
|
+
this.$parent.editor.formatElementStack()
|
1114
|
+
this.$parent.editor.domRender()
|
1115
|
+
this.$parent.editor.rangeRender()
|
1114
1116
|
}
|
1115
1117
|
//设置对齐方式
|
1116
1118
|
else if (name == 'align') {
|
1117
|
-
this.$parent
|
1119
|
+
setAlign(this.$parent, val)
|
1120
|
+
this.$parent.editor.formatElementStack()
|
1121
|
+
this.$parent.editor.domRender()
|
1122
|
+
this.$parent.editor.rangeRender()
|
1118
1123
|
}
|
1119
1124
|
//设置有序列表
|
1120
1125
|
else if (name == 'orderList') {
|
1121
|
-
this.$parent
|
1126
|
+
setList(this.$parent, true)
|
1127
|
+
this.$parent.editor.formatElementStack()
|
1128
|
+
this.$parent.editor.domRender()
|
1129
|
+
this.$parent.editor.rangeRender()
|
1122
1130
|
}
|
1123
1131
|
//设置无序列表
|
1124
1132
|
else if (name == 'unorderList') {
|
1125
|
-
this.$parent
|
1133
|
+
setList(this.$parent, false)
|
1134
|
+
this.$parent.editor.formatElementStack()
|
1135
|
+
this.$parent.editor.domRender()
|
1136
|
+
this.$parent.editor.rangeRender()
|
1126
1137
|
}
|
1127
1138
|
//设置任务列表
|
1128
1139
|
else if (name == 'task') {
|
1129
|
-
this.$parent
|
1140
|
+
setTask(this.$parent)
|
1141
|
+
this.$parent.editor.formatElementStack()
|
1142
|
+
this.$parent.editor.domRender()
|
1143
|
+
this.$parent.editor.rangeRender()
|
1130
1144
|
}
|
1131
1145
|
//设置粗体
|
1132
1146
|
else if (name == 'bold') {
|
1133
|
-
this.$parent
|
1147
|
+
if (queryTextStyle(this.$parent, 'font-weight', 'bold') || queryTextStyle(this.$parent, 'font-weight', '700')) {
|
1148
|
+
removeTextStyle(this.$parent, ['font-weight'])
|
1149
|
+
} else {
|
1150
|
+
setTextStyle(this.$parent, {
|
1151
|
+
'font-weight': 'bold'
|
1152
|
+
})
|
1153
|
+
}
|
1154
|
+
this.$parent.editor.formatElementStack()
|
1155
|
+
this.$parent.editor.domRender()
|
1156
|
+
this.$parent.editor.rangeRender()
|
1134
1157
|
}
|
1135
1158
|
//设置下划线
|
1136
1159
|
else if (name == 'underline') {
|
1137
|
-
this.$parent
|
1160
|
+
if (queryTextStyle(this.$parent, 'text-decoration', 'underline') || queryTextStyle(this.$parent, 'text-decoration-line', 'underline')) {
|
1161
|
+
removeTextStyle(this.$parent, ['text-decoration', 'text-decoration-line'])
|
1162
|
+
} else {
|
1163
|
+
setTextStyle(this.$parent, {
|
1164
|
+
'text-decoration': 'underline'
|
1165
|
+
})
|
1166
|
+
}
|
1167
|
+
this.$parent.editor.formatElementStack()
|
1168
|
+
this.$parent.editor.domRender()
|
1169
|
+
this.$parent.editor.rangeRender()
|
1138
1170
|
}
|
1139
1171
|
//设置斜体
|
1140
1172
|
else if (name == 'italic') {
|
1141
|
-
this.$parent
|
1173
|
+
if (queryTextStyle(this.$parent, 'font-style', 'italic')) {
|
1174
|
+
removeTextStyle(this.$parent, ['font-style'])
|
1175
|
+
} else {
|
1176
|
+
setTextStyle(this.$parent, {
|
1177
|
+
'font-style': 'italic'
|
1178
|
+
})
|
1179
|
+
}
|
1180
|
+
this.$parent.editor.formatElementStack()
|
1181
|
+
this.$parent.editor.domRender()
|
1182
|
+
this.$parent.editor.rangeRender()
|
1142
1183
|
}
|
1143
1184
|
//设置删除线
|
1144
1185
|
else if (name == 'strikethrough') {
|
1145
|
-
this.$parent
|
1186
|
+
if (queryTextStyle(this.$parent, 'text-decoration', 'line-through') || queryTextStyle(this.$parent, 'text-decoration-line', 'line-through')) {
|
1187
|
+
removeTextStyle(this.$parent, ['text-decoration', 'text-decoration-line'])
|
1188
|
+
} else {
|
1189
|
+
setTextStyle(this.$parent, {
|
1190
|
+
'text-decoration': 'line-through'
|
1191
|
+
})
|
1192
|
+
}
|
1193
|
+
this.$parent.editor.formatElementStack()
|
1194
|
+
this.$parent.editor.domRender()
|
1195
|
+
this.$parent.editor.rangeRender()
|
1146
1196
|
}
|
1147
1197
|
//设置行内代码
|
1148
1198
|
else if (name == 'code') {
|
1149
|
-
this.$parent
|
1199
|
+
if (queryTextMark(this.$parent, 'data-editify-code')) {
|
1200
|
+
removeTextMark(this.$parent, ['data-editify-code'])
|
1201
|
+
} else {
|
1202
|
+
setTextMark(this.$parent, {
|
1203
|
+
'data-editify-code': true
|
1204
|
+
})
|
1205
|
+
}
|
1206
|
+
this.$parent.editor.formatElementStack()
|
1207
|
+
this.$parent.editor.domRender()
|
1208
|
+
this.$parent.editor.rangeRender()
|
1150
1209
|
}
|
1151
1210
|
//设置上标
|
1152
1211
|
else if (name == 'super') {
|
1153
|
-
this.$parent
|
1212
|
+
if (queryTextStyle(this.$parent, 'vertical-align', 'super')) {
|
1213
|
+
removeTextStyle(this.$parent, ['vertical-align'])
|
1214
|
+
} else {
|
1215
|
+
setTextStyle(this.$parent, {
|
1216
|
+
'vertical-align': 'super'
|
1217
|
+
})
|
1218
|
+
}
|
1219
|
+
this.$parent.editor.formatElementStack()
|
1220
|
+
this.$parent.editor.domRender()
|
1221
|
+
this.$parent.editor.rangeRender()
|
1154
1222
|
}
|
1155
1223
|
//设置下标
|
1156
1224
|
else if (name == 'sub') {
|
1157
|
-
this.$parent
|
1225
|
+
if (queryTextStyle(this.$parent, 'vertical-align', 'sub')) {
|
1226
|
+
removeTextStyle(this.$parent, ['vertical-align'])
|
1227
|
+
} else {
|
1228
|
+
setTextStyle(this.$parent, {
|
1229
|
+
'vertical-align': 'sub'
|
1230
|
+
})
|
1231
|
+
}
|
1232
|
+
this.$parent.editor.formatElementStack()
|
1233
|
+
this.$parent.editor.domRender()
|
1234
|
+
this.$parent.editor.rangeRender()
|
1158
1235
|
}
|
1159
1236
|
//清除格式
|
1160
1237
|
else if (name == 'formatClear') {
|
1161
|
-
this.$parent
|
1238
|
+
removeTextStyle(this.$parent)
|
1239
|
+
removeTextMark(this.$parent)
|
1240
|
+
this.$parent.editor.formatElementStack()
|
1241
|
+
this.$parent.editor.domRender()
|
1242
|
+
this.$parent.editor.rangeRender()
|
1162
1243
|
}
|
1163
1244
|
//设置字号
|
1164
1245
|
else if (name == 'fontSize') {
|
1165
|
-
this.$parent
|
1246
|
+
setTextStyle(this.$parent, {
|
1247
|
+
'font-size': val
|
1248
|
+
})
|
1249
|
+
this.$parent.editor.formatElementStack()
|
1250
|
+
this.$parent.editor.domRender()
|
1251
|
+
this.$parent.editor.rangeRender()
|
1166
1252
|
}
|
1167
1253
|
//设置字体
|
1168
1254
|
else if (name == 'fontFamily') {
|
1169
|
-
this.$parent
|
1255
|
+
setTextStyle(this.$parent, {
|
1256
|
+
'font-family': val
|
1257
|
+
})
|
1258
|
+
this.$parent.editor.formatElementStack()
|
1259
|
+
this.$parent.editor.domRender()
|
1260
|
+
this.$parent.editor.rangeRender()
|
1170
1261
|
}
|
1171
1262
|
//设置行高
|
1172
1263
|
else if (name == 'lineHeight') {
|
1173
|
-
this.$parent
|
1264
|
+
setLineHeight(this.$parent, val)
|
1265
|
+
this.$parent.editor.formatElementStack()
|
1266
|
+
this.$parent.editor.domRender()
|
1267
|
+
this.$parent.editor.rangeRender()
|
1174
1268
|
}
|
1175
1269
|
//设置前景色
|
1176
1270
|
else if (name == 'foreColor') {
|
1177
|
-
this.$parent
|
1271
|
+
setTextStyle(this.$parent, {
|
1272
|
+
color: val
|
1273
|
+
})
|
1274
|
+
this.$parent.editor.formatElementStack()
|
1275
|
+
this.$parent.editor.domRender()
|
1276
|
+
this.$parent.editor.rangeRender()
|
1178
1277
|
}
|
1179
1278
|
//设置背景色
|
1180
1279
|
else if (name == 'backColor') {
|
1181
|
-
this.$parent
|
1280
|
+
setTextStyle(this.$parent, {
|
1281
|
+
'background-color': val
|
1282
|
+
})
|
1283
|
+
this.$parent.editor.formatElementStack()
|
1284
|
+
this.$parent.editor.domRender()
|
1285
|
+
this.$parent.editor.rangeRender()
|
1182
1286
|
}
|
1183
1287
|
//插入链接
|
1184
1288
|
else if (name == 'link') {
|
1185
1289
|
if (!val.url) {
|
1186
1290
|
return
|
1187
1291
|
}
|
1188
|
-
|
1189
|
-
text = url
|
1190
|
-
}
|
1191
|
-
const marks = {
|
1192
|
-
href: val.url
|
1193
|
-
}
|
1194
|
-
if (val.newOpen) {
|
1195
|
-
marks.target = '_blank'
|
1196
|
-
}
|
1197
|
-
const linkEle = new AlexElement('inline', 'a', marks, null, null)
|
1198
|
-
const textEle = new AlexElement('text', null, null, null, val.text)
|
1199
|
-
this.$parent.editor.addElementTo(textEle, linkEle)
|
1200
|
-
this.$parent.editor.insertElement(linkEle)
|
1292
|
+
insertLink(this.$parent, val.text, val.url, val.newOpen)
|
1201
1293
|
this.$parent.editor.formatElementStack()
|
1202
1294
|
this.$parent.editor.domRender()
|
1203
1295
|
this.$parent.editor.rangeRender()
|
@@ -1207,22 +1299,34 @@ export default {
|
|
1207
1299
|
if (!val) {
|
1208
1300
|
return
|
1209
1301
|
}
|
1210
|
-
this.$parent
|
1302
|
+
insertImage(this.$parent, val)
|
1303
|
+
this.$parent.editor.formatElementStack()
|
1304
|
+
this.$parent.editor.domRender()
|
1305
|
+
this.$parent.editor.rangeRender()
|
1211
1306
|
}
|
1212
1307
|
//插入视频
|
1213
1308
|
else if (name == 'video') {
|
1214
1309
|
if (!val) {
|
1215
1310
|
return
|
1216
1311
|
}
|
1217
|
-
this.$parent
|
1312
|
+
insertVideo(this.$parent, val)
|
1313
|
+
this.$parent.editor.formatElementStack()
|
1314
|
+
this.$parent.editor.domRender()
|
1315
|
+
this.$parent.editor.rangeRender()
|
1218
1316
|
}
|
1219
1317
|
//插入表格
|
1220
1318
|
else if (name == 'table') {
|
1221
|
-
this.$parent
|
1319
|
+
insertTable(this.$parent, val.row, val.column)
|
1320
|
+
this.$parent.editor.formatElementStack()
|
1321
|
+
this.$parent.editor.domRender()
|
1322
|
+
this.$parent.editor.rangeRender()
|
1222
1323
|
}
|
1223
1324
|
//插入代码块
|
1224
1325
|
else if (name == 'codeBlock') {
|
1225
|
-
this.$parent
|
1326
|
+
insertCodeBlock(this.$parent)
|
1327
|
+
this.$parent.editor.formatElementStack()
|
1328
|
+
this.$parent.editor.domRender()
|
1329
|
+
this.$parent.editor.rangeRender()
|
1226
1330
|
}
|
1227
1331
|
//代码视图
|
1228
1332
|
else if (name == 'sourceView') {
|
@@ -1240,28 +1344,23 @@ export default {
|
|
1240
1344
|
}
|
1241
1345
|
},
|
1242
1346
|
//处理光标更新
|
1243
|
-
handleRangeUpdate(
|
1244
|
-
|
1245
|
-
|
1246
|
-
}
|
1247
|
-
//获取选区的元素
|
1248
|
-
const result = this.$parent.editor.getElementsByRange(useCache).includes
|
1249
|
-
//选区是否含有代码块元素
|
1250
|
-
const hasPreStyle = this.$parent.hasPreStyle(true)
|
1347
|
+
handleRangeUpdate() {
|
1348
|
+
//选区是否含有代码块
|
1349
|
+
const value_hasPreInRange = hasPreInRange(this.$parent)
|
1251
1350
|
//选区是否含有表格元素
|
1252
|
-
const
|
1351
|
+
const value_hasTableInRange = hasTableInRange(this.$parent)
|
1253
1352
|
//选区是否含有引用元素
|
1254
|
-
const
|
1353
|
+
const value_hasQuoteInRange = hasQuoteInRange(this.$parent)
|
1255
1354
|
//选区是否都在引用元素内
|
1256
|
-
const
|
1355
|
+
const value_isRangeInQuote = isRangeInQuote(this.$parent)
|
1257
1356
|
//选区是否含有链接元素
|
1258
|
-
const
|
1357
|
+
const value_hasLinkInRange = hasLinkInRange(this.$parent)
|
1259
1358
|
//选区是否都在有序列表内
|
1260
|
-
const
|
1359
|
+
const value_isRangeInOrderList = isRangeInList(this.$parent, true)
|
1261
1360
|
//选区是否都在无序列表内
|
1262
|
-
const
|
1361
|
+
const value_isRangeInUnorderList = isRangeInList(this.$parent, false)
|
1263
1362
|
//选区是否都在任务列表内
|
1264
|
-
const
|
1363
|
+
const value_isRangeInTask = isRangeInTask(this.$parent)
|
1265
1364
|
//额外禁用判定
|
1266
1365
|
const extraDisabled = name => {
|
1267
1366
|
if (typeof this.config.extraDisabled == 'function') {
|
@@ -1279,120 +1378,120 @@ export default {
|
|
1279
1378
|
//显示已设置标题
|
1280
1379
|
const findHeadingItem = this.headingConfig.displayConfig.options.find(item => {
|
1281
1380
|
let val = item
|
1282
|
-
if (
|
1381
|
+
if (DapCommon.isObject(item)) {
|
1283
1382
|
val = item.value
|
1284
1383
|
}
|
1285
1384
|
if (this.$parent.editor.range.anchor.isEqual(this.$parent.editor.range.focus)) {
|
1286
1385
|
return this.$parent.editor.range.anchor.element.getBlock().parsedom == val
|
1287
1386
|
}
|
1288
|
-
return
|
1387
|
+
return this.$parent.dataRangeCaches.list.every(el => {
|
1289
1388
|
if (el.element.isBlock()) {
|
1290
1389
|
return el.element.parsedom == val
|
1291
1390
|
}
|
1292
1391
|
return el.element.getBlock().parsedom == val
|
1293
1392
|
})
|
1294
1393
|
})
|
1295
|
-
this.headingConfig.displayConfig.value = findHeadingItem ? (
|
1394
|
+
this.headingConfig.displayConfig.value = findHeadingItem ? (DapCommon.isObject(findHeadingItem) ? findHeadingItem.value : findHeadingItem) : this.headingConfig.defaultValue
|
1296
1395
|
//标题禁用
|
1297
|
-
this.headingConfig.disabled =
|
1396
|
+
this.headingConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('heading')
|
1298
1397
|
|
1299
1398
|
//缩进禁用
|
1300
|
-
this.indentConfig.disabled =
|
1399
|
+
this.indentConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('indent')
|
1301
1400
|
|
1302
1401
|
//引用按钮激活
|
1303
|
-
this.quoteConfig.active =
|
1402
|
+
this.quoteConfig.active = value_isRangeInQuote
|
1304
1403
|
//引用按钮禁用
|
1305
|
-
this.quoteConfig.disabled =
|
1404
|
+
this.quoteConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('quote')
|
1306
1405
|
|
1307
1406
|
//对齐方式按钮禁用
|
1308
|
-
this.alignConfig.disabled =
|
1407
|
+
this.alignConfig.disabled = value_hasPreInRange || extraDisabled('align')
|
1309
1408
|
|
1310
1409
|
//有序列表按钮激活
|
1311
|
-
this.orderListConfig.active =
|
1410
|
+
this.orderListConfig.active = value_isRangeInOrderList
|
1312
1411
|
//有序列表禁用
|
1313
|
-
this.orderListConfig.disabled =
|
1412
|
+
this.orderListConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('orderList')
|
1314
1413
|
|
1315
1414
|
//无序列表按钮激活
|
1316
|
-
this.unorderListConfig.active =
|
1415
|
+
this.unorderListConfig.active = value_isRangeInUnorderList
|
1317
1416
|
//无序列表禁用
|
1318
|
-
this.unorderListConfig.disabled =
|
1417
|
+
this.unorderListConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('unorderList')
|
1319
1418
|
|
1320
1419
|
//任务列表按钮激活
|
1321
|
-
this.taskConfig.active =
|
1420
|
+
this.taskConfig.active = value_isRangeInTask
|
1322
1421
|
//任务列表禁用
|
1323
|
-
this.taskConfig.disabled =
|
1422
|
+
this.taskConfig.disabled = value_hasPreInRange || value_hasTableInRange || extraDisabled('task')
|
1324
1423
|
|
1325
1424
|
//粗体按钮激活
|
1326
|
-
this.boldConfig.active = this.$parent
|
1425
|
+
this.boldConfig.active = queryTextStyle(this.$parent, 'font-weight', 'bold') || queryTextStyle(this.$parent, 'font-weight', '700')
|
1327
1426
|
//粗体按钮禁用
|
1328
|
-
this.boldConfig.disabled =
|
1427
|
+
this.boldConfig.disabled = value_hasPreInRange || extraDisabled('bold')
|
1329
1428
|
|
1330
1429
|
//下划线按钮激活
|
1331
|
-
this.underlineConfig.active = this.$parent
|
1430
|
+
this.underlineConfig.active = queryTextStyle(this.$parent, 'text-decoration', 'underline') || queryTextStyle(this.$parent, 'text-decoration-line', 'underline')
|
1332
1431
|
//下划线按钮禁用
|
1333
|
-
this.underlineConfig.disabled =
|
1432
|
+
this.underlineConfig.disabled = value_hasPreInRange || extraDisabled('underline')
|
1334
1433
|
|
1335
1434
|
//斜体按钮激活
|
1336
|
-
this.italicConfig.active = this.$parent
|
1435
|
+
this.italicConfig.active = queryTextStyle(this.$parent, 'font-style', 'italic')
|
1337
1436
|
//斜体按钮禁用
|
1338
|
-
this.italicConfig.disabled =
|
1437
|
+
this.italicConfig.disabled = value_hasPreInRange || extraDisabled('italic')
|
1339
1438
|
|
1340
1439
|
//删除线按钮激活
|
1341
|
-
this.strikethroughConfig.active = this.$parent
|
1440
|
+
this.strikethroughConfig.active = queryTextStyle(this.$parent, 'text-decoration', 'line-through') || queryTextStyle(this.$parent, 'text-decoration-line', 'line-through')
|
1342
1441
|
//删除线按钮禁用
|
1343
|
-
this.strikethroughConfig.disabled =
|
1442
|
+
this.strikethroughConfig.disabled = value_hasPreInRange || extraDisabled('strikethrough')
|
1344
1443
|
|
1345
1444
|
//行内代码按钮激活
|
1346
|
-
this.codeConfig.active = this.$parent
|
1445
|
+
this.codeConfig.active = queryTextMark(this.$parent, 'data-editify-code')
|
1347
1446
|
//行内代码按钮禁用
|
1348
|
-
this.codeConfig.disabled =
|
1447
|
+
this.codeConfig.disabled = value_hasPreInRange || extraDisabled('code')
|
1349
1448
|
|
1350
1449
|
//上标按钮激活
|
1351
|
-
this.superConfig.active = this.$parent
|
1450
|
+
this.superConfig.active = queryTextStyle(this.$parent, 'vertical-align', 'super')
|
1352
1451
|
//上标按钮禁用
|
1353
|
-
this.superConfig.disabled =
|
1452
|
+
this.superConfig.disabled = value_hasPreInRange || extraDisabled('super')
|
1354
1453
|
|
1355
1454
|
//下标按钮激活
|
1356
|
-
this.subConfig.active = this.$parent
|
1455
|
+
this.subConfig.active = queryTextStyle(this.$parent, 'vertical-align', 'sub')
|
1357
1456
|
//下标按钮禁用
|
1358
|
-
this.subConfig.disabled =
|
1457
|
+
this.subConfig.disabled = value_hasPreInRange || extraDisabled('sub')
|
1359
1458
|
|
1360
1459
|
//清除格式按钮禁用
|
1361
|
-
this.formatClearConfig.disabled =
|
1460
|
+
this.formatClearConfig.disabled = value_hasPreInRange || extraDisabled('formatClear')
|
1362
1461
|
|
1363
1462
|
//显示已选择字号
|
1364
1463
|
const findFontItem = this.fontSizeConfig.displayConfig.options.find(item => {
|
1365
|
-
if (
|
1366
|
-
return this.$parent
|
1464
|
+
if (DapCommon.isObject(item)) {
|
1465
|
+
return queryTextStyle(this.$parent, 'font-size', item.value)
|
1367
1466
|
}
|
1368
|
-
return this.$parent
|
1467
|
+
return queryTextStyle(this.$parent, 'font-size', item)
|
1369
1468
|
})
|
1370
|
-
this.fontSizeConfig.displayConfig.value = findFontItem ? (
|
1469
|
+
this.fontSizeConfig.displayConfig.value = findFontItem ? (DapCommon.isObject(findFontItem) ? findFontItem.value : findFontItem) : this.fontSizeConfig.defaultValue
|
1371
1470
|
//字号按钮禁用
|
1372
|
-
this.fontSizeConfig.disabled =
|
1471
|
+
this.fontSizeConfig.disabled = value_hasPreInRange || extraDisabled('fontSize')
|
1373
1472
|
|
1374
1473
|
//显示已选择字体
|
1375
1474
|
const findFamilyItem = this.fontFamilyConfig.displayConfig.options.find(item => {
|
1376
|
-
if (
|
1377
|
-
return this.$parent
|
1475
|
+
if (DapCommon.isObject(item)) {
|
1476
|
+
return queryTextStyle(this.$parent, 'font-family', item.value)
|
1378
1477
|
}
|
1379
|
-
return this.$parent
|
1478
|
+
return queryTextStyle(this.$parent, 'font-family', item)
|
1380
1479
|
})
|
1381
|
-
this.fontFamilyConfig.displayConfig.value = findFamilyItem ? (
|
1480
|
+
this.fontFamilyConfig.displayConfig.value = findFamilyItem ? (DapCommon.isObject(findFamilyItem) ? findFamilyItem.value : findFamilyItem) : this.fontFamilyConfig.defaultValue
|
1382
1481
|
//字体按钮禁用
|
1383
|
-
this.fontFamilyConfig.disabled =
|
1482
|
+
this.fontFamilyConfig.disabled = value_hasPreInRange || extraDisabled('fontFamily')
|
1384
1483
|
|
1385
1484
|
//显示已设置行高
|
1386
1485
|
const findHeightItem = this.lineHeightConfig.displayConfig.options.find(item => {
|
1387
1486
|
let val = item
|
1388
|
-
if (
|
1487
|
+
if (DapCommon.isObject(item)) {
|
1389
1488
|
val = item.value
|
1390
1489
|
}
|
1391
1490
|
if (this.$parent.editor.range.anchor.isEqual(this.$parent.editor.range.focus)) {
|
1392
1491
|
const block = this.$parent.editor.range.anchor.element.getBlock()
|
1393
1492
|
return block.hasStyles() && block.styles['line-height'] == val
|
1394
1493
|
}
|
1395
|
-
return
|
1494
|
+
return this.$parent.dataRangeCaches.list.every(el => {
|
1396
1495
|
if (el.element.isBlock() || el.element.isInblock()) {
|
1397
1496
|
return el.element.hasStyles() && el.element.styles['line-height'] == val
|
1398
1497
|
}
|
@@ -1404,48 +1503,48 @@ export default {
|
|
1404
1503
|
return block.hasStyles() && block.styles['line-height'] == val
|
1405
1504
|
})
|
1406
1505
|
})
|
1407
|
-
this.lineHeightConfig.displayConfig.value = findHeightItem ? (
|
1506
|
+
this.lineHeightConfig.displayConfig.value = findHeightItem ? (DapCommon.isObject(findHeightItem) ? findHeightItem.value : findHeightItem) : this.lineHeightConfig.defaultValue
|
1408
1507
|
//行高按钮禁用
|
1409
|
-
this.lineHeightConfig.disabled =
|
1508
|
+
this.lineHeightConfig.disabled = value_hasPreInRange || extraDisabled('lineHeight')
|
1410
1509
|
|
1411
1510
|
//显示已选择的前景色
|
1412
1511
|
const findForeColorItem = this.foreColorConfig.selectConfig.options.find(item => {
|
1413
|
-
if (
|
1414
|
-
return this.$parent
|
1512
|
+
if (DapCommon.isObject(item)) {
|
1513
|
+
return queryTextStyle(this.$parent, 'color', item.value)
|
1415
1514
|
}
|
1416
|
-
return this.$parent
|
1515
|
+
return queryTextStyle(this.$parent, 'color', item)
|
1417
1516
|
})
|
1418
|
-
this.foreColorConfig.value = findForeColorItem ? (
|
1517
|
+
this.foreColorConfig.value = findForeColorItem ? (DapCommon.isObject(findForeColorItem) ? findForeColorItem.value : findForeColorItem) : ''
|
1419
1518
|
//前景色按钮禁用
|
1420
|
-
this.foreColorConfig.disabled =
|
1519
|
+
this.foreColorConfig.disabled = value_hasPreInRange || extraDisabled('foreColor')
|
1421
1520
|
|
1422
1521
|
//显示已选择的背景色
|
1423
1522
|
const findBackColorItem = this.backColorConfig.selectConfig.options.find(item => {
|
1424
|
-
if (
|
1425
|
-
return this.$parent
|
1523
|
+
if (DapCommon.isObject(item)) {
|
1524
|
+
return queryTextStyle(this.$parent, 'background-color', item.value)
|
1426
1525
|
}
|
1427
|
-
return this.$parent
|
1526
|
+
return queryTextStyle(this.$parent, 'background-color', item)
|
1428
1527
|
})
|
1429
|
-
this.backColorConfig.value = findBackColorItem ? (
|
1528
|
+
this.backColorConfig.value = findBackColorItem ? (DapCommon.isObject(findBackColorItem) ? findBackColorItem.value : findBackColorItem) : ''
|
1430
1529
|
//背景色按钮禁用
|
1431
|
-
this.backColorConfig.disabled =
|
1530
|
+
this.backColorConfig.disabled = value_hasPreInRange || extraDisabled('backColor')
|
1432
1531
|
|
1433
1532
|
//链接按钮禁用
|
1434
|
-
this.linkConfig.disabled =
|
1533
|
+
this.linkConfig.disabled = value_hasLinkInRange || value_hasPreInRange || extraDisabled('link')
|
1435
1534
|
|
1436
1535
|
//插入图片按钮禁用
|
1437
|
-
this.imageConfig.disabled =
|
1536
|
+
this.imageConfig.disabled = value_hasPreInRange || extraDisabled('image')
|
1438
1537
|
|
1439
1538
|
//插入视频按钮禁用
|
1440
|
-
this.videoConfig.disabled =
|
1539
|
+
this.videoConfig.disabled = value_hasPreInRange || extraDisabled('video')
|
1441
1540
|
|
1442
1541
|
//表格按钮禁用
|
1443
|
-
this.tableConfig.disabled =
|
1542
|
+
this.tableConfig.disabled = value_hasPreInRange || value_hasTableInRange || value_hasQuoteInRange || extraDisabled('table')
|
1444
1543
|
|
1445
1544
|
//代码块按钮激活
|
1446
|
-
this.codeBlockConfig.active = !!this.$parent
|
1545
|
+
this.codeBlockConfig.active = !!getCurrentParsedomElement(this.$parent, 'pre')
|
1447
1546
|
//代码块按钮禁用
|
1448
|
-
this.codeBlockConfig.disabled =
|
1547
|
+
this.codeBlockConfig.disabled = value_hasTableInRange || value_hasQuoteInRange || extraDisabled('codeBlock')
|
1449
1548
|
|
1450
1549
|
//代码视图按钮激活
|
1451
1550
|
this.sourceViewConfig.active = this.$parent.isSourceView
|