vue-editify 0.0.50 → 0.0.51
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 +5557 -1
- package/lib/editify.es.js +57 -39
- 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/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;
|
@@ -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));
|