vue-editify 0.0.49 → 0.0.51
Sign up to get free protection for your applications and to get access to all the features.
- package/examples/App.vue +5561 -2
- package/lib/editify.es.js +58 -40
- package/lib/editify.umd.js +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -2
- package/src/Editify.vue +5 -0
- package/src/components/bussiness/Menu.vue +6 -0
- package/src/core/index.js +1 -1
- package/src/index.js +1 -1
package/lib/editify.es.js
CHANGED
@@ -1938,8 +1938,13 @@ const getNewFlatData = function(arr) {
|
|
1938
1938
|
newArr.unshift(arr[i]);
|
1939
1939
|
}
|
1940
1940
|
}
|
1941
|
-
|
1941
|
+
let newLength = newArr.length;
|
1942
|
+
let handledElementKeys = [];
|
1943
|
+
for (let i = 0; i < newLength; i++) {
|
1942
1944
|
const element2 = newArr[i].element;
|
1945
|
+
if (handledElementKeys.includes(element2.key)) {
|
1946
|
+
continue;
|
1947
|
+
}
|
1943
1948
|
if (!element2.offset && element2.parent) {
|
1944
1949
|
const selfIn = newArr.some((item) => {
|
1945
1950
|
return item.element.isEqual(element2.parent);
|
@@ -1954,7 +1959,9 @@ const getNewFlatData = function(arr) {
|
|
1954
1959
|
element: element2.parent,
|
1955
1960
|
offset: false
|
1956
1961
|
});
|
1957
|
-
|
1962
|
+
newLength += 1;
|
1963
|
+
handledElementKeys.push(element2.key);
|
1964
|
+
i--;
|
1958
1965
|
}
|
1959
1966
|
}
|
1960
1967
|
}
|
@@ -3477,7 +3484,7 @@ class AlexEditor {
|
|
3477
3484
|
/**
|
3478
3485
|
* 根据光标进行剪切操作
|
3479
3486
|
*/
|
3480
|
-
async cut() {
|
3487
|
+
async cut(useCache = false) {
|
3481
3488
|
if (!this.useClipboard) {
|
3482
3489
|
return;
|
3483
3490
|
}
|
@@ -3487,7 +3494,7 @@ class AlexEditor {
|
|
3487
3494
|
if (!this.allowCut) {
|
3488
3495
|
return;
|
3489
3496
|
}
|
3490
|
-
const result = await this.copy(true);
|
3497
|
+
const result = await this.copy(useCache, true);
|
3491
3498
|
if (result) {
|
3492
3499
|
if (!this.disabled) {
|
3493
3500
|
this.delete(true);
|
@@ -3500,7 +3507,7 @@ class AlexEditor {
|
|
3500
3507
|
* 根据光标执行复制操作
|
3501
3508
|
* isCut表示是否在执行剪切操作,默认为false,这个参数仅在内部使用
|
3502
3509
|
*/
|
3503
|
-
async copy(isCut = false) {
|
3510
|
+
async copy(useCache = false, isCut = false) {
|
3504
3511
|
if (!this.useClipboard) {
|
3505
3512
|
return;
|
3506
3513
|
}
|
@@ -3510,7 +3517,7 @@ class AlexEditor {
|
|
3510
3517
|
if (!this.allowCopy) {
|
3511
3518
|
return;
|
3512
3519
|
}
|
3513
|
-
let result = this.getElementsByRange().includes;
|
3520
|
+
let result = this.getElementsByRange(useCache).includes;
|
3514
3521
|
if (result.length == 0) {
|
3515
3522
|
return;
|
3516
3523
|
}
|
@@ -4196,35 +4203,35 @@ class AlexEditor {
|
|
4196
4203
|
if (this.disabled) {
|
4197
4204
|
return;
|
4198
4205
|
}
|
4199
|
-
if (
|
4200
|
-
const
|
4201
|
-
|
4202
|
-
|
4206
|
+
if (this.range) {
|
4207
|
+
const handler = (point) => {
|
4208
|
+
let node = null;
|
4209
|
+
let offset = null;
|
4210
|
+
if (point.element.isText()) {
|
4211
|
+
node = point.element.elm.childNodes[0];
|
4212
|
+
offset = point.offset;
|
4213
|
+
} else {
|
4214
|
+
node = point.element.parent.elm;
|
4215
|
+
const index = point.element.parent.children.findIndex((item) => {
|
4216
|
+
return point.element.isEqual(item);
|
4217
|
+
});
|
4218
|
+
offset = point.offset + index;
|
4219
|
+
}
|
4220
|
+
return { node, offset };
|
4221
|
+
};
|
4222
|
+
this.__innerSelectionChange = true;
|
4223
|
+
const anchorResult = handler(this.range.anchor);
|
4224
|
+
const focusResult = handler(this.range.focus);
|
4225
|
+
const selection = window.getSelection();
|
4226
|
+
selection.removeAllRanges();
|
4227
|
+
const range = document.createRange();
|
4228
|
+
range.setStart(anchorResult.node, anchorResult.offset);
|
4229
|
+
range.setEnd(focusResult.node, focusResult.offset);
|
4230
|
+
selection.addRange(range);
|
4231
|
+
} else {
|
4232
|
+
const selection = window.getSelection();
|
4233
|
+
selection.removeAllRanges();
|
4203
4234
|
}
|
4204
|
-
const handler = (point) => {
|
4205
|
-
let node = null;
|
4206
|
-
let offset = null;
|
4207
|
-
if (point.element.isText()) {
|
4208
|
-
node = point.element.elm.childNodes[0];
|
4209
|
-
offset = point.offset;
|
4210
|
-
} else {
|
4211
|
-
node = point.element.parent.elm;
|
4212
|
-
const index = point.element.parent.children.findIndex((item) => {
|
4213
|
-
return point.element.isEqual(item);
|
4214
|
-
});
|
4215
|
-
offset = point.offset + index;
|
4216
|
-
}
|
4217
|
-
return { node, offset };
|
4218
|
-
};
|
4219
|
-
this.__innerSelectionChange = true;
|
4220
|
-
const anchorResult = handler(this.range.anchor);
|
4221
|
-
const focusResult = handler(this.range.focus);
|
4222
|
-
const selection = window.getSelection();
|
4223
|
-
selection.removeAllRanges();
|
4224
|
-
const range = document.createRange();
|
4225
|
-
range.setStart(anchorResult.node, anchorResult.offset);
|
4226
|
-
range.setEnd(focusResult.node, focusResult.offset);
|
4227
|
-
selection.addRange(range);
|
4228
4235
|
setTimeout(() => {
|
4229
4236
|
setRangeInVisible.apply(this);
|
4230
4237
|
this.__innerSelectionChange = false;
|
@@ -16494,7 +16501,7 @@ const getMenuConfig = function(editTrans, editLocale) {
|
|
16494
16501
|
//全屏
|
16495
16502
|
fullScreen: {
|
16496
16503
|
//是否显示此工具
|
16497
|
-
show:
|
16504
|
+
show: false,
|
16498
16505
|
//左侧边框是否显示
|
16499
16506
|
leftBorder: false,
|
16500
16507
|
//右侧边框是否显示
|
@@ -20043,7 +20050,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
20043
20050
|
]);
|
20044
20051
|
}
|
20045
20052
|
const InsertTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-227ede65"]]);
|
20046
|
-
const
|
20053
|
+
const Menu_vue_vue_type_style_index_0_scoped_ad482303_lang = "";
|
20047
20054
|
const _sfc_main$1 = {
|
20048
20055
|
name: "Menu",
|
20049
20056
|
props: {
|
@@ -21066,6 +21073,9 @@ const _sfc_main$1 = {
|
|
21066
21073
|
if (this.disabled) {
|
21067
21074
|
return;
|
21068
21075
|
}
|
21076
|
+
if (!this.$parent.editor.range) {
|
21077
|
+
return;
|
21078
|
+
}
|
21069
21079
|
if (name == "undo") {
|
21070
21080
|
this.$parent.undo();
|
21071
21081
|
} else if (name == "redo") {
|
@@ -21165,6 +21175,9 @@ const _sfc_main$1 = {
|
|
21165
21175
|
if (this.disabled) {
|
21166
21176
|
return;
|
21167
21177
|
}
|
21178
|
+
if (!this.$parent.editor.range) {
|
21179
|
+
return;
|
21180
|
+
}
|
21168
21181
|
const result = this.$parent.editor.getElementsByRange(useCache).includes;
|
21169
21182
|
const hasPreStyle = this.$parent.hasPreStyle(true);
|
21170
21183
|
const hasTable = this.$parent.hasTable(true);
|
@@ -21306,8 +21319,8 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
21306
21319
|
}), 256))
|
21307
21320
|
], 14, _hoisted_1$1);
|
21308
21321
|
}
|
21309
|
-
const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-
|
21310
|
-
const
|
21322
|
+
const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-ad482303"]]);
|
21323
|
+
const Editify_vue_vue_type_style_index_0_scoped_80d8535a_lang = "";
|
21311
21324
|
const _sfc_main = {
|
21312
21325
|
name: "editify",
|
21313
21326
|
props: { ...editorProps },
|
@@ -21420,6 +21433,7 @@ const _sfc_main = {
|
|
21420
21433
|
this.editor.formatElementStack();
|
21421
21434
|
this.editor.domRender();
|
21422
21435
|
this.editor.rangeRender();
|
21436
|
+
this.$refs.content.blur();
|
21423
21437
|
},
|
21424
21438
|
//代码视图切换
|
21425
21439
|
isSourceView(newValue) {
|
@@ -21850,6 +21864,10 @@ const _sfc_main = {
|
|
21850
21864
|
if (this.disabled) {
|
21851
21865
|
return;
|
21852
21866
|
}
|
21867
|
+
this.canUseMenu = !!this.editor.range;
|
21868
|
+
if (!this.editor.range) {
|
21869
|
+
return;
|
21870
|
+
}
|
21853
21871
|
if (this.updateTimer) {
|
21854
21872
|
clearTimeout(this.updateTimer);
|
21855
21873
|
}
|
@@ -23013,7 +23031,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
23013
23031
|
], 2)) : createCommentVNode("", true)
|
23014
23032
|
], 2);
|
23015
23033
|
}
|
23016
|
-
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-
|
23034
|
+
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-80d8535a"]]);
|
23017
23035
|
const iconfont = "";
|
23018
23036
|
const en_US = {
|
23019
23037
|
textWrapUp: "Up feed",
|
@@ -23196,7 +23214,7 @@ const i18n = (locale) => {
|
|
23196
23214
|
return translations[locale][key];
|
23197
23215
|
};
|
23198
23216
|
};
|
23199
|
-
const version = "0.0.
|
23217
|
+
const version = "0.0.51";
|
23200
23218
|
const install = (app, props) => {
|
23201
23219
|
const locale = (props ? props.locale : "zh_CN") || "zh_CN";
|
23202
23220
|
app.provide("$editTrans", i18n(locale));
|