@vueup/vue-quill 1.0.1 → 1.1.0
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 +12 -12
- package/dist/vue-quill.cjs.prod.js +4 -4
- package/dist/vue-quill.esm-browser.js +12 -12
- package/dist/vue-quill.esm-browser.prod.js +4 -4
- package/dist/vue-quill.esm-bundler.js +12 -12
- package/dist/vue-quill.esm-bundler.prod.js +4 -4
- package/dist/vue-quill.global.js +12 -12
- package/dist/vue-quill.global.prod.js +4 -4
- package/package.json +1 -1
package/dist/vue-quill.cjs.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VueQuill @vueup/vue-quill v1.0
|
|
2
|
+
* VueQuill @vueup/vue-quill v1.1.0
|
|
3
3
|
* https://vueup.github.io/vue-quill/
|
|
4
4
|
*
|
|
5
5
|
* Includes quill v1.3.7
|
|
6
6
|
* https://quilljs.com/
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c)
|
|
8
|
+
* Copyright (c) 2023 Ahmad Luthfi Masruri
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date:
|
|
10
|
+
* Date: 2023-02-04T04:01:16.430Z
|
|
11
11
|
*/
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
@@ -212,11 +212,14 @@ const QuillEditor = vue.defineComponent({
|
|
|
212
212
|
}
|
|
213
213
|
return Object.assign({}, props.globalOptions, props.options, clientOptions);
|
|
214
214
|
};
|
|
215
|
+
const maybeClone = (delta) => {
|
|
216
|
+
return typeof delta === 'object' ? delta.slice() : delta;
|
|
217
|
+
};
|
|
215
218
|
const deltaHasValuesOtherThanRetain = (delta) => {
|
|
216
|
-
return Object.values(delta).some((v) => !v.retain);
|
|
219
|
+
return Object.values(delta.ops).some((v) => !v.retain || Object.keys(v).length !== 1);
|
|
217
220
|
};
|
|
218
|
-
//
|
|
219
|
-
let internalModel
|
|
221
|
+
// Doesn't need reactivity, but does need to be cloned to avoid deep mutations always registering as equal
|
|
222
|
+
let internalModel;
|
|
220
223
|
const internalModelEquals = (against) => {
|
|
221
224
|
if (typeof internalModel === typeof against) {
|
|
222
225
|
if (against === internalModel) {
|
|
@@ -230,10 +233,7 @@ const QuillEditor = vue.defineComponent({
|
|
|
230
233
|
return false;
|
|
231
234
|
};
|
|
232
235
|
const handleTextChange = (delta, oldContents, source) => {
|
|
233
|
-
|
|
234
|
-
// so content should not be undefined but let's make ts and eslint happy
|
|
235
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
236
|
-
internalModel = getContents();
|
|
236
|
+
internalModel = maybeClone(getContents());
|
|
237
237
|
// Update v-model:content when text changes
|
|
238
238
|
if (!internalModelEquals(props.content)) {
|
|
239
239
|
ctx.emit('update:content', internalModel);
|
|
@@ -302,6 +302,7 @@ const QuillEditor = vue.defineComponent({
|
|
|
302
302
|
else {
|
|
303
303
|
quill === null || quill === void 0 ? void 0 : quill.setContents(content, source);
|
|
304
304
|
}
|
|
305
|
+
internalModel = maybeClone(content);
|
|
305
306
|
};
|
|
306
307
|
const getText = (index, length) => {
|
|
307
308
|
var _a;
|
|
@@ -334,14 +335,13 @@ const QuillEditor = vue.defineComponent({
|
|
|
334
335
|
vue.watch(() => props.content, (newContent) => {
|
|
335
336
|
if (!quill || !newContent || internalModelEquals(newContent))
|
|
336
337
|
return;
|
|
337
|
-
internalModel = newContent;
|
|
338
338
|
// Restore the selection and cursor position after updating the content
|
|
339
339
|
const selection = quill.getSelection();
|
|
340
340
|
if (selection) {
|
|
341
341
|
vue.nextTick(() => quill === null || quill === void 0 ? void 0 : quill.setSelection(selection));
|
|
342
342
|
}
|
|
343
343
|
setContents(newContent);
|
|
344
|
-
});
|
|
344
|
+
}, { deep: true });
|
|
345
345
|
vue.watch(() => props.enable, (newValue) => {
|
|
346
346
|
if (quill)
|
|
347
347
|
quill.enable(newValue);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VueQuill @vueup/vue-quill v1.0
|
|
2
|
+
* VueQuill @vueup/vue-quill v1.1.0
|
|
3
3
|
* https://vueup.github.io/vue-quill/
|
|
4
4
|
*
|
|
5
5
|
* Includes quill v1.3.7
|
|
6
6
|
* https://quilljs.com/
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c)
|
|
8
|
+
* Copyright (c) 2023 Ahmad Luthfi Masruri
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date:
|
|
10
|
+
* Date: 2023-02-04T04:01:16.430Z
|
|
11
11
|
*/
|
|
12
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("quill"),t=require("quill-delta"),o=require("vue");function l(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var n=l(e),r=l(t);const i={essential:[[{header:[1,2,3,4,5,6,!1]}],["bold","italic","underline"],[{list:"ordered"},{list:"bullet"},{align:[]}],["blockquote","code-block","link"],[{color:[]},"clean"]],minimal:[[{header:1},{header:2}],["bold","italic","underline"],[{list:"ordered"},{list:"bullet"},{align:[]}]],full:[["bold","italic","underline","strike"],["blockquote","code-block"],[{header:1},{header:2}],[{list:"ordered"},{list:"bullet"}],[{script:"sub"},{script:"super"}],[{indent:"-1"},{indent:"+1"}],[{direction:"rtl"}],[{size:["small",!1,"large","huge"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["link","video","image"],["clean"]]},a=o.defineComponent({name:"QuillEditor",inheritAttrs:!1,props:{content:{type:[String,Object],default:()=>{}},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},theme:{type:String,default:"snow",validator:e=>["snow","bubble",""].includes(e)},toolbar:{type:[String,Array,Object],required:!1,validator:e=>"string"!=typeof e||""===e||("#"===e.charAt(0)||-1!==Object.keys(i).indexOf(e))},modules:{type:Object,required:!1},options:{type:Object,required:!1},globalOptions:{type:Object,required:!1}},emits:["textChange","selectionChange","editorChange","update:content","focus","blur","ready"],setup:(e,t)=>{let l,r;o.onMounted((()=>{d()})),o.onBeforeUnmount((()=>{l=null}));const a=o.ref(),d=()=>{var o;if(a.value){if(r=s(),e.modules)if(Array.isArray(e.modules))for(const t of e.modules)n.register(`modules/${t.name}`,t.module);else n.register(`modules/${e.modules.name}`,e.modules.module);l=new n(a.value,r),
|
|
12
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("quill"),t=require("quill-delta"),o=require("vue");function l(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var n=l(e),r=l(t);const i={essential:[[{header:[1,2,3,4,5,6,!1]}],["bold","italic","underline"],[{list:"ordered"},{list:"bullet"},{align:[]}],["blockquote","code-block","link"],[{color:[]},"clean"]],minimal:[[{header:1},{header:2}],["bold","italic","underline"],[{list:"ordered"},{list:"bullet"},{align:[]}]],full:[["bold","italic","underline","strike"],["blockquote","code-block"],[{header:1},{header:2}],[{list:"ordered"},{list:"bullet"}],[{script:"sub"},{script:"super"}],[{indent:"-1"},{indent:"+1"}],[{direction:"rtl"}],[{size:["small",!1,"large","huge"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["link","video","image"],["clean"]]},a=o.defineComponent({name:"QuillEditor",inheritAttrs:!1,props:{content:{type:[String,Object],default:()=>{}},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},theme:{type:String,default:"snow",validator:e=>["snow","bubble",""].includes(e)},toolbar:{type:[String,Array,Object],required:!1,validator:e=>"string"!=typeof e||""===e||("#"===e.charAt(0)||-1!==Object.keys(i).indexOf(e))},modules:{type:Object,required:!1},options:{type:Object,required:!1},globalOptions:{type:Object,required:!1}},emits:["textChange","selectionChange","editorChange","update:content","focus","blur","ready"],setup:(e,t)=>{let l,r;o.onMounted((()=>{d()})),o.onBeforeUnmount((()=>{l=null}));const a=o.ref(),d=()=>{var o;if(a.value){if(r=s(),e.modules)if(Array.isArray(e.modules))for(const t of e.modules)n.register(`modules/${t.name}`,t.module);else n.register(`modules/${e.modules.name}`,e.modules.module);l=new n(a.value,r),f(e.content),l.on("text-change",p),l.on("selection-change",h),l.on("editor-change",g),"bubble"!==e.theme&&a.value.classList.remove("ql-bubble"),"snow"!==e.theme&&a.value.classList.remove("ql-snow"),null===(o=l.getModule("toolbar"))||void 0===o||o.container.addEventListener("mousedown",(e=>{e.preventDefault()})),t.emit("ready",l)}},s=()=>{const t={};if(""!==e.theme&&(t.theme=e.theme),e.readOnly&&(t.readOnly=e.readOnly),e.placeholder&&(t.placeholder=e.placeholder),e.toolbar&&""!==e.toolbar&&(t.modules={toolbar:(()=>{if("object"==typeof e.toolbar)return e.toolbar;if("string"==typeof e.toolbar){return"#"===e.toolbar.charAt(0)?e.toolbar:i[e.toolbar]}})()}),e.modules){const o=(()=>{var t,o;const l={};if(Array.isArray(e.modules))for(const n of e.modules)l[n.name]=null!==(t=n.options)&&void 0!==t?t:{};else l[e.modules.name]=null!==(o=e.modules.options)&&void 0!==o?o:{};return l})();t.modules=Object.assign({},t.modules,o)}return Object.assign({},e.globalOptions,e.options,t)},u=e=>"object"==typeof e?e.slice():e;let c;const b=e=>{if(typeof c==typeof e){if(e===c)return!0;if("object"==typeof e&&"object"==typeof c)return t=c.diff(e),!Object.values(t.ops).some((e=>!e.retain||1!==Object.keys(e).length))}var t;return!1},p=(o,l,n)=>{c=u(v()),b(e.content)||t.emit("update:content",c),t.emit("textChange",{delta:o,oldContents:l,source:n})},m=o.ref(),h=(e,o,n)=>{m.value=!!(null==l?void 0:l.hasFocus()),t.emit("selectionChange",{range:e,oldRange:o,source:n})};o.watch(m,(e=>{t.emit(e?"focus":"blur",a)}));const g=(...e)=>{"text-change"===e[0]&&t.emit("editorChange",{name:e[0],delta:e[1],oldContents:e[2],source:e[3]}),"selection-change"===e[0]&&t.emit("editorChange",{name:e[0],range:e[1],oldRange:e[2],source:e[3]})},v=(t,o)=>"html"===e.contentType?O():"text"===e.contentType?y(t,o):null==l?void 0:l.getContents(t,o),f=(t,o="api")=>{"html"===e.contentType?T(t):"text"===e.contentType?x(t,o):null==l||l.setContents(t,o),c=u(t)},y=(e,t)=>{var o;return null!==(o=null==l?void 0:l.getText(e,t))&&void 0!==o?o:""},x=(e,t="api")=>{null==l||l.setText(e,t)},O=()=>{var e;return null!==(e=null==l?void 0:l.root.innerHTML)&&void 0!==e?e:""},T=e=>{l&&(l.root.innerHTML=e)};return o.watch((()=>e.content),(e=>{if(!l||!e||b(e))return;const t=l.getSelection();t&&o.nextTick((()=>null==l?void 0:l.setSelection(t))),f(e)}),{deep:!0}),o.watch((()=>e.enable),(e=>{l&&l.enable(e)})),{editor:a,getEditor:()=>a.value,getToolbar:()=>{var e;return null===(e=null==l?void 0:l.getModule("toolbar"))||void 0===e?void 0:e.container},getQuill:()=>{if(l)return l;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:v,setContents:f,getHTML:O,setHTML:T,pasteHTML:(e,t="api")=>{const o=null==l?void 0:l.clipboard.convert(e);o&&(null==l||l.setContents(o,t))},getText:y,setText:x,reinit:()=>{o.nextTick((()=>{var e;!t.slots.toolbar&&l&&(null===(e=l.getModule("toolbar"))||void 0===e||e.container.remove()),d()}))}}},render(){var e,t;return[null===(t=(e=this.$slots).toolbar)||void 0===t?void 0:t.call(e),o.h("div",{ref:"editor",...this.$attrs})]}});exports.Quill=n,exports.Delta=r,exports.QuillEditor=a;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* VueQuill @vueup/vue-quill v1.0
|
|
2
|
+
* VueQuill @vueup/vue-quill v1.1.0
|
|
3
3
|
* https://vueup.github.io/vue-quill/
|
|
4
4
|
*
|
|
5
5
|
* Includes quill v1.3.7
|
|
6
6
|
* https://quilljs.com/
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c)
|
|
8
|
+
* Copyright (c) 2023 Ahmad Luthfi Masruri
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date:
|
|
10
|
+
* Date: 2023-02-04T04:01:16.430Z
|
|
11
11
|
*/
|
|
12
12
|
import { defineComponent, onMounted, onBeforeUnmount, ref, watch, nextTick, h } from 'vue';
|
|
13
13
|
|
|
@@ -18605,11 +18605,14 @@ const QuillEditor = defineComponent({
|
|
|
18605
18605
|
}
|
|
18606
18606
|
return Object.assign({}, props.globalOptions, props.options, clientOptions);
|
|
18607
18607
|
};
|
|
18608
|
+
const maybeClone = (delta) => {
|
|
18609
|
+
return typeof delta === 'object' ? delta.slice() : delta;
|
|
18610
|
+
};
|
|
18608
18611
|
const deltaHasValuesOtherThanRetain = (delta) => {
|
|
18609
|
-
return Object.values(delta).some((v) => !v.retain);
|
|
18612
|
+
return Object.values(delta.ops).some((v) => !v.retain || Object.keys(v).length !== 1);
|
|
18610
18613
|
};
|
|
18611
|
-
//
|
|
18612
|
-
let internalModel
|
|
18614
|
+
// Doesn't need reactivity, but does need to be cloned to avoid deep mutations always registering as equal
|
|
18615
|
+
let internalModel;
|
|
18613
18616
|
const internalModelEquals = (against) => {
|
|
18614
18617
|
if (typeof internalModel === typeof against) {
|
|
18615
18618
|
if (against === internalModel) {
|
|
@@ -18623,10 +18626,7 @@ const QuillEditor = defineComponent({
|
|
|
18623
18626
|
return false;
|
|
18624
18627
|
};
|
|
18625
18628
|
const handleTextChange = (delta, oldContents, source) => {
|
|
18626
|
-
|
|
18627
|
-
// so content should not be undefined but let's make ts and eslint happy
|
|
18628
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
18629
|
-
internalModel = getContents();
|
|
18629
|
+
internalModel = maybeClone(getContents());
|
|
18630
18630
|
// Update v-model:content when text changes
|
|
18631
18631
|
if (!internalModelEquals(props.content)) {
|
|
18632
18632
|
ctx.emit('update:content', internalModel);
|
|
@@ -18695,6 +18695,7 @@ const QuillEditor = defineComponent({
|
|
|
18695
18695
|
else {
|
|
18696
18696
|
quill === null || quill === void 0 ? void 0 : quill.setContents(content, source);
|
|
18697
18697
|
}
|
|
18698
|
+
internalModel = maybeClone(content);
|
|
18698
18699
|
};
|
|
18699
18700
|
const getText = (index, length) => {
|
|
18700
18701
|
var _a;
|
|
@@ -18727,14 +18728,13 @@ const QuillEditor = defineComponent({
|
|
|
18727
18728
|
watch(() => props.content, (newContent) => {
|
|
18728
18729
|
if (!quill || !newContent || internalModelEquals(newContent))
|
|
18729
18730
|
return;
|
|
18730
|
-
internalModel = newContent;
|
|
18731
18731
|
// Restore the selection and cursor position after updating the content
|
|
18732
18732
|
const selection = quill.getSelection();
|
|
18733
18733
|
if (selection) {
|
|
18734
18734
|
nextTick(() => quill === null || quill === void 0 ? void 0 : quill.setSelection(selection));
|
|
18735
18735
|
}
|
|
18736
18736
|
setContents(newContent);
|
|
18737
|
-
});
|
|
18737
|
+
}, { deep: true });
|
|
18738
18738
|
watch(() => props.enable, (newValue) => {
|
|
18739
18739
|
if (quill)
|
|
18740
18740
|
quill.enable(newValue);
|