pxx-vue-quill 1.0.14 → 1.0.17
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/dist/vue-quill.cjs.js +43 -10
- package/dist/vue-quill.cjs.prod.js +2 -2
- package/dist/vue-quill.esm-browser.js +200 -183
- package/dist/vue-quill.esm-browser.prod.js +2 -2
- package/dist/vue-quill.esm-bundler.js +43 -10
- package/dist/vue-quill.esm-bundler.prod.js +2 -2
- package/dist/vue-quill.global.js +313 -280
- package/dist/vue-quill.global.prod.js +2 -2
- package/dist/vue-quill.snow.css +1 -3
- package/dist/vue-quill.snow.prod.css +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Copyright (c) 2025 Pxx-Team
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date: 2025-08-
|
|
10
|
+
* Date: 2025-08-25T02:25:20.932Z
|
|
11
11
|
*/
|
|
12
12
|
import Quill from 'quill';
|
|
13
13
|
export { default as Quill } from 'quill';
|
|
@@ -75,6 +75,12 @@ const QuillEditor = defineComponent({
|
|
|
75
75
|
return ['fixed-top', 'embedded'].includes(value);
|
|
76
76
|
},
|
|
77
77
|
},
|
|
78
|
+
// 传入toolbar的自定义style
|
|
79
|
+
toolbarStyle: {
|
|
80
|
+
type: Object,
|
|
81
|
+
required: false,
|
|
82
|
+
default: () => ({})
|
|
83
|
+
},
|
|
78
84
|
theme: {
|
|
79
85
|
type: String,
|
|
80
86
|
default: 'snow',
|
|
@@ -136,11 +142,6 @@ const QuillEditor = defineComponent({
|
|
|
136
142
|
let quill;
|
|
137
143
|
let options;
|
|
138
144
|
const editor = ref();
|
|
139
|
-
const editorWrapStyle = computed(() => {
|
|
140
|
-
return {
|
|
141
|
-
minHeight: `${props.minHeight}px`,
|
|
142
|
-
};
|
|
143
|
-
});
|
|
144
145
|
const editorWrapClass = computed(() => {
|
|
145
146
|
return {
|
|
146
147
|
'quill-editor-container': true,
|
|
@@ -149,6 +150,37 @@ const QuillEditor = defineComponent({
|
|
|
149
150
|
'embedded': props.toolbarMode === 'embedded',
|
|
150
151
|
};
|
|
151
152
|
});
|
|
153
|
+
// 监听 minHeight 变化,同步设置编辑器高度
|
|
154
|
+
const updateEditorHeight = () => {
|
|
155
|
+
if (quill && editor.value) {
|
|
156
|
+
const editorElement = editor.value.querySelector('.ql-editor');
|
|
157
|
+
if (editorElement) {
|
|
158
|
+
editorElement.style.minHeight = `${props.minHeight}px`;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
// 监听 minHeight 变化
|
|
163
|
+
watch(() => props.minHeight, () => {
|
|
164
|
+
nextTick(() => {
|
|
165
|
+
updateEditorHeight();
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
// 应用自定义toolbar样式
|
|
169
|
+
const applyToolbarStyle = () => {
|
|
170
|
+
var _a;
|
|
171
|
+
if (quill && props.toolbarStyle) {
|
|
172
|
+
const toolbar = (_a = quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
|
|
173
|
+
if (toolbar) {
|
|
174
|
+
Object.assign(toolbar.style, props.toolbarStyle);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
// 监听 toolbarStyle 变化
|
|
179
|
+
watch(() => props.toolbarStyle, () => {
|
|
180
|
+
nextTick(() => {
|
|
181
|
+
applyToolbarStyle();
|
|
182
|
+
});
|
|
183
|
+
});
|
|
152
184
|
// Register Module if not already registered
|
|
153
185
|
const registerModule = (moduleName, module) => {
|
|
154
186
|
// For Quill 1.x, we can't check if module is already registered
|
|
@@ -200,6 +232,10 @@ const QuillEditor = defineComponent({
|
|
|
200
232
|
.getModule('toolbar')) === null || _b === void 0 ? void 0 : _b.container.addEventListener('mousedown', (e) => {
|
|
201
233
|
e.preventDefault();
|
|
202
234
|
});
|
|
235
|
+
// 设置初始编辑器高度
|
|
236
|
+
updateEditorHeight();
|
|
237
|
+
// 应用初始toolbar样式
|
|
238
|
+
applyToolbarStyle();
|
|
203
239
|
// Emit ready event
|
|
204
240
|
ctx.emit('ready', quill);
|
|
205
241
|
};
|
|
@@ -223,7 +259,6 @@ const QuillEditor = defineComponent({
|
|
|
223
259
|
handlers: {
|
|
224
260
|
ocr: function () {
|
|
225
261
|
// 按钮点击逻辑
|
|
226
|
-
console.log('ocr');
|
|
227
262
|
ctx.emit('ocr');
|
|
228
263
|
},
|
|
229
264
|
math: function () {
|
|
@@ -286,7 +321,6 @@ const QuillEditor = defineComponent({
|
|
|
286
321
|
const isEditorFocus = ref();
|
|
287
322
|
const handleSelectionChange = (range, oldRange, source) => {
|
|
288
323
|
var _a;
|
|
289
|
-
// Set isEditorFocus if quill.hasFocus()
|
|
290
324
|
isEditorFocus.value = !!(quill === null || quill === void 0 ? void 0 : quill.hasFocus());
|
|
291
325
|
// 动态显示/隐藏toolbar
|
|
292
326
|
const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
|
|
@@ -422,14 +456,13 @@ const QuillEditor = defineComponent({
|
|
|
422
456
|
getText,
|
|
423
457
|
setText,
|
|
424
458
|
reinit,
|
|
425
|
-
editorWrapStyle,
|
|
426
459
|
editorWrapClass,
|
|
427
460
|
};
|
|
428
461
|
},
|
|
429
462
|
render() {
|
|
430
463
|
var _a, _b;
|
|
431
464
|
return [
|
|
432
|
-
h('div', { class: this.editorWrapClass
|
|
465
|
+
h('div', { class: this.editorWrapClass }, [
|
|
433
466
|
(_b = (_a = this.$slots).toolbar) === null || _b === void 0 ? void 0 : _b.call(_a),
|
|
434
467
|
h('div', { ref: 'editor', ...this.$attrs }),
|
|
435
468
|
]),
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Copyright (c) 2025 Pxx-Team
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date: 2025-08-
|
|
10
|
+
* Date: 2025-08-25T02:25:20.932Z
|
|
11
11
|
*/
|
|
12
|
-
import e from"quill";export{default as Quill}from"quill";import t from"quill-delta";export{default as Delta}from"quill-delta";import{defineComponent as o,onMounted as l,onBeforeUnmount as n,ref as r,computed as i,watch as a,nextTick as d,h as s}from"vue";import u from"quill-blot-formatter";const c={full:[["bold","italic","underline"],[{list:"ordered"},{list:"bullet"}],[{color:[]},{background:[]}],["image"]]},m=o({name:"QuillEditor",inheritAttrs:!1,props:{content:{type:[String,Object]},contentType:{type:String,default:"delta",validator:e=>["delta","html","text"].includes(e)},enable:{type:Boolean,default:!0},readOnly:{type:Boolean,default:!1},placeholder:{type:String,required:!1,default:"请输入内容"},minHeight:{type:Number,required:!1,default:20},needBorder:{type:Boolean,default:!1},toolbarMode:{type:String,default:"embedded",validator:e=>["fixed-top","embedded"].includes(e)},theme:{type:String,default:"snow",validator:e=>["snow","bubble",""].includes(e)},toolbar:{type:[String,Array,Object,Boolean],required:!1,validator:e=>!!e&&("string"!=typeof e||""===e||("#"===e.charAt(0)||-1!==Object.keys(c).indexOf(e)))},modules:{type:Object,required:!1,default:()=>({name:"blotFormatter",module:u})},options:{type:Object,required:!1},globalOptions:{type:Object,required:!1}},emits:["textChange","selectionChange","editorChange","update:content","focus","blur","ready","ocr","math"],setup:(o,s)=>{let u,m;l((()=>{v()})),n((()=>{u=null}));const p=r(),g=i((()=>({minHeight:`${o.minHeight}px`}))),h=i((()=>({"quill-editor-container":!0,"need-border":o.needBorder,"fixed-top":"fixed-top"===o.toolbarMode,embedded:"embedded"===o.toolbarMode}))),Q=(t,o)=>{e.register(t,o)},v=()=>{var t,l;if(!p.value)return;u=new e(p.value,m);const n=null===(t=null==u?void 0:u.getModule("toolbar"))||void 0===t?void 0:t.container;n&&(n.style.display="none");const r=e.import("ui/icons");if(r.ocr='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M3.0000245140625,2.6000244140625L5.5000243140625,2.6000244140625C5.8313951140625,2.6000244140625,6.1000242140625,2.3313953240625,6.1000242140625,2.0000244340625C6.1000242140625,1.6686535440624999,5.8313951140625,1.4000244140625,5.5000243140625,1.4000244140625L3.0000245140625,1.4000244140625Q2.3372827740625,1.4000244140625,1.8686535940625,1.8686535940625Q1.4000244140625,2.3372827740625,1.4000244140625,3.0000245140625L1.4000244140625,5.5000243140625C1.4000244140625,5.8313951140625,1.6686535440624999,6.1000242140625,2.0000244340625,6.1000242140625C2.3313953240625,6.1000242140625,2.6000244140625,5.8313951140625,2.6000244140625,5.5000243140625L2.6000244140625,3.0000245140625Q2.6000244140625,2.6000244140625,3.0000245140625,2.6000244140625ZM12.5000244140625,1.4000244140625L15.0000244140625,1.4000244140625Q15.6627664140625,1.4000244140625,16.1313954140625,1.8686538940625Q16.6000244140625,2.3372834940625,16.6000244140625,3.0000245140625L16.6000244140625,5.5000243140625C16.6000244140625,5.6591539140625,16.5368104140625,5.8117661140625,16.424288414062502,5.9242883140625C16.3117674140625,6.0368099140625,16.1591544140625,6.1000242140625,16.0000244140625,6.1000242140625C15.6686534140625,6.1000242140625,15.4000244140625,5.8313951140625,15.4000244140625,5.5000243140625L15.4000234140625,3.0000245140625Q15.4000234140625,2.6000244140625,15.0000244140625,2.6000244140625L12.5000244140625,2.6000244140625C12.1686534140625,2.6000244140625,11.9000244140625,2.3313953240625,11.9000244140625,2.0000244340625C11.9000244140625,1.6686535440624999,12.1686534140625,1.4000244140625,12.5000244140625,1.4000244140625ZM8.6239776140625,6.4719930140625C8.5439777140625,6.1512432140625,8.3999777140625,5.7421179140625,8.2479777140625,5.4212432140625L9.4959774140625,5.052368214062501C9.6959782140625,5.4293680140625,9.9199772140625,5.9346180140625,9.9999771140625,6.2714929140625L9.3519778140625,6.4719930140625L12.7119784140625,6.4719930140625L12.7119784140625,7.6079931140625L11.5039774140625,7.6079931140625C11.1279774140625,8.6968679140625,10.6159782140625,9.6014929140625,9.9599781140625,10.3461180140625C10.7599773140625,10.9224930140625,11.7279774140625,11.3468685140625,12.8879774140625,11.6029934140625C12.6239774140625,11.8592434140625,12.2799774140625,12.3716184140625,12.1039784140625,12.6918684140625C10.8719778140625,12.3716184140625,9.8719778140625,11.8752434140625,9.0479779140625,11.2107429140625C8.175977714062501,11.8992434140625,7.1199779140625,12.4036184140625,5.8559775140625,12.7558684140625C5.7279777140625,12.4757434140625,5.3759775140625,11.9312434140625,5.1519775140625,11.6591184140625C6.3759775140625,11.3868685140625,7.3839779140625,10.9706182140625,8.1839781140625,10.3781185140625C7.5199776140625,9.6094932140625,7.0079775140625,8.6888685140625,6.5919776140625,7.6079931140625L5.3279776140625,7.6079931140625L5.3279776140625,6.4719930140625L8.6239776140625,6.4719930140625ZM7.7999778140625,7.6079931140625C8.1119776140625,8.344617814062499,8.5359778140625,9.0011186140625,9.0719776140625,9.5694933140625C9.5439777140625,9.0251179140625,9.9199772140625,8.3766184140625,10.1919784140625,7.6079931140625L7.7999778140625,7.6079931140625ZM2.6000244140625,12.5000244140625L2.6000244140625,15.0000244140625Q2.6000244140625,15.4000234140625,3.0000245140625,15.4000234140625L5.5000243140625,15.4000234140625C5.8313951140625,15.4000244140625,6.1000242140625,15.6686534140625,6.1000242140625,16.0000244140625C6.1000242140625,16.3313964140625,5.8313951140625,16.6000254140625,5.5000243140625,16.6000254140625L5.4989548140625,16.6000244140625L3.0000245140625,16.6000244140625Q2.3372834940625,16.6000244140625,1.8686538940625,16.1313954140625Q1.4000244140625,15.6627664140625,1.4000244140625,15.0000244140625L1.4000244140625,12.5000244140625C1.4000244140625,12.1686534140625,1.6686535440624999,11.9000244140625,2.0000244340625,11.9000244140625C2.3313953240625,11.9000244140625,2.6000244140625,12.1686534140625,2.6000244140625,12.5000244140625ZM16.6000244140625,12.5010944140625L16.6000244140625,15.0000244140625Q16.6000244140625,15.6627654140625,16.1313954140625,16.1313954140625Q15.6627654140625,16.6000244140625,15.0000244140625,16.6000244140625L12.5000244140625,16.6000244140625C12.3408944140625,16.6000244140625,12.1882824140625,16.5368104140625,12.0757594140625,16.424288414062502C11.9632384140625,16.3117664140625,11.9000244140625,16.1591544140625,11.9000244140625,16.0000244140625C11.9000244140625,15.6686534140625,12.1686534140625,15.4000244140625,12.5000244140625,15.4000244140625L15.0000244140625,15.4000234140625Q15.4000234140625,15.4000234140625,15.4000234140625,15.0000244140625L15.4000234140625,12.5000244140625C15.4000244140625,12.1686534140625,15.6686534140625,11.9000244140625,16.0000244140625,11.9000244140625C16.3313964140625,11.9000244140625,16.6000254140625,12.1686534140625,16.6000254140625,12.5000244140625L16.6000244140625,12.5010944140625Z" fill-rule="evenodd" fill="#333333" fill-opacity="1"/></g></g></svg>',r.math='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><defs><clipPath id="master_svg0_6759_139354"><rect x="0" y="0" width="18" height="18" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_6759_139354)"><g><path d="M15.423694,15.049834L15.424264,15.049264Q15.508656,14.964872,15.554328,14.85461Q15.6,14.744348,15.6,14.625Q15.6,14.565905,15.58847,14.507944Q15.576942,14.449986,15.554328,14.395388Q15.531713,14.340792,15.498882,14.291656Q15.466051,14.242521,15.424265,14.200735Q15.382479,14.158949,15.333343,14.126117Q15.284206,14.093286,15.229609,14.070671Q15.175013,14.048058,15.117053,14.036528Q15.059094,14.025,15,14.025Q14.880652,14.025,14.77039,14.070672Q14.660128,14.116344,14.575736,14.200736L13.626472,15.150001L4.4485275,15.150001L10.174264,9.424264Q10.2160501,9.3824773,10.2488813,9.3333416Q10.281712500000001,9.2842059,10.304327,9.229609499999999Q10.3269415,9.175012599999999,10.3384705,9.117054Q10.349999,9.0590944,10.349999,8.999999500000001Q10.349999,8.9409046,10.3384705,8.8829451Q10.3269415,8.8249855,10.304327,8.7703896Q10.281712500000001,8.715793099999999,10.2488813,8.6666574Q10.2160501,8.6175222,10.174264,8.575736L4.4485282,2.85000002L13.626472,2.85000002L14.575395,3.7989223L14.575736,3.7992642Q14.660127,3.8836554999999997,14.77039,3.9293277Q14.880651,3.9749999000000003,15,3.975Q15.059094,3.9749999000000003,15.117054,3.9634712Q15.175013,3.9519422,15.229609,3.9293275999999997Q15.284206,3.906713,15.333342,3.8738817Q15.382478,3.8410504000000003,15.424264,3.7992641000000003Q15.466051,3.7574776,15.498882,3.7083421000000003Q15.531713,3.6592064,15.554328,3.60461Q15.576942,3.5500134,15.588472,3.4920541Q15.6,3.4340948,15.6,3.375Q15.6,3.2556524,15.554328,3.1453898000000002Q15.508656,3.03512704,15.424264,2.9507357499999998L15.423856,2.9503274L14.299264,1.82573593Q14.214872,1.7413445699999999,14.10461,1.69567227Q13.994347,1.64999998,13.875,1.64999998L3,1.64999998Q2.88065257,1.64999998,2.77038994,1.69567227Q2.66012731,1.7413445699999999,2.57573593,1.82573593Q2.53394958,1.8675223,2.50111824,1.91665789Q2.46828693,1.96579346,2.44567233,2.02038996Q2.42305773,2.07498647,2.41152894,2.13294582Q2.4000000999999997,2.190905161,2.40000004,2.25Q2.4000000999999997,2.309094839,2.41152889,2.36705418Q2.42305773,2.42501353,2.44567233,2.47961004Q2.46828693,2.53420654,2.50111827,2.58334213Q2.53394958,2.6324777,2.57573593,2.67426407L8.9014721,9L2.57573593,15.325736Q2.49134457,15.410126,2.44567227,15.520389Q2.39999998,15.630651,2.39999998,15.75Q2.39999998,15.809094,2.41152883,15.867053Q2.42305768,15.925013,2.44567233,15.979609Q2.46828693,16.034204000000003,2.50111827,16.08334Q2.53394958,16.132476,2.57573593,16.174263Q2.6175223,16.216048999999998,2.66665787,16.24888Q2.71579343,16.281712,2.77038994,16.304327Q2.82498646,16.326940999999998,2.88294581,16.33847Q2.940905157,16.349998,3,16.349999L13.875,16.349999Q13.994347,16.349998,14.104609,16.304326Q14.214872,16.258654,14.299264,16.174264L15.423694,15.049834Z" fill-rule="evenodd" fill="#333333" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>',m=f(),o.modules)if(Array.isArray(o.modules))for(const e of o.modules)Q(`modules/${e.name}`,e.module);else Q(`modules/${o.modules.name}`,o.modules.module);u=new e(p.value,m),T(o.content),u.on("text-change",C),u.on("selection-change",w),u.on("editor-change",M),"bubble"!==o.theme&&p.value.classList.remove("ql-bubble"),"snow"!==o.theme&&p.value.classList.remove("ql-snow"),null===(l=u.getModule("toolbar"))||void 0===l||l.container.addEventListener("mousedown",(e=>{e.preventDefault()})),s.emit("ready",u)},f=()=>{const e={};if(""!==o.theme&&(e.theme=o.theme),o.readOnly&&(e.readOnly=o.readOnly),o.placeholder&&(e.placeholder=o.placeholder),o.toolbar&&""!==o.toolbar&&(e.modules={toolbar:{container:[...c.full,["ocr"],[{math:!0}]],handlers:{ocr:function(){console.log("ocr"),s.emit("ocr")},math:function(){s.emit("math")}}}}),o.modules){const t=(()=>{var e,t;const l={};if(Array.isArray(o.modules))for(const n of o.modules)l[n.name]=null!==(e=n.options)&&void 0!==e?e:{};else l[o.modules.name]=null!==(t=o.modules.options)&&void 0!==t?t:{};return l})();e.modules=Object.assign({},e.modules,t)}return Object.assign({},o.globalOptions,o.options,e)},b=e=>"object"==typeof e&&e?e.slice():e;let y;const L=e=>{if(typeof y==typeof e){if(e===y)return!0;if("object"==typeof e&&e&&"object"==typeof y&&y)return t=y.diff(e),!Object.values(t.ops).some((e=>!e.retain||1!==Object.keys(e).length))}var t;return!1},C=(e,t,l)=>{y=b(O()),L(o.content)||s.emit("update:content",y),s.emit("textChange",{delta:e,oldContents:t,source:l})},x=r(),w=(e,t,o)=>{var l;x.value=!!(null==u?void 0:u.hasFocus());const n=null===(l=null==u?void 0:u.getModule("toolbar"))||void 0===l?void 0:l.container;n&&(n.style.display=x.value?"flex":"none"),s.emit("selectionChange",{range:e,oldRange:t,source:o})};a(x,(e=>{s.emit(e?"focus":"blur",p)}));const M=(...e)=>{"text-change"===e[0]&&s.emit("editorChange",{name:e[0],delta:e[1],oldContents:e[2],source:e[3]}),"selection-change"===e[0]&&s.emit("editorChange",{name:e[0],range:e[1],oldRange:e[2],source:e[3]})},O=(e,t)=>"html"===o.contentType?S():"text"===o.contentType?q(e,t):null==u?void 0:u.getContents(e,t),T=(e,l="api")=>{const n=e||("delta"===o.contentType?new t:"");"html"===o.contentType?k(n):"text"===o.contentType?j(n,l):null==u||u.setContents(n,l),y=b(n)},q=(e,t)=>{var o;return null!==(o=null==u?void 0:u.getText(e,t))&&void 0!==o?o:""},j=(e,t="api")=>{null==u||u.setText(e,t)},S=()=>{var e;return null!==(e=null==u?void 0:u.root.innerHTML)&&void 0!==e?e:""},k=e=>{u&&(u.root.innerHTML=e)};return a((()=>o.content),(e=>{if(!u||!e||L(e))return;const t=u.getSelection();t&&d((()=>null==u?void 0:u.setSelection(t))),T(e)}),{deep:!0}),a((()=>o.enable),(e=>{u&&u.enable(e)})),{editor:p,getEditor:()=>p.value,getToolbar:()=>{var e;return null===(e=null==u?void 0:u.getModule("toolbar"))||void 0===e?void 0:e.container},getQuill:()=>{if(u)return u;throw'The quill editor hasn\'t been instantiated yet,\n make sure to call this method when the editor ready\n or use v-on:ready="onReady(quill)" event instead.'},getContents:O,setContents:T,getHTML:S,setHTML:k,pasteHTML:(e,t="api")=>{const o=null==u?void 0:u.clipboard.convert(e);o&&(null==u||u.setContents(o,t))},focus:()=>{null==u||u.focus()},getText:q,setText:j,reinit:()=>{d((()=>{var e;!s.slots.toolbar&&u&&(null===(e=u.getModule("toolbar"))||void 0===e||e.container.remove()),v()}))},editorWrapStyle:g,editorWrapClass:h}},render(){var e,t;return[s("div",{class:this.editorWrapClass,style:this.editorWrapStyle},[null===(t=(e=this.$slots).toolbar)||void 0===t?void 0:t.call(e),s("div",{ref:"editor",...this.$attrs})])]}});export{m as QuillEditor};
|
|
12
|
+
import e from"quill";export{default as Quill}from"quill";import t from"quill-delta";export{default as Delta}from"quill-delta";import{defineComponent as o,onMounted as l,onBeforeUnmount as n,ref as r,computed as i,watch as a,nextTick as d,h as s}from"vue";import u from"quill-blot-formatter";const c={full:[["bold","italic","underline"],[{list:"ordered"},{list:"bullet"}],[{color:[]},{background:[]}],["image"]]},m=o({name:"QuillEditor",inheritAttrs:!1,props:{content:{type:[String,Object]},contentType:{type:String,default:"delta",validator:e=>["delta","html","text"].includes(e)},enable:{type:Boolean,default:!0},readOnly:{type:Boolean,default:!1},placeholder:{type:String,required:!1,default:"请输入内容"},minHeight:{type:Number,required:!1,default:20},needBorder:{type:Boolean,default:!1},toolbarMode:{type:String,default:"embedded",validator:e=>["fixed-top","embedded"].includes(e)},toolbarStyle:{type:Object,required:!1,default:()=>({})},theme:{type:String,default:"snow",validator:e=>["snow","bubble",""].includes(e)},toolbar:{type:[String,Array,Object,Boolean],required:!1,validator:e=>!!e&&("string"!=typeof e||""===e||("#"===e.charAt(0)||-1!==Object.keys(c).indexOf(e)))},modules:{type:Object,required:!1,default:()=>({name:"blotFormatter",module:u})},options:{type:Object,required:!1},globalOptions:{type:Object,required:!1}},emits:["textChange","selectionChange","editorChange","update:content","focus","blur","ready","ocr","math"],setup:(o,s)=>{let u,m;l((()=>{f()})),n((()=>{u=null}));const p=r(),g=i((()=>({"quill-editor-container":!0,"need-border":o.needBorder,"fixed-top":"fixed-top"===o.toolbarMode,embedded:"embedded"===o.toolbarMode}))),v=()=>{if(u&&p.value){const e=p.value.querySelector(".ql-editor");e&&(e.style.minHeight=`${o.minHeight}px`)}};a((()=>o.minHeight),(()=>{d((()=>{v()}))}));const h=()=>{var e;if(u&&o.toolbarStyle){const t=null===(e=u.getModule("toolbar"))||void 0===e?void 0:e.container;t&&Object.assign(t.style,o.toolbarStyle)}};a((()=>o.toolbarStyle),(()=>{d((()=>{h()}))}));const Q=(t,o)=>{e.register(t,o)},f=()=>{var t,l;if(!p.value)return;u=new e(p.value,m);const n=null===(t=null==u?void 0:u.getModule("toolbar"))||void 0===t?void 0:t.container;n&&(n.style.display="none");const r=e.import("ui/icons");if(r.ocr='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M3.0000245140625,2.6000244140625L5.5000243140625,2.6000244140625C5.8313951140625,2.6000244140625,6.1000242140625,2.3313953240625,6.1000242140625,2.0000244340625C6.1000242140625,1.6686535440624999,5.8313951140625,1.4000244140625,5.5000243140625,1.4000244140625L3.0000245140625,1.4000244140625Q2.3372827740625,1.4000244140625,1.8686535940625,1.8686535940625Q1.4000244140625,2.3372827740625,1.4000244140625,3.0000245140625L1.4000244140625,5.5000243140625C1.4000244140625,5.8313951140625,1.6686535440624999,6.1000242140625,2.0000244340625,6.1000242140625C2.3313953240625,6.1000242140625,2.6000244140625,5.8313951140625,2.6000244140625,5.5000243140625L2.6000244140625,3.0000245140625Q2.6000244140625,2.6000244140625,3.0000245140625,2.6000244140625ZM12.5000244140625,1.4000244140625L15.0000244140625,1.4000244140625Q15.6627664140625,1.4000244140625,16.1313954140625,1.8686538940625Q16.6000244140625,2.3372834940625,16.6000244140625,3.0000245140625L16.6000244140625,5.5000243140625C16.6000244140625,5.6591539140625,16.5368104140625,5.8117661140625,16.424288414062502,5.9242883140625C16.3117674140625,6.0368099140625,16.1591544140625,6.1000242140625,16.0000244140625,6.1000242140625C15.6686534140625,6.1000242140625,15.4000244140625,5.8313951140625,15.4000244140625,5.5000243140625L15.4000234140625,3.0000245140625Q15.4000234140625,2.6000244140625,15.0000244140625,2.6000244140625L12.5000244140625,2.6000244140625C12.1686534140625,2.6000244140625,11.9000244140625,2.3313953240625,11.9000244140625,2.0000244340625C11.9000244140625,1.6686535440624999,12.1686534140625,1.4000244140625,12.5000244140625,1.4000244140625ZM8.6239776140625,6.4719930140625C8.5439777140625,6.1512432140625,8.3999777140625,5.7421179140625,8.2479777140625,5.4212432140625L9.4959774140625,5.052368214062501C9.6959782140625,5.4293680140625,9.9199772140625,5.9346180140625,9.9999771140625,6.2714929140625L9.3519778140625,6.4719930140625L12.7119784140625,6.4719930140625L12.7119784140625,7.6079931140625L11.5039774140625,7.6079931140625C11.1279774140625,8.6968679140625,10.6159782140625,9.6014929140625,9.9599781140625,10.3461180140625C10.7599773140625,10.9224930140625,11.7279774140625,11.3468685140625,12.8879774140625,11.6029934140625C12.6239774140625,11.8592434140625,12.2799774140625,12.3716184140625,12.1039784140625,12.6918684140625C10.8719778140625,12.3716184140625,9.8719778140625,11.8752434140625,9.0479779140625,11.2107429140625C8.175977714062501,11.8992434140625,7.1199779140625,12.4036184140625,5.8559775140625,12.7558684140625C5.7279777140625,12.4757434140625,5.3759775140625,11.9312434140625,5.1519775140625,11.6591184140625C6.3759775140625,11.3868685140625,7.3839779140625,10.9706182140625,8.1839781140625,10.3781185140625C7.5199776140625,9.6094932140625,7.0079775140625,8.6888685140625,6.5919776140625,7.6079931140625L5.3279776140625,7.6079931140625L5.3279776140625,6.4719930140625L8.6239776140625,6.4719930140625ZM7.7999778140625,7.6079931140625C8.1119776140625,8.344617814062499,8.5359778140625,9.0011186140625,9.0719776140625,9.5694933140625C9.5439777140625,9.0251179140625,9.9199772140625,8.3766184140625,10.1919784140625,7.6079931140625L7.7999778140625,7.6079931140625ZM2.6000244140625,12.5000244140625L2.6000244140625,15.0000244140625Q2.6000244140625,15.4000234140625,3.0000245140625,15.4000234140625L5.5000243140625,15.4000234140625C5.8313951140625,15.4000244140625,6.1000242140625,15.6686534140625,6.1000242140625,16.0000244140625C6.1000242140625,16.3313964140625,5.8313951140625,16.6000254140625,5.5000243140625,16.6000254140625L5.4989548140625,16.6000244140625L3.0000245140625,16.6000244140625Q2.3372834940625,16.6000244140625,1.8686538940625,16.1313954140625Q1.4000244140625,15.6627664140625,1.4000244140625,15.0000244140625L1.4000244140625,12.5000244140625C1.4000244140625,12.1686534140625,1.6686535440624999,11.9000244140625,2.0000244340625,11.9000244140625C2.3313953240625,11.9000244140625,2.6000244140625,12.1686534140625,2.6000244140625,12.5000244140625ZM16.6000244140625,12.5010944140625L16.6000244140625,15.0000244140625Q16.6000244140625,15.6627654140625,16.1313954140625,16.1313954140625Q15.6627654140625,16.6000244140625,15.0000244140625,16.6000244140625L12.5000244140625,16.6000244140625C12.3408944140625,16.6000244140625,12.1882824140625,16.5368104140625,12.0757594140625,16.424288414062502C11.9632384140625,16.3117664140625,11.9000244140625,16.1591544140625,11.9000244140625,16.0000244140625C11.9000244140625,15.6686534140625,12.1686534140625,15.4000244140625,12.5000244140625,15.4000244140625L15.0000244140625,15.4000234140625Q15.4000234140625,15.4000234140625,15.4000234140625,15.0000244140625L15.4000234140625,12.5000244140625C15.4000244140625,12.1686534140625,15.6686534140625,11.9000244140625,16.0000244140625,11.9000244140625C16.3313964140625,11.9000244140625,16.6000254140625,12.1686534140625,16.6000254140625,12.5000244140625L16.6000244140625,12.5010944140625Z" fill-rule="evenodd" fill="#333333" fill-opacity="1"/></g></g></svg>',r.math='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><defs><clipPath id="master_svg0_6759_139354"><rect x="0" y="0" width="18" height="18" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_6759_139354)"><g><path d="M15.423694,15.049834L15.424264,15.049264Q15.508656,14.964872,15.554328,14.85461Q15.6,14.744348,15.6,14.625Q15.6,14.565905,15.58847,14.507944Q15.576942,14.449986,15.554328,14.395388Q15.531713,14.340792,15.498882,14.291656Q15.466051,14.242521,15.424265,14.200735Q15.382479,14.158949,15.333343,14.126117Q15.284206,14.093286,15.229609,14.070671Q15.175013,14.048058,15.117053,14.036528Q15.059094,14.025,15,14.025Q14.880652,14.025,14.77039,14.070672Q14.660128,14.116344,14.575736,14.200736L13.626472,15.150001L4.4485275,15.150001L10.174264,9.424264Q10.2160501,9.3824773,10.2488813,9.3333416Q10.281712500000001,9.2842059,10.304327,9.229609499999999Q10.3269415,9.175012599999999,10.3384705,9.117054Q10.349999,9.0590944,10.349999,8.999999500000001Q10.349999,8.9409046,10.3384705,8.8829451Q10.3269415,8.8249855,10.304327,8.7703896Q10.281712500000001,8.715793099999999,10.2488813,8.6666574Q10.2160501,8.6175222,10.174264,8.575736L4.4485282,2.85000002L13.626472,2.85000002L14.575395,3.7989223L14.575736,3.7992642Q14.660127,3.8836554999999997,14.77039,3.9293277Q14.880651,3.9749999000000003,15,3.975Q15.059094,3.9749999000000003,15.117054,3.9634712Q15.175013,3.9519422,15.229609,3.9293275999999997Q15.284206,3.906713,15.333342,3.8738817Q15.382478,3.8410504000000003,15.424264,3.7992641000000003Q15.466051,3.7574776,15.498882,3.7083421000000003Q15.531713,3.6592064,15.554328,3.60461Q15.576942,3.5500134,15.588472,3.4920541Q15.6,3.4340948,15.6,3.375Q15.6,3.2556524,15.554328,3.1453898000000002Q15.508656,3.03512704,15.424264,2.9507357499999998L15.423856,2.9503274L14.299264,1.82573593Q14.214872,1.7413445699999999,14.10461,1.69567227Q13.994347,1.64999998,13.875,1.64999998L3,1.64999998Q2.88065257,1.64999998,2.77038994,1.69567227Q2.66012731,1.7413445699999999,2.57573593,1.82573593Q2.53394958,1.8675223,2.50111824,1.91665789Q2.46828693,1.96579346,2.44567233,2.02038996Q2.42305773,2.07498647,2.41152894,2.13294582Q2.4000000999999997,2.190905161,2.40000004,2.25Q2.4000000999999997,2.309094839,2.41152889,2.36705418Q2.42305773,2.42501353,2.44567233,2.47961004Q2.46828693,2.53420654,2.50111827,2.58334213Q2.53394958,2.6324777,2.57573593,2.67426407L8.9014721,9L2.57573593,15.325736Q2.49134457,15.410126,2.44567227,15.520389Q2.39999998,15.630651,2.39999998,15.75Q2.39999998,15.809094,2.41152883,15.867053Q2.42305768,15.925013,2.44567233,15.979609Q2.46828693,16.034204000000003,2.50111827,16.08334Q2.53394958,16.132476,2.57573593,16.174263Q2.6175223,16.216048999999998,2.66665787,16.24888Q2.71579343,16.281712,2.77038994,16.304327Q2.82498646,16.326940999999998,2.88294581,16.33847Q2.940905157,16.349998,3,16.349999L13.875,16.349999Q13.994347,16.349998,14.104609,16.304326Q14.214872,16.258654,14.299264,16.174264L15.423694,15.049834Z" fill-rule="evenodd" fill="#333333" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>',m=b(),o.modules)if(Array.isArray(o.modules))for(const e of o.modules)Q(`modules/${e.name}`,e.module);else Q(`modules/${o.modules.name}`,o.modules.module);u=new e(p.value,m),T(o.content),u.on("text-change",x),u.on("selection-change",M),u.on("editor-change",q),"bubble"!==o.theme&&p.value.classList.remove("ql-bubble"),"snow"!==o.theme&&p.value.classList.remove("ql-snow"),null===(l=u.getModule("toolbar"))||void 0===l||l.container.addEventListener("mousedown",(e=>{e.preventDefault()})),v(),h(),s.emit("ready",u)},b=()=>{const e={};if(""!==o.theme&&(e.theme=o.theme),o.readOnly&&(e.readOnly=o.readOnly),o.placeholder&&(e.placeholder=o.placeholder),o.toolbar&&""!==o.toolbar&&(e.modules={toolbar:{container:[...c.full,["ocr"],[{math:!0}]],handlers:{ocr:function(){s.emit("ocr")},math:function(){s.emit("math")}}}}),o.modules){const t=(()=>{var e,t;const l={};if(Array.isArray(o.modules))for(const n of o.modules)l[n.name]=null!==(e=n.options)&&void 0!==e?e:{};else l[o.modules.name]=null!==(t=o.modules.options)&&void 0!==t?t:{};return l})();e.modules=Object.assign({},e.modules,t)}return Object.assign({},o.globalOptions,o.options,e)},y=e=>"object"==typeof e&&e?e.slice():e;let L;const C=e=>{if(typeof L==typeof e){if(e===L)return!0;if("object"==typeof e&&e&&"object"==typeof L&&L)return t=L.diff(e),!Object.values(t.ops).some((e=>!e.retain||1!==Object.keys(e).length))}var t;return!1},x=(e,t,l)=>{L=y(O()),C(o.content)||s.emit("update:content",L),s.emit("textChange",{delta:e,oldContents:t,source:l})},w=r(),M=(e,t,o)=>{var l;w.value=!!(null==u?void 0:u.hasFocus());const n=null===(l=null==u?void 0:u.getModule("toolbar"))||void 0===l?void 0:l.container;n&&(n.style.display=w.value?"flex":"none"),s.emit("selectionChange",{range:e,oldRange:t,source:o})};a(w,(e=>{s.emit(e?"focus":"blur",p)}));const q=(...e)=>{"text-change"===e[0]&&s.emit("editorChange",{name:e[0],delta:e[1],oldContents:e[2],source:e[3]}),"selection-change"===e[0]&&s.emit("editorChange",{name:e[0],range:e[1],oldRange:e[2],source:e[3]})},O=(e,t)=>"html"===o.contentType?H():"text"===o.contentType?j(e,t):null==u?void 0:u.getContents(e,t),T=(e,l="api")=>{const n=e||("delta"===o.contentType?new t:"");"html"===o.contentType?k(n):"text"===o.contentType?S(n,l):null==u||u.setContents(n,l),L=y(n)},j=(e,t)=>{var o;return null!==(o=null==u?void 0:u.getText(e,t))&&void 0!==o?o:""},S=(e,t="api")=>{null==u||u.setText(e,t)},H=()=>{var e;return null!==(e=null==u?void 0:u.root.innerHTML)&&void 0!==e?e:""},k=e=>{u&&(u.root.innerHTML=e)};return a((()=>o.content),(e=>{if(!u||!e||C(e))return;const t=u.getSelection();t&&d((()=>null==u?void 0:u.setSelection(t))),T(e)}),{deep:!0}),a((()=>o.enable),(e=>{u&&u.enable(e)})),{editor:p,getEditor:()=>p.value,getToolbar:()=>{var e;return null===(e=null==u?void 0:u.getModule("toolbar"))||void 0===e?void 0:e.container},getQuill:()=>{if(u)return u;throw'The quill editor hasn\'t been instantiated yet,\n make sure to call this method when the editor ready\n or use v-on:ready="onReady(quill)" event instead.'},getContents:O,setContents:T,getHTML:H,setHTML:k,pasteHTML:(e,t="api")=>{const o=null==u?void 0:u.clipboard.convert(e);o&&(null==u||u.setContents(o,t))},focus:()=>{null==u||u.focus()},getText:j,setText:S,reinit:()=>{d((()=>{var e;!s.slots.toolbar&&u&&(null===(e=u.getModule("toolbar"))||void 0===e||e.container.remove()),f()}))},editorWrapClass:g}},render(){var e,t;return[s("div",{class:this.editorWrapClass},[null===(t=(e=this.$slots).toolbar)||void 0===t?void 0:t.call(e),s("div",{ref:"editor",...this.$attrs})])]}});export{m as QuillEditor};
|