pxx-vue-quill 1.0.164 → 1.0.165
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.umd.js +104 -112
- package/dist/vue-quill.umd.prod.js +2 -2
- package/package.json +1 -1
package/dist/vue-quill.umd.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Copyright (c) 2025 Pxx-Team
|
|
9
9
|
* Released under the MIT license
|
|
10
|
-
* Date: 2025-09-
|
|
10
|
+
* Date: 2025-09-16T10:45:27.072Z
|
|
11
11
|
*/
|
|
12
12
|
(function (global, factory) {
|
|
13
13
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
|
|
@@ -20283,9 +20283,9 @@
|
|
|
20283
20283
|
};
|
|
20284
20284
|
}
|
|
20285
20285
|
|
|
20286
|
-
function
|
|
20286
|
+
function useCustomLinkClick(editor, initialHandleCustomLink) {
|
|
20287
20287
|
const quillRef = vue.ref(null);
|
|
20288
|
-
const handleCustomLinkRef = vue.ref(null);
|
|
20288
|
+
const handleCustomLinkRef = vue.ref(initialHandleCustomLink || null);
|
|
20289
20289
|
const handleLinkClick = (event) => {
|
|
20290
20290
|
if (!quillRef.value || !handleCustomLinkRef.value)
|
|
20291
20291
|
return;
|
|
@@ -20332,43 +20332,12 @@
|
|
|
20332
20332
|
const setHandleCustomLink = (fn) => {
|
|
20333
20333
|
handleCustomLinkRef.value = fn;
|
|
20334
20334
|
};
|
|
20335
|
-
const calculateSelectionPosition = (range) => {
|
|
20336
|
-
var _a;
|
|
20337
|
-
if (!quillRef.value)
|
|
20338
|
-
return { top: 0, left: 0 };
|
|
20339
|
-
const selectionRange = range || quillRef.value.getSelection();
|
|
20340
|
-
if (!selectionRange || selectionRange.length === 0)
|
|
20341
|
-
return { top: 0, left: 0 };
|
|
20342
|
-
try {
|
|
20343
|
-
const bounds = quillRef.value.getBounds(selectionRange.index, selectionRange.length);
|
|
20344
|
-
const editorElement = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.querySelector('.ql-editor');
|
|
20345
|
-
const editorContainer = editorElement === null || editorElement === void 0 ? void 0 : editorElement.closest('.quill-editor-container');
|
|
20346
|
-
const editorWidth = editorContainer ? editorContainer.clientWidth : ((editorElement === null || editorElement === void 0 ? void 0 : editorElement.clientWidth) || 0);
|
|
20347
|
-
const customLinkWidth = 310;
|
|
20348
|
-
const maxLeft = editorWidth - customLinkWidth - 16;
|
|
20349
|
-
const left = Math.min(bounds.left, Math.max(0, maxLeft));
|
|
20350
|
-
const editorRect = editorElement === null || editorElement === void 0 ? void 0 : editorElement.getBoundingClientRect();
|
|
20351
|
-
const containerRect = editorContainer === null || editorContainer === void 0 ? void 0 : editorContainer.getBoundingClientRect();
|
|
20352
|
-
if (!editorRect || !containerRect) {
|
|
20353
|
-
return { top: bounds.top + bounds.height + 5, left: left };
|
|
20354
|
-
}
|
|
20355
|
-
const editorOffsetTop = editorRect.top - containerRect.top;
|
|
20356
|
-
const top = editorOffsetTop + bounds.top + bounds.height + 5;
|
|
20357
|
-
return {
|
|
20358
|
-
top: top,
|
|
20359
|
-
left: left
|
|
20360
|
-
};
|
|
20361
|
-
}
|
|
20362
|
-
catch (error) {
|
|
20363
|
-
console.warn('计算选中位置时出错:', error);
|
|
20364
|
-
return { top: 0, left: 0 };
|
|
20365
|
-
}
|
|
20366
|
-
};
|
|
20367
20335
|
return {
|
|
20336
|
+
quillRef,
|
|
20368
20337
|
setQuill,
|
|
20369
20338
|
setHandleCustomLink,
|
|
20370
|
-
|
|
20371
|
-
|
|
20339
|
+
handleLinkClick,
|
|
20340
|
+
addLinkClickListener
|
|
20372
20341
|
};
|
|
20373
20342
|
}
|
|
20374
20343
|
|
|
@@ -20425,35 +20394,6 @@
|
|
|
20425
20394
|
};
|
|
20426
20395
|
}
|
|
20427
20396
|
|
|
20428
|
-
const isIPad = () => {
|
|
20429
|
-
const ua = navigator.userAgent;
|
|
20430
|
-
const isMacOs = /(?:Macintosh)/.test(ua);
|
|
20431
|
-
return /(?:iPad|PlayBook)/.test(ua) || (isMacOs && navigator.maxTouchPoints > 1);
|
|
20432
|
-
};
|
|
20433
|
-
|
|
20434
|
-
function useIPadScene() {
|
|
20435
|
-
const isIPadBool = isIPad();
|
|
20436
|
-
const handleIPadNewline = (delta, oldContents, clearCallback) => {
|
|
20437
|
-
var _a, _b, _c, _d;
|
|
20438
|
-
let shouldClearEditor = false;
|
|
20439
|
-
const oldText = (_b = (_a = oldContents.ops) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.insert;
|
|
20440
|
-
if (!oldText || !((_d = (_c = delta === null || delta === void 0 ? void 0 : delta.ops) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.delete)) {
|
|
20441
|
-
return false;
|
|
20442
|
-
}
|
|
20443
|
-
const deleteLength = delta.ops[0].delete;
|
|
20444
|
-
const expectedDeleteLength = oldText.length - 1;
|
|
20445
|
-
const hasNewline = JSON.stringify(oldText).includes('\\n');
|
|
20446
|
-
shouldClearEditor = deleteLength === expectedDeleteLength && hasNewline;
|
|
20447
|
-
if (shouldClearEditor) {
|
|
20448
|
-
clearCallback();
|
|
20449
|
-
}
|
|
20450
|
-
};
|
|
20451
|
-
return {
|
|
20452
|
-
isIPadBool,
|
|
20453
|
-
handleIPadNewline
|
|
20454
|
-
};
|
|
20455
|
-
}
|
|
20456
|
-
|
|
20457
20397
|
const boldSVG = `<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="M6.794999938146972,7.7800002288818355L9.045000038146974,7.7800002288818355Q9.855000038146972,7.7800002288818355,10.230000038146972,7.442500128881836Q10.605000038146972,7.105000028881836,10.605000038146972,6.505000128881836Q10.605000038146972,6.114999728881836,10.440000038146973,5.860000628881836Q10.275000138146972,5.6050005288818365,9.929999838146973,5.470000228881836Q9.585000038146973,5.335000028881836,9.045000038146974,5.335000028881836L7.139999938146973,5.335000028881836L7.139999938146973,3.385000228881836L9.045000038146974,3.385000228881836Q10.034999838146973,3.385000228881836,10.852499938146973,3.797500608881836Q11.670000038146974,4.2100000388818355,12.142499938146972,4.922500628881836Q12.614999738146974,5.635000228881836,12.614999738146974,6.505000128881836Q12.614999738146974,7.375000028881836,12.142499938146972,8.042500028881836Q11.670000038146974,8.710000028881836,10.860000138146972,9.070000128881837Q10.050000238146973,9.430000328881835,9.045000038146974,9.430000328881835L6.794999938146972,9.430000328881835L6.794999938146972,7.7800002288818355ZM7.139999938146973,12.550000228881835L9.329999938146972,12.550000228881835Q9.900000138146972,12.550000228881835,10.327499838146974,12.354999528881836Q10.755000138146972,12.159999828881835,10.987500238146973,11.807499928881835Q11.219999838146972,11.454999928881836,11.219999838146972,11.020000428881836Q11.219999838146972,10.600000428881836,10.987500238146973,10.232500028881836Q10.755000138146972,9.864999728881836,10.327499838146974,9.647500028881836Q9.900000138146972,9.430000328881835,9.329999938146972,9.430000328881835L6.975000038146972,9.430000328881835L6.975000038146972,7.7800002288818355L9.329999938146972,7.7800002288818355Q10.349999938146972,7.7800002288818355,11.250000038146972,8.200000328881835Q12.149999638146973,8.620000328881837,12.690000538146972,9.362500228881835Q13.229999538146973,10.104999528881836,13.229999538146973,11.034999828881837Q13.229999538146973,11.949999828881836,12.690000538146972,12.752500528881836Q12.149999638146973,13.555000228881836,11.250000038146972,14.027500228881836Q10.349999938146972,14.500000228881836,9.329999938146972,14.500000228881836L7.139999938146973,14.500000228881836L7.139999938146973,12.550000228881835ZM7.064999938146973,14.500000228881836Q6.284999968146972,14.500000228881836,5.872500058146973,14.095000228881837Q5.460000038146973,13.689999228881836,5.460000038146973,12.895000428881836L5.460000038146973,4.989999728881836Q5.460000038146973,4.195000648881836,5.872500058146973,3.789999958881836Q6.284999968146972,3.385000228881836,7.064999938146973,3.385000228881836L7.469999838146973,3.385000228881836L7.469999838146973,14.500000228881836L7.064999938146973,14.500000228881836Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
|
|
20458
20398
|
const italicSVG = `<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="M8,3Q7.9015086,3,7.8049095,3.019214718Q7.7083106,3.038429435,7.6173165,3.076120459Q7.5263224,3.11381148,7.4444296,3.16853037Q7.3625371,3.2232492600000002,7.2928932,3.2928932Q7.2232492,3.36253715,7.1685302,3.4444297600000002Q7.1138113999999995,3.52632231,7.0761204,3.61731648Q7.0384293,3.70831072,7.0192146,3.80490965Q6.99999994,3.90150857,7,4Q6.99999994,4.0984913,7.0192146,4.1950902Q7.0384293,4.291689,7.0761204,4.3826833Q7.1138113999999995,4.4736774,7.1685302,4.5555699Q7.2232492,4.6374626,7.2928932,4.7071065999999995Q7.3625371,4.7767504,7.4444296,4.8314693Q7.5263224,4.8861883,7.6173165,4.9238794Q7.7083106,4.9615704,7.8049096,4.9807851Q7.9015086,4.9999999,8,5L9.137146,5L8,13L7,13Q6.90150857,13,6.80490965,13.019215Q6.70831072,13.038429,6.6173164799999995,13.07612Q6.52632231,13.113811,6.44442973,13.16853Q6.36253715,13.223249,6.2928932,13.292892Q6.22324926,13.362536,6.16853037,13.444429Q6.11381148,13.526321,6.076120459,13.617315Q6.038429435,13.708309,6.019214718,13.804909Q6,13.901508,6,14Q6,14.098491,6.019214718,14.195089Q6.038429435,14.291689,6.076120459,14.382683Q6.11381148,14.473677,6.16853037,14.555569Q6.22324926,14.637462,6.2928932,14.707106Q6.36253715,14.77675,6.44442976,14.831469Q6.52632231,14.886187,6.6173164799999995,14.923878Q6.70831072,14.961569,6.80490965,14.980784Q6.90150857,15,7,15L11,15Q11.0984912,15,11.1950898,14.980784Q11.2916889,14.961569,11.382682800000001,14.923878Q11.473677200000001,14.886187,11.5555696,14.831469Q11.6374626,14.77675,11.7071066,14.707106Q11.7767506,14.637462,11.8314691,14.555569Q11.8861876,14.473677,11.9238791,14.382683Q11.9615698,14.291689,11.9807849,14.195089Q12,14.098491,12,14Q12,13.901508,11.9807849,13.804909Q11.9615698,13.708309,11.9238791,13.617315Q11.8861876,13.526321,11.8314691,13.444428Q11.7767506,13.362536,11.7071066,13.292892Q11.6374626,13.223249,11.5555701,13.16853Q11.473677200000001,13.113811,11.382682800000001,13.07612Q11.2916889,13.038429,11.1950903,13.019215Q11.0984912,13,11,13L9.8626451,13L11,5L12,5Q12.0984907,4.9999999,12.1950893,4.9807851Q12.2916884,4.9615703,12.382682800000001,4.9238793Q12.4736767,4.8861883,12.5555696,4.8314693Q12.6374621,4.7767504,12.7071061,4.7071065999999995Q12.776750100000001,4.6374626,12.831468600000001,4.5555699Q12.8861876,4.4736774,12.9238787,4.3826833Q12.9615698,4.291689,12.9807849,4.1950902Q12.999999500000001,4.0984913,13,4Q12.999999500000001,3.90150857,12.980784400000001,3.80490965Q12.9615698,3.70831072,12.9238787,3.61731648Q12.8861876,3.52632231,12.8314691,3.44442973Q12.7767506,3.36253715,12.7071066,3.2928932Q12.6374626,3.2232492600000002,12.5555696,3.16853037Q12.4736767,3.11381148,12.382682800000001,3.076120459Q12.2916884,3.038429435,12.1950898,3.019214718Q12.0984907,3,12,3L8,3Z" fill-rule="evenodd" fill="#555555" fill-opacity="1"/></g></g></svg>`;
|
|
20459
20399
|
const underlineSVG = `<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="M5.000117301940918,14.500022450683593L5.000117301940918,14.500022450683593Q5.000117301940918,14.450777450683594,5.009724660740918,14.402477450683593Q5.019332019940918,14.354177450683594,5.038177530940918,14.308679450683593Q5.057023040940918,14.263182450683594,5.084382488940918,14.222236450683594Q5.111741931940918,14.181290450683594,5.146563901940918,14.146469450683593Q5.181385871940918,14.111646450683594,5.222332181940918,14.084286450683594Q5.263278451940918,14.056927450683594,5.308775541940918,14.038082450683595Q5.354272661940918,14.019237450683594,5.402572121940918,14.009630450683593Q5.450871581940918,14.000022450683593,5.500117301940918,14.000022450683593L12.500117301940918,14.000022450683593Q12.549362201940918,14.000022450683593,12.597661501940918,14.009629450683594Q12.645960801940918,14.019237450683594,12.691457701940918,14.038082450683595Q12.736954701940917,14.056926450683594,12.777901601940918,14.084285450683593Q12.818847701940918,14.111645450683593,12.853670101940917,14.146468450683594Q12.888492101940919,14.181289450683593,12.915851601940918,14.222235450683593Q12.943210601940919,14.263181450683593,12.962056201940918,14.308679450683593Q12.980901701940919,14.354177450683594,12.990509501940917,14.402477450683593Q13.00011680194092,14.450777450683594,13.000117301940918,14.500022450683593L13.000117301940918,14.500022450683593Q13.00011680194092,14.549268450683593,12.990509001940918,14.597566450683594Q12.980901701940919,14.645866450683593,12.962056201940918,14.691363450683594Q12.943210601940919,14.736860450683594,12.915851601940918,14.777807450683595Q12.888492101940919,14.818753450683595,12.853670101940917,14.853575450683593Q12.818847701940918,14.888397450683593,12.777901601940918,14.915756450683594Q12.736954701940917,14.943115450683594,12.691457701940918,14.961960450683593Q12.645960801940918,14.980806450683593,12.597661501940918,14.990413450683594Q12.549362201940918,15.000021450683594,12.500117301940918,15.000022450683593L5.500117301940918,15.000022450683593Q5.450871581940918,15.000021450683594,5.402572121940918,14.990414450683593Q5.354272661940918,14.980806450683593,5.308775541940918,14.961960450683593Q5.263278451940918,14.943115450683594,5.222332161940918,14.915756450683594Q5.181385871940918,14.888397450683593,5.146563901940918,14.853574450683594Q5.111741931940918,14.818752450683593,5.084382488940918,14.777806450683594Q5.057023040940918,14.736860450683594,5.038177530940918,14.691363450683594Q5.019332019940918,14.645866450683593,5.009724660740918,14.597567450683593Q5.000117301940918,14.549268450683593,5.000117301940918,14.500022450683593ZM5.045039176940918,3.548906330683594Q5.045039176940918,3.1015625006835936,5.283039211940918,2.8637809706835937Q5.521039131940918,2.6259994506835938,5.969039081940918,2.6259994506835938L5.997039201940918,2.6259994506835938Q6.445039201940918,2.6259994506835938,6.6830393019409176,2.8637809706835937Q6.921039201940918,3.1015625006835936,6.921039201940918,3.548906330683594L6.921039201940918,9.010000250683593Q6.921039201940918,9.737999950683594,7.180039401940919,10.255999550683594Q7.439039201940918,10.774000150683595,7.908039101940918,11.053999950683593Q8.377039001940918,11.333999650683594,8.993039101940917,11.333999650683594Q9.609039301940918,11.333999650683594,10.085039101940918,11.060999850683594Q10.561039401940917,10.788000150683594,10.820039301940918,10.263000450683593Q11.079039101940918,9.737999950683594,11.079039101940918,9.010000250683593L11.079039101940918,3.548906330683594Q11.079039101940918,3.1015625006835936,11.317039501940918,2.8637809706835937Q11.555039401940917,2.6259994506835938,12.003039401940917,2.6259994506835938L12.031039201940917,2.6259994506835938Q12.479039201940918,2.6259994506835938,12.717039101940918,2.8637809706835937Q12.955039001940918,3.1015625006835936,12.955039001940918,3.548906330683594L12.955039001940918,9.010000250683593Q12.955039001940918,10.144000050683594,12.416039501940919,11.095999750683594Q11.877039901940918,12.048000350683594,10.967039101940918,12.600999850683595Q10.057039301940918,13.154000450683593,8.993039101940917,13.154000450683593Q7.929039001940918,13.154000450683593,7.0190392019409185,12.600999850683595Q6.109039201940918,12.048000350683594,5.577039361940918,11.095999750683594Q5.045039176940918,10.144000050683594,5.045039176940918,9.010000250683593L5.045039176940918,3.548906330683594Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
|
|
@@ -20468,6 +20408,12 @@
|
|
|
20468
20408
|
const imageSVG = `<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="M1.87471507,3.83578219Q1.5,4.18540478,1.5,4.6875L1.5,14.312503Q1.50000006,14.814598,1.874716,15.16422Q2.23459671,15.5,2.73684216,15.5L15.263157,15.5Q15.765403,15.5,16.125284,15.164218Q16.499999000000003,14.814597,16.499999000000003,14.312501L16.499999000000003,4.6875Q16.499999000000003,4.18540342,16.125284999999998,3.83578214Q15.765404,3.5,15.263157,3.5L2.73684216,3.5Q2.23459646,3.5,1.87471507,3.83578219ZM2.5,14.312503L2.5,4.6875Q2.5,4.5,2.73684216,4.5L15.263157,4.5Q15.5,4.5,15.5,4.6875L15.5,14.312501Q15.5,14.5,15.263157,14.5L2.73684216,14.5Q2.5,14.5,2.5,14.312503Z" fill-rule="evenodd" fill="#555555" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><ellipse cx="5.4375" cy="7.4375" rx="0.4375" ry="0.4375" fill-opacity="0" stroke-opacity="1" stroke="#555555" fill="none" stroke-width="1" stroke-linecap="ROUND" stroke-linejoin="round" style="mix-blend-mode:passthrough"/></g><g><path d="M5.9053998,9.924615948146972L1.7143693,12.841608238146973Q1.61364189,12.911715538146973,1.55682093,13.020492338146973Q1.5,13.129269138146974,1.5,13.251992238146972L1.50000003,14.418008338146972Q1.50000003,14.876594038146973,1.84130602,15.195924738146973Q2.16843581,15.501991738146973,2.62437022,15.501991738146973L15.375628,15.501991738146973Q15.831564,15.501991738146973,16.158693,15.195924738146973Q16.5,14.876594038146973,16.5,14.418007838146973L16.5,13.251992238146972Q16.500000999999997,13.186988838146974,16.48338,13.124146438146973Q16.466759,13.061303638146972,16.434621,13.004799838146972Q16.402485,12.948296338146973,16.356969,12.901887938146972Q16.311453,12.855479738146972,16.255583,12.822251838146972L9.8796926,9.030259398146972Q9.842938400000001,9.008400078146973,9.8030057,8.993099628146974Q9.763073,8.977799118146972,9.721121799999999,8.969501908146972Q9.6791716,8.961204618146972,9.6364217,8.960151608146973Q9.5936708,8.959098578146973,9.551362000000001,8.965320438146973Q9.5090542,8.971542238146972,9.4684162,8.984858218146973Q9.427778199999999,8.998174158146973,9.3899918,9.018197478146973Q9.352206200000001,9.038220708146973,9.3183689,9.064369648146972Q9.284532500000001,9.090518598146973,9.2556267,9.122033748146972L7.6887164,10.830422738146973L6.4904227,9.934544588146972Q6.4273362,9.887379288146972,6.3528042,9.861893948146973Q6.2782726,9.836408678146972,6.1995153,9.835072038146972Q6.1207581,9.833735408146973,6.045404,9.856676968146973Q5.9700503000000005,9.879618528146972,5.9053998,9.924615948146972ZM2.5,13.513173138146973L2.50000006,14.418008338146972Q2.50000006,14.501992238146972,2.62437022,14.501992238146972L15.375628,14.501992238146972Q15.5,14.501992238146972,15.5,14.418007838146973L15.5,13.536368338146973L9.7178593,10.097503488146973L8.1200023,11.839632738146973Q8.0888524,11.873595438146973,8.052019600000001,11.901292338146973Q8.0151863,11.928988938146972,7.9739118,11.949486538146973Q7.9326363,11.969984038146972,7.88831,11.982591638146973Q7.8439837,11.995199238146974,7.7980995,11.999492138146973Q7.7522154,12.003785338146972,7.7063198,11.999619238146973Q7.6604242,11.995453338146973,7.6160631,11.982968338146973Q7.571702,11.970483338146973,7.5303702,11.950099938146973Q7.4890385,11.929716538146973,7.4521289,11.902122038146972L6.1805682,10.951467238146973L2.5,13.513173138146973Z" fill-rule="evenodd" fill="#555555" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>`;
|
|
20469
20409
|
const colorSVG = `<svg t="1757558810758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9036" width="20" height="19"><path d="M170.666667 796.444444m42.666666 0l597.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-597.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#999999" p-id="9037" data-spm-anchor-id="a313x.manage_type_myprojects.0.i1.62d43a81huHZ4F" class="selected"></path><path d="M756.565333 676.579556q8.760889 24.689778-3.185777 43.804444t-38.229334 19.114667h-3.185778q-26.282667 0-41.813333-15.530667-15.530667-15.530667-25.884444-45.795556L489.756444 252.871111h44.600889l-154.510222 425.301333q-11.150222 30.264889-25.884444 45.795556-14.791111 15.530667-41.813334 15.530667H308.906667q-25.486222 0-37.831111-19.114667-12.344889-19.114667-3.584-43.804444l175.217777-481.052445q17.521778-46.193778 68.494223-46.193778h1.592888q50.972444 0 68.494223 46.193778l175.217777 481.052445zM643.413333 484.636444v103.537778H380.586667v-103.537778h262.826666z" fill="#555555" p-id="9038" data-spm-anchor-id="a313x.manage_type_myprojects.0.i0.62d43a81huHZ4F" class="selected"></path></svg>`;
|
|
20470
20410
|
|
|
20411
|
+
const isIPad = () => {
|
|
20412
|
+
const ua = navigator.userAgent;
|
|
20413
|
+
const isMacOs = /(?:Macintosh)/.test(ua);
|
|
20414
|
+
return /(?:iPad|PlayBook)/.test(ua) || (isMacOs && navigator.maxTouchPoints > 1);
|
|
20415
|
+
};
|
|
20416
|
+
|
|
20471
20417
|
const QuillEditor = vue.defineComponent({
|
|
20472
20418
|
name: 'QuillEditor',
|
|
20473
20419
|
inheritAttrs: false,
|
|
@@ -20480,7 +20426,7 @@
|
|
|
20480
20426
|
},
|
|
20481
20427
|
contentType: {
|
|
20482
20428
|
type: String,
|
|
20483
|
-
default: '
|
|
20429
|
+
default: 'html',
|
|
20484
20430
|
validator: (value) => {
|
|
20485
20431
|
return ['delta', 'html', 'text'].includes(value);
|
|
20486
20432
|
},
|
|
@@ -20561,9 +20507,8 @@
|
|
|
20561
20507
|
const linkPosition = vue.ref({ top: 0, left: 0 });
|
|
20562
20508
|
const savedRange = vue.ref(null);
|
|
20563
20509
|
const { addClickHandler } = useGlobalClick(props.clickTargetSelector);
|
|
20564
|
-
const { isIPadBool, handleIPadNewline } = useIPadScene();
|
|
20565
20510
|
const { setQuill, handleBlotFormatterClick, configureBlotFormatter, applyImageStyle, registerBlotFormatter, getBlotFormatterConfig } = useBlotFormatter(editor, props.enableImageResize);
|
|
20566
|
-
const { setQuill: setLinkQuill, setHandleCustomLink, addLinkClickListener
|
|
20511
|
+
const { setQuill: setLinkQuill, setHandleCustomLink, addLinkClickListener } = useCustomLinkClick(editor);
|
|
20567
20512
|
vue.onMounted(() => {
|
|
20568
20513
|
initialize();
|
|
20569
20514
|
});
|
|
@@ -20615,7 +20560,7 @@
|
|
|
20615
20560
|
icons['image'] = imageSVG;
|
|
20616
20561
|
icons.list.ordered = listOrderedSVG;
|
|
20617
20562
|
icons.list.bullet = listBulletSVG;
|
|
20618
|
-
if (
|
|
20563
|
+
if (isIPad())
|
|
20619
20564
|
(icons['color'] = colorSVG);
|
|
20620
20565
|
}
|
|
20621
20566
|
}
|
|
@@ -20688,6 +20633,8 @@
|
|
|
20688
20633
|
quill.on('text-change', handleTextChange);
|
|
20689
20634
|
quill.on('selection-change', handleSelectionChange);
|
|
20690
20635
|
quill.on('editor-change', handleEditorChange);
|
|
20636
|
+
quill.on('text-change', updateHistoryState);
|
|
20637
|
+
quill.on('selection-change', updateHistoryState);
|
|
20691
20638
|
addLinkClickListener();
|
|
20692
20639
|
const toolbarClickHandler = (event) => {
|
|
20693
20640
|
var _a;
|
|
@@ -20841,32 +20788,6 @@
|
|
|
20841
20788
|
return Object.values(delta.ops).some((v) => !v.retain || Object.keys(v).length !== 1);
|
|
20842
20789
|
};
|
|
20843
20790
|
let internalModel;
|
|
20844
|
-
const processHTMLContent = (html, quill) => {
|
|
20845
|
-
if (/^<p><br\/?>(.+?)<\/p>$/.test(html)) {
|
|
20846
|
-
const match = html.match(/^<p><br\/?>(.+?)<\/p>$/);
|
|
20847
|
-
if (match && match[1]) {
|
|
20848
|
-
const processedHtml = `<p>${match[1]}</p>`;
|
|
20849
|
-
if (quill) {
|
|
20850
|
-
quill.root.innerHTML = processedHtml;
|
|
20851
|
-
}
|
|
20852
|
-
return processedHtml;
|
|
20853
|
-
}
|
|
20854
|
-
else {
|
|
20855
|
-
return maybeClone(getContents());
|
|
20856
|
-
}
|
|
20857
|
-
}
|
|
20858
|
-
else {
|
|
20859
|
-
if (html === '' ||
|
|
20860
|
-
html === '<p><br></p>' ||
|
|
20861
|
-
html === '<p></p>' ||
|
|
20862
|
-
html === '<p><br/></p>') {
|
|
20863
|
-
return '';
|
|
20864
|
-
}
|
|
20865
|
-
else {
|
|
20866
|
-
return maybeClone(getContents());
|
|
20867
|
-
}
|
|
20868
|
-
}
|
|
20869
|
-
};
|
|
20870
20791
|
const internalModelEquals = (against) => {
|
|
20871
20792
|
if (typeof internalModel === typeof against) {
|
|
20872
20793
|
if (against === internalModel) {
|
|
@@ -20884,13 +20805,15 @@
|
|
|
20884
20805
|
return false;
|
|
20885
20806
|
};
|
|
20886
20807
|
const handleTextChange = (delta, oldContents, source) => {
|
|
20808
|
+
var _a;
|
|
20887
20809
|
if (props.contentType === 'html') {
|
|
20888
|
-
const
|
|
20889
|
-
internalModel =
|
|
20890
|
-
if (
|
|
20891
|
-
|
|
20892
|
-
|
|
20893
|
-
|
|
20810
|
+
const rawHTML = (_a = quill === null || quill === void 0 ? void 0 : quill.root.innerHTML) !== null && _a !== void 0 ? _a : '';
|
|
20811
|
+
internalModel = getHTML();
|
|
20812
|
+
if (internalModel && internalModel !== rawHTML) {
|
|
20813
|
+
vue.nextTick(() => {
|
|
20814
|
+
if (quill && quill.root.innerHTML !== internalModel && typeof internalModel === 'string') {
|
|
20815
|
+
quill.root.innerHTML = internalModel;
|
|
20816
|
+
}
|
|
20894
20817
|
});
|
|
20895
20818
|
}
|
|
20896
20819
|
}
|
|
@@ -20904,7 +20827,13 @@
|
|
|
20904
20827
|
applyImageStyle();
|
|
20905
20828
|
});
|
|
20906
20829
|
ctx.emit('textChange', { delta, oldContents, source });
|
|
20907
|
-
|
|
20830
|
+
};
|
|
20831
|
+
const observeTooltip = () => {
|
|
20832
|
+
const preview = document.querySelector('.ql-preview');
|
|
20833
|
+
if (!preview)
|
|
20834
|
+
return;
|
|
20835
|
+
preview.setAttribute('href', 'javascript:void(0)');
|
|
20836
|
+
preview.setAttribute('target', '_self');
|
|
20908
20837
|
};
|
|
20909
20838
|
const controlToolbarVisible = (visible) => {
|
|
20910
20839
|
var _a;
|
|
@@ -20917,13 +20846,13 @@
|
|
|
20917
20846
|
};
|
|
20918
20847
|
const isEditorFocus = vue.ref();
|
|
20919
20848
|
const handleSelectionChange = (range, oldRange, source) => {
|
|
20849
|
+
observeTooltip();
|
|
20920
20850
|
isEditorFocus.value = !!(quill === null || quill === void 0 ? void 0 : quill.hasFocus());
|
|
20921
20851
|
canUseLink.value = !!(range && range.length > 0);
|
|
20922
20852
|
if (isEditorFocus.value) {
|
|
20923
20853
|
controlToolbarVisible(true);
|
|
20924
20854
|
}
|
|
20925
20855
|
ctx.emit('selectionChange', { range, oldRange, source });
|
|
20926
|
-
updateHistoryState();
|
|
20927
20856
|
};
|
|
20928
20857
|
vue.watch(isEditorFocus, (focus) => {
|
|
20929
20858
|
if (focus)
|
|
@@ -20947,6 +20876,19 @@
|
|
|
20947
20876
|
source: args[3],
|
|
20948
20877
|
});
|
|
20949
20878
|
};
|
|
20879
|
+
const getEditor = () => {
|
|
20880
|
+
return editor.value;
|
|
20881
|
+
};
|
|
20882
|
+
const getToolbar = () => {
|
|
20883
|
+
var _a;
|
|
20884
|
+
return (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
|
|
20885
|
+
};
|
|
20886
|
+
const getQuill = () => {
|
|
20887
|
+
if (quill)
|
|
20888
|
+
return quill;
|
|
20889
|
+
else
|
|
20890
|
+
throw `The quill editor hasn't been instantiated`;
|
|
20891
|
+
};
|
|
20950
20892
|
const getContents = (index, length) => {
|
|
20951
20893
|
if (props.contentType === 'html') {
|
|
20952
20894
|
return getHTML();
|
|
@@ -20957,14 +20899,20 @@
|
|
|
20957
20899
|
return quill === null || quill === void 0 ? void 0 : quill.getContents(index, length);
|
|
20958
20900
|
};
|
|
20959
20901
|
const setContents = (content, source = 'api') => {
|
|
20960
|
-
var _a;
|
|
20961
20902
|
const normalizedContent = !content
|
|
20962
20903
|
? props.contentType === 'delta'
|
|
20963
20904
|
? new Delta$1()
|
|
20964
20905
|
: ''
|
|
20965
20906
|
: content;
|
|
20966
20907
|
if (props.contentType === 'html') {
|
|
20967
|
-
|
|
20908
|
+
if (!normalizedContent || normalizedContent === '') {
|
|
20909
|
+
if (quill) {
|
|
20910
|
+
quill.root.innerHTML = '';
|
|
20911
|
+
}
|
|
20912
|
+
}
|
|
20913
|
+
else {
|
|
20914
|
+
setHTML(normalizedContent);
|
|
20915
|
+
}
|
|
20968
20916
|
}
|
|
20969
20917
|
else if (props.contentType === 'text') {
|
|
20970
20918
|
setText(normalizedContent, source);
|
|
@@ -20984,22 +20932,31 @@
|
|
|
20984
20932
|
const getHTML = () => {
|
|
20985
20933
|
var _a;
|
|
20986
20934
|
let html = (_a = quill === null || quill === void 0 ? void 0 : quill.root.innerHTML) !== null && _a !== void 0 ? _a : '';
|
|
20935
|
+
if (html === '<p><br></p>' ||
|
|
20936
|
+
html === '<p></p>' ||
|
|
20937
|
+
html === '<p><br/></p>' ||
|
|
20938
|
+
html === '<p><br><br></p>') {
|
|
20939
|
+
return '';
|
|
20940
|
+
}
|
|
20987
20941
|
if (/^<p><br\/?>(.+?)<\/p>$/.test(html)) {
|
|
20988
20942
|
const match = html.match(/^<p><br\/?>(.+?)<\/p>$/);
|
|
20989
20943
|
if (match && match[1]) {
|
|
20990
20944
|
html = `<p>${match[1]}</p>`;
|
|
20991
20945
|
}
|
|
20992
20946
|
}
|
|
20993
|
-
if (html === '<p><br></p>' ||
|
|
20994
|
-
html === '<p></p>' ||
|
|
20995
|
-
html === '<p><br/></p>') {
|
|
20996
|
-
html = '';
|
|
20997
|
-
}
|
|
20998
20947
|
return html;
|
|
20999
20948
|
};
|
|
21000
20949
|
const setHTML = (html) => {
|
|
21001
|
-
if (quill)
|
|
20950
|
+
if (quill) {
|
|
21002
20951
|
quill.root.innerHTML = html;
|
|
20952
|
+
if (html && !html.includes('<br>')) {
|
|
20953
|
+
vue.nextTick(() => {
|
|
20954
|
+
if (quill && quill.root.innerHTML !== html) {
|
|
20955
|
+
quill.root.innerHTML = html;
|
|
20956
|
+
}
|
|
20957
|
+
});
|
|
20958
|
+
}
|
|
20959
|
+
}
|
|
21003
20960
|
};
|
|
21004
20961
|
const pasteHTML = (html, source = 'api') => {
|
|
21005
20962
|
const delta = quill === null || quill === void 0 ? void 0 : quill.clipboard.convert(html);
|
|
@@ -21044,6 +21001,38 @@
|
|
|
21044
21001
|
handleCustomLink(true);
|
|
21045
21002
|
}
|
|
21046
21003
|
};
|
|
21004
|
+
const calculateSelectionPosition = (range) => {
|
|
21005
|
+
var _a;
|
|
21006
|
+
if (!quill)
|
|
21007
|
+
return { top: 0, left: 0 };
|
|
21008
|
+
const selectionRange = range || quill.getSelection();
|
|
21009
|
+
if (!selectionRange || selectionRange.length === 0)
|
|
21010
|
+
return { top: 0, left: 0 };
|
|
21011
|
+
try {
|
|
21012
|
+
const bounds = quill.getBounds(selectionRange.index, selectionRange.length);
|
|
21013
|
+
const editorElement = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.querySelector('.ql-editor');
|
|
21014
|
+
const editorContainer = editorElement === null || editorElement === void 0 ? void 0 : editorElement.closest('.quill-editor-container');
|
|
21015
|
+
const editorWidth = editorContainer ? editorContainer.clientWidth : ((editorElement === null || editorElement === void 0 ? void 0 : editorElement.clientWidth) || 0);
|
|
21016
|
+
const customLinkWidth = 310;
|
|
21017
|
+
const maxLeft = editorWidth - customLinkWidth - 16;
|
|
21018
|
+
const left = Math.min(bounds.left, Math.max(0, maxLeft));
|
|
21019
|
+
const editorRect = editorElement === null || editorElement === void 0 ? void 0 : editorElement.getBoundingClientRect();
|
|
21020
|
+
const containerRect = editorContainer === null || editorContainer === void 0 ? void 0 : editorContainer.getBoundingClientRect();
|
|
21021
|
+
if (!editorRect || !containerRect) {
|
|
21022
|
+
return { top: bounds.top + bounds.height + 5, left: left };
|
|
21023
|
+
}
|
|
21024
|
+
const editorOffsetTop = editorRect.top - containerRect.top;
|
|
21025
|
+
const top = editorOffsetTop + bounds.top + bounds.height + 5;
|
|
21026
|
+
return {
|
|
21027
|
+
top: top,
|
|
21028
|
+
left: left
|
|
21029
|
+
};
|
|
21030
|
+
}
|
|
21031
|
+
catch (error) {
|
|
21032
|
+
console.warn('计算选中位置时出错:', error);
|
|
21033
|
+
return { top: 0, left: 0 };
|
|
21034
|
+
}
|
|
21035
|
+
};
|
|
21047
21036
|
const handleCustomLink = (bool, linkInfo) => {
|
|
21048
21037
|
if (!quill)
|
|
21049
21038
|
return;
|
|
@@ -21136,6 +21125,9 @@
|
|
|
21136
21125
|
linkUrl,
|
|
21137
21126
|
linkText,
|
|
21138
21127
|
linkPosition,
|
|
21128
|
+
getEditor,
|
|
21129
|
+
getToolbar,
|
|
21130
|
+
getQuill,
|
|
21139
21131
|
getContents,
|
|
21140
21132
|
setContents,
|
|
21141
21133
|
getHTML,
|