@cyberyozh/text-editor 0.2.1 → 0.2.2
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/editor.js +78 -56
- package/dist/editor.js.map +1 -1
- package/dist/editor.mjs +77 -55
- package/dist/editor.mjs.map +1 -1
- package/dist/render.js +23 -5
- package/dist/render.js.map +1 -1
- package/dist/render.mjs +24 -6
- package/dist/render.mjs.map +1 -1
- package/package.json +5 -2
- package/src/editor/dialogs/image-dialog/image-dialog.tsx +0 -1
- package/src/editor/editor.tsx +8 -3
- package/src/editor/handlers/dialog-handlers.ts +17 -31
- package/src/editor/handlers/insertion-handlers.ts +4 -25
- package/src/editor/handlers/markup-insertion.test.ts +132 -0
- package/src/editor/handlers/markup-insertion.ts +41 -0
- package/src/extensions/base/link.ts +22 -1
- package/src/utils/image-src-resolver.test.ts +54 -0
package/dist/editor.mjs
CHANGED
|
@@ -2021,7 +2021,6 @@ var ImageDialog = ({
|
|
|
2021
2021
|
setIsUploading(true);
|
|
2022
2022
|
try {
|
|
2023
2023
|
const result = await uploadHandler(formState.file);
|
|
2024
|
-
console.log("\u{1F440} ~ handleAddImage ~ result:", result);
|
|
2025
2024
|
onImageAdd({
|
|
2026
2025
|
fileId: result.fileId,
|
|
2027
2026
|
src: result.fileUrl,
|
|
@@ -3100,7 +3099,8 @@ var BaseCustomQuoteSign = Node2.create({
|
|
|
3100
3099
|
|
|
3101
3100
|
// src/extensions/base/link.ts
|
|
3102
3101
|
import Link, { isAllowedUri } from "@tiptap/extension-link";
|
|
3103
|
-
import { markPasteRule } from "@tiptap/core";
|
|
3102
|
+
import { getMarkRange, markPasteRule } from "@tiptap/core";
|
|
3103
|
+
import { Plugin, TextSelection as TextSelection3 } from "@tiptap/pm/state";
|
|
3104
3104
|
|
|
3105
3105
|
// node_modules/linkifyjs/dist/linkify.mjs
|
|
3106
3106
|
var encodedTlds = "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5m\xF6gensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2";
|
|
@@ -4279,6 +4279,23 @@ var LinkExtension = Link.extend({
|
|
|
4279
4279
|
}
|
|
4280
4280
|
})
|
|
4281
4281
|
];
|
|
4282
|
+
},
|
|
4283
|
+
addProseMirrorPlugins() {
|
|
4284
|
+
return [
|
|
4285
|
+
...this.parent?.() ?? [],
|
|
4286
|
+
new Plugin({
|
|
4287
|
+
props: {
|
|
4288
|
+
handleClick: (view, pos) => {
|
|
4289
|
+
if (!view.editable) return false;
|
|
4290
|
+
const range = getMarkRange(view.state.doc.resolve(pos), this.type);
|
|
4291
|
+
if (!range) return false;
|
|
4292
|
+
const selection = TextSelection3.create(view.state.doc, range.from, range.to);
|
|
4293
|
+
view.dispatch(view.state.tr.setSelection(selection));
|
|
4294
|
+
return true;
|
|
4295
|
+
}
|
|
4296
|
+
}
|
|
4297
|
+
})
|
|
4298
|
+
];
|
|
4282
4299
|
}
|
|
4283
4300
|
}).configure({
|
|
4284
4301
|
openOnClick: false,
|
|
@@ -4325,7 +4342,7 @@ var BaseMythReality = Node3.create({
|
|
|
4325
4342
|
|
|
4326
4343
|
// src/extensions/base/prompt.ts
|
|
4327
4344
|
import { Node as Node4, mergeAttributes as mergeAttributes5 } from "@tiptap/core";
|
|
4328
|
-
import { TextSelection as
|
|
4345
|
+
import { TextSelection as TextSelection4 } from "@tiptap/pm/state";
|
|
4329
4346
|
var BasePrompt = Node4.create({
|
|
4330
4347
|
name: "prompt",
|
|
4331
4348
|
group: "block",
|
|
@@ -4357,7 +4374,7 @@ var BasePrompt = Node4.create({
|
|
|
4357
4374
|
const paragraphNode = schema.nodes.paragraph.createAndFill();
|
|
4358
4375
|
if (!paragraphNode) return false;
|
|
4359
4376
|
tr2.insert(posAfter, paragraphNode);
|
|
4360
|
-
tr2.setSelection(
|
|
4377
|
+
tr2.setSelection(TextSelection4.create(tr2.doc, posAfter + 1));
|
|
4361
4378
|
view.dispatch(tr2);
|
|
4362
4379
|
return true;
|
|
4363
4380
|
}
|
|
@@ -4599,7 +4616,7 @@ var BaseFigure = Image2.extend({
|
|
|
4599
4616
|
|
|
4600
4617
|
// src/extensions/base/compatibility.ts
|
|
4601
4618
|
import { mergeAttributes as mergeAttributes7, Node as Node6 } from "@tiptap/core";
|
|
4602
|
-
import { TextSelection as
|
|
4619
|
+
import { TextSelection as TextSelection5 } from "@tiptap/pm/state";
|
|
4603
4620
|
import Image3 from "@tiptap/extension-image";
|
|
4604
4621
|
var BaseLegacyBookAlert = Node6.create({
|
|
4605
4622
|
name: "calloutAlert",
|
|
@@ -4743,7 +4760,7 @@ var BaseLegacySEQuote = Node6.create({
|
|
|
4743
4760
|
const paragraphNode = schema.nodes.paragraph.createAndFill();
|
|
4744
4761
|
if (!paragraphNode) return false;
|
|
4745
4762
|
tr2.insert(posAfter, paragraphNode);
|
|
4746
|
-
tr2.setSelection(
|
|
4763
|
+
tr2.setSelection(TextSelection5.create(tr2.doc, posAfter + 1));
|
|
4747
4764
|
view.dispatch(tr2);
|
|
4748
4765
|
return true;
|
|
4749
4766
|
}
|
|
@@ -4791,7 +4808,7 @@ var BaseLegacyPromptSE = Node6.create({
|
|
|
4791
4808
|
const paragraphNode = schema.nodes.paragraph.createAndFill();
|
|
4792
4809
|
if (!paragraphNode) return false;
|
|
4793
4810
|
tr2.insert(posAfter, paragraphNode);
|
|
4794
|
-
tr2.setSelection(
|
|
4811
|
+
tr2.setSelection(TextSelection5.create(tr2.doc, posAfter + 1));
|
|
4795
4812
|
view.dispatch(tr2);
|
|
4796
4813
|
return true;
|
|
4797
4814
|
}
|
|
@@ -6649,7 +6666,7 @@ function getEditorExtensions(options) {
|
|
|
6649
6666
|
}
|
|
6650
6667
|
|
|
6651
6668
|
// src/editor/handlers/dialog-handlers.ts
|
|
6652
|
-
import { TextSelection as
|
|
6669
|
+
import { TextSelection as TextSelection6 } from "@tiptap/pm/state";
|
|
6653
6670
|
var createHandleImageAdd = (editor, closeDialogCommand, savedPos) => {
|
|
6654
6671
|
return (attrs) => {
|
|
6655
6672
|
if (!editor) return;
|
|
@@ -6660,10 +6677,10 @@ var createHandleImageAdd = (editor, closeDialogCommand, savedPos) => {
|
|
|
6660
6677
|
const imageNode = state2.schema.nodes.image.create({ ...attrs });
|
|
6661
6678
|
if ($pos.parent.type.name === "paragraph" && $pos.parent.textContent === "") {
|
|
6662
6679
|
tr2.replaceWith($pos.before(), $pos.after(), imageNode);
|
|
6663
|
-
tr2.setSelection(
|
|
6680
|
+
tr2.setSelection(TextSelection6.near(tr2.doc.resolve($pos.before())));
|
|
6664
6681
|
} else {
|
|
6665
6682
|
tr2.insert(insertPos, imageNode);
|
|
6666
|
-
tr2.setSelection(
|
|
6683
|
+
tr2.setSelection(TextSelection6.near(tr2.doc.resolve(insertPos)));
|
|
6667
6684
|
}
|
|
6668
6685
|
return true;
|
|
6669
6686
|
}).run();
|
|
@@ -6687,40 +6704,29 @@ var createHandleVideoAdd = (editor, closeDialogCommand, savedPos) => {
|
|
|
6687
6704
|
const videoNode = state2.schema.nodes.video.create({ src: url });
|
|
6688
6705
|
if ($pos.parent.type.name === "paragraph" && $pos.parent.textContent === "") {
|
|
6689
6706
|
tr2.replaceWith($pos.before(), $pos.after(), videoNode);
|
|
6690
|
-
tr2.setSelection(
|
|
6707
|
+
tr2.setSelection(TextSelection6.near(tr2.doc.resolve($pos.before())));
|
|
6691
6708
|
} else {
|
|
6692
6709
|
tr2.insert(insertPos, videoNode);
|
|
6693
|
-
tr2.setSelection(
|
|
6710
|
+
tr2.setSelection(TextSelection6.near(tr2.doc.resolve(insertPos)));
|
|
6694
6711
|
}
|
|
6695
6712
|
return true;
|
|
6696
6713
|
}).run();
|
|
6697
6714
|
closeDialogCommand();
|
|
6698
6715
|
};
|
|
6699
6716
|
};
|
|
6700
|
-
var createHandleLinkAdd = (editor, closeDialogCommand, linkParams,
|
|
6717
|
+
var createHandleLinkAdd = (editor, closeDialogCommand, linkParams, savedRange) => {
|
|
6701
6718
|
if (!editor) return;
|
|
6702
|
-
const
|
|
6703
|
-
const titleLength =
|
|
6704
|
-
|
|
6705
|
-
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
|
|
6712
|
-
}
|
|
6713
|
-
const { state } = editor;
|
|
6714
|
-
const insertPos = savedPos ?? state.selection.from;
|
|
6715
|
-
const titleLength2 = linkParams.title?.length ?? 0;
|
|
6716
|
-
editor.chain().focus().command(({ tr: tr2 }) => {
|
|
6717
|
-
const linkMark = editor.schema.marks.link.create({ ...linkParams });
|
|
6718
|
-
const textNode = editor.schema.text(linkParams.title ?? "", [linkMark]);
|
|
6719
|
-
tr2.insert(insertPos, textNode);
|
|
6720
|
-
tr2.setSelection(TextSelection5.create(tr2.doc, insertPos, insertPos + titleLength2));
|
|
6721
|
-
return true;
|
|
6722
|
-
}).run();
|
|
6723
|
-
}
|
|
6719
|
+
const title = linkParams.title ?? "";
|
|
6720
|
+
const titleLength = title.length;
|
|
6721
|
+
const from = savedRange?.from ?? editor.state.selection.from;
|
|
6722
|
+
const to = savedRange?.to ?? editor.state.selection.to;
|
|
6723
|
+
editor.chain().focus().command(({ tr: tr2 }) => {
|
|
6724
|
+
tr2.insertText(title, from, to);
|
|
6725
|
+
tr2.removeMark(from, from + titleLength);
|
|
6726
|
+
tr2.addMark(from, from + titleLength, editor.schema.marks.link.create({ ...linkParams }));
|
|
6727
|
+
tr2.setSelection(TextSelection6.create(tr2.doc, from, from + titleLength));
|
|
6728
|
+
return true;
|
|
6729
|
+
}).run();
|
|
6724
6730
|
closeDialogCommand();
|
|
6725
6731
|
};
|
|
6726
6732
|
var createHandleKatexAdd = (editor, closeDialogCommand, savedPos) => {
|
|
@@ -6734,7 +6740,7 @@ var createHandleKatexAdd = (editor, closeDialogCommand, savedPos) => {
|
|
|
6734
6740
|
editor.chain().focus().command(({ tr: tr2, state: state2 }) => {
|
|
6735
6741
|
const inlineMathNode = state2.schema.nodes.inlineMath.create({ latex });
|
|
6736
6742
|
tr2.insert(insertPos, inlineMathNode);
|
|
6737
|
-
tr2.setSelection(
|
|
6743
|
+
tr2.setSelection(TextSelection6.near(tr2.doc.resolve(insertPos)));
|
|
6738
6744
|
return true;
|
|
6739
6745
|
}).run();
|
|
6740
6746
|
}
|
|
@@ -6771,6 +6777,31 @@ function collectFragmentChildren(fragment, stack) {
|
|
|
6771
6777
|
}
|
|
6772
6778
|
}
|
|
6773
6779
|
|
|
6780
|
+
// src/editor/handlers/markup-insertion.ts
|
|
6781
|
+
function collectRehostableImages(slice) {
|
|
6782
|
+
const imagesToNodes = [];
|
|
6783
|
+
prosemirrorIterator(slice, (node) => {
|
|
6784
|
+
if (node.type.name === "image" && !node.attrs.fileId) {
|
|
6785
|
+
try {
|
|
6786
|
+
const url = new URL(node.attrs.src).toString();
|
|
6787
|
+
imagesToNodes.push([url, node]);
|
|
6788
|
+
} catch {
|
|
6789
|
+
}
|
|
6790
|
+
}
|
|
6791
|
+
});
|
|
6792
|
+
return imagesToNodes;
|
|
6793
|
+
}
|
|
6794
|
+
function applyUploadResultsToNodes(imagesToNodes, results) {
|
|
6795
|
+
results.forEach((result, index) => {
|
|
6796
|
+
if (!result) return;
|
|
6797
|
+
const node = imagesToNodes[index]?.[1];
|
|
6798
|
+
if (!node) return;
|
|
6799
|
+
node.attrs.src = result.fileUrl ?? null;
|
|
6800
|
+
node.attrs.fileId = result.fileId;
|
|
6801
|
+
node.attrs.storageKey = result.storageKey;
|
|
6802
|
+
});
|
|
6803
|
+
}
|
|
6804
|
+
|
|
6774
6805
|
// src/editor/handlers/insertion-handlers.ts
|
|
6775
6806
|
function useInsertionHandlers() {
|
|
6776
6807
|
const [insertedImage, setInsertedImage] = useState12(null);
|
|
@@ -6809,24 +6840,10 @@ function useInsertionHandlers() {
|
|
|
6809
6840
|
hasMarkupInsertion = true;
|
|
6810
6841
|
}
|
|
6811
6842
|
if (hasMarkupInsertion) {
|
|
6812
|
-
const imagesToNodes =
|
|
6843
|
+
const imagesToNodes = collectRehostableImages(slice);
|
|
6813
6844
|
setDisabled(true);
|
|
6814
|
-
prosemirrorIterator(slice, (node) => {
|
|
6815
|
-
if (node.type.name === "image" && !node.attrs.fileId) {
|
|
6816
|
-
try {
|
|
6817
|
-
const url = new URL(node.attrs.src).toString();
|
|
6818
|
-
imagesToNodes.push([url, node]);
|
|
6819
|
-
} catch {
|
|
6820
|
-
}
|
|
6821
|
-
}
|
|
6822
|
-
});
|
|
6823
6845
|
uploadMultipleByURL(imagesToNodes.map(([url]) => url)).then((results) => {
|
|
6824
|
-
|
|
6825
|
-
const node = imagesToNodes[index][1];
|
|
6826
|
-
node.attrs.src = null;
|
|
6827
|
-
node.attrs.fileId = result?.fileId;
|
|
6828
|
-
node.attrs.storageKey = result?.storageKey;
|
|
6829
|
-
});
|
|
6846
|
+
applyUploadResultsToNodes(imagesToNodes, results);
|
|
6830
6847
|
view.dispatch(view.state.tr.replaceSelection(slice));
|
|
6831
6848
|
}).finally(() => {
|
|
6832
6849
|
setDisabled(false);
|
|
@@ -7607,6 +7624,9 @@ function TiptapContent({
|
|
|
7607
7624
|
);
|
|
7608
7625
|
const [editFigureContext, setEditFigureContext] = useState13(null);
|
|
7609
7626
|
const [savedDialogCursorPos, setSavedDialogCursorPos] = useState13(void 0);
|
|
7627
|
+
const [savedDialogRange, setSavedDialogRange] = useState13(
|
|
7628
|
+
void 0
|
|
7629
|
+
);
|
|
7610
7630
|
const { activeDialog, closeDialogCommand, openDialogCommand } = useDialogCommand();
|
|
7611
7631
|
const translations2 = useTiptapTranslations();
|
|
7612
7632
|
const [isDisabledInternal, setIsDisabledInternal] = useState13(isDisabled);
|
|
@@ -7691,8 +7711,9 @@ function TiptapContent({
|
|
|
7691
7711
|
);
|
|
7692
7712
|
useEffect11(() => {
|
|
7693
7713
|
if (activeDialog && editor && !editor.isDestroyed) {
|
|
7694
|
-
const
|
|
7695
|
-
setSavedDialogCursorPos(
|
|
7714
|
+
const { from, to } = editor.state.selection;
|
|
7715
|
+
setSavedDialogCursorPos(from);
|
|
7716
|
+
setSavedDialogRange({ from, to });
|
|
7696
7717
|
}
|
|
7697
7718
|
}, [activeDialog, editor]);
|
|
7698
7719
|
const handleCloseDialog = () => {
|
|
@@ -7700,6 +7721,7 @@ function TiptapContent({
|
|
|
7700
7721
|
setKatexDialogContext(null);
|
|
7701
7722
|
setEditFigureContext(null);
|
|
7702
7723
|
setSavedDialogCursorPos(void 0);
|
|
7724
|
+
setSavedDialogRange(void 0);
|
|
7703
7725
|
closeDialogCommand();
|
|
7704
7726
|
};
|
|
7705
7727
|
const handleImageAdd = (attrs) => {
|
|
@@ -7710,7 +7732,7 @@ function TiptapContent({
|
|
|
7710
7732
|
createHandleVideoAdd(editor, handleCloseDialog, savedDialogCursorPos)(url);
|
|
7711
7733
|
};
|
|
7712
7734
|
const handleLinkAdd = (params) => {
|
|
7713
|
-
createHandleLinkAdd(editor, handleCloseDialog, params,
|
|
7735
|
+
createHandleLinkAdd(editor, handleCloseDialog, params, savedDialogRange);
|
|
7714
7736
|
};
|
|
7715
7737
|
const handleKatexAdd = (latex) => {
|
|
7716
7738
|
const katexHandler = createHandleKatexAdd(editor, handleCloseDialog, savedDialogCursorPos);
|