pxx-vue-quill 1.0.164 → 1.0.166

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-17T01:53:00.683Z
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
 
@@ -20376,7 +20345,6 @@
20376
20345
  const clickHandlers = vue.ref([]);
20377
20346
  const targetElement = vue.ref(null);
20378
20347
  const handleGlobalClick = (event) => {
20379
- console.log('handleGlobalClick');
20380
20348
  clickHandlers.value.forEach(handler => {
20381
20349
  try {
20382
20350
  handler(event);
@@ -20425,35 +20393,6 @@
20425
20393
  };
20426
20394
  }
20427
20395
 
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
20396
  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
20397
  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
20398
  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 +20407,12 @@
20468
20407
  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
20408
  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
20409
 
20410
+ const isIPad = () => {
20411
+ const ua = navigator.userAgent;
20412
+ const isMacOs = /(?:Macintosh)/.test(ua);
20413
+ return /(?:iPad|PlayBook)/.test(ua) || (isMacOs && navigator.maxTouchPoints > 1);
20414
+ };
20415
+
20471
20416
  const QuillEditor = vue.defineComponent({
20472
20417
  name: 'QuillEditor',
20473
20418
  inheritAttrs: false,
@@ -20480,7 +20425,7 @@
20480
20425
  },
20481
20426
  contentType: {
20482
20427
  type: String,
20483
- default: 'delta',
20428
+ default: 'html',
20484
20429
  validator: (value) => {
20485
20430
  return ['delta', 'html', 'text'].includes(value);
20486
20431
  },
@@ -20561,9 +20506,8 @@
20561
20506
  const linkPosition = vue.ref({ top: 0, left: 0 });
20562
20507
  const savedRange = vue.ref(null);
20563
20508
  const { addClickHandler } = useGlobalClick(props.clickTargetSelector);
20564
- const { isIPadBool, handleIPadNewline } = useIPadScene();
20565
20509
  const { setQuill, handleBlotFormatterClick, configureBlotFormatter, applyImageStyle, registerBlotFormatter, getBlotFormatterConfig } = useBlotFormatter(editor, props.enableImageResize);
20566
- const { setQuill: setLinkQuill, setHandleCustomLink, addLinkClickListener, calculateSelectionPosition } = useCustomLink(editor);
20510
+ const { setQuill: setLinkQuill, setHandleCustomLink, addLinkClickListener } = useCustomLinkClick(editor);
20567
20511
  vue.onMounted(() => {
20568
20512
  initialize();
20569
20513
  });
@@ -20615,7 +20559,7 @@
20615
20559
  icons['image'] = imageSVG;
20616
20560
  icons.list.ordered = listOrderedSVG;
20617
20561
  icons.list.bullet = listBulletSVG;
20618
- if (isIPadBool)
20562
+ if (isIPad())
20619
20563
  (icons['color'] = colorSVG);
20620
20564
  }
20621
20565
  }
@@ -20688,6 +20632,8 @@
20688
20632
  quill.on('text-change', handleTextChange);
20689
20633
  quill.on('selection-change', handleSelectionChange);
20690
20634
  quill.on('editor-change', handleEditorChange);
20635
+ quill.on('text-change', updateHistoryState);
20636
+ quill.on('selection-change', updateHistoryState);
20691
20637
  addLinkClickListener();
20692
20638
  const toolbarClickHandler = (event) => {
20693
20639
  var _a;
@@ -20841,32 +20787,6 @@
20841
20787
  return Object.values(delta.ops).some((v) => !v.retain || Object.keys(v).length !== 1);
20842
20788
  };
20843
20789
  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
20790
  const internalModelEquals = (against) => {
20871
20791
  if (typeof internalModel === typeof against) {
20872
20792
  if (against === internalModel) {
@@ -20884,13 +20804,15 @@
20884
20804
  return false;
20885
20805
  };
20886
20806
  const handleTextChange = (delta, oldContents, source) => {
20807
+ var _a;
20887
20808
  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 = '';
20809
+ const rawHTML = (_a = quill === null || quill === void 0 ? void 0 : quill.root.innerHTML) !== null && _a !== void 0 ? _a : '';
20810
+ internalModel = getHTML();
20811
+ if (internalModel && internalModel !== rawHTML) {
20812
+ vue.nextTick(() => {
20813
+ if (quill && quill.root.innerHTML !== internalModel && typeof internalModel === 'string') {
20814
+ quill.root.innerHTML = internalModel;
20815
+ }
20894
20816
  });
20895
20817
  }
20896
20818
  }
@@ -20904,7 +20826,13 @@
20904
20826
  applyImageStyle();
20905
20827
  });
20906
20828
  ctx.emit('textChange', { delta, oldContents, source });
20907
- updateHistoryState();
20829
+ };
20830
+ const observeTooltip = () => {
20831
+ const preview = document.querySelector('.ql-preview');
20832
+ if (!preview)
20833
+ return;
20834
+ preview.setAttribute('href', 'javascript:void(0)');
20835
+ preview.setAttribute('target', '_self');
20908
20836
  };
20909
20837
  const controlToolbarVisible = (visible) => {
20910
20838
  var _a;
@@ -20917,13 +20845,13 @@
20917
20845
  };
20918
20846
  const isEditorFocus = vue.ref();
20919
20847
  const handleSelectionChange = (range, oldRange, source) => {
20848
+ observeTooltip();
20920
20849
  isEditorFocus.value = !!(quill === null || quill === void 0 ? void 0 : quill.hasFocus());
20921
20850
  canUseLink.value = !!(range && range.length > 0);
20922
20851
  if (isEditorFocus.value) {
20923
20852
  controlToolbarVisible(true);
20924
20853
  }
20925
20854
  ctx.emit('selectionChange', { range, oldRange, source });
20926
- updateHistoryState();
20927
20855
  };
20928
20856
  vue.watch(isEditorFocus, (focus) => {
20929
20857
  if (focus)
@@ -20947,6 +20875,19 @@
20947
20875
  source: args[3],
20948
20876
  });
20949
20877
  };
20878
+ const getEditor = () => {
20879
+ return editor.value;
20880
+ };
20881
+ const getToolbar = () => {
20882
+ var _a;
20883
+ return (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20884
+ };
20885
+ const getQuill = () => {
20886
+ if (quill)
20887
+ return quill;
20888
+ else
20889
+ throw `The quill editor hasn't been instantiated`;
20890
+ };
20950
20891
  const getContents = (index, length) => {
20951
20892
  if (props.contentType === 'html') {
20952
20893
  return getHTML();
@@ -20957,14 +20898,20 @@
20957
20898
  return quill === null || quill === void 0 ? void 0 : quill.getContents(index, length);
20958
20899
  };
20959
20900
  const setContents = (content, source = 'api') => {
20960
- var _a;
20961
20901
  const normalizedContent = !content
20962
20902
  ? props.contentType === 'delta'
20963
20903
  ? new Delta$1()
20964
20904
  : ''
20965
20905
  : content;
20966
20906
  if (props.contentType === 'html') {
20967
- setHTML((_a = normalizedContent) !== null && _a !== void 0 ? _a : '');
20907
+ if (!normalizedContent || normalizedContent === '') {
20908
+ if (quill) {
20909
+ quill.root.innerHTML = '';
20910
+ }
20911
+ }
20912
+ else {
20913
+ setHTML(normalizedContent);
20914
+ }
20968
20915
  }
20969
20916
  else if (props.contentType === 'text') {
20970
20917
  setText(normalizedContent, source);
@@ -20984,22 +20931,31 @@
20984
20931
  const getHTML = () => {
20985
20932
  var _a;
20986
20933
  let html = (_a = quill === null || quill === void 0 ? void 0 : quill.root.innerHTML) !== null && _a !== void 0 ? _a : '';
20934
+ if (html === '<p><br></p>' ||
20935
+ html === '<p></p>' ||
20936
+ html === '<p><br/></p>' ||
20937
+ html === '<p><br><br></p>') {
20938
+ return '';
20939
+ }
20987
20940
  if (/^<p><br\/?>(.+?)<\/p>$/.test(html)) {
20988
20941
  const match = html.match(/^<p><br\/?>(.+?)<\/p>$/);
20989
20942
  if (match && match[1]) {
20990
20943
  html = `<p>${match[1]}</p>`;
20991
20944
  }
20992
20945
  }
20993
- if (html === '<p><br></p>' ||
20994
- html === '<p></p>' ||
20995
- html === '<p><br/></p>') {
20996
- html = '';
20997
- }
20998
20946
  return html;
20999
20947
  };
21000
20948
  const setHTML = (html) => {
21001
- if (quill)
20949
+ if (quill) {
21002
20950
  quill.root.innerHTML = html;
20951
+ if (html && !html.includes('<br>')) {
20952
+ vue.nextTick(() => {
20953
+ if (quill && quill.root.innerHTML !== html) {
20954
+ quill.root.innerHTML = html;
20955
+ }
20956
+ });
20957
+ }
20958
+ }
21003
20959
  };
21004
20960
  const pasteHTML = (html, source = 'api') => {
21005
20961
  const delta = quill === null || quill === void 0 ? void 0 : quill.clipboard.convert(html);
@@ -21044,6 +21000,38 @@
21044
21000
  handleCustomLink(true);
21045
21001
  }
21046
21002
  };
21003
+ const calculateSelectionPosition = (range) => {
21004
+ var _a;
21005
+ if (!quill)
21006
+ return { top: 0, left: 0 };
21007
+ const selectionRange = range || quill.getSelection();
21008
+ if (!selectionRange || selectionRange.length === 0)
21009
+ return { top: 0, left: 0 };
21010
+ try {
21011
+ const bounds = quill.getBounds(selectionRange.index, selectionRange.length);
21012
+ const editorElement = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.querySelector('.ql-editor');
21013
+ const editorContainer = editorElement === null || editorElement === void 0 ? void 0 : editorElement.closest('.quill-editor-container');
21014
+ const editorWidth = editorContainer ? editorContainer.clientWidth : ((editorElement === null || editorElement === void 0 ? void 0 : editorElement.clientWidth) || 0);
21015
+ const customLinkWidth = 310;
21016
+ const maxLeft = editorWidth - customLinkWidth - 16;
21017
+ const left = Math.min(bounds.left, Math.max(0, maxLeft));
21018
+ const editorRect = editorElement === null || editorElement === void 0 ? void 0 : editorElement.getBoundingClientRect();
21019
+ const containerRect = editorContainer === null || editorContainer === void 0 ? void 0 : editorContainer.getBoundingClientRect();
21020
+ if (!editorRect || !containerRect) {
21021
+ return { top: bounds.top + bounds.height + 5, left: left };
21022
+ }
21023
+ const editorOffsetTop = editorRect.top - containerRect.top;
21024
+ const top = editorOffsetTop + bounds.top + bounds.height + 5;
21025
+ return {
21026
+ top: top,
21027
+ left: left
21028
+ };
21029
+ }
21030
+ catch (error) {
21031
+ console.warn('计算选中位置时出错:', error);
21032
+ return { top: 0, left: 0 };
21033
+ }
21034
+ };
21047
21035
  const handleCustomLink = (bool, linkInfo) => {
21048
21036
  if (!quill)
21049
21037
  return;
@@ -21136,6 +21124,9 @@
21136
21124
  linkUrl,
21137
21125
  linkText,
21138
21126
  linkPosition,
21127
+ getEditor,
21128
+ getToolbar,
21129
+ getQuill,
21139
21130
  getContents,
21140
21131
  setContents,
21141
21132
  getHTML,