vue-editify 0.1.22 → 0.1.24
Sign up to get free protection for your applications and to get access to all the features.
- package/examples/App.vue +8 -2
- package/lib/components/button/button.vue.d.ts +3 -3
- package/lib/components/button/props.d.ts +1 -1
- package/lib/components/checkbox/checkbox.vue.d.ts +3 -3
- package/lib/components/checkbox/props.d.ts +1 -1
- package/lib/components/colors/colors.vue.d.ts +3 -3
- package/lib/components/colors/props.d.ts +1 -1
- package/lib/components/insertImage/insertImage.vue.d.ts +6 -6
- package/lib/components/insertImage/props.d.ts +2 -2
- package/lib/components/insertLink/insertLink.vue.d.ts +3 -3
- package/lib/components/insertLink/props.d.ts +2 -2
- package/lib/components/insertTable/insertTable.vue.d.ts +3 -3
- package/lib/components/insertTable/props.d.ts +2 -2
- package/lib/components/insertVideo/insertVideo.vue.d.ts +6 -6
- package/lib/components/insertVideo/props.d.ts +2 -2
- package/lib/components/menu/menu.vue.d.ts +3 -3
- package/lib/components/menu/props.d.ts +1 -1
- package/lib/components/toolbar/props.d.ts +1 -1
- package/lib/components/toolbar/toolbar.vue.d.ts +3 -3
- package/lib/core/rule.d.ts +1 -1
- package/lib/core/tool.d.ts +19 -9
- package/lib/editify/editify.vue.d.ts +12 -3
- package/lib/editify/props.d.ts +6 -2
- package/lib/editify.es.js +577 -182
- package/lib/editify.umd.js +1 -1
- package/lib/index.d.ts +7 -4
- package/lib/plugins/attachment/index.d.ts +17 -0
- package/lib/plugins/attachment/insertAttachment/insertAttachment.vue.d.ts +83 -0
- package/lib/plugins/attachment/insertAttachment/props.d.ts +38 -0
- package/lib/style.css +1 -1
- package/package.json +1 -1
- package/src/components/button/button.vue +4 -1
- package/src/components/button/props.ts +1 -1
- package/src/components/checkbox/props.ts +1 -1
- package/src/components/colors/colors.vue +1 -1
- package/src/components/colors/props.ts +1 -1
- package/src/components/insertImage/insertImage.vue +12 -10
- package/src/components/insertImage/props.ts +2 -2
- package/src/components/insertLink/insertLink.vue +1 -1
- package/src/components/insertLink/props.ts +2 -2
- package/src/components/insertTable/props.ts +2 -2
- package/src/components/insertVideo/insertVideo.vue +12 -10
- package/src/components/insertVideo/props.ts +2 -2
- package/src/components/menu/menu.vue +28 -13
- package/src/components/menu/props.ts +1 -1
- package/src/components/toolbar/props.ts +1 -1
- package/src/components/toolbar/toolbar.vue +3 -4
- package/src/core/function.ts +5 -5
- package/src/core/rule.ts +1 -1
- package/src/core/tool.ts +24 -11
- package/src/editify/editify.less +27 -0
- package/src/editify/editify.vue +54 -10
- package/src/editify/props.ts +9 -2
- package/src/icon/iconfont.css +4 -0
- package/src/icon/iconfont.ttf +0 -0
- package/src/icon/iconfont.woff +0 -0
- package/src/index.ts +13 -8
- package/src/locale/en_US.ts +9 -1
- package/src/locale/zh_CN.ts +9 -1
- package/src/plugins/attachment/images/attachment.png +0 -0
- package/src/plugins/attachment/index.ts +123 -0
- package/src/plugins/attachment/insertAttachment/insertAttachment.less +135 -0
- package/src/plugins/attachment/insertAttachment/insertAttachment.vue +189 -0
- package/src/plugins/attachment/insertAttachment/props.ts +48 -0
package/lib/editify.es.js
CHANGED
@@ -18679,7 +18679,7 @@ const getMenuConfig = function(editTrans, editLocale) {
|
|
18679
18679
|
//右侧边框是否显示
|
18680
18680
|
rightBorder: false,
|
18681
18681
|
//图片支持上传的类型,不区分大小写
|
18682
|
-
|
18682
|
+
allowedFileType: ["jpg", "png", "jpeg", "webp", "jfif", "ico", "gif", "svg", "psd"],
|
18683
18683
|
//是否多选图片
|
18684
18684
|
multiple: false,
|
18685
18685
|
//单张图片的最大值,单位kb
|
@@ -18700,7 +18700,7 @@ const getMenuConfig = function(editTrans, editLocale) {
|
|
18700
18700
|
//右侧边框是否显示
|
18701
18701
|
rightBorder: false,
|
18702
18702
|
//视频支持上传的类型,不区分大小写
|
18703
|
-
|
18703
|
+
allowedFileType: ["mp4", "avi", "mpg", "wmv", "mov", "rm", "swf", "flv"],
|
18704
18704
|
//是否多选视频
|
18705
18705
|
multiple: false,
|
18706
18706
|
//单个视频的的最大值,单位kb
|
@@ -18814,13 +18814,13 @@ const elementIsInTask = (element2) => {
|
|
18814
18814
|
}
|
18815
18815
|
return false;
|
18816
18816
|
};
|
18817
|
-
const isList =
|
18817
|
+
const isList = (element2, ordered = false) => {
|
18818
18818
|
if (element2.isEmpty()) {
|
18819
18819
|
return false;
|
18820
18820
|
}
|
18821
18821
|
return element2.parsedom == "div" && element2.hasMarks() && element2.marks["data-editify-list"] == (ordered ? "ol" : "ul");
|
18822
18822
|
};
|
18823
|
-
const isTask =
|
18823
|
+
const isTask = (element2) => {
|
18824
18824
|
if (element2.isEmpty()) {
|
18825
18825
|
return false;
|
18826
18826
|
}
|
@@ -19066,12 +19066,12 @@ const getFlatElementsByRange = (editor, dataRangeCaches) => {
|
|
19066
19066
|
}
|
19067
19067
|
return elements;
|
19068
19068
|
};
|
19069
|
-
const elementToParagraph =
|
19069
|
+
const elementToParagraph = (element2) => {
|
19070
19070
|
element2.marks = null;
|
19071
19071
|
element2.styles = null;
|
19072
19072
|
element2.parsedom = AlexElement.BLOCK_NODE;
|
19073
19073
|
};
|
19074
|
-
const elementToList =
|
19074
|
+
const elementToList = (element2, ordered = false) => {
|
19075
19075
|
if (isList(element2, ordered)) {
|
19076
19076
|
return;
|
19077
19077
|
}
|
@@ -19082,7 +19082,7 @@ const elementToList = function(element2, ordered = false) {
|
|
19082
19082
|
}
|
19083
19083
|
element2.marks["data-editify-list"] = ordered ? "ol" : "ul";
|
19084
19084
|
};
|
19085
|
-
const elementToTask =
|
19085
|
+
const elementToTask = (element2) => {
|
19086
19086
|
if (isTask(element2)) {
|
19087
19087
|
return;
|
19088
19088
|
}
|
@@ -19933,8 +19933,8 @@ const TriangleProps = {
|
|
19933
19933
|
default: null
|
19934
19934
|
}
|
19935
19935
|
};
|
19936
|
-
const _hoisted_1$
|
19937
|
-
const _sfc_main$
|
19936
|
+
const _hoisted_1$d = ["data-editify-placement"];
|
19937
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
19938
19938
|
...{
|
19939
19939
|
name: "Triangle"
|
19940
19940
|
},
|
@@ -19998,7 +19998,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
19998
19998
|
class: "editify-triangle-el",
|
19999
19999
|
style: normalizeStyle(elStyle.value)
|
20000
20000
|
}, null, 4)
|
20001
|
-
], 12, _hoisted_1$
|
20001
|
+
], 12, _hoisted_1$d);
|
20002
20002
|
};
|
20003
20003
|
}
|
20004
20004
|
});
|
@@ -20009,7 +20009,7 @@ const _export_sfc = (sfc, props) => {
|
|
20009
20009
|
}
|
20010
20010
|
return target;
|
20011
20011
|
};
|
20012
|
-
const Triangle = /* @__PURE__ */ _export_sfc(_sfc_main$
|
20012
|
+
const Triangle = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-e1abc967"]]);
|
20013
20013
|
const LayerProps = {
|
20014
20014
|
//是否显示
|
20015
20015
|
modelValue: {
|
@@ -20073,8 +20073,8 @@ const LayerProps = {
|
|
20073
20073
|
default: false
|
20074
20074
|
}
|
20075
20075
|
};
|
20076
|
-
const _hoisted_1$
|
20077
|
-
const _sfc_main$
|
20076
|
+
const _hoisted_1$c = ["data-editify-placement"];
|
20077
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
20078
20078
|
...{
|
20079
20079
|
name: "Layer"
|
20080
20080
|
},
|
@@ -20618,14 +20618,14 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
20618
20618
|
}, [
|
20619
20619
|
renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
20620
20620
|
], 6)
|
20621
|
-
], 12, _hoisted_1$
|
20621
|
+
], 12, _hoisted_1$c)) : createCommentVNode("", true)
|
20622
20622
|
]),
|
20623
20623
|
_: 3
|
20624
20624
|
}, 8, ["name"]);
|
20625
20625
|
};
|
20626
20626
|
}
|
20627
20627
|
});
|
20628
|
-
const Layer = /* @__PURE__ */ _export_sfc(_sfc_main$
|
20628
|
+
const Layer = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-09578d83"]]);
|
20629
20629
|
const TooltipProps = {
|
20630
20630
|
//提示内容
|
20631
20631
|
content: {
|
@@ -20643,8 +20643,8 @@ const TooltipProps = {
|
|
20643
20643
|
default: false
|
20644
20644
|
}
|
20645
20645
|
};
|
20646
|
-
const _hoisted_1$
|
20647
|
-
const _sfc_main$
|
20646
|
+
const _hoisted_1$b = { class: "editify-tooltip-content" };
|
20647
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
20648
20648
|
...{
|
20649
20649
|
name: "Tooltip"
|
20650
20650
|
},
|
@@ -20693,7 +20693,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
20693
20693
|
"z-index": 10
|
20694
20694
|
}, {
|
20695
20695
|
default: withCtx(() => [
|
20696
|
-
createElementVNode("div", _hoisted_1$
|
20696
|
+
createElementVNode("div", _hoisted_1$b, toDisplayString(_ctx.content), 1)
|
20697
20697
|
]),
|
20698
20698
|
_: 1
|
20699
20699
|
}, 8, ["modelValue", "node"])
|
@@ -20701,7 +20701,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
20701
20701
|
};
|
20702
20702
|
}
|
20703
20703
|
});
|
20704
|
-
const Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$
|
20704
|
+
const Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-7b5e30d1"]]);
|
20705
20705
|
const IconProps = {
|
20706
20706
|
//图标值
|
20707
20707
|
value: {
|
@@ -20709,7 +20709,7 @@ const IconProps = {
|
|
20709
20709
|
default: ""
|
20710
20710
|
}
|
20711
20711
|
};
|
20712
|
-
const _sfc_main$
|
20712
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
20713
20713
|
...{
|
20714
20714
|
name: "Icon"
|
20715
20715
|
},
|
@@ -20723,7 +20723,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
20723
20723
|
};
|
20724
20724
|
}
|
20725
20725
|
});
|
20726
|
-
const Icon = /* @__PURE__ */ _export_sfc(_sfc_main$
|
20726
|
+
const Icon = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-6e00035b"]]);
|
20727
20727
|
const ButtonProps = {
|
20728
20728
|
//按钮类型
|
20729
20729
|
type: {
|
@@ -20789,22 +20789,22 @@ const ButtonProps = {
|
|
20789
20789
|
default: false
|
20790
20790
|
}
|
20791
20791
|
};
|
20792
|
-
const _hoisted_1$
|
20793
|
-
const _hoisted_2$
|
20792
|
+
const _hoisted_1$a = { class: "editify-button" };
|
20793
|
+
const _hoisted_2$9 = {
|
20794
20794
|
key: 0,
|
20795
20795
|
class: "editify-button-slot"
|
20796
20796
|
};
|
20797
|
-
const _hoisted_3$
|
20798
|
-
const _hoisted_4$
|
20797
|
+
const _hoisted_3$9 = { key: 1 };
|
20798
|
+
const _hoisted_4$7 = {
|
20799
20799
|
key: 1,
|
20800
20800
|
class: "editify-button-options"
|
20801
20801
|
};
|
20802
|
-
const _hoisted_5$
|
20803
|
-
const _hoisted_6$
|
20802
|
+
const _hoisted_5$6 = ["onClick"];
|
20803
|
+
const _hoisted_6$6 = {
|
20804
20804
|
key: 1,
|
20805
20805
|
class: "editify-button-option-flex"
|
20806
20806
|
};
|
20807
|
-
const _sfc_main$
|
20807
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
20808
20808
|
...{
|
20809
20809
|
name: "Button"
|
20810
20810
|
},
|
@@ -20907,7 +20907,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
20907
20907
|
return val ? val.label : "";
|
20908
20908
|
});
|
20909
20909
|
const parseColor = computed(() => {
|
20910
|
-
|
20910
|
+
if (props.color) {
|
20911
|
+
return color.hex2rgb(props.color);
|
20912
|
+
}
|
20913
|
+
return [];
|
20911
20914
|
});
|
20912
20915
|
const btnStyle = computed(() => {
|
20913
20916
|
if (props.disabled) {
|
@@ -20951,7 +20954,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
20951
20954
|
status
|
20952
20955
|
});
|
20953
20956
|
return (_ctx, _cache) => {
|
20954
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
20957
|
+
return openBlock(), createElementBlock("div", _hoisted_1$a, [
|
20955
20958
|
createElementVNode("div", {
|
20956
20959
|
class: normalizeClass(["editify-button-wrap", { "editify-right-border": _ctx.rightBorder, "editify-left-border": _ctx.leftBorder }])
|
20957
20960
|
}, [
|
@@ -20971,9 +20974,9 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
20971
20974
|
onMouseup: _cache[3] || (_cache[3] = ($event) => status.value = "hover"),
|
20972
20975
|
onClick: handleClick
|
20973
20976
|
}, [
|
20974
|
-
_ctx.type == "default" || _ctx.type == "select" ? (openBlock(), createElementBlock("div", _hoisted_2$
|
20977
|
+
_ctx.type == "default" || _ctx.type == "select" ? (openBlock(), createElementBlock("div", _hoisted_2$9, [
|
20975
20978
|
renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
20976
|
-
])) : _ctx.type == "display" ? (openBlock(), createElementBlock("div", _hoisted_3$
|
20979
|
+
])) : _ctx.type == "display" ? (openBlock(), createElementBlock("div", _hoisted_3$9, toDisplayString(displayLabel.value), 1)) : createCommentVNode("", true),
|
20977
20980
|
_ctx.type == "select" || _ctx.type == "display" ? (openBlock(), createBlock(Icon, {
|
20978
20981
|
key: 2,
|
20979
20982
|
value: "caret-down",
|
@@ -21006,7 +21009,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
21006
21009
|
_ctx.$slots.layer ? renderSlot(_ctx.$slots, "layer", {
|
21007
21010
|
key: 0,
|
21008
21011
|
options: cmpOptions.value
|
21009
|
-
}, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_4$
|
21012
|
+
}, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_4$7, [
|
21010
21013
|
(openBlock(true), createElementBlock(Fragment, null, renderList(cmpOptions.value, (item) => {
|
21011
21014
|
return openBlock(), createElementBlock("div", {
|
21012
21015
|
onClick: ($event) => select(item),
|
@@ -21016,14 +21019,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
21016
21019
|
_ctx.$slots.option ? renderSlot(_ctx.$slots, "option", {
|
21017
21020
|
key: 0,
|
21018
21021
|
item
|
21019
|
-
}, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_6$
|
21022
|
+
}, void 0, true) : (openBlock(), createElementBlock("div", _hoisted_6$6, [
|
21020
21023
|
item.icon ? (openBlock(), createBlock(Icon, {
|
21021
21024
|
key: 0,
|
21022
21025
|
value: item.icon
|
21023
21026
|
}, null, 8, ["value"])) : createCommentVNode("", true),
|
21024
21027
|
createElementVNode("span", null, toDisplayString(item.label), 1)
|
21025
21028
|
]))
|
21026
|
-
], 14, _hoisted_5$
|
21029
|
+
], 14, _hoisted_5$6);
|
21027
21030
|
}), 256))
|
21028
21031
|
]))
|
21029
21032
|
], 4)
|
@@ -21035,7 +21038,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
21035
21038
|
};
|
21036
21039
|
}
|
21037
21040
|
});
|
21038
|
-
const Button = /* @__PURE__ */ _export_sfc(_sfc_main$
|
21041
|
+
const Button = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-14398008"]]);
|
21039
21042
|
const CheckboxProps = {
|
21040
21043
|
//是否禁用
|
21041
21044
|
disabled: {
|
@@ -21079,10 +21082,10 @@ const CheckboxProps = {
|
|
21079
21082
|
}
|
21080
21083
|
}
|
21081
21084
|
};
|
21082
|
-
const _hoisted_1$
|
21083
|
-
const _hoisted_2$
|
21084
|
-
const _hoisted_3$
|
21085
|
-
const _sfc_main$
|
21085
|
+
const _hoisted_1$9 = ["data-editify-placement", "textContent"];
|
21086
|
+
const _hoisted_2$8 = ["value", "disabled", "checked"];
|
21087
|
+
const _hoisted_3$8 = ["data-editify-placement", "textContent"];
|
21088
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
21086
21089
|
...{
|
21087
21090
|
name: "Checkbox"
|
21088
21091
|
},
|
@@ -21137,14 +21140,14 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
21137
21140
|
class: "editify-checkbox-label",
|
21138
21141
|
"data-editify-placement": _ctx.placement,
|
21139
21142
|
textContent: toDisplayString(_ctx.label)
|
21140
|
-
}, null, 8, _hoisted_1$
|
21143
|
+
}, null, 8, _hoisted_1$9)) : createCommentVNode("", true),
|
21141
21144
|
createElementVNode("input", {
|
21142
21145
|
onChange: change,
|
21143
21146
|
value: _ctx.value,
|
21144
21147
|
disabled: _ctx.disabled,
|
21145
21148
|
checked: check.value,
|
21146
21149
|
type: "checkbox"
|
21147
|
-
}, null, 40, _hoisted_2$
|
21150
|
+
}, null, 40, _hoisted_2$8),
|
21148
21151
|
createElementVNode("span", {
|
21149
21152
|
class: normalizeClass(["editify-checkbox-item", { "editify-reverse": !_ctx.color, "editify-round": _ctx.round, "editify-checked": check.value && !_ctx.disabled }]),
|
21150
21153
|
style: normalizeStyle(itemStyle.value)
|
@@ -21159,12 +21162,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
21159
21162
|
class: "editify-checkbox-label",
|
21160
21163
|
"data-editify-placement": _ctx.placement,
|
21161
21164
|
textContent: toDisplayString(_ctx.label)
|
21162
|
-
}, null, 8, _hoisted_3$
|
21165
|
+
}, null, 8, _hoisted_3$8)) : createCommentVNode("", true)
|
21163
21166
|
], 2);
|
21164
21167
|
};
|
21165
21168
|
}
|
21166
21169
|
});
|
21167
|
-
const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$
|
21170
|
+
const Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-d99c609b"]]);
|
21168
21171
|
const ColorsProps = {
|
21169
21172
|
//颜色数组
|
21170
21173
|
data: {
|
@@ -21189,10 +21192,10 @@ const ColorsProps = {
|
|
21189
21192
|
default: false
|
21190
21193
|
}
|
21191
21194
|
};
|
21192
|
-
const _hoisted_1$
|
21193
|
-
const _hoisted_2$
|
21194
|
-
const _hoisted_3$
|
21195
|
-
const _sfc_main$
|
21195
|
+
const _hoisted_1$8 = { class: "editify-colors" };
|
21196
|
+
const _hoisted_2$7 = { class: "editify-colors-list" };
|
21197
|
+
const _hoisted_3$7 = ["onClick"];
|
21198
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
21196
21199
|
...{
|
21197
21200
|
name: "Colors"
|
21198
21201
|
},
|
@@ -21206,7 +21209,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
21206
21209
|
emits("change", item.value);
|
21207
21210
|
};
|
21208
21211
|
return (_ctx, _cache) => {
|
21209
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
21212
|
+
return openBlock(), createElementBlock("div", _hoisted_1$8, [
|
21210
21213
|
createElementVNode("div", {
|
21211
21214
|
class: "editify-colors-header",
|
21212
21215
|
onClick: _cache[0] || (_cache[0] = ($event) => selectColor({ value: "" }))
|
@@ -21214,11 +21217,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
21214
21217
|
createVNode(Icon, { value: "remove" }),
|
21215
21218
|
createElementVNode("span", null, toDisplayString(unref($editTrans)("defaultColor")), 1)
|
21216
21219
|
]),
|
21217
|
-
createElementVNode("div", _hoisted_2$
|
21220
|
+
createElementVNode("div", _hoisted_2$7, [
|
21218
21221
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (item) => {
|
21219
21222
|
return openBlock(), createElementBlock("div", {
|
21220
21223
|
class: normalizeClass(["editify-color", { "editify-active": _ctx.value == item.value }]),
|
21221
|
-
style: normalizeStyle({ borderColor: _ctx.value == item.value ? _ctx.color : "" })
|
21224
|
+
style: normalizeStyle({ borderColor: _ctx.value == item.value ? _ctx.color || "" : "" })
|
21222
21225
|
}, [
|
21223
21226
|
createVNode(Tooltip, {
|
21224
21227
|
block: "",
|
@@ -21230,7 +21233,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
21230
21233
|
onClick: ($event) => selectColor(item),
|
21231
21234
|
class: "editify-color-el",
|
21232
21235
|
style: normalizeStyle({ background: item.value })
|
21233
|
-
}, null, 12, _hoisted_3$
|
21236
|
+
}, null, 12, _hoisted_3$7)
|
21234
21237
|
]),
|
21235
21238
|
_: 2
|
21236
21239
|
}, 1032, ["content", "disabled"])
|
@@ -21241,7 +21244,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
21241
21244
|
};
|
21242
21245
|
}
|
21243
21246
|
});
|
21244
|
-
const Colors = /* @__PURE__ */ _export_sfc(_sfc_main$
|
21247
|
+
const Colors = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-dec8d117"]]);
|
21245
21248
|
const ToolbarProps = {
|
21246
21249
|
//是否显示
|
21247
21250
|
modelValue: {
|
@@ -21272,16 +21275,16 @@ const ToolbarProps = {
|
|
21272
21275
|
default: ""
|
21273
21276
|
}
|
21274
21277
|
};
|
21275
|
-
const _hoisted_1$
|
21278
|
+
const _hoisted_1$7 = {
|
21276
21279
|
key: 0,
|
21277
21280
|
class: "editify-toolbar-link"
|
21278
21281
|
};
|
21279
|
-
const _hoisted_2$
|
21280
|
-
const _hoisted_3$
|
21281
|
-
const _hoisted_4$
|
21282
|
-
const _hoisted_5$
|
21283
|
-
const _hoisted_6$
|
21284
|
-
const _sfc_main$
|
21282
|
+
const _hoisted_2$6 = { class: "editify-toolbar-link-label" };
|
21283
|
+
const _hoisted_3$6 = ["placeholder"];
|
21284
|
+
const _hoisted_4$6 = { class: "editify-toolbar-link-footer" };
|
21285
|
+
const _hoisted_5$5 = { class: "editify-toolbar-link-operations" };
|
21286
|
+
const _hoisted_6$5 = ["href"];
|
21287
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
21285
21288
|
...{
|
21286
21289
|
name: "Toolbar"
|
21287
21290
|
},
|
@@ -21291,7 +21294,6 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
21291
21294
|
setup(__props, { emit: __emit }) {
|
21292
21295
|
const props = __props;
|
21293
21296
|
const emits = __emit;
|
21294
|
-
const editify = inject("editify");
|
21295
21297
|
const editor = inject("editor");
|
21296
21298
|
const dataRangeCaches = inject("dataRangeCaches");
|
21297
21299
|
const $editTrans = inject("$editTrans");
|
@@ -21955,7 +21957,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
21955
21957
|
} else if (props.type == "text") {
|
21956
21958
|
const extraDisabled = (name) => {
|
21957
21959
|
if (typeof props.config.extraDisabled == "function") {
|
21958
|
-
return props.config.extraDisabled
|
21960
|
+
return props.config.extraDisabled(name) || false;
|
21959
21961
|
}
|
21960
21962
|
return false;
|
21961
21963
|
};
|
@@ -22068,8 +22070,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
22068
22070
|
ref: toolbarRef,
|
22069
22071
|
style: normalizeStyle(_ctx.config.style)
|
22070
22072
|
}, [
|
22071
|
-
_ctx.type == "link" ? (openBlock(), createElementBlock("div", _hoisted_1$
|
22072
|
-
createElementVNode("div", _hoisted_2$
|
22073
|
+
_ctx.type == "link" ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
|
22074
|
+
createElementVNode("div", _hoisted_2$6, toDisplayString(unref($editTrans)("linkAddress")), 1),
|
22073
22075
|
withDirectives(createElementVNode("input", {
|
22074
22076
|
onChange: modifyLink,
|
22075
22077
|
onFocus: handleInputFocus,
|
@@ -22077,7 +22079,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
22077
22079
|
placeholder: unref($editTrans)("linkUrlEnterPlaceholder"),
|
22078
22080
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => linkConfig.value.url = $event),
|
22079
22081
|
type: "url"
|
22080
|
-
}, null, 40, _hoisted_3$
|
22082
|
+
}, null, 40, _hoisted_3$6), [
|
22081
22083
|
[
|
22082
22084
|
vModelText,
|
22083
22085
|
linkConfig.value.url,
|
@@ -22085,7 +22087,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
22085
22087
|
{ trim: true }
|
22086
22088
|
]
|
22087
22089
|
]),
|
22088
|
-
createElementVNode("div", _hoisted_4$
|
22090
|
+
createElementVNode("div", _hoisted_4$6, [
|
22089
22091
|
createVNode(Checkbox, {
|
22090
22092
|
onChange: modifyLink,
|
22091
22093
|
modelValue: linkConfig.value.newOpen,
|
@@ -22094,13 +22096,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
22094
22096
|
color: _ctx.color,
|
22095
22097
|
size: 10
|
22096
22098
|
}, null, 8, ["modelValue", "label", "color"]),
|
22097
|
-
createElementVNode("div", _hoisted_5$
|
22099
|
+
createElementVNode("div", _hoisted_5$5, [
|
22098
22100
|
createElementVNode("span", { onClick: removeLink }, toDisplayString(unref($editTrans)("removeLink")), 1),
|
22099
22101
|
createElementVNode("a", {
|
22100
22102
|
href: linkConfig.value.url,
|
22101
22103
|
target: "_blank",
|
22102
|
-
style: normalizeStyle({ color: _ctx.color })
|
22103
|
-
}, toDisplayString(unref($editTrans)("viewLink")), 13, _hoisted_6$
|
22104
|
+
style: normalizeStyle({ color: _ctx.color || "" })
|
22105
|
+
}, toDisplayString(unref($editTrans)("viewLink")), 13, _hoisted_6$5)
|
22104
22106
|
])
|
22105
22107
|
])
|
22106
22108
|
])) : _ctx.type == "image" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
@@ -22771,7 +22773,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
22771
22773
|
};
|
22772
22774
|
}
|
22773
22775
|
});
|
22774
|
-
const Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$
|
22776
|
+
const Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-357be052"]]);
|
22775
22777
|
const InsertLinkProps = {
|
22776
22778
|
//主题色
|
22777
22779
|
color: {
|
@@ -22784,13 +22786,13 @@ const InsertLinkProps = {
|
|
22784
22786
|
default: ""
|
22785
22787
|
}
|
22786
22788
|
};
|
22787
|
-
const _hoisted_1$
|
22788
|
-
const _hoisted_2$
|
22789
|
-
const _hoisted_3$
|
22790
|
-
const _hoisted_4$
|
22791
|
-
const _hoisted_5$
|
22792
|
-
const _hoisted_6$
|
22793
|
-
const _sfc_main$
|
22789
|
+
const _hoisted_1$6 = { class: "editify-link" };
|
22790
|
+
const _hoisted_2$5 = { class: "editify-link-label" };
|
22791
|
+
const _hoisted_3$5 = ["placeholder"];
|
22792
|
+
const _hoisted_4$5 = ["placeholder"];
|
22793
|
+
const _hoisted_5$4 = { class: "editify-link-footer" };
|
22794
|
+
const _hoisted_6$4 = { class: "editify-link-operations" };
|
22795
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
22794
22796
|
...{
|
22795
22797
|
name: "InsertLink"
|
22796
22798
|
},
|
@@ -22825,15 +22827,15 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
22825
22827
|
emits("insert", linkText.value, linkUrl.value, newOpen.value);
|
22826
22828
|
};
|
22827
22829
|
return (_ctx, _cache) => {
|
22828
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
22829
|
-
createElementVNode("div", _hoisted_2$
|
22830
|
+
return openBlock(), createElementBlock("div", _hoisted_1$6, [
|
22831
|
+
createElementVNode("div", _hoisted_2$5, toDisplayString(unref($editTrans)("linkAddress")), 1),
|
22830
22832
|
withDirectives(createElementVNode("input", {
|
22831
22833
|
onFocus: handleInputFocus,
|
22832
22834
|
onBlur: handleInputBlur,
|
22833
22835
|
placeholder: unref($editTrans)("linkTextEnterPlaceholder"),
|
22834
22836
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => linkText.value = $event),
|
22835
22837
|
type: "text"
|
22836
|
-
}, null, 40, _hoisted_3$
|
22838
|
+
}, null, 40, _hoisted_3$5), [
|
22837
22839
|
[
|
22838
22840
|
vModelText,
|
22839
22841
|
linkText.value,
|
@@ -22847,7 +22849,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
22847
22849
|
placeholder: unref($editTrans)("linkUrlEnterPlaceholder"),
|
22848
22850
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => linkUrl.value = $event),
|
22849
22851
|
type: "url"
|
22850
|
-
}, null, 40, _hoisted_4$
|
22852
|
+
}, null, 40, _hoisted_4$5), [
|
22851
22853
|
[
|
22852
22854
|
vModelText,
|
22853
22855
|
linkUrl.value,
|
@@ -22855,7 +22857,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
22855
22857
|
{ trim: true }
|
22856
22858
|
]
|
22857
22859
|
]),
|
22858
|
-
createElementVNode("div", _hoisted_5$
|
22860
|
+
createElementVNode("div", _hoisted_5$4, [
|
22859
22861
|
createVNode(Checkbox, {
|
22860
22862
|
modelValue: newOpen.value,
|
22861
22863
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => newOpen.value = $event),
|
@@ -22863,9 +22865,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
22863
22865
|
color: _ctx.color,
|
22864
22866
|
size: 10
|
22865
22867
|
}, null, 8, ["modelValue", "label", "color"]),
|
22866
|
-
createElementVNode("div", _hoisted_6$
|
22868
|
+
createElementVNode("div", _hoisted_6$4, [
|
22867
22869
|
createElementVNode("span", {
|
22868
|
-
style: normalizeStyle({ color: _ctx.color }),
|
22870
|
+
style: normalizeStyle({ color: _ctx.color || "" }),
|
22869
22871
|
onClick: insertLink2
|
22870
22872
|
}, toDisplayString(unref($editTrans)("insertLink")), 5)
|
22871
22873
|
])
|
@@ -22874,7 +22876,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
22874
22876
|
};
|
22875
22877
|
}
|
22876
22878
|
});
|
22877
|
-
const InsertLink = /* @__PURE__ */ _export_sfc(_sfc_main$
|
22879
|
+
const InsertLink = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-9f80e392"]]);
|
22878
22880
|
const InsertImageProps = {
|
22879
22881
|
//主题色
|
22880
22882
|
color: {
|
@@ -22882,7 +22884,7 @@ const InsertImageProps = {
|
|
22882
22884
|
default: ""
|
22883
22885
|
},
|
22884
22886
|
//支持的图片类型数组
|
22885
|
-
|
22887
|
+
allowedFileType: {
|
22886
22888
|
type: Array,
|
22887
22889
|
default: null
|
22888
22890
|
},
|
@@ -22912,19 +22914,19 @@ const InsertImageProps = {
|
|
22912
22914
|
default: null
|
22913
22915
|
}
|
22914
22916
|
};
|
22915
|
-
const _hoisted_1$
|
22916
|
-
const _hoisted_2$
|
22917
|
-
const _hoisted_3$
|
22917
|
+
const _hoisted_1$5 = { class: "editify-image" };
|
22918
|
+
const _hoisted_2$4 = { class: "editify-image-header" };
|
22919
|
+
const _hoisted_3$4 = {
|
22918
22920
|
key: 0,
|
22919
22921
|
class: "editify-image-remote"
|
22920
22922
|
};
|
22921
|
-
const _hoisted_4$
|
22922
|
-
const _hoisted_5$
|
22923
|
+
const _hoisted_4$4 = ["placeholder"];
|
22924
|
+
const _hoisted_5$3 = {
|
22923
22925
|
key: 1,
|
22924
22926
|
class: "editify-image-upload"
|
22925
22927
|
};
|
22926
|
-
const _hoisted_6$
|
22927
|
-
const _sfc_main$
|
22928
|
+
const _hoisted_6$3 = ["multiple"];
|
22929
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
22928
22930
|
...{
|
22929
22931
|
name: "InsertImage"
|
22930
22932
|
},
|
@@ -22935,7 +22937,6 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
22935
22937
|
const props = __props;
|
22936
22938
|
const emits = __emit;
|
22937
22939
|
const $editTrans = inject("$editTrans");
|
22938
|
-
const editify = inject("editify");
|
22939
22940
|
const current = ref("upload");
|
22940
22941
|
const remoteUrl = ref("");
|
22941
22942
|
const activeStyle = computed(() => {
|
@@ -22976,24 +22977,24 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
22976
22977
|
for (let i = 0; i < files.length; i++) {
|
22977
22978
|
const file2 = files[i];
|
22978
22979
|
const suffix = getSuffix(file2);
|
22979
|
-
const isMatch = props.
|
22980
|
+
const isMatch = props.allowedFileType && Array.isArray(props.allowedFileType) && props.allowedFileType.length ? props.allowedFileType.some((item) => {
|
22980
22981
|
return item.toLocaleLowerCase() == suffix.toLocaleLowerCase();
|
22981
|
-
});
|
22982
|
+
}) : true;
|
22982
22983
|
if (!isMatch) {
|
22983
22984
|
if (typeof props.handleError == "function") {
|
22984
|
-
props.handleError
|
22985
|
+
props.handleError("suffixError", file2);
|
22985
22986
|
}
|
22986
22987
|
continue;
|
22987
22988
|
}
|
22988
22989
|
if (props.maxSize && file2.size / 1024 > props.maxSize) {
|
22989
22990
|
if (typeof props.handleError == "function") {
|
22990
|
-
props.handleError
|
22991
|
+
props.handleError("maxSizeError", file2);
|
22991
22992
|
}
|
22992
22993
|
continue;
|
22993
22994
|
}
|
22994
22995
|
if (props.minSize && file2.size / 1024 < props.minSize) {
|
22995
22996
|
if (typeof props.handleError == "function") {
|
22996
|
-
props.handleError
|
22997
|
+
props.handleError("minSizeError", file2);
|
22997
22998
|
}
|
22998
22999
|
continue;
|
22999
23000
|
}
|
@@ -23002,7 +23003,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
23002
23003
|
if (filterFiles.length) {
|
23003
23004
|
let images = [];
|
23004
23005
|
if (typeof props.customUpload == "function") {
|
23005
|
-
images = await props.customUpload
|
23006
|
+
images = await props.customUpload(filterFiles) || [];
|
23006
23007
|
} else {
|
23007
23008
|
for (let i = 0; i < filterFiles.length; i++) {
|
23008
23009
|
const url = await file.dataFileToBase64(filterFiles[i]);
|
@@ -23022,8 +23023,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
23022
23023
|
}
|
23023
23024
|
);
|
23024
23025
|
return (_ctx, _cache) => {
|
23025
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
23026
|
-
createElementVNode("div", _hoisted_2$
|
23026
|
+
return openBlock(), createElementBlock("div", _hoisted_1$5, [
|
23027
|
+
createElementVNode("div", _hoisted_2$4, [
|
23027
23028
|
createElementVNode("div", {
|
23028
23029
|
onClick: _cache[0] || (_cache[0] = ($event) => current.value = "upload"),
|
23029
23030
|
class: normalizeClass(["editify-image-header-item", { "editify-active": current.value == "upload" }]),
|
@@ -23039,13 +23040,13 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
23039
23040
|
style: normalizeStyle({ backgroundColor: _ctx.color || "" })
|
23040
23041
|
}, null, 6)
|
23041
23042
|
]),
|
23042
|
-
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3$
|
23043
|
+
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3$4, [
|
23043
23044
|
withDirectives(createElementVNode("input", {
|
23044
23045
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => remoteUrl.value = $event),
|
23045
23046
|
placeholder: unref($editTrans)("imageUrlPlaceholder"),
|
23046
23047
|
onBlur: handleInputBlur,
|
23047
23048
|
onFocus: handleInputFocus
|
23048
|
-
}, null, 40, _hoisted_4$
|
23049
|
+
}, null, 40, _hoisted_4$4), [
|
23049
23050
|
[
|
23050
23051
|
vModelText,
|
23051
23052
|
remoteUrl.value,
|
@@ -23055,24 +23056,24 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
23055
23056
|
]),
|
23056
23057
|
createElementVNode("div", {
|
23057
23058
|
class: "editify-image-remote-footer",
|
23058
|
-
style: normalizeStyle({ color: _ctx.color })
|
23059
|
+
style: normalizeStyle({ color: _ctx.color || "" })
|
23059
23060
|
}, [
|
23060
23061
|
createElementVNode("span", { onClick: insertRemoteImage }, toDisplayString(unref($editTrans)("insert")), 1)
|
23061
23062
|
], 4)
|
23062
|
-
])) : (openBlock(), createElementBlock("div", _hoisted_5$
|
23063
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_5$3, [
|
23063
23064
|
createVNode(Icon, { value: "upload" }),
|
23064
23065
|
createElementVNode("input", {
|
23065
23066
|
multiple: _ctx.multiple,
|
23066
23067
|
accept: "image/*",
|
23067
23068
|
onChange: selectFile,
|
23068
23069
|
type: "file"
|
23069
|
-
}, null, 40, _hoisted_6$
|
23070
|
+
}, null, 40, _hoisted_6$3)
|
23070
23071
|
]))
|
23071
23072
|
]);
|
23072
23073
|
};
|
23073
23074
|
}
|
23074
23075
|
});
|
23075
|
-
const InsertImage = /* @__PURE__ */ _export_sfc(_sfc_main$
|
23076
|
+
const InsertImage = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-17d0a9c4"]]);
|
23076
23077
|
const InsertVideoProps = {
|
23077
23078
|
//主题色
|
23078
23079
|
color: {
|
@@ -23080,7 +23081,7 @@ const InsertVideoProps = {
|
|
23080
23081
|
default: ""
|
23081
23082
|
},
|
23082
23083
|
//支持的视频类型数组
|
23083
|
-
|
23084
|
+
allowedFileType: {
|
23084
23085
|
type: Array,
|
23085
23086
|
default: null
|
23086
23087
|
},
|
@@ -23110,19 +23111,19 @@ const InsertVideoProps = {
|
|
23110
23111
|
default: null
|
23111
23112
|
}
|
23112
23113
|
};
|
23113
|
-
const _hoisted_1$
|
23114
|
-
const _hoisted_2$
|
23115
|
-
const _hoisted_3$
|
23114
|
+
const _hoisted_1$4 = { class: "editify-video" };
|
23115
|
+
const _hoisted_2$3 = { class: "editify-video-header" };
|
23116
|
+
const _hoisted_3$3 = {
|
23116
23117
|
key: 0,
|
23117
23118
|
class: "editify-video-remote"
|
23118
23119
|
};
|
23119
|
-
const _hoisted_4$
|
23120
|
-
const _hoisted_5$
|
23120
|
+
const _hoisted_4$3 = ["placeholder"];
|
23121
|
+
const _hoisted_5$2 = {
|
23121
23122
|
key: 1,
|
23122
23123
|
class: "editify-video-upload"
|
23123
23124
|
};
|
23124
|
-
const _hoisted_6$
|
23125
|
-
const _sfc_main$
|
23125
|
+
const _hoisted_6$2 = ["multiple"];
|
23126
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
23126
23127
|
...{
|
23127
23128
|
name: "InsertVideo"
|
23128
23129
|
},
|
@@ -23133,7 +23134,6 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23133
23134
|
const props = __props;
|
23134
23135
|
const emits = __emit;
|
23135
23136
|
const $editTrans = inject("$editTrans");
|
23136
|
-
const editify = inject("editify");
|
23137
23137
|
const current = ref("upload");
|
23138
23138
|
const remoteUrl = ref("");
|
23139
23139
|
const activeStyle = computed(() => {
|
@@ -23174,24 +23174,24 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23174
23174
|
for (let i = 0; i < files.length; i++) {
|
23175
23175
|
const file2 = files[i];
|
23176
23176
|
const suffix = getSuffix(file2);
|
23177
|
-
const isMatch = props.
|
23177
|
+
const isMatch = props.allowedFileType && Array.isArray(props.allowedFileType) && props.allowedFileType.length ? props.allowedFileType.some((item) => {
|
23178
23178
|
return item.toLocaleLowerCase() == suffix.toLocaleLowerCase();
|
23179
|
-
});
|
23179
|
+
}) : true;
|
23180
23180
|
if (!isMatch) {
|
23181
23181
|
if (typeof props.handleError == "function") {
|
23182
|
-
props.handleError
|
23182
|
+
props.handleError("suffixError", file2);
|
23183
23183
|
}
|
23184
23184
|
continue;
|
23185
23185
|
}
|
23186
23186
|
if (props.maxSize && file2.size / 1024 > props.maxSize) {
|
23187
23187
|
if (typeof props.handleError == "function") {
|
23188
|
-
props.handleError
|
23188
|
+
props.handleError("maxSizeError", file2);
|
23189
23189
|
}
|
23190
23190
|
continue;
|
23191
23191
|
}
|
23192
23192
|
if (props.minSize && file2.size / 1024 < props.minSize) {
|
23193
23193
|
if (typeof props.handleError == "function") {
|
23194
|
-
props.handleError
|
23194
|
+
props.handleError("minSizeError", file2);
|
23195
23195
|
}
|
23196
23196
|
continue;
|
23197
23197
|
}
|
@@ -23200,7 +23200,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23200
23200
|
if (filterFiles.length) {
|
23201
23201
|
let videos = [];
|
23202
23202
|
if (typeof props.customUpload == "function") {
|
23203
|
-
videos = await props.customUpload
|
23203
|
+
videos = await props.customUpload(filterFiles) || [];
|
23204
23204
|
} else {
|
23205
23205
|
for (let i = 0; i < filterFiles.length; i++) {
|
23206
23206
|
const url = await file.dataFileToBase64(filterFiles[i]);
|
@@ -23220,8 +23220,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23220
23220
|
}
|
23221
23221
|
);
|
23222
23222
|
return (_ctx, _cache) => {
|
23223
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
23224
|
-
createElementVNode("div", _hoisted_2$
|
23223
|
+
return openBlock(), createElementBlock("div", _hoisted_1$4, [
|
23224
|
+
createElementVNode("div", _hoisted_2$3, [
|
23225
23225
|
createElementVNode("div", {
|
23226
23226
|
onClick: _cache[0] || (_cache[0] = ($event) => current.value = "upload"),
|
23227
23227
|
class: normalizeClass(["editify-video-header-item", { "editify-active": current.value == "upload" }]),
|
@@ -23237,13 +23237,13 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23237
23237
|
style: normalizeStyle({ backgroundColor: _ctx.color || "" })
|
23238
23238
|
}, null, 6)
|
23239
23239
|
]),
|
23240
|
-
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3$
|
23240
|
+
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
|
23241
23241
|
withDirectives(createElementVNode("input", {
|
23242
23242
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => remoteUrl.value = $event),
|
23243
23243
|
placeholder: unref($editTrans)("videoUrlPlaceholder"),
|
23244
23244
|
onBlur: handleInputBlur,
|
23245
23245
|
onFocus: handleInputFocus
|
23246
|
-
}, null, 40, _hoisted_4$
|
23246
|
+
}, null, 40, _hoisted_4$3), [
|
23247
23247
|
[
|
23248
23248
|
vModelText,
|
23249
23249
|
remoteUrl.value,
|
@@ -23253,24 +23253,24 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23253
23253
|
]),
|
23254
23254
|
createElementVNode("div", {
|
23255
23255
|
class: "editify-video-remote-footer",
|
23256
|
-
style: normalizeStyle({ color: _ctx.color })
|
23256
|
+
style: normalizeStyle({ color: _ctx.color || "" })
|
23257
23257
|
}, [
|
23258
23258
|
createElementVNode("span", { onClick: insertRemoteVideo }, toDisplayString(unref($editTrans)("insert")), 1)
|
23259
23259
|
], 4)
|
23260
|
-
])) : (openBlock(), createElementBlock("div", _hoisted_5$
|
23260
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_5$2, [
|
23261
23261
|
createVNode(Icon, { value: "upload" }),
|
23262
23262
|
createElementVNode("input", {
|
23263
23263
|
multiple: _ctx.multiple,
|
23264
23264
|
accept: "video/*",
|
23265
23265
|
onChange: selectFile,
|
23266
23266
|
type: "file"
|
23267
|
-
}, null, 40, _hoisted_6$
|
23267
|
+
}, null, 40, _hoisted_6$2)
|
23268
23268
|
]))
|
23269
23269
|
]);
|
23270
23270
|
};
|
23271
23271
|
}
|
23272
23272
|
});
|
23273
|
-
const InsertVideo = /* @__PURE__ */ _export_sfc(_sfc_main$
|
23273
|
+
const InsertVideo = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-a54e06d0"]]);
|
23274
23274
|
const InsertTableProps = {
|
23275
23275
|
//主题色
|
23276
23276
|
color: {
|
@@ -23289,16 +23289,16 @@ const InsertTableProps = {
|
|
23289
23289
|
}
|
23290
23290
|
};
|
23291
23291
|
const _withScopeId = (n) => (pushScopeId("data-v-9a40c4f5"), n = n(), popScopeId(), n);
|
23292
|
-
const _hoisted_1$
|
23293
|
-
const _hoisted_2$
|
23294
|
-
const _hoisted_3$
|
23295
|
-
const _hoisted_4$
|
23296
|
-
_hoisted_3$
|
23292
|
+
const _hoisted_1$3 = { class: "editify-table" };
|
23293
|
+
const _hoisted_2$2 = ["onMouseenter", "onClick"];
|
23294
|
+
const _hoisted_3$2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", null, null, -1));
|
23295
|
+
const _hoisted_4$2 = [
|
23296
|
+
_hoisted_3$2
|
23297
23297
|
];
|
23298
|
-
const _hoisted_5 = { class: "editify-table-footer" };
|
23299
|
-
const _hoisted_6 = { key: 0 };
|
23298
|
+
const _hoisted_5$1 = { class: "editify-table-footer" };
|
23299
|
+
const _hoisted_6$1 = { key: 0 };
|
23300
23300
|
const _hoisted_7 = { key: 1 };
|
23301
|
-
const _sfc_main$
|
23301
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
23302
23302
|
...{
|
23303
23303
|
name: "InsertTable"
|
23304
23304
|
},
|
@@ -23358,7 +23358,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
23358
23358
|
emits("insert", data2.x, data2.y);
|
23359
23359
|
};
|
23360
23360
|
return (_ctx, _cache) => {
|
23361
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
23361
|
+
return openBlock(), createElementBlock("div", _hoisted_1$3, [
|
23362
23362
|
createElementVNode("table", null, [
|
23363
23363
|
(openBlock(true), createElementBlock(Fragment, null, renderList(tableGrids.value, (row) => {
|
23364
23364
|
return openBlock(), createElementBlock("tr", null, [
|
@@ -23367,19 +23367,19 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
23367
23367
|
class: normalizeClass({ "editify-inside": column.inside }),
|
23368
23368
|
onMouseenter: ($event) => changeTableSize(column),
|
23369
23369
|
onClick: ($event) => createTable(column)
|
23370
|
-
}, _hoisted_4$
|
23370
|
+
}, _hoisted_4$2, 42, _hoisted_2$2);
|
23371
23371
|
}), 256))
|
23372
23372
|
]);
|
23373
23373
|
}), 256))
|
23374
23374
|
]),
|
23375
|
-
createElementVNode("div", _hoisted_5, [
|
23376
|
-
specification.value ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(specification.value.x) + " x " + toDisplayString(specification.value.y), 1)) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(unref($editTrans)("insertTable")), 1))
|
23375
|
+
createElementVNode("div", _hoisted_5$1, [
|
23376
|
+
specification.value ? (openBlock(), createElementBlock("span", _hoisted_6$1, toDisplayString(specification.value.x) + " x " + toDisplayString(specification.value.y), 1)) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(unref($editTrans)("insertTable")), 1))
|
23377
23377
|
])
|
23378
23378
|
]);
|
23379
23379
|
};
|
23380
23380
|
}
|
23381
23381
|
});
|
23382
|
-
const InsertTable = /* @__PURE__ */ _export_sfc(_sfc_main$
|
23382
|
+
const InsertTable = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-9a40c4f5"]]);
|
23383
23383
|
const MenuProps = {
|
23384
23384
|
//菜单栏配置
|
23385
23385
|
config: {
|
@@ -23392,8 +23392,8 @@ const MenuProps = {
|
|
23392
23392
|
default: ""
|
23393
23393
|
}
|
23394
23394
|
};
|
23395
|
-
const _hoisted_1$
|
23396
|
-
const _sfc_main$
|
23395
|
+
const _hoisted_1$2 = ["data-editify-mode"];
|
23396
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
23397
23397
|
...{
|
23398
23398
|
name: "Menu"
|
23399
23399
|
},
|
@@ -23627,7 +23627,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
23627
23627
|
rightBorder: props.config.image.rightBorder,
|
23628
23628
|
active: false,
|
23629
23629
|
disabled: false,
|
23630
|
-
|
23630
|
+
allowedFileType: props.config.image.allowedFileType,
|
23631
23631
|
multiple: props.config.image.multiple,
|
23632
23632
|
maxSize: props.config.image.maxSize,
|
23633
23633
|
minSize: props.config.image.minSize,
|
@@ -23640,7 +23640,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
23640
23640
|
rightBorder: props.config.video.rightBorder,
|
23641
23641
|
active: false,
|
23642
23642
|
disabled: false,
|
23643
|
-
|
23643
|
+
allowedFileType: props.config.video.allowedFileType,
|
23644
23644
|
multiple: props.config.video.multiple,
|
23645
23645
|
maxSize: props.config.video.maxSize,
|
23646
23646
|
minSize: props.config.video.minSize,
|
@@ -23933,7 +23933,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
23933
23933
|
const value_isRangeInTask = isRangeInTask(editor.value, dataRangeCaches.value);
|
23934
23934
|
const extraDisabled = (name) => {
|
23935
23935
|
if (typeof props.config.extraDisabled == "function") {
|
23936
|
-
return props.config.extraDisabled
|
23936
|
+
return props.config.extraDisabled(name) || false;
|
23937
23937
|
}
|
23938
23938
|
return false;
|
23939
23939
|
};
|
@@ -24495,7 +24495,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
24495
24495
|
}),
|
24496
24496
|
layer: () => h(InsertImage, {
|
24497
24497
|
color: props.color,
|
24498
|
-
|
24498
|
+
allowedFileType: imageConfig.value.allowedFileType,
|
24499
24499
|
multiple: imageConfig.value.multiple,
|
24500
24500
|
maxSize: imageConfig.value.maxSize,
|
24501
24501
|
minSize: imageConfig.value.minSize,
|
@@ -24536,7 +24536,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
24536
24536
|
}),
|
24537
24537
|
layer: () => h(InsertVideo, {
|
24538
24538
|
color: props.color,
|
24539
|
-
|
24539
|
+
allowedFileType: videoConfig.value.allowedFileType,
|
24540
24540
|
multiple: videoConfig.value.multiple,
|
24541
24541
|
maxSize: videoConfig.value.maxSize,
|
24542
24542
|
minSize: videoConfig.value.minSize,
|
@@ -24665,29 +24665,44 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
24665
24665
|
color: props.color,
|
24666
24666
|
onLayerShow: () => {
|
24667
24667
|
if (typeof configuration.onLayerShow == "function") {
|
24668
|
-
configuration.onLayerShow
|
24668
|
+
configuration.onLayerShow(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24669
24669
|
}
|
24670
24670
|
},
|
24671
24671
|
onLayerShown: () => {
|
24672
24672
|
if (typeof configuration.onLayerShown == "function") {
|
24673
|
-
configuration.onLayerShown
|
24673
|
+
configuration.onLayerShown(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24674
24674
|
}
|
24675
24675
|
},
|
24676
24676
|
onLayerHidden: () => {
|
24677
24677
|
if (typeof configuration.onLayerHidden == "function") {
|
24678
|
-
configuration.onLayerHidden
|
24678
|
+
configuration.onLayerHidden(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24679
24679
|
}
|
24680
24680
|
},
|
24681
24681
|
onOperate: (name, val) => {
|
24682
24682
|
if (typeof configuration.onOperate == "function") {
|
24683
|
-
configuration.onOperate
|
24683
|
+
configuration.onOperate(name, val, itemInstance.proxy.$refs.btnRef);
|
24684
24684
|
}
|
24685
24685
|
}
|
24686
24686
|
},
|
24687
24687
|
{
|
24688
|
-
default:
|
24689
|
-
|
24690
|
-
|
24688
|
+
default: () => {
|
24689
|
+
if (configuration.default) {
|
24690
|
+
return configuration.default(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24691
|
+
}
|
24692
|
+
return null;
|
24693
|
+
},
|
24694
|
+
layer: () => {
|
24695
|
+
if (configuration.layer) {
|
24696
|
+
return configuration.layer(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24697
|
+
}
|
24698
|
+
return null;
|
24699
|
+
},
|
24700
|
+
option: () => {
|
24701
|
+
if (configuration.option) {
|
24702
|
+
return configuration.option(itemProps.name, itemInstance.proxy.$refs.btnRef);
|
24703
|
+
}
|
24704
|
+
return null;
|
24705
|
+
}
|
24691
24706
|
}
|
24692
24707
|
);
|
24693
24708
|
}
|
@@ -24717,11 +24732,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
24717
24732
|
disabled: menuDisabled.value(item)
|
24718
24733
|
}, null, 8, ["name", "disabled"]);
|
24719
24734
|
}), 256))
|
24720
|
-
], 14, _hoisted_1$
|
24735
|
+
], 14, _hoisted_1$2);
|
24721
24736
|
};
|
24722
24737
|
}
|
24723
24738
|
});
|
24724
|
-
const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$
|
24739
|
+
const Menu = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-3a513730"]]);
|
24725
24740
|
const EditifyProps = {
|
24726
24741
|
//国际化语言类型
|
24727
24742
|
locale: {
|
@@ -24857,6 +24872,13 @@ const EditifyProps = {
|
|
24857
24872
|
tab: {
|
24858
24873
|
type: Boolean,
|
24859
24874
|
default: true
|
24875
|
+
},
|
24876
|
+
//插件数组
|
24877
|
+
plugins: {
|
24878
|
+
type: Array,
|
24879
|
+
default: function() {
|
24880
|
+
return [];
|
24881
|
+
}
|
24860
24882
|
}
|
24861
24883
|
};
|
24862
24884
|
const en_US = {
|
@@ -24943,7 +24965,14 @@ const en_US = {
|
|
24943
24965
|
alignJustify: "Align justify",
|
24944
24966
|
defaultLineHeight: "Default",
|
24945
24967
|
auto: "auto",
|
24946
|
-
fullScreen: "Full screen"
|
24968
|
+
fullScreen: "Full screen",
|
24969
|
+
//插件语言配置
|
24970
|
+
insertAttachment: "Insert attachment",
|
24971
|
+
uploadAttachment: "Upload",
|
24972
|
+
remoteAttachment: "Remote",
|
24973
|
+
attachmentUrlPlaceholder: "Please enter the attachment address",
|
24974
|
+
downloadAttachment: "Click to download attachment",
|
24975
|
+
attachmentDownloadName: "attachment"
|
24947
24976
|
};
|
24948
24977
|
const zh_CN = {
|
24949
24978
|
textWrapUp: "向上换行",
|
@@ -25029,18 +25058,25 @@ const zh_CN = {
|
|
25029
25058
|
alignJustify: "两端对齐",
|
25030
25059
|
defaultLineHeight: "默认行高",
|
25031
25060
|
auto: "自适应",
|
25032
|
-
fullScreen: "全屏"
|
25061
|
+
fullScreen: "全屏",
|
25062
|
+
//插件语言配置
|
25063
|
+
insertAttachment: "插入附件",
|
25064
|
+
uploadAttachment: "上传附件",
|
25065
|
+
remoteAttachment: "远程地址",
|
25066
|
+
attachmentUrlPlaceholder: "请输入远程地址",
|
25067
|
+
downloadAttachment: "点击下载附件",
|
25068
|
+
attachmentDownloadName: "附件"
|
25033
25069
|
};
|
25034
25070
|
const trans = (locale) => {
|
25035
25071
|
return (key) => {
|
25036
25072
|
return { zh_CN, en_US }[locale][key];
|
25037
25073
|
};
|
25038
25074
|
};
|
25039
|
-
const _hoisted_1 = ["data-editify-uid"];
|
25040
|
-
const _hoisted_2 = ["data-editify-placeholder"];
|
25041
|
-
const _hoisted_3 = ["value"];
|
25042
|
-
const _hoisted_4 = { class: "editify-footer-words" };
|
25043
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
25075
|
+
const _hoisted_1$1 = ["data-editify-uid"];
|
25076
|
+
const _hoisted_2$1 = ["data-editify-placeholder"];
|
25077
|
+
const _hoisted_3$1 = ["value"];
|
25078
|
+
const _hoisted_4$1 = { class: "editify-footer-words" };
|
25079
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
25044
25080
|
...{
|
25045
25081
|
name: "editify"
|
25046
25082
|
},
|
@@ -25112,8 +25148,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25112
25148
|
const toolbarConfig = computed(() => {
|
25113
25149
|
return mergeObject(getToolbarConfig($editTrans, props.locale), props.toolbar || {});
|
25114
25150
|
});
|
25151
|
+
const pluginResultList = computed(() => {
|
25152
|
+
const pluginResultList2 = [];
|
25153
|
+
props.plugins.forEach((plugin) => {
|
25154
|
+
let pluginResult = plugin(instance, props.color, $editTrans);
|
25155
|
+
pluginResultList2.push(pluginResult);
|
25156
|
+
});
|
25157
|
+
return pluginResultList2;
|
25158
|
+
});
|
25115
25159
|
const menuConfig = computed(() => {
|
25116
|
-
|
25160
|
+
let menu = {};
|
25161
|
+
pluginResultList.value.forEach((pluginResult) => {
|
25162
|
+
menu = mergeObject(menu, pluginResult.menu || {});
|
25163
|
+
});
|
25164
|
+
menu = mergeObject(menu, props.menu || {});
|
25165
|
+
return mergeObject(getMenuConfig($editTrans, props.locale), menu);
|
25117
25166
|
});
|
25118
25167
|
const internalModify = (val) => {
|
25119
25168
|
isModelChange.value = true;
|
@@ -25215,6 +25264,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25215
25264
|
});
|
25216
25265
|
};
|
25217
25266
|
const createEditor = () => {
|
25267
|
+
let pluginRules = [];
|
25268
|
+
pluginResultList.value.forEach((pluginResult) => {
|
25269
|
+
if (pluginResult.renderRule) {
|
25270
|
+
pluginRules.push(pluginResult.renderRule);
|
25271
|
+
}
|
25272
|
+
});
|
25218
25273
|
editor.value = new AlexEditor(contentRef.value, {
|
25219
25274
|
value: value.value,
|
25220
25275
|
disabled: props.disabled,
|
@@ -25238,6 +25293,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25238
25293
|
(el) => {
|
25239
25294
|
specialInblockHandle(editor.value, el);
|
25240
25295
|
},
|
25296
|
+
...pluginRules,
|
25241
25297
|
...props.renderRules
|
25242
25298
|
],
|
25243
25299
|
allowCopy: props.allowCopy,
|
@@ -25378,8 +25434,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25378
25434
|
}
|
25379
25435
|
};
|
25380
25436
|
const handleCustomHtmlPaste = async (elements) => {
|
25381
|
-
|
25382
|
-
|
25437
|
+
let keepStyles = pasteKeepData.styles;
|
25438
|
+
let keepMarks = pasteKeepData.marks;
|
25439
|
+
pluginResultList.value.forEach((pluginResult) => {
|
25440
|
+
keepStyles = Object.assign(keepStyles, pluginResult.pasteKeepStyles || {});
|
25441
|
+
keepMarks = Object.assign(keepMarks, pluginResult.pasteKeepMarks || {});
|
25442
|
+
});
|
25443
|
+
keepStyles = Object.assign(keepStyles, props.pasteKeepStyles || {});
|
25444
|
+
keepMarks = Object.assign(keepMarks, props.pasteKeepMarks || {});
|
25383
25445
|
AlexElement.flatElements(elements).forEach((el) => {
|
25384
25446
|
let marks = {};
|
25385
25447
|
let styles = {};
|
@@ -25401,7 +25463,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25401
25463
|
}
|
25402
25464
|
});
|
25403
25465
|
if (typeof props.customHtmlPaste == "function") {
|
25404
|
-
await props.customHtmlPaste
|
25466
|
+
await props.customHtmlPaste(elements);
|
25405
25467
|
} else {
|
25406
25468
|
for (let i = 0; i < elements.length; i++) {
|
25407
25469
|
editor.value.insertElement(elements[i], false);
|
@@ -25432,8 +25494,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25432
25494
|
ele.marks = marks;
|
25433
25495
|
}
|
25434
25496
|
}
|
25497
|
+
pluginResultList.value.forEach((pluginResult) => {
|
25498
|
+
if (pluginResult.customParseNode) {
|
25499
|
+
ele = pluginResult.customParseNode(ele);
|
25500
|
+
}
|
25501
|
+
});
|
25435
25502
|
if (typeof props.customParseNode == "function") {
|
25436
|
-
ele = props.customParseNode
|
25503
|
+
ele = props.customParseNode(ele);
|
25437
25504
|
}
|
25438
25505
|
return ele;
|
25439
25506
|
};
|
@@ -25558,13 +25625,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25558
25625
|
}
|
25559
25626
|
};
|
25560
25627
|
const handleDeleteComplete = () => {
|
25561
|
-
const uneditable = editor.value.range.anchor.element.getUneditableElement();
|
25562
|
-
if (uneditable) {
|
25563
|
-
uneditable.toEmpty();
|
25564
|
-
}
|
25565
25628
|
};
|
25566
25629
|
const handleAfterRender = () => {
|
25567
25630
|
setVideoHeight();
|
25631
|
+
pluginResultList.value.forEach((pluginResult) => {
|
25632
|
+
if (pluginResult.updateView) {
|
25633
|
+
pluginResult.updateView();
|
25634
|
+
}
|
25635
|
+
});
|
25568
25636
|
emits("updateview");
|
25569
25637
|
};
|
25570
25638
|
const collapseToEnd = () => {
|
@@ -25719,13 +25787,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25719
25787
|
onCompositionstart: _cache[0] || (_cache[0] = ($event) => isInputChinese.value = true),
|
25720
25788
|
onCompositionend: _cache[1] || (_cache[1] = ($event) => isInputChinese.value = false),
|
25721
25789
|
"data-editify-placeholder": _ctx.placeholder
|
25722
|
-
}, null, 42, _hoisted_2),
|
25790
|
+
}, null, 42, _hoisted_2$1),
|
25723
25791
|
isSourceView.value ? (openBlock(), createElementBlock("textarea", {
|
25724
25792
|
key: 0,
|
25725
25793
|
value: value.value,
|
25726
25794
|
readonly: "",
|
25727
25795
|
class: "editify-sourceview"
|
25728
|
-
}, null, 8, _hoisted_3)) : createCommentVNode("", true),
|
25796
|
+
}, null, 8, _hoisted_3$1)) : createCommentVNode("", true),
|
25729
25797
|
createVNode(Toolbar, {
|
25730
25798
|
ref_key: "toolbarRef",
|
25731
25799
|
ref: toolbarRef,
|
@@ -25736,27 +25804,354 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25736
25804
|
config: toolbarConfig.value,
|
25737
25805
|
color: _ctx.color
|
25738
25806
|
}, null, 8, ["modelValue", "node", "type", "config", "color"])
|
25739
|
-
], 10, _hoisted_1),
|
25807
|
+
], 10, _hoisted_1$1),
|
25740
25808
|
_ctx.showWordLength ? (openBlock(), createElementBlock("div", {
|
25741
25809
|
key: 1,
|
25742
25810
|
class: normalizeClass(["editify-footer", { "editify-fullscreen": isFullScreen.value && !isSourceView.value }]),
|
25743
25811
|
ref_key: "footerRef",
|
25744
25812
|
ref: footerRef
|
25745
25813
|
}, [
|
25746
|
-
createElementVNode("div", _hoisted_4, toDisplayString(unref($editTrans)("totalWordCount")) + toDisplayString(textValue.value.length), 1)
|
25814
|
+
createElementVNode("div", _hoisted_4$1, toDisplayString(unref($editTrans)("totalWordCount")) + toDisplayString(textValue.value.length), 1)
|
25747
25815
|
], 2)) : createCommentVNode("", true)
|
25748
25816
|
], 2);
|
25749
25817
|
};
|
25750
25818
|
}
|
25751
25819
|
});
|
25752
|
-
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
25753
|
-
const
|
25820
|
+
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-2e9e8fac"]]);
|
25821
|
+
const InsertAttachmentProps = {
|
25822
|
+
//主题色
|
25823
|
+
color: {
|
25824
|
+
type: String,
|
25825
|
+
default: ""
|
25826
|
+
},
|
25827
|
+
//可选择的文件类型
|
25828
|
+
accept: {
|
25829
|
+
type: String,
|
25830
|
+
default: null
|
25831
|
+
},
|
25832
|
+
//支持的类型数组
|
25833
|
+
allowedFileType: {
|
25834
|
+
type: Array,
|
25835
|
+
default: null
|
25836
|
+
},
|
25837
|
+
//是否支持多选
|
25838
|
+
multiple: {
|
25839
|
+
type: Boolean,
|
25840
|
+
default: false
|
25841
|
+
},
|
25842
|
+
//单个文件最大值
|
25843
|
+
maxSize: {
|
25844
|
+
type: Number,
|
25845
|
+
default: null
|
25846
|
+
},
|
25847
|
+
//单个文件最小值
|
25848
|
+
minSize: {
|
25849
|
+
type: Number,
|
25850
|
+
default: null
|
25851
|
+
},
|
25852
|
+
//是否自定义上传附件
|
25853
|
+
customUpload: {
|
25854
|
+
type: Function,
|
25855
|
+
default: null
|
25856
|
+
},
|
25857
|
+
//处理上传附件异常
|
25858
|
+
handleError: {
|
25859
|
+
type: Function,
|
25860
|
+
default: null
|
25861
|
+
}
|
25862
|
+
};
|
25863
|
+
const _hoisted_1 = { class: "editify-attachment" };
|
25864
|
+
const _hoisted_2 = { class: "editify-attachment-header" };
|
25865
|
+
const _hoisted_3 = {
|
25866
|
+
key: 0,
|
25867
|
+
class: "editify-attachment-remote"
|
25868
|
+
};
|
25869
|
+
const _hoisted_4 = ["placeholder"];
|
25870
|
+
const _hoisted_5 = {
|
25871
|
+
key: 1,
|
25872
|
+
class: "editify-attachment-upload"
|
25873
|
+
};
|
25874
|
+
const _hoisted_6 = ["multiple", "accept"];
|
25875
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
25876
|
+
...{
|
25877
|
+
name: "InsertAttachment"
|
25878
|
+
},
|
25879
|
+
__name: "insertAttachment",
|
25880
|
+
props: InsertAttachmentProps,
|
25881
|
+
emits: ["change", "insert"],
|
25882
|
+
setup(__props, { emit: __emit }) {
|
25883
|
+
const props = __props;
|
25884
|
+
const emits = __emit;
|
25885
|
+
const $editTrans = inject("$editTrans");
|
25886
|
+
const current = ref("upload");
|
25887
|
+
const remoteUrl = ref("");
|
25888
|
+
const activeStyle = computed(() => {
|
25889
|
+
return (name) => {
|
25890
|
+
if (current.value == name) {
|
25891
|
+
return {
|
25892
|
+
color: props.color
|
25893
|
+
};
|
25894
|
+
}
|
25895
|
+
return {};
|
25896
|
+
};
|
25897
|
+
});
|
25898
|
+
const acceptValue = computed(() => {
|
25899
|
+
if (props.accept === "rar") {
|
25900
|
+
return "application/x-rar-compressed";
|
25901
|
+
}
|
25902
|
+
if (props.accept === "zip") {
|
25903
|
+
return "application/x-zip-compressed";
|
25904
|
+
}
|
25905
|
+
if (props.accept === "txt") {
|
25906
|
+
return "text/plain";
|
25907
|
+
}
|
25908
|
+
if (props.accept === "image") {
|
25909
|
+
return "image/*";
|
25910
|
+
}
|
25911
|
+
if (props.accept === "video") {
|
25912
|
+
return "video/*";
|
25913
|
+
}
|
25914
|
+
if (props.accept === "audio") {
|
25915
|
+
return "aduio/*";
|
25916
|
+
}
|
25917
|
+
if (props.accept === "html") {
|
25918
|
+
return "text/html";
|
25919
|
+
}
|
25920
|
+
if (props.accept === "doc") {
|
25921
|
+
return "application/msword";
|
25922
|
+
}
|
25923
|
+
if (props.accept === "xml") {
|
25924
|
+
return "text/xml";
|
25925
|
+
}
|
25926
|
+
if (props.accept === "js") {
|
25927
|
+
return "text/javascript";
|
25928
|
+
}
|
25929
|
+
if (props.accept === "json") {
|
25930
|
+
return "application/json";
|
25931
|
+
}
|
25932
|
+
if (props.accept === "ppt") {
|
25933
|
+
return "application/vnd.ms-powerpoint";
|
25934
|
+
}
|
25935
|
+
if (props.accept === "pdf") {
|
25936
|
+
return "application/pdf";
|
25937
|
+
}
|
25938
|
+
});
|
25939
|
+
const getSuffix = (file2) => {
|
25940
|
+
const index = file2.name.lastIndexOf(".");
|
25941
|
+
if (index <= 0) {
|
25942
|
+
return "";
|
25943
|
+
}
|
25944
|
+
return file2.name.substring(index + 1);
|
25945
|
+
};
|
25946
|
+
const handleInputFocus = (e) => {
|
25947
|
+
if (props.color) {
|
25948
|
+
e.currentTarget.style.borderColor = props.color;
|
25949
|
+
}
|
25950
|
+
};
|
25951
|
+
const handleInputBlur = (e) => {
|
25952
|
+
e.currentTarget.style.borderColor = "";
|
25953
|
+
};
|
25954
|
+
const insertRemoteAttachment = () => {
|
25955
|
+
emits("insert", remoteUrl.value);
|
25956
|
+
};
|
25957
|
+
const selectFile = async (e) => {
|
25958
|
+
const inputEle = e.currentTarget;
|
25959
|
+
const files = inputEle.files;
|
25960
|
+
if (!files || !files.length) {
|
25961
|
+
return;
|
25962
|
+
}
|
25963
|
+
let filterFiles = [];
|
25964
|
+
for (let i = 0; i < files.length; i++) {
|
25965
|
+
const file2 = files[i];
|
25966
|
+
const suffix = getSuffix(file2);
|
25967
|
+
const isMatch = props.allowedFileType && Array.isArray(props.allowedFileType) && props.allowedFileType.length ? props.allowedFileType.some((item) => {
|
25968
|
+
return item.toLocaleLowerCase() == suffix.toLocaleLowerCase();
|
25969
|
+
}) : true;
|
25970
|
+
if (!isMatch) {
|
25971
|
+
if (typeof props.handleError == "function") {
|
25972
|
+
props.handleError("suffixError", file2);
|
25973
|
+
}
|
25974
|
+
continue;
|
25975
|
+
}
|
25976
|
+
if (props.maxSize && file2.size / 1024 > props.maxSize) {
|
25977
|
+
if (typeof props.handleError == "function") {
|
25978
|
+
props.handleError("maxSizeError", file2);
|
25979
|
+
}
|
25980
|
+
continue;
|
25981
|
+
}
|
25982
|
+
if (props.minSize && file2.size / 1024 < props.minSize) {
|
25983
|
+
if (typeof props.handleError == "function") {
|
25984
|
+
props.handleError("minSizeError", file2);
|
25985
|
+
}
|
25986
|
+
continue;
|
25987
|
+
}
|
25988
|
+
filterFiles.push(file2);
|
25989
|
+
}
|
25990
|
+
if (filterFiles.length) {
|
25991
|
+
let attachments = [];
|
25992
|
+
if (typeof props.customUpload == "function") {
|
25993
|
+
attachments = await props.customUpload(filterFiles) || [];
|
25994
|
+
} else {
|
25995
|
+
for (let i = 0; i < filterFiles.length; i++) {
|
25996
|
+
const url = await file.dataFileToBase64(filterFiles[i]);
|
25997
|
+
attachments.push(url);
|
25998
|
+
}
|
25999
|
+
}
|
26000
|
+
attachments.forEach((url) => {
|
26001
|
+
emits("insert", url);
|
26002
|
+
});
|
26003
|
+
}
|
26004
|
+
inputEle.value = "";
|
26005
|
+
};
|
26006
|
+
watch(
|
26007
|
+
() => current.value,
|
26008
|
+
() => {
|
26009
|
+
emits("change");
|
26010
|
+
}
|
26011
|
+
);
|
26012
|
+
return (_ctx, _cache) => {
|
26013
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
26014
|
+
createElementVNode("div", _hoisted_2, [
|
26015
|
+
createElementVNode("div", {
|
26016
|
+
onClick: _cache[0] || (_cache[0] = ($event) => current.value = "upload"),
|
26017
|
+
class: normalizeClass(["editify-attachment-header-item", { "editify-active": current.value == "upload" }]),
|
26018
|
+
style: normalizeStyle(activeStyle.value("upload"))
|
26019
|
+
}, toDisplayString(unref($editTrans)("uploadAttachment")), 7),
|
26020
|
+
createElementVNode("div", {
|
26021
|
+
onClick: _cache[1] || (_cache[1] = ($event) => current.value = "remote"),
|
26022
|
+
class: normalizeClass(["editify-attachment-header-item", { "editify-active": current.value == "remote" }]),
|
26023
|
+
style: normalizeStyle(activeStyle.value("remote"))
|
26024
|
+
}, toDisplayString(unref($editTrans)("remoteAttachment")), 7),
|
26025
|
+
createElementVNode("div", {
|
26026
|
+
class: normalizeClass(["editify-attachment-header-slider", "editify-" + current.value]),
|
26027
|
+
style: normalizeStyle({ backgroundColor: _ctx.color || "" })
|
26028
|
+
}, null, 6)
|
26029
|
+
]),
|
26030
|
+
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
26031
|
+
withDirectives(createElementVNode("input", {
|
26032
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => remoteUrl.value = $event),
|
26033
|
+
placeholder: unref($editTrans)("attachmentUrlPlaceholder"),
|
26034
|
+
onBlur: handleInputBlur,
|
26035
|
+
onFocus: handleInputFocus
|
26036
|
+
}, null, 40, _hoisted_4), [
|
26037
|
+
[
|
26038
|
+
vModelText,
|
26039
|
+
remoteUrl.value,
|
26040
|
+
void 0,
|
26041
|
+
{ trim: true }
|
26042
|
+
]
|
26043
|
+
]),
|
26044
|
+
createElementVNode("div", {
|
26045
|
+
class: "editify-attachment-remote-footer",
|
26046
|
+
style: normalizeStyle({ color: _ctx.color || "" })
|
26047
|
+
}, [
|
26048
|
+
createElementVNode("span", { onClick: insertRemoteAttachment }, toDisplayString(unref($editTrans)("insert")), 1)
|
26049
|
+
], 4)
|
26050
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_5, [
|
26051
|
+
createVNode(Icon, { value: "upload" }),
|
26052
|
+
createElementVNode("input", {
|
26053
|
+
multiple: _ctx.multiple,
|
26054
|
+
accept: acceptValue.value,
|
26055
|
+
onChange: selectFile,
|
26056
|
+
type: "file"
|
26057
|
+
}, null, 40, _hoisted_6)
|
26058
|
+
]))
|
26059
|
+
]);
|
26060
|
+
};
|
26061
|
+
}
|
26062
|
+
});
|
26063
|
+
const InsertAttachment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a2a6e2f3"]]);
|
26064
|
+
const attachment = (options) => {
|
26065
|
+
if (!common.isObject(options)) {
|
26066
|
+
options = {};
|
26067
|
+
}
|
26068
|
+
const plugin = (editifyInstance, color2, editTrans) => {
|
26069
|
+
const editor = editifyInstance.exposed.editor.value;
|
26070
|
+
const dataRangeCaches = editifyInstance.exposed.dataRangeCaches.value;
|
26071
|
+
return {
|
26072
|
+
//附件菜单项配置
|
26073
|
+
menu: {
|
26074
|
+
sequence: {
|
26075
|
+
attachment: options.sequence || 100
|
26076
|
+
},
|
26077
|
+
extends: {
|
26078
|
+
attachment: {
|
26079
|
+
type: "select",
|
26080
|
+
title: options.title || editTrans("insertAttachment"),
|
26081
|
+
leftBorder: options.leftBorder,
|
26082
|
+
rightBorder: options.rightBorder,
|
26083
|
+
disabled: editor ? hasPreInRange(editor, dataRangeCaches) : false,
|
26084
|
+
default: () => h(Icon, { value: "attachment" }),
|
26085
|
+
layer: (_name, btnInstance) => h(InsertAttachment, {
|
26086
|
+
color: color2,
|
26087
|
+
accept: options.accept,
|
26088
|
+
allowedFileType: options.allowedFileType || [],
|
26089
|
+
multiple: !!options.multiple,
|
26090
|
+
maxSize: options.maxSize,
|
26091
|
+
minSize: options.minSize,
|
26092
|
+
customUpload: options.customUpload,
|
26093
|
+
handleError: options.handleError,
|
26094
|
+
onChange: () => {
|
26095
|
+
btnInstance.$refs.layerRef.setPosition();
|
26096
|
+
},
|
26097
|
+
onInsert: (url) => {
|
26098
|
+
const attachmentElement = new AlexElement("closed", "span", { "data-attachment": url, contenteditable: "false" }, null, null);
|
26099
|
+
editor.insertElement(attachmentElement);
|
26100
|
+
editor.range.anchor.moveToEnd(attachmentElement);
|
26101
|
+
editor.range.focus.moveToEnd(attachmentElement);
|
26102
|
+
editor.formatElementStack();
|
26103
|
+
editor.domRender();
|
26104
|
+
editor.rangeRender();
|
26105
|
+
btnInstance.show = false;
|
26106
|
+
}
|
26107
|
+
})
|
26108
|
+
}
|
26109
|
+
}
|
26110
|
+
},
|
26111
|
+
//找到附件元素点击下载
|
26112
|
+
updateView: () => {
|
26113
|
+
AlexElement.flatElements(editor.stack).forEach((el) => {
|
26114
|
+
if (el.parsedom == "span" && el.hasMarks() && el.marks["data-attachment"]) {
|
26115
|
+
event.off(el.elm, "click");
|
26116
|
+
event.on(el.elm, "click", () => {
|
26117
|
+
const url = el.marks["data-attachment"];
|
26118
|
+
const a = document.createElement("a");
|
26119
|
+
a.setAttribute("href", url);
|
26120
|
+
a.setAttribute("download", editTrans("attachmentDownloadName"));
|
26121
|
+
a.click();
|
26122
|
+
});
|
26123
|
+
}
|
26124
|
+
});
|
26125
|
+
},
|
26126
|
+
//span含有data-attachment的元素设为自闭合元素
|
26127
|
+
customParseNode: (el) => {
|
26128
|
+
if (el.hasMarks() && el.marks["data-attachment"] && el.parsedom == "span") {
|
26129
|
+
el.type = "closed";
|
26130
|
+
}
|
26131
|
+
return el;
|
26132
|
+
},
|
26133
|
+
//span元素粘贴保留data-attachment
|
26134
|
+
pasteKeepMarks: {
|
26135
|
+
"data-attachment": ["span"]
|
26136
|
+
},
|
26137
|
+
//设置元素的title属性标记
|
26138
|
+
renderRule: (el) => {
|
26139
|
+
if (el.type == "closed" && el.hasMarks() && el.marks["data-attachment"]) {
|
26140
|
+
el.marks["title"] = editTrans("downloadAttachment");
|
26141
|
+
}
|
26142
|
+
}
|
26143
|
+
};
|
26144
|
+
};
|
26145
|
+
return plugin;
|
26146
|
+
};
|
25754
26147
|
const install = (app) => {
|
25755
26148
|
app.component(Editify.name, Editify);
|
25756
26149
|
};
|
26150
|
+
const version = "0.1.24";
|
25757
26151
|
export {
|
25758
26152
|
AlexElement,
|
25759
26153
|
Editify,
|
26154
|
+
attachment,
|
25760
26155
|
install as default,
|
25761
26156
|
elementIsInList,
|
25762
26157
|
elementIsInTask,
|