vue-editify 0.0.27 → 0.0.29

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
- #### 基于 Vue3 的 web 富文本编辑器,提供丰富的功能和精美的 UI
2
-
3
- > 具体使用方法请参阅:[editify](https://www.ling0523.cn/editify/start/)
1
+ #### 基于 Vue3 的 web 富文本编辑器,提供丰富的功能和精美的 UI
2
+
3
+ > 具体使用方法请参阅:[editify](https://www.ling0523.cn/editify/start/)
package/examples/App.vue CHANGED
@@ -1,90 +1,90 @@
1
- <template>
2
- <div style="padding: 100px 50px 50px 50px">
3
- <editify v-model="value" placeholder="请输入正文内容..." allow-paste-html border @change="change" :menu="menuConfig" ref="editify"></editify>
4
- </div>
5
- </template>
6
- <script>
7
- import { h } from 'vue'
8
- export default {
9
- name: 'App',
10
- data() {
11
- return {
12
- value: '<p><span>这是一个基于 </span><span data-editify-code="true">Vue3 + alex-editor</span><span> 构建的一套</span><span style="font-weight: bold;">精美UI样式</span><span>的</span><span style="font-weight: bold;">开箱即用</span><span>的</span><span style="color: #ec1a0a;">富文本编辑器</span></p>',
13
- menuConfig: {
14
- sequence: {
15
- alert: 100
16
- },
17
- table: {
18
- maxRows: 20,
19
- maxColumns: 20
20
- },
21
- sourceView: {
22
- show: true
23
- },
24
- extends: {
25
- alert: {
26
- title: '自定义菜单按钮',
27
- leftBorder: true,
28
- rightBorder: false,
29
- disabled: false,
30
- active: false,
31
- type: 'select',
32
- options: [
33
- {
34
- label: '自定义功能1',
35
- value: '1',
36
- style: {
37
- color: '#f30'
38
- }
39
- },
40
- {
41
- label: '自定义功能2',
42
- value: '2',
43
- style: {
44
- fontWeight: 'bold'
45
- }
46
- },
47
- {
48
- label: '自定义功能3',
49
- value: '3'
50
- }
51
- ],
52
- onOperate: function (name, val, instance) {
53
- console.log(name, val, instance)
54
- },
55
- default: () => h('span', {}, '自定义菜单')
56
- }
57
- }
58
- },
59
- btn: null
60
- }
61
- },
62
- mounted() {
63
- // setTimeout(() => {
64
- // this.value = '<p><br></p>'
65
- // }, 3000)
66
- },
67
- methods: {
68
- change() {
69
- console.log(this.$refs.editify.textValue)
70
- },
71
- operate(name, val) {
72
- console.log('触发operate事件', name, val)
73
- }
74
- }
75
- }
76
- </script>
77
- <style lang="less">
78
- html,
79
- body {
80
- height: 100%;
81
- }
82
- body {
83
- margin: 0;
84
- }
85
-
86
- #app {
87
- height: 100%;
88
- overflow: auto;
89
- }
90
- </style>
1
+ <template>
2
+ <div style="padding: 100px 50px 50px 50px">
3
+ <editify v-model="value" placeholder="请输入正文内容..." allow-paste-html border @change="change" :menu="menuConfig" ref="editify"></editify>
4
+ </div>
5
+ </template>
6
+ <script>
7
+ import { h } from 'vue'
8
+ export default {
9
+ name: 'App',
10
+ data() {
11
+ return {
12
+ value: '<p><span>这是一个基于 </span><span data-editify-code="true">Vue3 + alex-editor</span><span> 构建的一套</span><span style="font-weight: bold;">精美UI样式</span><span>的</span><span style="font-weight: bold;">开箱即用</span><span>的</span><span style="color: #ec1a0a;">富文本编辑器</span></p>',
13
+ menuConfig: {
14
+ sequence: {
15
+ alert: 100
16
+ },
17
+ table: {
18
+ maxRows: 20,
19
+ maxColumns: 20
20
+ },
21
+ sourceView: {
22
+ show: true
23
+ },
24
+ extends: {
25
+ alert: {
26
+ title: '自定义菜单按钮',
27
+ leftBorder: true,
28
+ rightBorder: false,
29
+ disabled: false,
30
+ active: false,
31
+ type: 'select',
32
+ options: [
33
+ {
34
+ label: '自定义功能1',
35
+ value: '1',
36
+ style: {
37
+ color: '#f30'
38
+ }
39
+ },
40
+ {
41
+ label: '自定义功能2',
42
+ value: '2',
43
+ style: {
44
+ fontWeight: 'bold'
45
+ }
46
+ },
47
+ {
48
+ label: '自定义功能3',
49
+ value: '3'
50
+ }
51
+ ],
52
+ onOperate: function (name, val, instance) {
53
+ console.log(name, val, instance)
54
+ },
55
+ default: () => h('span', {}, '自定义菜单')
56
+ }
57
+ }
58
+ },
59
+ btn: null
60
+ }
61
+ },
62
+ mounted() {
63
+ // setTimeout(() => {
64
+ // this.value = '<p><br></p>'
65
+ // }, 3000)
66
+ },
67
+ methods: {
68
+ change() {
69
+ console.log(this.$refs.editify.textValue)
70
+ },
71
+ operate(name, val) {
72
+ console.log('触发operate事件', name, val)
73
+ }
74
+ }
75
+ }
76
+ </script>
77
+ <style lang="less">
78
+ html,
79
+ body {
80
+ height: 100%;
81
+ }
82
+ body {
83
+ margin: 0;
84
+ }
85
+
86
+ #app {
87
+ height: 100%;
88
+ overflow: auto;
89
+ }
90
+ </style>
package/examples/main.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createApp } from 'vue'
2
- import App from './App.vue'
3
- import Editify from '../src'
4
- createApp(App).use(Editify, { locale: 'zh_CN' }).mount('#app')
1
+ import { createApp } from 'vue'
2
+ import App from './App.vue'
3
+ import Editify from '../src'
4
+ createApp(App).use(Editify, { locale: 'zh_CN' }).mount('#app')
package/lib/editify.es.js CHANGED
@@ -1916,7 +1916,7 @@ const queryHasValue = (obj$1$1, name, value) => {
1916
1916
  }
1917
1917
  return ownValue == value;
1918
1918
  };
1919
- const _AlexElement = class {
1919
+ const _AlexElement = class _AlexElement2 {
1920
1920
  constructor(type, parsedom, marks, styles, textContent) {
1921
1921
  this.key = createUniqueKey();
1922
1922
  this.type = type;
@@ -2005,7 +2005,7 @@ const _AlexElement = class {
2005
2005
  * 比较当前元素和另一个元素是否相等
2006
2006
  */
2007
2007
  isEqual(element2) {
2008
- if (!_AlexElement.isElement(element2)) {
2008
+ if (!_AlexElement2.isElement(element2)) {
2009
2009
  return false;
2010
2010
  }
2011
2011
  return this.key == element2.key;
@@ -2107,7 +2107,7 @@ const _AlexElement = class {
2107
2107
  if (typeof deep != "boolean") {
2108
2108
  throw new Error("The parameter must be a Boolean");
2109
2109
  }
2110
- let el = new _AlexElement(this.type, this.parsedom, cloneData(this.marks), cloneData(this.styles), this.textContent);
2110
+ let el = new _AlexElement2(this.type, this.parsedom, cloneData(this.marks), cloneData(this.styles), this.textContent);
2111
2111
  el.behavior = this.behavior;
2112
2112
  if (deep && this.hasChildren()) {
2113
2113
  this.children.forEach((child) => {
@@ -2131,7 +2131,7 @@ const _AlexElement = class {
2131
2131
  }
2132
2132
  let element2 = this.clone();
2133
2133
  this.type = "block";
2134
- this.parsedom = _AlexElement.BLOCK_NODE;
2134
+ this.parsedom = _AlexElement2.BLOCK_NODE;
2135
2135
  this.marks = null;
2136
2136
  this.styles = null;
2137
2137
  this.textContent = null;
@@ -2231,7 +2231,7 @@ const _AlexElement = class {
2231
2231
  __render() {
2232
2232
  let el = null;
2233
2233
  if (this.isText()) {
2234
- el = document.createElement(_AlexElement.TEXT_NODE);
2234
+ el = document.createElement(_AlexElement2.TEXT_NODE);
2235
2235
  const text2 = document.createTextNode(this.textContent);
2236
2236
  el.appendChild(text2);
2237
2237
  } else {
@@ -2262,7 +2262,7 @@ const _AlexElement = class {
2262
2262
  * 完全复制元素,包括key也复制
2263
2263
  */
2264
2264
  __fullClone() {
2265
- let el = new _AlexElement(this.type, this.parsedom, cloneData(this.marks), cloneData(this.styles), this.textContent);
2265
+ let el = new _AlexElement2(this.type, this.parsedom, cloneData(this.marks), cloneData(this.styles), this.textContent);
2266
2266
  el.behavior = this.behavior;
2267
2267
  el.key = this.key;
2268
2268
  el.elm = this.elm;
@@ -2283,7 +2283,7 @@ const _AlexElement = class {
2283
2283
  * 判断参数是否为AlexElement元素
2284
2284
  */
2285
2285
  static isElement(val) {
2286
- return val instanceof _AlexElement;
2286
+ return val instanceof _AlexElement2;
2287
2287
  }
2288
2288
  /**
2289
2289
  * 扁平化处理元素数组
@@ -2308,13 +2308,13 @@ const _AlexElement = class {
2308
2308
  * 创建一个空白文本元素并返回
2309
2309
  */
2310
2310
  static getSpaceElement() {
2311
- return new _AlexElement("text", null, null, null, "\uFEFF");
2311
+ return new _AlexElement2("text", null, null, null, "\uFEFF");
2312
2312
  }
2313
2313
  };
2314
+ __publicField(_AlexElement, "BLOCK_NODE", "p");
2315
+ __publicField(_AlexElement, "TEXT_NODE", "span");
2316
+ __publicField(_AlexElement, "VOID_NODES", ["colgroup", "col"]);
2314
2317
  let AlexElement = _AlexElement;
2315
- __publicField(AlexElement, "BLOCK_NODE", "p");
2316
- __publicField(AlexElement, "TEXT_NODE", "span");
2317
- __publicField(AlexElement, "VOID_NODES", ["colgroup", "col"]);
2318
2318
  class AlexRange {
2319
2319
  constructor(anchor, focus) {
2320
2320
  this.anchor = anchor;
@@ -2969,9 +2969,11 @@ const emptyDefaultBehaviorInblock = function(element2) {
2969
2969
  }
2970
2970
  };
2971
2971
  const setRangeInVisible = function() {
2972
- const fn = async (root2) => {
2973
- const scrollHeight = obj$1.element.getScrollHeight(root2);
2974
- if (root2.clientHeight < scrollHeight) {
2972
+ var _a;
2973
+ const fn = async (root) => {
2974
+ const scrollHeight = obj$1.element.getScrollHeight(root);
2975
+ const scrollWidth = obj$1.element.getScrollWidth(root);
2976
+ if (root.clientHeight < scrollHeight || root.clientWidth < scrollWidth) {
2975
2977
  const selection = window.getSelection();
2976
2978
  if (selection.rangeCount == 0) {
2977
2979
  return;
@@ -2983,36 +2985,65 @@ const setRangeInVisible = function() {
2983
2985
  target = this.range.focus.element.elm;
2984
2986
  }
2985
2987
  const childRect = target.getBoundingClientRect();
2986
- const parentRect = root2.getBoundingClientRect();
2987
- if (childRect.top < parentRect.top) {
2988
- await obj$1.element.setScrollTop({
2989
- el: root2,
2990
- number: 0
2991
- });
2992
- const tempChildRect = target.getBoundingClientRect();
2993
- const tempParentRect = root2.getBoundingClientRect();
2994
- obj$1.element.setScrollTop({
2995
- el: root2,
2996
- number: tempChildRect.top - tempParentRect.top - tempChildRect.height * 2
2997
- });
2998
- } else if (childRect.bottom > parentRect.bottom) {
2999
- await obj$1.element.setScrollTop({
3000
- el: root2,
3001
- number: 0
3002
- });
3003
- const tempChildRect = target.getBoundingClientRect();
3004
- const tempParentRect = root2.getBoundingClientRect();
3005
- obj$1.element.setScrollTop({
3006
- el: root2,
3007
- number: tempChildRect.bottom - tempParentRect.bottom + tempChildRect.height * 2
3008
- });
2988
+ const parentRect = root.getBoundingClientRect();
2989
+ if (root.clientHeight < scrollHeight) {
2990
+ if (childRect.top < parentRect.top) {
2991
+ await obj$1.element.setScrollTop({
2992
+ el: root,
2993
+ number: 0
2994
+ });
2995
+ const tempChildRect = target.getBoundingClientRect();
2996
+ const tempParentRect = root.getBoundingClientRect();
2997
+ obj$1.element.setScrollTop({
2998
+ el: root,
2999
+ number: tempChildRect.top - tempParentRect.top - tempChildRect.height * 2
3000
+ });
3001
+ } else if (childRect.bottom > parentRect.bottom) {
3002
+ await obj$1.element.setScrollTop({
3003
+ el: root,
3004
+ number: 0
3005
+ });
3006
+ const tempChildRect = target.getBoundingClientRect();
3007
+ const tempParentRect = root.getBoundingClientRect();
3008
+ obj$1.element.setScrollTop({
3009
+ el: root,
3010
+ number: tempChildRect.bottom - tempParentRect.bottom + tempChildRect.height * 2
3011
+ });
3012
+ }
3013
+ }
3014
+ if (root.clientWidth < scrollWidth) {
3015
+ if (childRect.left < parentRect.left) {
3016
+ await obj$1.element.setScrollLeft({
3017
+ el: root,
3018
+ number: 0
3019
+ });
3020
+ const tempChildRect = target.getBoundingClientRect();
3021
+ const tempParentRect = root.getBoundingClientRect();
3022
+ obj$1.element.setScrollLeft({
3023
+ el: root,
3024
+ number: tempChildRect.left - tempParentRect.left - tempChildRect.width * 2 - (tempChildRect.width * 2 > 20 ? 0 : 20)
3025
+ });
3026
+ } else if (childRect.right > parentRect.right) {
3027
+ await obj$1.element.setScrollLeft({
3028
+ el: root,
3029
+ number: 0
3030
+ });
3031
+ const tempChildRect = target.getBoundingClientRect();
3032
+ const tempParentRect = root.getBoundingClientRect();
3033
+ obj$1.element.setScrollLeft({
3034
+ el: root,
3035
+ number: tempChildRect.right - tempParentRect.right + tempChildRect.width * 2 + (tempChildRect.width * 2 > 20 ? 0 : 20)
3036
+ });
3037
+ }
3009
3038
  }
3010
3039
  }
3011
3040
  };
3012
- let root = this.$el;
3013
- while (obj$1.element.isElement(root) && root != document.documentElement) {
3014
- fn(root);
3015
- root = root.parentNode;
3041
+ if ((_a = this.range) == null ? void 0 : _a.focus.element.elm) {
3042
+ let root = this.range.focus.element.elm;
3043
+ while (obj$1.element.isElement(root) && root != document.documentElement) {
3044
+ fn(root);
3045
+ root = root.parentNode;
3046
+ }
3016
3047
  }
3017
3048
  };
3018
3049
  const handleStackEmpty = function() {
@@ -3089,6 +3120,7 @@ const handleSelectionChange = function() {
3089
3120
  } else {
3090
3121
  this.range = new AlexRange(anchor, focus);
3091
3122
  }
3123
+ this.history.updateCurrentRange(this.range);
3092
3124
  this.emit("rangeUpdate", this.range);
3093
3125
  }
3094
3126
  }
@@ -4124,6 +4156,7 @@ class AlexEditor {
4124
4156
  setTimeout(() => {
4125
4157
  setRangeInVisible.apply(this);
4126
4158
  this.__innerSelectionChange = false;
4159
+ this.history.updateCurrentRange(this.range);
4127
4160
  this.emit("rangeUpdate", this.range);
4128
4161
  }, 0);
4129
4162
  }
@@ -16419,7 +16452,7 @@ const getMenuConfig = function(editTrans, editLocale) {
16419
16452
  extends: {}
16420
16453
  };
16421
16454
  };
16422
- const Triangle_vue_vue_type_style_index_0_scoped_c7bb62b7_lang = "";
16455
+ const Triangle_vue_vue_type_style_index_0_scoped_70b6f344_lang = "";
16423
16456
  const _export_sfc = (sfc, props) => {
16424
16457
  const target = sfc.__vccOpts || sfc;
16425
16458
  for (const [key, val] of props) {
@@ -16509,8 +16542,8 @@ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
16509
16542
  }, null, 4)
16510
16543
  ], 12, _hoisted_1$c);
16511
16544
  }
16512
- const Triangle = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d], ["__scopeId", "data-v-c7bb62b7"]]);
16513
- const Layer_vue_vue_type_style_index_0_scoped_78f5589a_lang = "";
16545
+ const Triangle = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d], ["__scopeId", "data-v-70b6f344"]]);
16546
+ const Layer_vue_vue_type_style_index_0_scoped_503cf323_lang = "";
16514
16547
  const _sfc_main$c = {
16515
16548
  name: "Layer",
16516
16549
  emits: ["update:modelValue", "show", "shown", "hidden"],
@@ -17139,8 +17172,8 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
17139
17172
  _: 3
17140
17173
  }, 8, ["name", "onEnter", "onAfterEnter", "onAfterLeave"]);
17141
17174
  }
17142
- const Layer = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c], ["__scopeId", "data-v-78f5589a"]]);
17143
- const Tooltip_vue_vue_type_style_index_0_scoped_3b8ba3fe_lang = "";
17175
+ const Layer = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c], ["__scopeId", "data-v-503cf323"]]);
17176
+ const Tooltip_vue_vue_type_style_index_0_scoped_5293a020_lang = "";
17144
17177
  const _sfc_main$b = {
17145
17178
  name: "Tooltip",
17146
17179
  props: {
@@ -17219,8 +17252,8 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
17219
17252
  }, 8, ["modelValue", "node"])
17220
17253
  ], 34);
17221
17254
  }
17222
- const Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b], ["__scopeId", "data-v-3b8ba3fe"]]);
17223
- const Icon_vue_vue_type_style_index_0_scoped_c5a1759c_lang = "";
17255
+ const Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b], ["__scopeId", "data-v-5293a020"]]);
17256
+ const Icon_vue_vue_type_style_index_0_scoped_5ed6cd4d_lang = "";
17224
17257
  const _sfc_main$a = {
17225
17258
  name: "Icon",
17226
17259
  props: {
@@ -17236,8 +17269,8 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
17236
17269
  class: normalizeClass(["editify-icon", "editify-icon-" + $props.value])
17237
17270
  }, null, 2);
17238
17271
  }
17239
- const Icon = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a], ["__scopeId", "data-v-c5a1759c"]]);
17240
- const Button_vue_vue_type_style_index_0_scoped_20160dd8_lang = "";
17272
+ const Icon = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a], ["__scopeId", "data-v-5ed6cd4d"]]);
17273
+ const Button_vue_vue_type_style_index_0_scoped_f88c4b88_lang = "";
17241
17274
  const _sfc_main$9 = {
17242
17275
  name: "Button",
17243
17276
  emits: ["operate", "layerShow", "layerShown", "layerHidden"],
@@ -17601,8 +17634,8 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
17601
17634
  ], 2)
17602
17635
  ]);
17603
17636
  }
17604
- const Button = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9], ["__scopeId", "data-v-20160dd8"]]);
17605
- const Checkbox_vue_vue_type_style_index_0_scoped_37d04875_lang = "";
17637
+ const Button = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9], ["__scopeId", "data-v-f88c4b88"]]);
17638
+ const Checkbox_vue_vue_type_style_index_0_scoped_50cd9e6c_lang = "";
17606
17639
  const _sfc_main$8 = {
17607
17640
  name: "Checkbox",
17608
17641
  emits: ["update:modelValue", "change"],
@@ -17731,8 +17764,8 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
17731
17764
  }, null, 8, _hoisted_3$7)) : createCommentVNode("", true)
17732
17765
  ], 2);
17733
17766
  }
17734
- const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__scopeId", "data-v-37d04875"]]);
17735
- const Colors_vue_vue_type_style_index_0_scoped_efd4da01_lang = "";
17767
+ const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__scopeId", "data-v-50cd9e6c"]]);
17768
+ const Colors_vue_vue_type_style_index_0_scoped_dc6d3d68_lang = "";
17736
17769
  const _sfc_main$7 = {
17737
17770
  name: "Colors",
17738
17771
  emits: ["change"],
@@ -17814,8 +17847,8 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
17814
17847
  ])
17815
17848
  ]);
17816
17849
  }
17817
- const Colors = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__scopeId", "data-v-efd4da01"]]);
17818
- const Toolbar_vue_vue_type_style_index_0_scoped_6a227831_lang = "";
17850
+ const Colors = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__scopeId", "data-v-dc6d3d68"]]);
17851
+ const Toolbar_vue_vue_type_style_index_0_scoped_6b9cdbc6_lang = "";
17819
17852
  const _sfc_main$6 = {
17820
17853
  name: "Toolbar",
17821
17854
  emits: ["update:modelValue"],
@@ -19286,8 +19319,8 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
19286
19319
  _: 1
19287
19320
  }, 8, ["modelValue", "node", "onShow", "useRange"]);
19288
19321
  }
19289
- const Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-6a227831"]]);
19290
- const InsertLink_vue_vue_type_style_index_0_scoped_abb39368_lang = "";
19322
+ const Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-6b9cdbc6"]]);
19323
+ const InsertLink_vue_vue_type_style_index_0_scoped_e6c3c2ee_lang = "";
19291
19324
  const _sfc_main$5 = {
19292
19325
  name: "InsertLink",
19293
19326
  emits: ["insert"],
@@ -19397,8 +19430,8 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
19397
19430
  ])
19398
19431
  ]);
19399
19432
  }
19400
- const InsertLink = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-abb39368"]]);
19401
- const InsertImage_vue_vue_type_style_index_0_scoped_69363d50_lang = "";
19433
+ const InsertLink = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-e6c3c2ee"]]);
19434
+ const InsertImage_vue_vue_type_style_index_0_scoped_d4e3209e_lang = "";
19402
19435
  const _sfc_main$4 = {
19403
19436
  name: "InsertImage",
19404
19437
  emits: ["change", "insert"],
@@ -19608,8 +19641,8 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
19608
19641
  ]))
19609
19642
  ]);
19610
19643
  }
19611
- const InsertImage = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-69363d50"]]);
19612
- const InsertVideo_vue_vue_type_style_index_0_scoped_249f2a7e_lang = "";
19644
+ const InsertImage = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-d4e3209e"]]);
19645
+ const InsertVideo_vue_vue_type_style_index_0_scoped_cbc84525_lang = "";
19613
19646
  const _sfc_main$3 = {
19614
19647
  name: "InsertVideo",
19615
19648
  emits: ["change", "insert"],
@@ -19819,8 +19852,8 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
19819
19852
  ]))
19820
19853
  ]);
19821
19854
  }
19822
- const InsertVideo = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-249f2a7e"]]);
19823
- const InsertTable_vue_vue_type_style_index_0_scoped_1b7b51c8_lang = "";
19855
+ const InsertVideo = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-cbc84525"]]);
19856
+ const InsertTable_vue_vue_type_style_index_0_scoped_227ede65_lang = "";
19824
19857
  const _sfc_main$2 = {
19825
19858
  name: "InsertTable",
19826
19859
  emits: ["insert"],
@@ -19903,7 +19936,7 @@ const _sfc_main$2 = {
19903
19936
  }
19904
19937
  }
19905
19938
  };
19906
- const _withScopeId = (n) => (pushScopeId("data-v-1b7b51c8"), n = n(), popScopeId(), n);
19939
+ const _withScopeId = (n) => (pushScopeId("data-v-227ede65"), n = n(), popScopeId(), n);
19907
19940
  const _hoisted_1$2 = { class: "editify-table" };
19908
19941
  const _hoisted_2$1 = ["onMouseenter", "onClick"];
19909
19942
  const _hoisted_3$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", null, null, -1));
@@ -19933,8 +19966,8 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
19933
19966
  ])
19934
19967
  ]);
19935
19968
  }
19936
- const InsertTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-1b7b51c8"]]);
19937
- const Menu_vue_vue_type_style_index_0_scoped_9c105635_lang = "";
19969
+ const InsertTable = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-227ede65"]]);
19970
+ const Menu_vue_vue_type_style_index_0_scoped_3fc2d533_lang = "";
19938
19971
  const _sfc_main$1 = {
19939
19972
  name: "Menu",
19940
19973
  props: {
@@ -21152,8 +21185,8 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
21152
21185
  }), 256))
21153
21186
  ], 14, _hoisted_1$1);
21154
21187
  }
21155
- const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-9c105635"]]);
21156
- const Editify_vue_vue_type_style_index_0_scoped_c1e25ea0_lang = "";
21188
+ const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-3fc2d533"]]);
21189
+ const Editify_vue_vue_type_style_index_0_scoped_e9c5b94e_lang = "";
21157
21190
  const _sfc_main = {
21158
21191
  name: "editify",
21159
21192
  props: { ...editorProps },
@@ -22750,7 +22783,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
22750
22783
  ])) : createCommentVNode("", true)
22751
22784
  ]);
22752
22785
  }
22753
- const Editify = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-c1e25ea0"]]);
22786
+ const Editify = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-e9c5b94e"]]);
22754
22787
  const iconfont = "";
22755
22788
  const en_US = {
22756
22789
  textWrapUp: "Up feed",
@@ -22929,7 +22962,7 @@ const i18n = (locale) => {
22929
22962
  return translations[locale][key];
22930
22963
  };
22931
22964
  };
22932
- const version = "0.0.27";
22965
+ const version = "0.0.29";
22933
22966
  const install = (app, props) => {
22934
22967
  const locale = (props ? props.locale : "zh_CN") || "zh_CN";
22935
22968
  app.provide("$editTrans", i18n(locale));