vue-editify 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/editify/editify.vue.d.ts +2 -0
- package/lib/editify.es.js +152 -126
- package/lib/editify.umd.js +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/plugins/attachment/index.d.ts +1 -1
- package/lib/plugins/attachment/insertAttachment/insertAttachment.vue.d.ts +3 -3
- package/lib/plugins/attachment/insertAttachment/props.d.ts +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -2
- package/src/components/insertImage/insertImage.less +1 -0
- package/src/components/insertVideo/insertVideo.less +1 -0
- package/src/editify/editify.vue +17 -6
- package/src/index.ts +6 -4
- package/src/locale/en_US.ts +3 -2
- package/src/locale/zh_CN.ts +4 -3
- package/src/plugins/attachment/index.ts +43 -29
- package/src/plugins/attachment/insertAttachment/insertAttachment.less +48 -19
- package/src/plugins/attachment/insertAttachment/insertAttachment.vue +26 -56
- package/src/plugins/attachment/insertAttachment/props.ts +1 -1
- package/vite.config.ts.timestamp-1714200628309-967ea10c27215.mjs +48 -0
- package/src/plugins/attachment/images/attachment.png +0 -0
@@ -549,6 +549,7 @@ declare const _default: import('vue').DefineComponent<{
|
|
549
549
|
blur: (...args: any[]) => void;
|
550
550
|
focus: (...args: any[]) => void;
|
551
551
|
keydown: (...args: any[]) => void;
|
552
|
+
keyup: (...args: any[]) => void;
|
552
553
|
insertparagraph: (...args: any[]) => void;
|
553
554
|
rangeupdate: (...args: any[]) => void;
|
554
555
|
updateview: (...args: any[]) => void;
|
@@ -667,6 +668,7 @@ declare const _default: import('vue').DefineComponent<{
|
|
667
668
|
onBlur?: ((...args: any[]) => any) | undefined;
|
668
669
|
onChange?: ((...args: any[]) => any) | undefined;
|
669
670
|
onKeydown?: ((...args: any[]) => any) | undefined;
|
671
|
+
onKeyup?: ((...args: any[]) => any) | undefined;
|
670
672
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
671
673
|
onInsertparagraph?: ((...args: any[]) => any) | undefined;
|
672
674
|
onRangeupdate?: ((...args: any[]) => any) | undefined;
|
package/lib/editify.es.js
CHANGED
@@ -2987,35 +2987,40 @@ const handleChineseInput = function(e) {
|
|
2987
2987
|
}, 0);
|
2988
2988
|
}
|
2989
2989
|
};
|
2990
|
-
const
|
2990
|
+
const handleKeyboard = function(e) {
|
2991
2991
|
if (this.disabled) {
|
2992
2992
|
return;
|
2993
2993
|
}
|
2994
2994
|
if (this.__isInputChinese) {
|
2995
2995
|
return;
|
2996
2996
|
}
|
2997
|
-
if (
|
2998
|
-
e
|
2999
|
-
|
3000
|
-
|
3001
|
-
|
3002
|
-
|
3003
|
-
|
3004
|
-
|
3005
|
-
|
3006
|
-
|
3007
|
-
|
3008
|
-
|
3009
|
-
e
|
3010
|
-
|
3011
|
-
|
3012
|
-
|
3013
|
-
|
3014
|
-
|
3015
|
-
|
3016
|
-
|
3017
|
-
|
2997
|
+
if (e.type == "keydown") {
|
2998
|
+
if (isUndo(e)) {
|
2999
|
+
e.preventDefault();
|
3000
|
+
const historyRecord = this.history.get(-1);
|
3001
|
+
if (historyRecord) {
|
3002
|
+
this.history.current = historyRecord.current;
|
3003
|
+
this.stack = historyRecord.stack;
|
3004
|
+
this.range = historyRecord.range;
|
3005
|
+
this.formatElementStack();
|
3006
|
+
this.domRender(true);
|
3007
|
+
this.rangeRender();
|
3008
|
+
}
|
3009
|
+
} else if (isRedo(e)) {
|
3010
|
+
e.preventDefault();
|
3011
|
+
const historyRecord = this.history.get(1);
|
3012
|
+
if (historyRecord) {
|
3013
|
+
this.history.current = historyRecord.current;
|
3014
|
+
this.stack = historyRecord.stack;
|
3015
|
+
this.range = historyRecord.range;
|
3016
|
+
this.formatElementStack();
|
3017
|
+
this.domRender(true);
|
3018
|
+
this.rangeRender();
|
3019
|
+
}
|
3018
3020
|
}
|
3021
|
+
this.emit("keydown", this.value, e);
|
3022
|
+
} else if (e.type == "keyup") {
|
3023
|
+
this.emit("keyup", this.value, e);
|
3019
3024
|
}
|
3020
3025
|
};
|
3021
3026
|
const handleCopy = async function(e) {
|
@@ -3100,17 +3105,17 @@ const handleDragDrop = async function(e) {
|
|
3100
3105
|
}
|
3101
3106
|
}
|
3102
3107
|
};
|
3103
|
-
const handleFocus = function() {
|
3108
|
+
const handleFocus = function(e) {
|
3104
3109
|
if (this.disabled) {
|
3105
3110
|
return;
|
3106
3111
|
}
|
3107
|
-
this.emit("focus", this.value);
|
3112
|
+
this.emit("focus", this.value, e);
|
3108
3113
|
};
|
3109
|
-
const handleBlur = function() {
|
3114
|
+
const handleBlur = function(e) {
|
3110
3115
|
if (this.disabled) {
|
3111
3116
|
return;
|
3112
3117
|
}
|
3113
|
-
this.emit("blur", this.value);
|
3118
|
+
this.emit("blur", this.value, e);
|
3114
3119
|
};
|
3115
3120
|
class AlexEditor {
|
3116
3121
|
constructor(node, opts) {
|
@@ -3160,7 +3165,7 @@ class AlexEditor {
|
|
3160
3165
|
event$1.on(document, `selectionchange.alex_editor_${this.__guid}`, handleSelectionChange.bind(this));
|
3161
3166
|
event$1.on(this.$el, "beforeinput.alex_editor", handleBeforeInput.bind(this));
|
3162
3167
|
event$1.on(this.$el, "compositionstart.alex_editor compositionupdate.alex_editor compositionend.alex_editor", handleChineseInput.bind(this));
|
3163
|
-
event$1.on(this.$el, "keydown.alex_editor",
|
3168
|
+
event$1.on(this.$el, "keydown.alex_editor keyup.alex_editor", handleKeyboard.bind(this));
|
3164
3169
|
event$1.on(this.$el, "cut.alex_editor", handleCut.bind(this));
|
3165
3170
|
event$1.on(this.$el, "paste.alex_editor", handlePaste.bind(this));
|
3166
3171
|
event$1.on(this.$el, "copy.alex_editor", handleCopy.bind(this));
|
@@ -4491,6 +4496,8 @@ class AlexEditor {
|
|
4491
4496
|
event$1.off(this.$el, "beforeinput.alex_editor compositionstart.alex_editor compositionupdate.alex_editor compositionend.alex_editor keydown.alex_editor cut.alex_editor paste.alex_editor copy.alex_editor dragstart.alex_editor drop.alex_editor focus.alex_editor blur.alex_editor");
|
4492
4497
|
}
|
4493
4498
|
}
|
4499
|
+
const version$2 = "1.3.32";
|
4500
|
+
console.log(`%c alex-editor %c v${version$2} `, "padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060; font-weight: bold;", "padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;");
|
4494
4501
|
const number = {
|
4495
4502
|
/**
|
4496
4503
|
* 数字格式化
|
@@ -23268,7 +23275,7 @@ const _hoisted_4$2 = [
|
|
23268
23275
|
];
|
23269
23276
|
const _hoisted_5$1 = { class: "editify-table-footer" };
|
23270
23277
|
const _hoisted_6$1 = { key: 0 };
|
23271
|
-
const _hoisted_7 = { key: 1 };
|
23278
|
+
const _hoisted_7$1 = { key: 1 };
|
23272
23279
|
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
23273
23280
|
...{
|
23274
23281
|
name: "InsertTable"
|
@@ -23344,7 +23351,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
23344
23351
|
}), 256))
|
23345
23352
|
]),
|
23346
23353
|
createElementVNode("div", _hoisted_5$1, [
|
23347
|
-
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))
|
23354
|
+
specification.value ? (openBlock(), createElementBlock("span", _hoisted_6$1, toDisplayString(specification.value.x) + " x " + toDisplayString(specification.value.y), 1)) : (openBlock(), createElementBlock("span", _hoisted_7$1, toDisplayString(unref($editTrans)("insertTable")), 1))
|
23348
23355
|
])
|
23349
23356
|
]);
|
23350
23357
|
};
|
@@ -24941,9 +24948,10 @@ const en_US = {
|
|
24941
24948
|
insertAttachment: "Insert attachment",
|
24942
24949
|
uploadAttachment: "Upload",
|
24943
24950
|
remoteAttachment: "Remote",
|
24951
|
+
attachmentNamePlaceholder: "Please enter the attachment name",
|
24944
24952
|
attachmentUrlPlaceholder: "Please enter the attachment address",
|
24945
|
-
|
24946
|
-
|
24953
|
+
attachmentDownloadTitle: "Click to download attachment",
|
24954
|
+
attachmentDefaultName: "attachment"
|
24947
24955
|
};
|
24948
24956
|
const zh_CN = {
|
24949
24957
|
textWrapUp: "向上换行",
|
@@ -25034,9 +25042,10 @@ const zh_CN = {
|
|
25034
25042
|
insertAttachment: "插入附件",
|
25035
25043
|
uploadAttachment: "上传附件",
|
25036
25044
|
remoteAttachment: "远程地址",
|
25037
|
-
|
25038
|
-
|
25039
|
-
|
25045
|
+
attachmentNamePlaceholder: "请输入附件名称",
|
25046
|
+
attachmentUrlPlaceholder: "请输入附件地址",
|
25047
|
+
attachmentDownloadTitle: "点击下载附件",
|
25048
|
+
attachmentDefaultName: "附件"
|
25040
25049
|
};
|
25041
25050
|
const trans = (locale) => {
|
25042
25051
|
return (key) => {
|
@@ -25053,7 +25062,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25053
25062
|
},
|
25054
25063
|
__name: "editify",
|
25055
25064
|
props: EditifyProps,
|
25056
|
-
emits: ["update:modelValue", "focus", "blur", "change", "keydown", "insertparagraph", "rangeupdate", "updateview"],
|
25065
|
+
emits: ["update:modelValue", "focus", "blur", "change", "keydown", "keyup", "insertparagraph", "rangeupdate", "updateview"],
|
25057
25066
|
setup(__props, { expose: __expose, emit: __emit }) {
|
25058
25067
|
const instance = getCurrentInstance();
|
25059
25068
|
const props = __props;
|
@@ -25283,6 +25292,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25283
25292
|
editor.value.on("change", handleEditorChange);
|
25284
25293
|
editor.value.on("focus", handleEditorFocus);
|
25285
25294
|
editor.value.on("blur", handleEditorBlur);
|
25295
|
+
editor.value.on("keydown", handleEditorKeydown);
|
25296
|
+
editor.value.on("keyup", handleEditorKeyup);
|
25286
25297
|
editor.value.on("insertParagraph", handleInsertParagraph);
|
25287
25298
|
editor.value.on("rangeUpdate", handleRangeUpdate);
|
25288
25299
|
editor.value.on("deleteInStart", handleDeleteInStart);
|
@@ -25475,7 +25486,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25475
25486
|
}
|
25476
25487
|
return ele;
|
25477
25488
|
};
|
25478
|
-
const handleEditorKeydown = (e) => {
|
25489
|
+
const handleEditorKeydown = (val, e) => {
|
25479
25490
|
if (props.disabled) {
|
25480
25491
|
return;
|
25481
25492
|
}
|
@@ -25486,7 +25497,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25486
25497
|
editor.value.domRender();
|
25487
25498
|
editor.value.rangeRender();
|
25488
25499
|
}
|
25489
|
-
emits("keydown", e);
|
25500
|
+
emits("keydown", val, e);
|
25501
|
+
};
|
25502
|
+
const handleEditorKeyup = (val, e) => {
|
25503
|
+
if (props.disabled) {
|
25504
|
+
return;
|
25505
|
+
}
|
25506
|
+
emits("keyup", val, e);
|
25490
25507
|
};
|
25491
25508
|
const handleEditorClick = (e) => {
|
25492
25509
|
if (props.disabled || isSourceView.value) {
|
@@ -25551,7 +25568,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25551
25568
|
};
|
25552
25569
|
const handleInsertParagraph = (element2, previousElement) => {
|
25553
25570
|
if (!element2.isEqual(previousElement)) {
|
25554
|
-
if (previousElement.isOnlyHasBreak() && element2.isOnlyHasBreak()) {
|
25571
|
+
if (previousElement.isBlock() && element2.isBlock() && previousElement.isOnlyHasBreak() && element2.isOnlyHasBreak()) {
|
25555
25572
|
if (previousElement.parsedom != AlexElement.BLOCK_NODE) {
|
25556
25573
|
elementToParagraph(previousElement);
|
25557
25574
|
editor.value.range.anchor.moveToStart(previousElement);
|
@@ -25757,7 +25774,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25757
25774
|
ref_key: "contentRef",
|
25758
25775
|
ref: contentRef,
|
25759
25776
|
class: normalizeClass(["editify-content", { "editify-placeholder": showPlaceholder.value, "editify-disabled": _ctx.disabled }]),
|
25760
|
-
onKeydown: handleEditorKeydown,
|
25761
25777
|
onClick: handleEditorClick,
|
25762
25778
|
onCompositionstart: _cache[0] || (_cache[0] = ($event) => isInputChinese.value = true),
|
25763
25779
|
onCompositionend: _cache[1] || (_cache[1] = ($event) => isInputChinese.value = false),
|
@@ -25792,7 +25808,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
25792
25808
|
};
|
25793
25809
|
}
|
25794
25810
|
});
|
25795
|
-
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
25811
|
+
const Editify = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3b2e5bbc"]]);
|
25796
25812
|
const InsertAttachmentProps = {
|
25797
25813
|
//主题色
|
25798
25814
|
color: {
|
@@ -25842,11 +25858,13 @@ const _hoisted_3 = {
|
|
25842
25858
|
class: "editify-attachment-remote"
|
25843
25859
|
};
|
25844
25860
|
const _hoisted_4 = ["placeholder"];
|
25845
|
-
const _hoisted_5 =
|
25861
|
+
const _hoisted_5 = ["placeholder"];
|
25862
|
+
const _hoisted_6 = {
|
25846
25863
|
key: 1,
|
25847
25864
|
class: "editify-attachment-upload"
|
25848
25865
|
};
|
25849
|
-
const
|
25866
|
+
const _hoisted_7 = ["placeholder"];
|
25867
|
+
const _hoisted_8 = ["multiple", "accept"];
|
25850
25868
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
25851
25869
|
...{
|
25852
25870
|
name: "InsertAttachment"
|
@@ -25859,7 +25877,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25859
25877
|
const emits = __emit;
|
25860
25878
|
const $editTrans = inject("$editTrans");
|
25861
25879
|
const current = ref("upload");
|
25862
|
-
const
|
25880
|
+
const attachmentName = ref("");
|
25881
|
+
const attachmentUrl = ref("");
|
25882
|
+
const fileInputRef = ref(null);
|
25863
25883
|
const activeStyle = computed(() => {
|
25864
25884
|
return (name) => {
|
25865
25885
|
if (current.value == name) {
|
@@ -25870,47 +25890,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25870
25890
|
return {};
|
25871
25891
|
};
|
25872
25892
|
});
|
25873
|
-
const acceptValue = computed(() => {
|
25874
|
-
if (props.accept === "rar") {
|
25875
|
-
return "application/x-rar-compressed";
|
25876
|
-
}
|
25877
|
-
if (props.accept === "zip") {
|
25878
|
-
return "application/x-zip-compressed";
|
25879
|
-
}
|
25880
|
-
if (props.accept === "txt") {
|
25881
|
-
return "text/plain";
|
25882
|
-
}
|
25883
|
-
if (props.accept === "image") {
|
25884
|
-
return "image/*";
|
25885
|
-
}
|
25886
|
-
if (props.accept === "video") {
|
25887
|
-
return "video/*";
|
25888
|
-
}
|
25889
|
-
if (props.accept === "audio") {
|
25890
|
-
return "aduio/*";
|
25891
|
-
}
|
25892
|
-
if (props.accept === "html") {
|
25893
|
-
return "text/html";
|
25894
|
-
}
|
25895
|
-
if (props.accept === "doc") {
|
25896
|
-
return "application/msword";
|
25897
|
-
}
|
25898
|
-
if (props.accept === "xml") {
|
25899
|
-
return "text/xml";
|
25900
|
-
}
|
25901
|
-
if (props.accept === "js") {
|
25902
|
-
return "text/javascript";
|
25903
|
-
}
|
25904
|
-
if (props.accept === "json") {
|
25905
|
-
return "application/json";
|
25906
|
-
}
|
25907
|
-
if (props.accept === "ppt") {
|
25908
|
-
return "application/vnd.ms-powerpoint";
|
25909
|
-
}
|
25910
|
-
if (props.accept === "pdf") {
|
25911
|
-
return "application/pdf";
|
25912
|
-
}
|
25913
|
-
});
|
25914
25893
|
const getSuffix = (file2) => {
|
25915
25894
|
const index = file2.name.lastIndexOf(".");
|
25916
25895
|
if (index <= 0) {
|
@@ -25927,11 +25906,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25927
25906
|
e.currentTarget.style.borderColor = "";
|
25928
25907
|
};
|
25929
25908
|
const insertRemoteAttachment = () => {
|
25930
|
-
emits("insert",
|
25909
|
+
emits("insert", attachmentName.value, attachmentUrl.value);
|
25931
25910
|
};
|
25932
|
-
const
|
25933
|
-
|
25934
|
-
|
25911
|
+
const triggerFileInput = () => {
|
25912
|
+
fileInputRef.value.click();
|
25913
|
+
};
|
25914
|
+
const selectFile = async () => {
|
25915
|
+
const files = fileInputRef.value.files;
|
25935
25916
|
if (!files || !files.length) {
|
25936
25917
|
return;
|
25937
25918
|
}
|
@@ -25973,10 +25954,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25973
25954
|
}
|
25974
25955
|
}
|
25975
25956
|
attachments.forEach((url) => {
|
25976
|
-
emits("insert", url);
|
25957
|
+
emits("insert", attachmentName.value, url);
|
25977
25958
|
});
|
25978
25959
|
}
|
25979
|
-
|
25960
|
+
fileInputRef.value.value = "";
|
25980
25961
|
};
|
25981
25962
|
watch(
|
25982
25963
|
() => current.value,
|
@@ -26004,14 +25985,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
26004
25985
|
]),
|
26005
25986
|
current.value == "remote" ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
26006
25987
|
withDirectives(createElementVNode("input", {
|
26007
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) =>
|
26008
|
-
placeholder: unref($editTrans)("
|
25988
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => attachmentName.value = $event),
|
25989
|
+
placeholder: unref($editTrans)("attachmentNamePlaceholder"),
|
26009
25990
|
onBlur: handleInputBlur,
|
26010
|
-
onFocus: handleInputFocus
|
25991
|
+
onFocus: handleInputFocus,
|
25992
|
+
type: "text"
|
26011
25993
|
}, null, 40, _hoisted_4), [
|
26012
25994
|
[
|
26013
25995
|
vModelText,
|
26014
|
-
|
25996
|
+
attachmentName.value,
|
25997
|
+
void 0,
|
25998
|
+
{ trim: true }
|
25999
|
+
]
|
26000
|
+
]),
|
26001
|
+
withDirectives(createElementVNode("input", {
|
26002
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => attachmentUrl.value = $event),
|
26003
|
+
placeholder: unref($editTrans)("attachmentUrlPlaceholder"),
|
26004
|
+
onBlur: handleInputBlur,
|
26005
|
+
onFocus: handleInputFocus,
|
26006
|
+
type: "url"
|
26007
|
+
}, null, 40, _hoisted_5), [
|
26008
|
+
[
|
26009
|
+
vModelText,
|
26010
|
+
attachmentUrl.value,
|
26015
26011
|
void 0,
|
26016
26012
|
{ trim: true }
|
26017
26013
|
]
|
@@ -26022,20 +26018,41 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
26022
26018
|
}, [
|
26023
26019
|
createElementVNode("span", { onClick: insertRemoteAttachment }, toDisplayString(unref($editTrans)("insert")), 1)
|
26024
26020
|
], 4)
|
26025
|
-
])) : (openBlock(), createElementBlock("div",
|
26026
|
-
|
26027
|
-
|
26028
|
-
|
26029
|
-
|
26030
|
-
|
26031
|
-
type: "
|
26032
|
-
}, null, 40,
|
26021
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_6, [
|
26022
|
+
withDirectives(createElementVNode("input", {
|
26023
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => attachmentName.value = $event),
|
26024
|
+
placeholder: unref($editTrans)("attachmentNamePlaceholder"),
|
26025
|
+
onBlur: handleInputBlur,
|
26026
|
+
onFocus: handleInputFocus,
|
26027
|
+
type: "text"
|
26028
|
+
}, null, 40, _hoisted_7), [
|
26029
|
+
[
|
26030
|
+
vModelText,
|
26031
|
+
attachmentName.value,
|
26032
|
+
void 0,
|
26033
|
+
{ trim: true }
|
26034
|
+
]
|
26035
|
+
]),
|
26036
|
+
createElementVNode("div", {
|
26037
|
+
class: "editify-attachment-btn",
|
26038
|
+
onClick: triggerFileInput
|
26039
|
+
}, [
|
26040
|
+
createVNode(Icon, { value: "upload" }),
|
26041
|
+
createElementVNode("input", {
|
26042
|
+
ref_key: "fileInputRef",
|
26043
|
+
ref: fileInputRef,
|
26044
|
+
multiple: _ctx.multiple,
|
26045
|
+
accept: _ctx.accept,
|
26046
|
+
onChange: selectFile,
|
26047
|
+
type: "file"
|
26048
|
+
}, null, 40, _hoisted_8)
|
26049
|
+
])
|
26033
26050
|
]))
|
26034
26051
|
]);
|
26035
26052
|
};
|
26036
26053
|
}
|
26037
26054
|
});
|
26038
|
-
const InsertAttachment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
26055
|
+
const InsertAttachment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f995f4bd"]]);
|
26039
26056
|
const attachment = (options) => {
|
26040
26057
|
if (!common.isObject(options)) {
|
26041
26058
|
options = {};
|
@@ -26053,6 +26070,7 @@ const attachment = (options) => {
|
|
26053
26070
|
title: options.title || editTrans("insertAttachment"),
|
26054
26071
|
leftBorder: options.leftBorder,
|
26055
26072
|
rightBorder: options.rightBorder,
|
26073
|
+
hideScroll: true,
|
26056
26074
|
disabled: editifyInstance.exposed.editor.value ? hasPreInRange(editifyInstance.exposed.editor.value, editifyInstance.exposed.dataRangeCaches.value) : false,
|
26057
26075
|
default: () => h(Icon, { value: "attachment" }),
|
26058
26076
|
layer: (_name, btnInstance) => h(InsertAttachment, {
|
@@ -26067,24 +26085,26 @@ const attachment = (options) => {
|
|
26067
26085
|
onChange: () => {
|
26068
26086
|
btnInstance.$refs.layerRef.setPosition();
|
26069
26087
|
},
|
26070
|
-
onInsert: (url) => {
|
26071
|
-
|
26072
|
-
|
26073
|
-
|
26074
|
-
|
26075
|
-
|
26076
|
-
|
26077
|
-
|
26078
|
-
|
26079
|
-
|
26080
|
-
|
26081
|
-
|
26082
|
-
|
26083
|
-
|
26084
|
-
|
26085
|
-
|
26086
|
-
|
26087
|
-
|
26088
|
+
onInsert: (name, url) => {
|
26089
|
+
if (url) {
|
26090
|
+
const marks = {
|
26091
|
+
"data-attachment": url,
|
26092
|
+
"data-attachment-name": name || editTrans("attachmentDefaultName"),
|
26093
|
+
contenteditable: "false"
|
26094
|
+
};
|
26095
|
+
const attachmentElement = new AlexElement("closed", "span", marks, null, null);
|
26096
|
+
const editor = editifyInstance.exposed.editor.value;
|
26097
|
+
editor.insertElement(attachmentElement);
|
26098
|
+
const beforeText = AlexElement.getSpaceElement();
|
26099
|
+
const afterText = AlexElement.getSpaceElement();
|
26100
|
+
editor.addElementAfter(afterText, attachmentElement);
|
26101
|
+
editor.addElementBefore(beforeText, attachmentElement);
|
26102
|
+
editor.range.anchor.moveToStart(afterText);
|
26103
|
+
editor.range.focus.moveToStart(afterText);
|
26104
|
+
editor.formatElementStack();
|
26105
|
+
editor.domRender();
|
26106
|
+
editor.rangeRender();
|
26107
|
+
}
|
26088
26108
|
btnInstance.show = false;
|
26089
26109
|
}
|
26090
26110
|
})
|
@@ -26097,11 +26117,16 @@ const attachment = (options) => {
|
|
26097
26117
|
AlexElement.flatElements(editor.stack).forEach((el) => {
|
26098
26118
|
if (el.parsedom == "span" && el.hasMarks() && el.marks["data-attachment"]) {
|
26099
26119
|
event.off(el.elm, "click");
|
26100
|
-
event.on(el.elm, "click", () => {
|
26120
|
+
event.on(el.elm, "click", async () => {
|
26101
26121
|
const url = el.marks["data-attachment"];
|
26122
|
+
const res = await fetch(url, {
|
26123
|
+
method: "GET"
|
26124
|
+
});
|
26125
|
+
const blob = await res.blob();
|
26102
26126
|
const a = document.createElement("a");
|
26103
|
-
a.setAttribute("
|
26104
|
-
a.setAttribute("
|
26127
|
+
a.setAttribute("target", "_blank");
|
26128
|
+
a.setAttribute("href", URL.createObjectURL(blob));
|
26129
|
+
a.setAttribute("download", el.marks["data-attachment-name"]);
|
26105
26130
|
a.click();
|
26106
26131
|
});
|
26107
26132
|
}
|
@@ -26122,7 +26147,7 @@ const attachment = (options) => {
|
|
26122
26147
|
//自定义渲染规范
|
26123
26148
|
renderRule: (el) => {
|
26124
26149
|
if (el.type == "closed" && el.hasMarks() && el.marks["data-attachment"]) {
|
26125
|
-
el.marks["title"] = editTrans("
|
26150
|
+
el.marks["title"] = editTrans("attachmentDownloadTitle");
|
26126
26151
|
const editor = editifyInstance.exposed.editor.value;
|
26127
26152
|
const previousElement = editor.getPreviousElement(el);
|
26128
26153
|
const newTextElement = editor.getNextElement(el);
|
@@ -26143,7 +26168,8 @@ const attachment = (options) => {
|
|
26143
26168
|
const install = (app) => {
|
26144
26169
|
app.component(Editify.name, Editify);
|
26145
26170
|
};
|
26146
|
-
const version = "0.1.
|
26171
|
+
const version = "0.1.27";
|
26172
|
+
console.log(`%c vue-editify %c v${version} `, "padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060; font-weight: bold;", "padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;");
|
26147
26173
|
export {
|
26148
26174
|
AlexElement,
|
26149
26175
|
Editify,
|