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.
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Copyright (c) 2025 Pxx-Team
9
9
  * Released under the MIT license
10
- * Date: 2025-09-15T03:58:17.460Z
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 useCustomLink(editor) {
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
- addLinkClickListener,
20371
- calculateSelectionPosition
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: 'delta',
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, calculateSelectionPosition } = useCustomLink(editor);
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 (isIPadBool)
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 html = getHTML();
20889
- internalModel = processHTMLContent(html, quill);
20890
- if (isIPadBool) {
20891
- handleIPadNewline(delta, oldContents, () => {
20892
- setContents('', 'api');
20893
- internalModel = '';
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
- updateHistoryState();
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
- setHTML((_a = normalizedContent) !== null && _a !== void 0 ? _a : '');
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,